Hello community, here is the log from the commit of package flac for openSUSE:Factory checked in at 2013-06-05 11:51:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/flac (Old) and /work/SRC/openSUSE:Factory/.flac.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "flac" Changes: -------- --- /work/SRC/openSUSE:Factory/flac/flac.changes 2013-04-24 10:24:13.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.flac.new/flac.changes 2013-06-05 11:51:36.000000000 +0200 @@ -1,0 +2,13 @@ +Sun May 26 04:09:21 UTC 2013 - [email protected] + +- Update to flac 1.3.0pre4 (packaged as 1.2.99_git* to avoid + messing with RPM versioning) + * Mostly non-linux related bugfixes plus autotools fixes + + - flac-openssl.patch --> 0001-Allow-use-of-openSSL.patch + - remove flac-1.2.1-automake1_13.patch, fixed in upstream. + - add 0001-getopt_long-not-broken-here.patch, FLAC bundles + GNU-compatible getopt_long for broken OS, but we do have + a functional version in libc already. + +------------------------------------------------------------------- Old: ---- flac-1.2.1-automake1_13.patch flac-1.2.1_git201212051942.tar.xz flac-openssl.patch New: ---- 0001-Allow-use-of-openSSL.patch 0001-getopt_long-not-broken-here.patch flac-1.2.99_git201305252226.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ flac.spec ++++++ --- /var/tmp/diff_new_pack.ThfG9X/_old 2013-06-05 11:51:37.000000000 +0200 +++ /var/tmp/diff_new_pack.ThfG9X/_new 2013-06-05 11:51:37.000000000 +0200 @@ -30,7 +30,7 @@ %ifarch ppc64 Obsoletes: flac-64bit %endif -Version: 1.2.1_git201212051942 +Version: 1.2.99_git201305252226 Release: 0 # Summary: Free Lossless Audio Codec @@ -40,9 +40,9 @@ Source: %{name}-%{version}.tar.xz Source2: baselibs.conf Patch1: flac-ocloexec.patch -Patch2: flac-openssl.patch +Patch2: 0001-Allow-use-of-openSSL.patch Patch3: flac-fix-pkgconfig.patch -Patch4: flac-1.2.1-automake1_13.patch +Patch5: 0001-getopt_long-not-broken-here.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -80,11 +80,10 @@ %prep %setup -q -%patch1 +%patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 - +%patch5 -p1 %build touch config.rpath autoreconf --force --install @@ -104,7 +103,7 @@ %make_install # documents mkdir -p %{buildroot}%{_docdir} -mv %{buildroot}%{_datadir}/doc/%{name}-1.2.1 %{buildroot}%{_docdir}/%{name} +mv %{buildroot}%{_datadir}/doc/%{name}-1.3.0pre4 %{buildroot}%{_docdir}/%{name} cp -a AUTHORS README COPYING.* %{buildroot}%{_docdir}/%{name} %check ++++++ 0001-Allow-use-of-openSSL.patch ++++++ >From 4022b72d8f71110a6e4bc0e32cb59cb7c5b5b25e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <[email protected]> Date: Sun, 26 May 2013 05:35:30 +0200 Subject: [PATCH] Allow use of openSSL diff --git a/configure.ac b/configure.ac index c03e36b..9742638 100644 --- a/configure.ac +++ b/configure.ac @@ -58,7 +58,7 @@ AM_PROG_CC_C_O AC_C_INLINE AC_C_VARARRAYS AC_C_TYPEOF - +AC_FUNC_ALLOCA AC_CHECK_HEADERS([stdint.h inttypes.h byteswap.h sys/param.h]) XIPH_C_BSWAP32 @@ -86,6 +86,8 @@ dnl check for getopt in standard library dnl AC_CHECK_FUNCS(getopt_long , , [LIBOBJS="$LIBOBJS getopt.o getopt1.o"] ) AC_CHECK_FUNCS(getopt_long, [], []) +AX_CHECK_OPENSSL([AC_DEFINE([HAVE_OPENSSL], [1], [We have openSSL])]) + case "$host_cpu" in i*86) cpu_ia32=true diff --git a/m4/ax_check_openssl.m4 b/m4/ax_check_openssl.m4 new file mode 100644 index 0000000..a87c5a6 --- /dev/null +++ b/m4/ax_check_openssl.m4 @@ -0,0 +1,124 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_openssl.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_OPENSSL([action-if-found[, action-if-not-found]]) +# +# DESCRIPTION +# +# Look for OpenSSL in a number of default spots, or in a user-selected +# spot (via --with-openssl). Sets +# +# OPENSSL_INCLUDES to the include directives required +# OPENSSL_LIBS to the -l directives required +# OPENSSL_LDFLAGS to the -L or -R flags required +# +# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately +# +# This macro sets OPENSSL_INCLUDES such that source files should use the +# openssl/ directory in include directives: +# +# #include <openssl/hmac.h> +# +# LICENSE +# +# Copyright (c) 2009,2010 Zmanda Inc. <http://www.zmanda.com/> +# Copyright (c) 2009,2010 Dustin J. Mitchell <[email protected]> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 8 + +AU_ALIAS([CHECK_SSL], [AX_CHECK_OPENSSL]) +AC_DEFUN([AX_CHECK_OPENSSL], [ + found=false + AC_ARG_WITH([openssl], + [AS_HELP_STRING([--with-openssl=DIR], + [root of the OpenSSL directory])], + [ + case "$withval" in + "" | y | ye | yes | n | no) + AC_MSG_ERROR([Invalid --with-openssl value]) + ;; + *) ssldirs="$withval" + ;; + esac + ], [ + # if pkg-config is installed and openssl has installed a .pc file, + # then use that information and don't search ssldirs + AC_PATH_PROG([PKG_CONFIG], [pkg-config]) + if test x"$PKG_CONFIG" != x""; then + OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null` + if test $? = 0; then + OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null` + OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null` + found=true + fi + fi + + # no such luck; use some default ssldirs + if ! $found; then + ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr" + fi + ] + ) + + + # note that we #include <openssl/foo.h>, so the OpenSSL headers have to be in + # an 'openssl' subdirectory + + if ! $found; then + OPENSSL_INCLUDES= + for ssldir in $ssldirs; do + AC_MSG_CHECKING([for openssl/ssl.h in $ssldir]) + if test -f "$ssldir/include/openssl/ssl.h"; then + OPENSSL_INCLUDES="-I$ssldir/include" + OPENSSL_LDFLAGS="-L$ssldir/lib" + OPENSSL_LIBS="-lssl -lcrypto" + found=true + AC_MSG_RESULT([yes]) + break + else + AC_MSG_RESULT([no]) + fi + done + + # if the file wasn't found, well, go ahead and try the link anyway -- maybe + # it will just work! + fi + + # try the preprocessor and linker with our new flags, + # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS + + AC_MSG_CHECKING([whether compiling and linking against OpenSSL works]) + echo "Trying link with OPENSSL_LDFLAGS=$OPENSSL_LDFLAGS;" \ + "OPENSSL_LIBS=$OPENSSL_LIBS; OPENSSL_INCLUDES=$OPENSSL_INCLUDES" >&AS_MESSAGE_LOG_FD + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" + LIBS="$OPENSSL_LIBS $LIBS" + CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include <openssl/ssl.h>], [SSL_new(NULL)])], + [ + AC_MSG_RESULT([yes]) + $1 + ], [ + AC_MSG_RESULT([no]) + $2 + ]) + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + AC_SUBST([OPENSSL_INCLUDES]) + AC_SUBST([OPENSSL_LIBS]) + AC_SUBST([OPENSSL_LDFLAGS]) +]) diff --git a/src/libFLAC/Makefile.am b/src/libFLAC/Makefile.am index 84eadb9..10f067d 100644 --- a/src/libFLAC/Makefile.am +++ b/src/libFLAC/Makefile.am @@ -86,7 +86,7 @@ if OS_IS_WINDOWS win_utf8_lib = $(top_builddir)/src/share/win_utf8_io/libwin_utf8_io.la endif -libFLAC_la_LIBADD = $(win_utf8_lib) $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ -lm +libFLAC_la_LIBADD = $(win_utf8_lib) $(LOCAL_EXTRA_LIBADD) @OPENSSL_LIBS@ @OGG_LIBS@ -lm SUBDIRS = $(ARCH_SUBDIRS) include . @@ -137,5 +137,5 @@ libFLAC_sources = \ libFLAC_la_SOURCES = $(libFLAC_sources) # needed for test_libFLAC -libFLAC_static_la_LIBADD = $(LOCAL_EXTRA_LIBADD) +libFLAC_static_la_LIBADD = $(LOCAL_EXTRA_LIBADD) $(OPENSSL_LIBS) libFLAC_static_la_SOURCES = $(libFLAC_sources) diff --git a/src/libFLAC/include/private/md5.h b/src/libFLAC/include/private/md5.h index e5f675a..5b42a27 100644 --- a/src/libFLAC/include/private/md5.h +++ b/src/libFLAC/include/private/md5.h @@ -28,6 +28,11 @@ #include "FLAC/ordinals.h" +#if defined(HAVE_OPENSSL) +#include <openssl/evp.h> +#define FLAC__MD5Context EVP_MD_CTX +#else +#define EVP_MAX_MD_SIZE 16 typedef struct { FLAC__uint32 in[16]; FLAC__uint32 buf[4]; @@ -37,7 +42,8 @@ typedef struct { } FLAC__MD5Context; void FLAC__MD5Init(FLAC__MD5Context *context); -void FLAC__MD5Final(FLAC__byte digest[16], FLAC__MD5Context *context); +void FLAC__MD5Final(FLAC__byte digest[EVP_MAX_MD_SIZE], FLAC__MD5Context *context); +#endif FLAC__bool FLAC__MD5Accumulate(FLAC__MD5Context *ctx, const FLAC__int32 * const signal[], unsigned channels, unsigned samples, unsigned bytes_per_sample); diff --git a/src/libFLAC/md5.c b/src/libFLAC/md5.c index e251d50..81439d5 100644 --- a/src/libFLAC/md5.c +++ b/src/libFLAC/md5.c @@ -5,6 +5,19 @@ #include <stdlib.h> /* for malloc() */ #include <string.h> /* for memcpy() */ +#ifdef HAVE_ALLOCA_H +# include <alloca.h> +#elif !defined alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _AIX +# define alloca __alloca +# elif defined _MSC_VER +# include <malloc.h> +# define alloca _alloca +# endif +#endif + #include "private/md5.h" #include "share/alloc.h" @@ -35,6 +48,7 @@ /* The four core functions - F1 is optimized somewhat */ +#if !defined(HAVE_OPENSSL) /* #define F1(x, y, z) (x & y | ~x & z) */ #define F1(x, y, z) (z ^ (x & (y ^ z))) #define F2(x, y, z) F1(z, x, y) @@ -267,6 +281,8 @@ void FLAC__MD5Final(FLAC__byte digest[16], FLAC__MD5Context *ctx) memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ } +#endif /* !defined(HAVE_OPENSSL) */ + /* * Convert the incoming audio signal to a byte stream */ @@ -401,6 +417,26 @@ FLAC__bool FLAC__MD5Accumulate(FLAC__MD5Context *ctx, const FLAC__int32 * const if((size_t)channels * (size_t)bytes_per_sample > SIZE_MAX / (size_t)samples) return false; +#if defined(HAVE_OPENSSL) + /* Use stack for the most common cases, heap when bytes_needed is larger than 4032 (unlikely) + * Note that this is a _very_ conservative estimation. + */ +#if defined(_MSC_VER) +/* see http://msdn.microsoft.com/en-us/library/5471dc8s(v=vs.80).aspx for the rationale */ + FLAC__byte *tmp = _malloca(bytes_needed); +#else + const FLAC__bool usealloca = (bytes_needed < 4032); + FLAC__byte *tmp = usealloca ? alloca(bytes_needed) : safe_malloc_(bytes_needed); +#endif + format_input_(tmp, signal, channels, samples, bytes_per_sample); + const FLAC__bool retval = (EVP_DigestUpdate(ctx, tmp , bytes_needed) == 1); +#if defined(_MSC_VER) + _freea(tmp) +#else + if(!usealloca) free(tmp); +#endif + return retval; +#else if(ctx->capacity < bytes_needed) { FLAC__byte *tmp = realloc(ctx->internal_buf, bytes_needed); if(0 == tmp) { @@ -418,4 +454,6 @@ FLAC__bool FLAC__MD5Accumulate(FLAC__MD5Context *ctx, const FLAC__int32 * const FLAC__MD5Update(ctx, ctx->internal_buf, bytes_needed); return true; +#endif + } diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c index f4d2d39..1b8cbec 100644 --- a/src/libFLAC/stream_decoder.c +++ b/src/libFLAC/stream_decoder.c @@ -170,7 +170,7 @@ typedef struct FLAC__StreamDecoderPrivate { FLAC__bool internal_reset_hack; /* used only during init() so we can call reset to set up the decoder without rewinding the input */ FLAC__bool is_seeking; FLAC__MD5Context md5context; - FLAC__byte computed_md5sum[16]; /* this is the sum we computed from the decoded data */ + FLAC__byte computed_md5sum[EVP_MAX_MD_SIZE]; /* this is the sum we computed from the decoded data */ /* (the rest of these are only used for seeking) */ FLAC__Frame last_frame; /* holds the info of the last frame we seeked to */ FLAC__uint64 first_frame_offset; /* hint to the seek routine of where in the stream the first audio frame starts */ @@ -307,7 +307,9 @@ FLAC_API FLAC__StreamDecoder *FLAC__stream_decoder_new(void) decoder->private_->file = 0; set_defaults_(decoder); - +#if defined(HAVE_OPENSSL) + EVP_MD_CTX_init(&decoder->private_->md5context); +#endif decoder->protected_->state = FLAC__STREAM_DECODER_UNINITIALIZED; return decoder; @@ -333,7 +335,9 @@ FLAC_API void FLAC__stream_decoder_delete(FLAC__StreamDecoder *decoder) for(i = 0; i < FLAC__MAX_CHANNELS; i++) FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&decoder->private_->partitioned_rice_contents[i]); - +#if defined(HAVE_OPENSSL) + EVP_MD_CTX_cleanup(&decoder->private_->md5context); +#endif free(decoder->private_); free(decoder->protected_); free(decoder); @@ -653,8 +657,16 @@ FLAC_API FLAC__bool FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder) /* see the comment in FLAC__seekable_stream_decoder_reset() as to why we * always call FLAC__MD5Final() */ +#if defined(HAVE_OPENSSL) + /* decoder->private_->computed_md5sum is NULL when decoder->private_->do_md5_checking == false + * that causes assertion failure crash in openSSL. + */ + if(decoder->private_->do_md5_checking) { + md5_failed = (EVP_DigestFinal_ex(&decoder->private_->md5context, decoder->private_->computed_md5sum, NULL) == 0); + } +#else FLAC__MD5Final(decoder->private_->computed_md5sum, &decoder->private_->md5context); - +#endif if(decoder->private_->has_seek_table && 0 != decoder->private_->seek_table.data.seek_table.points) { free(decoder->private_->seek_table.data.seek_table.points); decoder->private_->seek_table.data.seek_table.points = 0; @@ -1005,11 +1017,15 @@ FLAC_API FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder) * FLAC__stream_decoder_finish() to make sure things are always cleaned up * properly. */ - FLAC__MD5Init(&decoder->private_->md5context); + decoder->private_->first_frame_offset = 0; - decoder->private_->first_frame_offset = 0; - decoder->private_->unparseable_frame_count = 0; + decoder->private_->unparseable_frame_count = 0; +#if defined(HAVE_OPENSSL) + return (EVP_DigestInit_ex(&decoder->private_->md5context, EVP_md5(), NULL) == 1); +#else +▷⋅⋅⋅FLAC__MD5Init(&decoder->private_->md5context); +#endif return true; } diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c index bc30dca..4b226c5 100644 --- a/src/libFLAC/stream_encoder.c +++ b/src/libFLAC/stream_encoder.c @@ -563,7 +563,9 @@ FLAC_API FLAC__StreamEncoder *FLAC__stream_encoder_new(void) FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->partitioned_rice_contents_extra[i]); encoder->protected_->state = FLAC__STREAM_ENCODER_UNINITIALIZED; - +#if defined(HAVE_OPENSSL) + if(encoder->protected_->do_md5) EVP_MD_CTX_init(&encoder->private_->md5context); +#endif return encoder; } @@ -597,6 +599,11 @@ FLAC_API void FLAC__stream_encoder_delete(FLAC__StreamEncoder *encoder) FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->partitioned_rice_contents_extra[i]); FLAC__bitwriter_delete(encoder->private_->frame); +#if defined(HAVE_OPENSSL) + if(encoder->protected_->do_md5) { + EVP_MD_CTX_cleanup(&encoder->private_->md5context); + } +#endif free(encoder->private_); free(encoder->protected_); free(encoder); @@ -1030,8 +1037,15 @@ static FLAC__StreamEncoderInitStatus init_stream_internal_( encoder->private_->streaminfo.data.stream_info.bits_per_sample = encoder->protected_->bits_per_sample; encoder->private_->streaminfo.data.stream_info.total_samples = encoder->protected_->total_samples_estimate; /* we will replace this later with the real total */ memset(encoder->private_->streaminfo.data.stream_info.md5sum, 0, 16); /* we don't know this yet; have to fill it in later */ - if(encoder->protected_->do_md5) - FLAC__MD5Init(&encoder->private_->md5context); + if(encoder->protected_->do_md5) { +#if defined(HAVE_OPENSSL) + if(EVP_DigestInit_ex(&encoder->private_->md5context, EVP_md5(), NULL) == 0) { + return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR; + } +#else + FLAC__MD5Init(&encoder->private_->md5context); +#endif + } if(!FLAC__add_metadata_block(&encoder->private_->streaminfo, encoder->private_->frame)) { encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR; return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR; @@ -1300,9 +1314,13 @@ FLAC_API FLAC__bool FLAC__stream_encoder_finish(FLAC__StreamEncoder *encoder) } } - if(encoder->protected_->do_md5) - FLAC__MD5Final(encoder->private_->streaminfo.data.stream_info.md5sum, &encoder->private_->md5context); - + if(encoder->protected_->do_md5) { +#if defined(HAVE_OPENSSL) + error = (EVP_DigestFinal_ex(&encoder->private_->md5context, encoder->private_->streaminfo.data.stream_info.md5sum, NULL) == 0); +#else + FLAC__MD5Final(encoder->private_->streaminfo.data.stream_info.md5sum, &encoder->private_->md5context); +#endif + } if(!encoder->private_->is_being_deleted) { if(encoder->protected_->state == FLAC__STREAM_ENCODER_OK) { if(encoder->private_->seek_callback) { -- 1.8.1.4 ++++++ 0001-getopt_long-not-broken-here.patch ++++++ >From 58064f7aaf9934799c4ae578194892098cca3995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <[email protected]> Date: Sun, 26 May 2013 05:50:21 +0200 Subject: [PATCH] getopt_long not broken here. bundled version is used everywhere even when linux getopt_long is not broken, exclude that from our builds diff --git a/src/flac/Makefile.am b/src/flac/Makefile.am index ceae6a5..bd609e0 100644 --- a/src/flac/Makefile.am +++ b/src/flac/Makefile.am @@ -46,7 +46,6 @@ flac_SOURCES = \ flac_LDADD = \ $(top_builddir)/src/share/utf8/libutf8.la \ $(top_builddir)/src/share/grabbag/libgrabbag.la \ - $(top_builddir)/src/share/getopt/libgetopt.la \ $(top_builddir)/src/share/replaygain_analysis/libreplaygain_analysis.la \ $(top_builddir)/src/share/replaygain_synthesis/libreplaygain_synthesis.la \ $(top_builddir)/src/libFLAC/libFLAC.la \ diff --git a/src/flac/main.c b/src/flac/main.c index 62e54a4..4cfa64f 100644 --- a/src/flac/main.c +++ b/src/flac/main.c @@ -51,13 +51,7 @@ #define FLAC__STRCASECMP strcasecmp #endif -#if 0 -/*[JEC] was:#if HAVE_GETOPT_LONG*/ -/*[JEC] see flac/include/share/getopt.h as to why the change */ # include <getopt.h> -#else -# include "share/getopt.h" -#endif static int do_it(void); @@ -88,131 +82,131 @@ static int conditional_fclose(FILE *f); static char *local_strdup(const char *source); /* - * share__getopt format struct; note that for long options with no + * getopt format struct; note that for long options with no * short option equivalent we just set the 'val' field to 0. */ -static struct share__option long_options_[] = { +static struct option long_options_[] = { /* * general options */ - { "help" , share__no_argument, 0, 'h' }, - { "explain" , share__no_argument, 0, 'H' }, - { "version" , share__no_argument, 0, 'v' }, - { "decode" , share__no_argument, 0, 'd' }, - { "analyze" , share__no_argument, 0, 'a' }, - { "test" , share__no_argument, 0, 't' }, - { "stdout" , share__no_argument, 0, 'c' }, - { "silent" , share__no_argument, 0, 's' }, - { "totally-silent" , share__no_argument, 0, 0 }, - { "warnings-as-errors" , share__no_argument, 0, 'w' }, - { "force" , share__no_argument, 0, 'f' }, - { "delete-input-file" , share__no_argument, 0, 0 }, - { "preserve-modtime" , share__no_argument, 0, 0 }, - { "keep-foreign-metadata" , share__no_argument, 0, 0 }, - { "output-prefix" , share__required_argument, 0, 0 }, - { "output-name" , share__required_argument, 0, 'o' }, - { "skip" , share__required_argument, 0, 0 }, - { "until" , share__required_argument, 0, 0 }, - { "channel-map" , share__required_argument, 0, 0 }, /* undocumented */ + { "help" , no_argument, 0, 'h' }, + { "explain" , no_argument, 0, 'H' }, + { "version" , no_argument, 0, 'v' }, + { "decode" , no_argument, 0, 'd' }, + { "analyze" , no_argument, 0, 'a' }, + { "test" , no_argument, 0, 't' }, + { "stdout" , no_argument, 0, 'c' }, + { "silent" , no_argument, 0, 's' }, + { "totally-silent" , no_argument, 0, 0 }, + { "warnings-as-errors" , no_argument, 0, 'w' }, + { "force" , no_argument, 0, 'f' }, + { "delete-input-file" , no_argument, 0, 0 }, + { "preserve-modtime" , no_argument, 0, 0 }, + { "keep-foreign-metadata" , no_argument, 0, 0 }, + { "output-prefix" , required_argument, 0, 0 }, + { "output-name" , required_argument, 0, 'o' }, + { "skip" , required_argument, 0, 0 }, + { "until" , required_argument, 0, 0 }, + { "channel-map" , required_argument, 0, 0 }, /* undocumented */ /* * decoding options */ - { "decode-through-errors", share__no_argument, 0, 'F' }, - { "cue" , share__required_argument, 0, 0 }, - { "apply-replaygain-which-is-not-lossless", share__optional_argument, 0, 0 }, /* undocumented */ + { "decode-through-errors", no_argument, 0, 'F' }, + { "cue" , required_argument, 0, 0 }, + { "apply-replaygain-which-is-not-lossless", optional_argument, 0, 0 }, /* undocumented */ /* * encoding options */ - { "cuesheet" , share__required_argument, 0, 0 }, - { "no-cued-seekpoints" , share__no_argument, 0, 0 }, - { "picture" , share__required_argument, 0, 0 }, - { "tag" , share__required_argument, 0, 'T' }, - { "tag-from-file" , share__required_argument, 0, 0 }, - { "compression-level-0" , share__no_argument, 0, '0' }, - { "compression-level-1" , share__no_argument, 0, '1' }, - { "compression-level-2" , share__no_argument, 0, '2' }, - { "compression-level-3" , share__no_argument, 0, '3' }, - { "compression-level-4" , share__no_argument, 0, '4' }, - { "compression-level-5" , share__no_argument, 0, '5' }, - { "compression-level-6" , share__no_argument, 0, '6' }, - { "compression-level-7" , share__no_argument, 0, '7' }, - { "compression-level-8" , share__no_argument, 0, '8' }, - { "compression-level-9" , share__no_argument, 0, '9' }, - { "best" , share__no_argument, 0, '8' }, - { "fast" , share__no_argument, 0, '0' }, - { "verify" , share__no_argument, 0, 'V' }, - { "force-raw-format" , share__no_argument, 0, 0 }, - { "force-aiff-format" , share__no_argument, 0, 0 }, - { "force-rf64-format" , share__no_argument, 0, 0 }, - { "force-wave64-format" , share__no_argument, 0, 0 }, - { "lax" , share__no_argument, 0, 0 }, - { "replay-gain" , share__no_argument, 0, 0 }, - { "ignore-chunk-sizes" , share__no_argument, 0, 0 }, - { "sector-align" , share__no_argument, 0, 0 }, /* DEPRECATED */ - { "seekpoint" , share__required_argument, 0, 'S' }, - { "padding" , share__required_argument, 0, 'P' }, + { "cuesheet" , required_argument, 0, 0 }, + { "no-cued-seekpoints" , no_argument, 0, 0 }, + { "picture" , required_argument, 0, 0 }, + { "tag" , required_argument, 0, 'T' }, + { "tag-from-file" , required_argument, 0, 0 }, + { "compression-level-0" , no_argument, 0, '0' }, + { "compression-level-1" , no_argument, 0, '1' }, + { "compression-level-2" , no_argument, 0, '2' }, + { "compression-level-3" , no_argument, 0, '3' }, + { "compression-level-4" , no_argument, 0, '4' }, + { "compression-level-5" , no_argument, 0, '5' }, + { "compression-level-6" , no_argument, 0, '6' }, + { "compression-level-7" , no_argument, 0, '7' }, + { "compression-level-8" , no_argument, 0, '8' }, + { "compression-level-9" , no_argument, 0, '9' }, + { "best" , no_argument, 0, '8' }, + { "fast" , no_argument, 0, '0' }, + { "verify" , no_argument, 0, 'V' }, + { "force-raw-format" , no_argument, 0, 0 }, + { "force-aiff-format" , no_argument, 0, 0 }, + { "force-rf64-format" , no_argument, 0, 0 }, + { "force-wave64-format" , no_argument, 0, 0 }, + { "lax" , no_argument, 0, 0 }, + { "replay-gain" , no_argument, 0, 0 }, + { "ignore-chunk-sizes" , no_argument, 0, 0 }, + { "sector-align" , no_argument, 0, 0 }, /* DEPRECATED */ + { "seekpoint" , required_argument, 0, 'S' }, + { "padding" , required_argument, 0, 'P' }, #if FLAC__HAS_OGG - { "ogg" , share__no_argument, 0, 0 }, - { "serial-number" , share__required_argument, 0, 0 }, + { "ogg" , no_argument, 0, 0 }, + { "serial-number" , required_argument, 0, 0 }, #endif - { "blocksize" , share__required_argument, 0, 'b' }, - { "exhaustive-model-search" , share__no_argument, 0, 'e' }, - { "max-lpc-order" , share__required_argument, 0, 'l' }, - { "apodization" , share__required_argument, 0, 'A' }, - { "mid-side" , share__no_argument, 0, 'm' }, - { "adaptive-mid-side" , share__no_argument, 0, 'M' }, - { "qlp-coeff-precision-search", share__no_argument, 0, 'p' }, - { "qlp-coeff-precision" , share__required_argument, 0, 'q' }, - { "rice-partition-order" , share__required_argument, 0, 'r' }, - { "endian" , share__required_argument, 0, 0 }, - { "channels" , share__required_argument, 0, 0 }, - { "bps" , share__required_argument, 0, 0 }, - { "sample-rate" , share__required_argument, 0, 0 }, - { "sign" , share__required_argument, 0, 0 }, - { "input-size" , share__required_argument, 0, 0 }, + { "blocksize" , required_argument, 0, 'b' }, + { "exhaustive-model-search" , no_argument, 0, 'e' }, + { "max-lpc-order" , required_argument, 0, 'l' }, + { "apodization" , required_argument, 0, 'A' }, + { "mid-side" , no_argument, 0, 'm' }, + { "adaptive-mid-side" , no_argument, 0, 'M' }, + { "qlp-coeff-precision-search", no_argument, 0, 'p' }, + { "qlp-coeff-precision" , required_argument, 0, 'q' }, + { "rice-partition-order" , required_argument, 0, 'r' }, + { "endian" , required_argument, 0, 0 }, + { "channels" , required_argument, 0, 0 }, + { "bps" , required_argument, 0, 0 }, + { "sample-rate" , required_argument, 0, 0 }, + { "sign" , required_argument, 0, 0 }, + { "input-size" , required_argument, 0, 0 }, /* * analysis options */ - { "residual-gnuplot", share__no_argument, 0, 0 }, - { "residual-text", share__no_argument, 0, 0 }, + { "residual-gnuplot", no_argument, 0, 0 }, + { "residual-text", no_argument, 0, 0 }, /* * negatives */ - { "no-preserve-modtime" , share__no_argument, 0, 0 }, - { "no-decode-through-errors" , share__no_argument, 0, 0 }, - { "no-silent" , share__no_argument, 0, 0 }, - { "no-force" , share__no_argument, 0, 0 }, - { "no-seektable" , share__no_argument, 0, 0 }, - { "no-delete-input-file" , share__no_argument, 0, 0 }, - { "no-keep-foreign-metadata" , share__no_argument, 0, 0 }, - { "no-replay-gain" , share__no_argument, 0, 0 }, - { "no-ignore-chunk-sizes" , share__no_argument, 0, 0 }, - { "no-sector-align" , share__no_argument, 0, 0 }, /* DEPRECATED */ - { "no-utf8-convert" , share__no_argument, 0, 0 }, - { "no-lax" , share__no_argument, 0, 0 }, + { "no-preserve-modtime" , no_argument, 0, 0 }, + { "no-decode-through-errors" , no_argument, 0, 0 }, + { "no-silent" , no_argument, 0, 0 }, + { "no-force" , no_argument, 0, 0 }, + { "no-seektable" , no_argument, 0, 0 }, + { "no-delete-input-file" , no_argument, 0, 0 }, + { "no-keep-foreign-metadata" , no_argument, 0, 0 }, + { "no-replay-gain" , no_argument, 0, 0 }, + { "no-ignore-chunk-sizes" , no_argument, 0, 0 }, + { "no-sector-align" , no_argument, 0, 0 }, /* DEPRECATED */ + { "no-utf8-convert" , no_argument, 0, 0 }, + { "no-lax" , no_argument, 0, 0 }, #if FLAC__HAS_OGG - { "no-ogg" , share__no_argument, 0, 0 }, + { "no-ogg" , no_argument, 0, 0 }, #endif - { "no-exhaustive-model-search", share__no_argument, 0, 0 }, - { "no-mid-side" , share__no_argument, 0, 0 }, - { "no-adaptive-mid-side" , share__no_argument, 0, 0 }, - { "no-qlp-coeff-prec-search" , share__no_argument, 0, 0 }, - { "no-padding" , share__no_argument, 0, 0 }, - { "no-verify" , share__no_argument, 0, 0 }, - { "no-warnings-as-errors" , share__no_argument, 0, 0 }, - { "no-residual-gnuplot" , share__no_argument, 0, 0 }, - { "no-residual-text" , share__no_argument, 0, 0 }, + { "no-exhaustive-model-search", no_argument, 0, 0 }, + { "no-mid-side" , no_argument, 0, 0 }, + { "no-adaptive-mid-side" , no_argument, 0, 0 }, + { "no-qlp-coeff-prec-search" , no_argument, 0, 0 }, + { "no-padding" , no_argument, 0, 0 }, + { "no-verify" , no_argument, 0, 0 }, + { "no-warnings-as-errors" , no_argument, 0, 0 }, + { "no-residual-gnuplot" , no_argument, 0, 0 }, + { "no-residual-text" , no_argument, 0, 0 }, /* * undocumented debugging options for the test suite */ - { "disable-constant-subframes", share__no_argument, 0, 0 }, - { "disable-fixed-subframes" , share__no_argument, 0, 0 }, - { "disable-verbatim-subframes", share__no_argument, 0, 0 }, - { "no-md5-sum" , share__no_argument, 0, 0 }, + { "disable-constant-subframes", no_argument, 0, 0 }, + { "disable-fixed-subframes" , no_argument, 0, 0 }, + { "disable-verbatim-subframes", no_argument, 0, 0 }, + { "no-md5-sum" , no_argument, 0, 0 }, {0, 0, 0, 0} }; @@ -616,17 +610,17 @@ int parse_options(int argc, char *argv[]) FLAC__bool had_error = false; const char *short_opts = "0123456789aA:b:cdefFhHl:mMo:pP:q:r:sS:tT:vVw"; - while ((short_option = share__getopt_long(argc, argv, short_opts, long_options_, &option_index)) != -1) { + while ((short_option = getopt_long(argc, argv, short_opts, long_options_, &option_index)) != -1) { switch (short_option) { case 0: /* long option with no equivalent short option */ - had_error |= (parse_option(short_option, long_options_[option_index].name, share__optarg) != 0); + had_error |= (parse_option(short_option, long_options_[option_index].name, optarg) != 0); break; case '?': case ':': had_error = true; break; default: /* short option */ - had_error |= (parse_option(short_option, 0, share__optarg) != 0); + had_error |= (parse_option(short_option, 0, optarg) != 0); break; } } @@ -635,16 +629,16 @@ int parse_options(int argc, char *argv[]) return 1; } - FLAC__ASSERT(share__optind <= argc); + FLAC__ASSERT(optind <= argc); - option_values.num_files = argc - share__optind; + option_values.num_files = argc - optind; if(option_values.num_files > 0) { unsigned i = 0; if(0 == (option_values.filenames = malloc(sizeof(char*) * option_values.num_files))) die("out of memory allocating space for file names list"); - while(share__optind < argc) - option_values.filenames[i++] = local_strdup(argv[share__optind++]); + while(optind < argc) + option_values.filenames[i++] = local_strdup(argv[optind++]); } return 0; diff --git a/src/metaflac/Makefile.am b/src/metaflac/Makefile.am index 35460b1..114a066 100644 --- a/src/metaflac/Makefile.am +++ b/src/metaflac/Makefile.am @@ -44,7 +44,6 @@ metaflac_LDFLAGS = $(AM_LDFLAGS) metaflac_LDADD = \ $(top_builddir)/src/share/grabbag/libgrabbag.la \ $(top_builddir)/src/share/replaygain_analysis/libreplaygain_analysis.la \ - $(top_builddir)/src/share/getopt/libgetopt.la \ $(top_builddir)/src/share/utf8/libutf8.la \ $(top_builddir)/src/libFLAC/libFLAC.la \ @LIBICONV@ diff --git a/src/metaflac/options.c b/src/metaflac/options.c index e8e6151..68aab3e 100644 --- a/src/metaflac/options.c +++ b/src/metaflac/options.c @@ -33,10 +33,10 @@ #include <string.h> /* - share__getopt format struct; note we don't use short options so we just + getopt format struct; note we don't use short options so we just set the 'val' field to 0 everywhere to indicate a valid option. */ -struct share__option long_options_[] = { +struct option long_options_[] = { /* global options */ { "preserve-modtime", 0, 0, 0 }, { "with-filename", 0, 0, 0 }, @@ -159,10 +159,10 @@ FLAC__bool parse_options(int argc, char *argv[], CommandLineOptions *options) int option_index = 1; FLAC__bool had_error = false; - while ((ret = share__getopt_long(argc, argv, "", long_options_, &option_index)) != -1) { + while ((ret = getopt_long(argc, argv, "", long_options_, &option_index)) != -1) { switch (ret) { case 0: - had_error |= !parse_option(option_index, share__optarg, options); + had_error |= !parse_option(option_index, optarg, options); break; case '?': case ':': @@ -175,22 +175,22 @@ FLAC__bool parse_options(int argc, char *argv[], CommandLineOptions *options) } if(options->prefix_with_filename == 2) - options->prefix_with_filename = (argc - share__optind > 1); + options->prefix_with_filename = (argc - optind > 1); - if(share__optind >= argc && !options->show_long_help && !options->show_version) { + if(optind >= argc && !options->show_long_help && !options->show_version) { flac_fprintf(stderr,"ERROR: you must specify at least one FLAC file;\n"); flac_fprintf(stderr," metaflac cannot be used as a pipe\n"); had_error = true; } - options->num_files = argc - share__optind; + options->num_files = argc - optind; if(options->num_files > 0) { unsigned i = 0; if(0 == (options->filenames = safe_malloc_mul_2op_(sizeof(char*), /*times*/options->num_files))) die("out of memory allocating space for file names list"); - while(share__optind < argc) - options->filenames[i++] = local_strdup(argv[share__optind++]); + while(optind < argc) + options->filenames[i++] = local_strdup(argv[optind++]); } if(options->args.checks.num_major_ops > 0) { diff --git a/src/metaflac/options.h b/src/metaflac/options.h index 63079fe..944b1bf 100644 --- a/src/metaflac/options.h +++ b/src/metaflac/options.h @@ -21,15 +21,9 @@ #include "FLAC/format.h" -#if 0 -/*[JEC] was:#if HAVE_GETOPT_LONG*/ -/*[JEC] see flac/include/share/getopt.h as to why the change */ -# include <getopt.h> -#else -# include "share/getopt.h" -#endif +#include <getopt.h> -extern struct share__option long_options_[]; +extern struct option long_options_[]; typedef enum { OP__SHOW_MD5SUM, diff --git a/src/share/Makefile.am b/src/share/Makefile.am index d9521ce..e9f8dcd 100644 --- a/src/share/Makefile.am +++ b/src/share/Makefile.am @@ -42,7 +42,6 @@ EXTRA_DIST = \ noinst_LTLIBRARIES = \ - getopt/libgetopt.la \ grabbag/libgrabbag.la \ utf8/libutf8.la \ $(libwin_utf8_io) \ @@ -59,8 +58,6 @@ libwin_utf8_io = endif -getopt_libgetopt_la_SOURCES = getopt/getopt.c getopt/getopt1.c - grabbag_libgrabbag_la_SOURCES = \ grabbag/alloc.c \ grabbag/cuesheet.c \ -- 1.8.1.4 ++++++ flac-1.2.1_git201212051942.tar.xz -> flac-1.2.99_git201305252226.tar.xz ++++++ ++++ 25344 lines of diff (skipped) ++++++ flac-ocloexec.patch ++++++ --- /var/tmp/diff_new_pack.ThfG9X/_old 2013-06-05 11:51:37.000000000 +0200 +++ /var/tmp/diff_new_pack.ThfG9X/_new 2013-06-05 11:51:37.000000000 +0200 @@ -1,73 +1,37 @@ ---- src/libFLAC/metadata_iterators.c.orig -+++ src/libFLAC/metadata_iterators.c -@@ -438,10 +438,10 @@ static FLAC__bool simple_iterator_prime_ +--- flac-1.2.99_git201305252226.orig/src/libFLAC/metadata_iterators.c ++++ flac-1.2.99_git201305252226/src/libFLAC/metadata_iterators.c +@@ -420,10 +420,10 @@ static FLAC__bool simple_iterator_prime_ FLAC__ASSERT(0 != iterator); -- if(read_only || 0 == (iterator->file = fopen(iterator->filename, "r+b"))) { -+ if(read_only || 0 == (iterator->file = fopen(iterator->filename, "r+be"))) { +- if(read_only || 0 == (iterator->file = flac_fopen(iterator->filename, "r+b"))) { ++ if(read_only || 0 == (iterator->file = flac_fopen(iterator->filename, "r+be"))) { iterator->is_writable = false; if(read_only || errno == EACCES) { -- if(0 == (iterator->file = fopen(iterator->filename, "rb"))) { -+ if(0 == (iterator->file = fopen(iterator->filename, "rbe"))) { +- if(0 == (iterator->file = flac_fopen(iterator->filename, "rb"))) { ++ if(0 == (iterator->file = flac_fopen(iterator->filename, "rbe"))) { iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE; return false; } -@@ -1380,7 +1380,7 @@ static FLAC__bool chain_rewrite_metadata - - FLAC__ASSERT(0 != chain->filename); - -- if(0 == (file = fopen(chain->filename, "r+b"))) { -+ if(0 == (file = fopen(chain->filename, "r+be"))) { - chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE; - return false; - } -@@ -1405,7 +1405,7 @@ static FLAC__bool chain_rewrite_file_(FL - FLAC__ASSERT(0 != chain->head); - - /* copy the file prefix (data up to first metadata block */ -- if(0 == (f = fopen(chain->filename, "rb"))) { -+ if(0 == (f = fopen(chain->filename, "rbe"))) { - chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE; - return false; - } -@@ -1542,7 +1542,7 @@ static FLAC__bool chain_read_(FLAC__Meta - - chain->is_ogg = is_ogg; - -- if(0 == (file = fopen(filename, "rb"))) { -+ if(0 == (file = fopen(filename, "rbe"))) { - chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE; - return false; - } -@@ -3240,7 +3240,7 @@ FLAC__bool open_tempfile_(const char *fi - strcat(*tempfilename, tempfile_suffix); - } - -- if(0 == (*tempfile = fopen(*tempfilename, "w+b"))) { -+ if(0 == (*tempfile = fopen(*tempfilename, "w+be"))) { - *status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE; - return false; - } ---- src/libFLAC/stream_decoder.c.orig -+++ src/libFLAC/stream_decoder.c -@@ -628,7 +628,7 @@ static FLAC__StreamDecoderInitStatus ini +--- flac-1.2.99_git201305252226.orig/src/libFLAC/stream_decoder.c ++++ flac-1.2.99_git201305252226/src/libFLAC/stream_decoder.c +@@ -606,7 +606,7 @@ static FLAC__StreamDecoderInitStatus ini if(0 == write_callback || 0 == error_callback) return decoder->protected_->state = FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS; -- file = filename? fopen(filename, "rb") : stdin; -+ file = filename? fopen(filename, "rbe") : stdin; +- file = filename? flac_fopen(filename, "rb") : stdin; ++ file = filename? flac_fopen(filename, "rbe") : stdin; if(0 == file) return FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE; ---- src/libFLAC/stream_encoder.c.orig -+++ src/libFLAC/stream_encoder.c -@@ -1283,7 +1283,7 @@ static FLAC__StreamEncoderInitStatus ini +--- flac-1.2.99_git201305252226.orig/src/libFLAC/stream_encoder.c ++++ flac-1.2.99_git201305252226/src/libFLAC/stream_encoder.c +@@ -1250,7 +1250,7 @@ static FLAC__StreamEncoderInitStatus ini if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED) return FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED; -- file = filename? fopen(filename, "w+b") : stdout; -+ file = filename? fopen(filename, "w+be") : stdout; +- file = filename? flac_fopen(filename, "w+b") : stdout; ++ file = filename? flac_fopen(filename, "w+be") : stdout; if(file == 0) { encoder->protected_->state = FLAC__STREAM_ENCODER_IO_ERROR; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
