libextractor

GNU libextractor
Log | Files | Refs | Submodules | README | LICENSE

commit 158e4e3c0c72c58d8b444b3d7fd96add0cca7d1b
parent 6d0e44640f0e3df0fd283e9d0106d769b8e45207
Author: Christian Grothoff <christian@grothoff.org>
Date:   Fri, 28 Apr 2006 22:41:47 +0000

towards fixing Mantis 1056 (GNUnet bug)

Diffstat:
MChangeLog | 8++++++++
Mconfigure.ac | 10++++++++++
Msrc/include/platform.h | 2+-
Msrc/main/extract.c | 14+++++++++-----
Msrc/main/extractor.c | 23++++++++++++-----------
5 files changed, 40 insertions(+), 17 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,11 @@ +Fri Apr 28 16:18:26 PDT 2006 + Fixing some i18n issues. Specifically, EXTRACTOR_getKeywordTypeAsString + will now never return the translated version of the keyword type + (before, it *sometimes* returned the translated version, depending on + the default gettext domain and translation availability). If translation + is desired, clients should use 'dgettext("libextractor", ret-value)' to + translate the returned value. + Wed Apr 26 12:20:00 PDT 2006 Some improvements for OpenBSD portability. diff --git a/configure.ac b/configure.ac @@ -34,37 +34,44 @@ linux*) AC_DEFINE(LINUX,1,[This is a Linux system]) AC_DEFINE_UNQUOTED(LINUX,1,[This is a LINUX system]) AM_CONDITIONAL(HAVE_GNU_LD, true) + AM_CONDITIONAL(SOMEBSD, false) XTRA_CPPLIBS=-lstdc++ ;; freebsd*) AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system]) AC_CHECK_LIB(c_r, pthread_create) AM_CONDITIONAL(HAVE_GNU_LD, true) + AM_CONDITIONAL(SOMEBSD, true) ;; openbsd*) AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system]) AC_CHECK_LIB(c_r, pthread_create) AM_CONDITIONAL(HAVE_GNU_LD, true) + AM_CONDITIONAL(SOMEBSD, true) ;; netbsd*) AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system]) AC_CHECK_LIB(c_r, pthread_create) AM_CONDITIONAL(HAVE_GNU_LD, true) + AM_CONDITIONAL(SOMEBSD, true) ;; *solaris*) AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system]) AC_CHECK_LIB(resolv, res_init) XTRA_CPPLIBS=-lstdc++ AM_CONDITIONAL(HAVE_GNU_LD, false) + AM_CONDITIONAL(SOMEBSD, false) CFLAGS="-D_POSIX_PTHREAD_SEMANTICS $CFLAGS" ;; darwin*) AC_DEFINE_UNQUOTED(DARWIN,1,[This is a Darwin system]) AM_CONDITIONAL(HAVE_GNU_LD, false) + AM_CONDITIONAL(SOMEBSD, false) ;; cygwin*) AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a CYGWIN system]) LDFLAGS="$LDFLAGS -no-undefined" + AM_CONDITIONAL(SOMEBSD, false) AM_CONDITIONAL(HAVE_GNU_LD, false) ;; mingw*) @@ -75,12 +82,14 @@ mingw*) AC_CHECK_LIB(plibc, plibc_init,,[AC_MSG_ERROR([libextractor requires PlibC])]) LDFLAGS="$LDFLAGS -no-undefined -Wl,--export-all-symbols" AM_CONDITIONAL(HAVE_GNU_LD, true) + AM_CONDITIONAL(SOMEBSD, false) ;; *) AC_MSG_RESULT(Unrecognised OS $host_os) AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS]) AC_MSG_RESULT(otheros) AM_CONDITIONAL(HAVE_GNU_LD, false) + AM_CONDITIONAL(SOMEBSD, false) ;; esac @@ -112,6 +121,7 @@ AC_FUNC_FSEEKO AM_CONDITIONAL(CYGWIN, test "$build_os" = "cygwin") AM_CONDITIONAL(MINGW, test "$build_os" = "mingw32") + # use '-fno-strict-aliasing', but only if the compiler can take it if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then diff --git a/src/include/platform.h b/src/include/platform.h @@ -30,7 +30,7 @@ #include "config.h" #include "gettext.h" -#define _(a) dgettext("libextractor", a) +#define _(a) dgettext(PACKAGE, a) #include "plibc.h" diff --git a/src/main/extract.c b/src/main/extract.c @@ -196,7 +196,7 @@ printSelectedKeywords(FILE * handle, if (keywords->keywordType == EXTRACTOR_THUMBNAIL_DATA) { fprintf (handle, _("%s - (binary)\n"), - EXTRACTOR_getKeywordTypeAsString(keywords->keywordType)); + _(EXTRACTOR_getKeywordTypeAsString(keywords->keywordType))); } else { if (NULL == EXTRACTOR_getKeywordTypeAsString(keywords->keywordType)) { if (verbose == YES) { @@ -207,7 +207,7 @@ printSelectedKeywords(FILE * handle, } else if (print[keywords->keywordType] == YES) fprintf (handle, "%s - %s\n", - EXTRACTOR_getKeywordTypeAsString(keywords->keywordType), + _(EXTRACTOR_getKeywordTypeAsString(keywords->keywordType)), keyword); } free(keyword); @@ -463,7 +463,8 @@ main (int argc, char *argv[]) case 'L': i = 0; while (NULL != EXTRACTOR_getKeywordTypeAsString (i)) - printf ("%s\n", EXTRACTOR_getKeywordTypeAsString (i++)); + printf ("%s\n", + _(EXTRACTOR_getKeywordTypeAsString (i++))); return 0; case 'n': nodefault = YES; @@ -485,7 +486,9 @@ main (int argc, char *argv[]) i = 0; while (NULL != EXTRACTOR_getKeywordTypeAsString (i)) { - if (0 == strcmp (optarg, EXTRACTOR_getKeywordTypeAsString (i))) + if ( (0 == strcmp (optarg, EXTRACTOR_getKeywordTypeAsString (i))) || + (0 == strcmp (optarg, _(EXTRACTOR_getKeywordTypeAsString (i)))) ) + { print[i] = YES; break; @@ -517,7 +520,8 @@ main (int argc, char *argv[]) i = 0; while (NULL != EXTRACTOR_getKeywordTypeAsString (i)) { - if (0 == strcmp (optarg, EXTRACTOR_getKeywordTypeAsString (i))) + if ( (0 == strcmp (optarg, EXTRACTOR_getKeywordTypeAsString (i))) || + (0 == strcmp (optarg, _(EXTRACTOR_getKeywordTypeAsString (i)))) ) { print[i] = NO; break; diff --git a/src/main/extractor.c b/src/main/extractor.c @@ -358,7 +358,7 @@ const char * EXTRACTOR_getKeywordTypeAsString(const EXTRACTOR_KeywordType type) { if ((type >= 0) && (type < HIGHEST_TYPE_NUMBER)) - return gettext(keywordTypes[type]); + return keywordTypes[type]; else return NULL; } @@ -1135,7 +1135,7 @@ EXTRACTOR_printKeywords(FILE * handle, if (keywords->keywordType == EXTRACTOR_THUMBNAIL_DATA) { fprintf(handle, _("%s - (binary)\n"), - gettext(keywordTypes[keywords->keywordType])); + _(keywordTypes[keywords->keywordType])); } else { if (keywords->keywordType >= HIGHEST_TYPE_NUMBER) fprintf(handle, @@ -1144,7 +1144,7 @@ EXTRACTOR_printKeywords(FILE * handle, else fprintf(handle, "%s - %s\n", - gettext(keywordTypes[keywords->keywordType]), + _(keywordTypes[keywords->keywordType]), buf); } free(buf); @@ -1212,14 +1212,15 @@ EXTRACTOR_extractLastByString (const char * type, EXTRACTOR_KeywordList * keywords) { char * result = NULL; - if ( type == NULL ) - return result; - while (keywords != NULL ) - { - if ( !strcmp(gettext(keywordTypes[keywords->keywordType]), type) ) - result = keywords->keyword; - keywords = keywords->next; - } + + if (type == NULL) + return NULL; + while (keywords != NULL) { + if ( (0 == strcmp(_(keywordTypes[keywords->keywordType]), type)) || + (0 == strcmp(keywordTypes[keywords->keywordType], type) ) ) + result = keywords->keyword; + keywords = keywords->next; + } return result; }