diff options
author | Reuben Thomas <rrt@sc3d.org> | 2013-12-16 02:33:24 +0000 |
---|---|---|
committer | Reuben Thomas <rrt@sc3d.org> | 2013-12-16 02:33:24 +0000 |
commit | bdc4e6f675930e28bfcb373225ef8cb4a9e47340 (patch) | |
tree | 1436629f308946bbc76624c47443bdaa1a243c0f /intl/log.c | |
parent | bce3b23795023b2493226bb88c9fea1e2ee5898b (diff) | |
download | plptools-bdc4e6f675930e28bfcb373225ef8cb4a9e47340.tar.gz plptools-bdc4e6f675930e28bfcb373225ef8cb4a9e47340.tar.bz2 plptools-bdc4e6f675930e28bfcb373225ef8cb4a9e47340.zip |
Make reasonably recent autotools happy; remove gettext files
Diffstat (limited to 'intl/log.c')
-rw-r--r-- | intl/log.c | 82 |
1 files changed, 46 insertions, 36 deletions
@@ -1,20 +1,18 @@ /* Log file output. - Copyright (C) 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 2003, 2005, 2009 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 - by the Free Software Foundation; either version 2, or (at your option) - any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. - 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, - USA. */ + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* Written by Bruno Haible <bruno@clisp.org>. */ @@ -33,24 +31,27 @@ # 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) +print_escaped (FILE *stream, const char *str, const char *str_end) { putc ('"', stream); - for (; *str != '\0'; str++) + for (; str != str_end; str++) if (*str == '\n') { - fputs ("\\n\"", stream); - if (str[1] == '\0') - return; - fputs ("\n\"", stream); + fputs ("\\n\"", stream); + if (str + 1 == str_end) + return; + fputs ("\n\"", stream); } else { - if (*str == '"' || *str == '\\') - putc ('\\', stream); - putc (*str, stream); + if (*str == '"' || *str == '\\') + putc ('\\', stream); + putc (*str, stream); } putc ('"', stream); } @@ -61,43 +62,52 @@ __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) + const char *msgid1, const char *msgid2, int plural) { 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); + 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; + } fprintf (logfile, "\nmsgid "); - print_escaped (logfile, msgid1); + print_escaped (logfile, msgid1, msgid1 + strlen (msgid1)); if (plural) { fprintf (logfile, "\nmsgid_plural "); - print_escaped (logfile, msgid2); + print_escaped (logfile, msgid2, msgid2 + strlen (msgid2)); fprintf (logfile, "\nmsgstr[0] \"\"\n"); } else @@ -108,7 +118,7 @@ _nl_log_untranslated_locked (const char *logfilename, const char *domainname, /* 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) + const char *msgid1, const char *msgid2, int plural) { __libc_lock_lock (lock); _nl_log_untranslated_locked (logfilename, domainname, msgid1, msgid2, plural); |