You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.7 KiB
98 lines
2.7 KiB
/* Log file output. |
|
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 |
|
by the Free Software Foundation; either version 2, 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. |
|
|
|
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
USA. */ |
|
|
|
/* Written by Bruno Haible <bruno@clisp.org>. */ |
|
|
|
#ifdef HAVE_CONFIG_H |
|
# include <config.h> |
|
#endif |
|
|
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
|
|
|
/* Print an ASCII string with quotes and escape sequences where needed. */ |
|
static void |
|
print_escaped (FILE *stream, const char *str) |
|
{ |
|
putc ('"', stream); |
|
for (; *str != '\0'; str++) |
|
if (*str == '\n') |
|
{ |
|
fputs ("\\n\"", stream); |
|
if (str[1] == '\0') |
|
return; |
|
fputs ("\n\"", stream); |
|
} |
|
else |
|
{ |
|
if (*str == '"' || *str == '\\') |
|
putc ('\\', stream); |
|
putc (*str, stream); |
|
} |
|
putc ('"', stream); |
|
} |
|
|
|
/* 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; |
|
|
|
/* 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; |
|
} |
|
/* Open the logfile. */ |
|
last_logfilename = (char *) malloc (strlen (logfilename) + 1); |
|
if (last_logfilename == NULL) |
|
return; |
|
strcpy (last_logfilename, logfilename); |
|
last_logfile = fopen (logfilename, "a"); |
|
if (last_logfile == NULL) |
|
return; |
|
} |
|
logfile = last_logfile; |
|
|
|
fprintf (logfile, "domain "); |
|
print_escaped (logfile, domainname); |
|
fprintf (logfile, "\nmsgid "); |
|
print_escaped (logfile, msgid1); |
|
if (plural) |
|
{ |
|
fprintf (logfile, "\nmsgid_plural "); |
|
print_escaped (logfile, msgid2); |
|
fprintf (logfile, "\nmsgstr[0] \"\"\n"); |
|
} |
|
else |
|
fprintf (logfile, "\nmsgstr \"\"\n"); |
|
putc ('\n', logfile); |
|
}
|
|
|