X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=intl%2Flog.c;h=cb6076e80f7607d0f4f9bf23658c77e2d4f9d4ac;hb=69a912c0db0ac135fff332db4f0b05ad9ed2eec6;hp=a3e4b27263e9573791c0ebf698555d8e8e619959;hpb=ee5170ade20748797fdde09e370fbb07e585fc9a;p=pkg%2Fabook.git diff --git a/intl/log.c b/intl/log.c index a3e4b27..cb6076e 100644 --- a/intl/log.c +++ b/intl/log.c @@ -1,5 +1,5 @@ /* Log file output. - Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc. + Copyright (C) 2003 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published @@ -13,7 +13,7 @@ You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by Bruno Haible . */ @@ -26,103 +26,73 @@ #include #include -/* Handle multi-threaded applications. */ -#ifdef _LIBC -# include -#else -# include "lock.h" -#endif - -/* Separator between msgctxt and msgid in .mo files. */ -#define MSGCTXT_SEPARATOR '\004' /* EOT */ - /* Print an ASCII string with quotes and escape sequences where needed. */ static void -print_escaped (FILE *stream, const char *str, const char *str_end) +print_escaped (FILE *stream, const char *str) { putc ('"', stream); - for (; str != str_end; str++) + for (; *str != '\0'; str++) if (*str == '\n') { - fputs ("\\n\"", stream); - if (str + 1 == str_end) - return; - fputs ("\n\"", stream); + fputs ("\\n\"", stream); + if (str[1] == '\0') + return; + fputs ("\n\"", stream); } else { - if (*str == '"' || *str == '\\') - putc ('\\', stream); - putc (*str, stream); + if (*str == '"' || *str == '\\') + putc ('\\', stream); + putc (*str, stream); } putc ('"', stream); } -static char *last_logfilename = NULL; -static FILE *last_logfile = NULL; -__libc_lock_define_initialized (static, lock) - -static inline void -_nl_log_untranslated_locked (const char *logfilename, const char *domainname, - const char *msgid1, const char *msgid2, int plural) +/* Add to the log file an entry denoting a failed translation. */ +void +_nl_log_untranslated (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) { + static char *last_logfilename = NULL; + static FILE *last_logfile = NULL; FILE *logfile; - const char *separator; /* Can we reuse the last opened logfile? */ if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0) { /* Close the last used logfile. */ if (last_logfilename != NULL) - { - if (last_logfile != NULL) - { - fclose (last_logfile); - last_logfile = NULL; - } - free (last_logfilename); - last_logfilename = NULL; - } + { + if (last_logfile != NULL) + { + fclose (last_logfile); + last_logfile = NULL; + } + free (last_logfilename); + last_logfilename = NULL; + } /* Open the logfile. */ last_logfilename = (char *) malloc (strlen (logfilename) + 1); if (last_logfilename == NULL) - return; + return; strcpy (last_logfilename, logfilename); last_logfile = fopen (logfilename, "a"); if (last_logfile == NULL) - return; + return; } logfile = last_logfile; fprintf (logfile, "domain "); - print_escaped (logfile, domainname, domainname + strlen (domainname)); - separator = strchr (msgid1, MSGCTXT_SEPARATOR); - if (separator != NULL) - { - /* The part before the MSGCTXT_SEPARATOR is the msgctxt. */ - fprintf (logfile, "\nmsgctxt "); - print_escaped (logfile, msgid1, separator); - msgid1 = separator + 1; - } + print_escaped (logfile, domainname); fprintf (logfile, "\nmsgid "); - print_escaped (logfile, msgid1, msgid1 + strlen (msgid1)); + print_escaped (logfile, msgid1); if (plural) { fprintf (logfile, "\nmsgid_plural "); - print_escaped (logfile, msgid2, msgid2 + strlen (msgid2)); + print_escaped (logfile, msgid2); fprintf (logfile, "\nmsgstr[0] \"\"\n"); } else fprintf (logfile, "\nmsgstr \"\"\n"); putc ('\n', logfile); } - -/* Add to the log file an entry denoting a failed translation. */ -void -_nl_log_untranslated (const char *logfilename, const char *domainname, - const char *msgid1, const char *msgid2, int plural) -{ - __libc_lock_lock (lock); - _nl_log_untranslated_locked (logfilename, domainname, msgid1, msgid2, plural); - __libc_lock_unlock (lock); -}