aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-04-27 00:50:31 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2009-04-27 00:50:31 +0300
commitfe8f5226e8bc39bdc75e40e1c1ea464e9fc60ad3 (patch)
tree611a7c8505a0eb77a2b84de5dab80b6ca02a14e6
parentd50fc04ded36255465184a16c70eb4c50acdb199 (diff)
downloadtagr-fe8f5226e8bc39bdc75e40e1c1ea464e9fc60ad3.tar.gz
tagr-fe8f5226e8bc39bdc75e40e1c1ea464e9fc60ad3.tar.bz2
Provide i18n markers
-rw-r--r--configure.ac18
-rw-r--r--src/graph.c1
-rw-r--r--src/html.gram.y34
-rw-r--r--src/html.lex.l10
-rw-r--r--src/log.c16
-rw-r--r--src/main.c77
-rw-r--r--src/readconfig.c32
-rw-r--r--src/report.c40
-rw-r--r--src/stat.c65
-rw-r--r--src/tagr.h5
10 files changed, 167 insertions, 131 deletions
diff --git a/configure.ac b/configure.ac
index a622998..70e0c79 100644
--- a/configure.ac
+++ b/configure.ac
@@ -74,6 +74,24 @@ AC_CHECK_HEADERS(gdbm.h,
AC_CHECK_LIB([gdbm], [gdbm_open],
,
[AC_MSG_ERROR([libgdbm not found])])
+
+## Default syslog facility
+LOG_FACILITY="LOG_DAEMON"
+
+AC_ARG_VAR([LOG_FACILITY],
+ [Default syslog facility])
+if test -n "$LOG_FACILITY"; then
+ logfacility=`echo $LOG_FACILITY | tr a-z A-Z`
+ case $logfacility in
+ USER|DAEMON|AUTH|AUTHPRIV|MAIL|CRON|LOCAL[[0-7]])
+ LOG_FACILITY=LOG_$logfacility;;
+ LOG_USER|LOG_DAEMON|LOG_AUTH|LOG_AUTHPRIV|LOG_MAIL|LOG_CRON|LOG_LOCAL[[0-7]])
+ LOG_FACILITY=$logfacility;;
+ *) AC_MSG_ERROR([Invalid value of LOG_FACILITY]);;
+ esac
+fi
+AC_DEFINE_UNQUOTED([LOG_FACILITY],$LOG_FACILITY,
+ [Default syslog facility.])
AC_CONFIG_FILES([Makefile
gnu/Makefile
diff --git a/src/graph.c b/src/graph.c
index bfd00cb..1464e8b 100644
--- a/src/graph.c
+++ b/src/graph.c
@@ -54,6 +54,7 @@ int graph_ysize = 100;
int graph_h_margin[2] = { 100, 14 };
int graph_v_margin[2] = { 14, 35 };
+/* FIXME: I18N?? */
char *rate_unit = "Bytes per Second";
#define make_color_index(g, ar) \
diff --git a/src/html.gram.y b/src/html.gram.y
index fae64ff..e488494 100644
--- a/src/html.gram.y
+++ b/src/html.gram.y
@@ -113,7 +113,7 @@ expr : value
init_value (&$$, unspecified_value, NULL);
else if ($1.type != $3.type)
{
- yyerror ("type mismatch in addition");
+ yyerror (_("type mismatch in addition"));
init_value (&$$, unspecified_value, NULL);
}
else
@@ -145,12 +145,12 @@ expr : value
init_value (&$$, unspecified_value, NULL);
else if ($1.type != $3.type)
{
- yyerror ("type mismatch in subtraction");
+ yyerror (_("type mismatch in subtraction"));
init_value (&$$, unspecified_value, NULL);
}
else if ($1.type == string_value)
{
- yyerror ("subtraction not defined for strings");
+ yyerror (_("subtraction not defined for strings"));
init_value (&$$, unspecified_value, NULL);
}
else
@@ -167,12 +167,12 @@ expr : value
init_value (&$$, unspecified_value, NULL);
else if ($1.type != $3.type)
{
- yyerror ("type mismatch in multiplication");
+ yyerror (_("type mismatch in multiplication"));
init_value (&$$, unspecified_value, NULL);
}
else if ($1.type == string_value)
{
- yyerror ("multiplication not defined for strings");
+ yyerror (_("multiplication not defined for strings"));
init_value (&$$, unspecified_value, NULL);
}
else
@@ -189,17 +189,17 @@ expr : value
init_value (&$$, unspecified_value, NULL);
else if ($1.type != $3.type)
{
- yyerror ("type mismatch in division");
+ yyerror (_("type mismatch in division"));
init_value (&$$, unspecified_value, NULL);
}
else if ($1.type == string_value)
{
- yyerror ("division not defined for strings");
+ yyerror (_("division not defined for strings"));
init_value (&$$, unspecified_value, NULL);
}
else if (fabs ($3.v.number) < 1.0e-5)
{
- yyerror ("division by zero");
+ yyerror (_("division by zero"));
init_value (&$$, unspecified_value, NULL);
}
else
@@ -215,7 +215,7 @@ expr : value
init_value (&$$, unspecified_value, NULL);
else if ($2.type == string_value)
{
- yyerror ("unary minus not defined for strings");
+ yyerror (_("unary minus not defined for strings"));
init_value (&$$, unspecified_value, NULL);
}
else
@@ -230,7 +230,7 @@ expr : value
init_value (&$$, unspecified_value, NULL);
else if ($2.type == string_value)
{
- yyerror ("unary plus not defined for strings");
+ yyerror (_("unary plus not defined for strings"));
init_value (&$$, unspecified_value, NULL);
}
else
@@ -273,7 +273,7 @@ create_html (pp_tab_t *tab, char *file, char *dest)
tmp_file = fopen (tmp_file_name, "w");
if (!tmp_file)
{
- logmsg (L_ERR, "cannot open output file `%s': %s",
+ logmsg (L_ERR, _("cannot open output file `%s': %s"),
file, strerror (errno));
html_close ();
return 1;
@@ -286,14 +286,14 @@ create_html (pp_tab_t *tab, char *file, char *dest)
{
if (unlink (dest) && errno != ENOENT)
{
- logmsg (L_ERR, "cannot unlink file `%s': %s",
+ logmsg (L_ERR, _("cannot unlink file `%s': %s"),
dest, strerror (errno));
rc = 1;
}
if (rename (tmp_file_name, dest))
{
- logmsg (L_ERR, "cannot rename `%s' to `%s': %s",
+ logmsg (L_ERR, _("cannot rename `%s' to `%s': %s"),
tmp_file_name, dest,
strerror (errno));
rc = 1;
@@ -494,7 +494,7 @@ read_symtab (pp_tab_t **tab, const char *name)
cmd = *p++;
if (*p != ' ' || !(isascii (*++p) && isalpha (*p)))
{
- logmsg (L_ERR, "%s:%u: invalid input: %s",
+ logmsg (L_ERR, _("%s:%u: invalid input: %s"),
name, line, buf);
status = 1;
break;
@@ -503,7 +503,7 @@ read_symtab (pp_tab_t **tab, const char *name)
p = strchr (var, ' ');
if (!p)
{
- logmsg (L_ERR, "%s:%u: invalid input: %s",
+ logmsg (L_ERR, _("%s:%u: invalid input: %s"),
name, line, buf);
status = 1;
break;
@@ -523,7 +523,7 @@ read_symtab (pp_tab_t **tab, const char *name)
double num = strtod (value, &p);
if (*p)
{
- logmsg (L_ERR, "%s:%u: invalid numeric value: %s",
+ logmsg (L_ERR, _("%s:%u: invalid numeric value: %s"),
name, line, value);
status = 1;
}
@@ -533,7 +533,7 @@ read_symtab (pp_tab_t **tab, const char *name)
break;
default:
- logmsg (L_NOTICE, "%s:%u: ignoring unknown command %#03o",
+ logmsg (L_NOTICE, _("%s:%u: ignoring unknown command %#03o"),
name, line, cmd);
}
}
diff --git a/src/html.lex.l b/src/html.lex.l
index 931bfc1..0e0d423 100644
--- a/src/html.lex.l
+++ b/src/html.lex.l
@@ -43,7 +43,7 @@ N [0-9]+
\${NAME} {
if (find_value (yytext+1, &yylval.value))
{
- yyerror ("unknown identifier");
+ yyerror (_("unknown identifier"));
init_value (&yylval.value, unspecified_value, NULL);
}
return IDENT;
@@ -52,7 +52,7 @@ N [0-9]+
yytext[yyleng-1] = 0;
if (find_value (yytext+2, &yylval.value))
{
- yyerror ("unknown identifier");
+ yyerror (_("unknown identifier"));
init_value (&yylval.value, unspecified_value, NULL);
}
return IDENT;
@@ -62,7 +62,7 @@ N [0-9]+
*p = 0;
if (find_value (yytext+2, &yylval.value))
{
- yyerror ("unknown identifier");
+ yyerror (_("unknown identifier"));
init_value (&yylval.value, unspecified_value, NULL);
}
else
@@ -77,7 +77,7 @@ N [0-9]+
*p++ = 0;
if (find_value (yytext+2, &val))
{
- yyerror ("unknown identifier");
+ yyerror (_("unknown identifier"));
init_value (&yylval.value, unspecified_value, NULL);
}
else
@@ -130,7 +130,7 @@ html_open (char *file)
yyin = fopen (file, "r");
if (!yyin)
{
- logmsg (L_ERR, "cannot open input file `%s': %s",
+ logmsg (L_ERR, _("cannot open input file `%s': %s"),
file, strerror (errno));
return 1;
}
diff --git a/src/log.c b/src/log.c
index de847c9..e5ae4e1 100644
--- a/src/log.c
+++ b/src/log.c
@@ -29,7 +29,7 @@
#include <argp.h>
#include <tagr.h>
-int log_facility = LOGFACILITY;
+int log_facility = LOG_FACILITY;
char *log_tag;
int log_print_severity; /* FIXME: not used */
@@ -51,12 +51,12 @@ int syslog_level[] = {
};
char *level_str[] = {
- "debug",
- "info",
- "notice",
- "warning",
- "error",
- "CRITICAL",
+ N_("debug"),
+ N_("info"),
+ N_("notice"),
+ N_("warning"),
+ N_("error"),
+ N_("CRITICAL"),
};
@@ -65,7 +65,7 @@ vlogmsg (int level, const char *fmt, va_list ap)
{
if (grecs_log_to_stderr)
{
- fprintf (stderr, "%s: %s: ", log_tag, level_str[level]);
+ fprintf (stderr, "%s: %s: ", log_tag, gettext (level_str[level]));
vfprintf (stderr, fmt, ap);
fprintf (stderr, "\n");
}
diff --git a/src/main.c b/src/main.c
index 2a20ba9..9b98ec5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -80,8 +80,8 @@ static char *user_option = NULL;
static char *html_template_option = NULL;
const char *program_version = "tagr (" PACKAGE_STRING ")";
-static char doc[] = "tagr -- traffic analyzer and grapher";
-static char args_doc[] = "";
+static char doc[] = N_("tagr -- traffic analyzer and grapher");
+static char args_doc[] = "[FILES or DIRS...]";
enum {
OPT_IMPORT = 256,
@@ -112,7 +112,7 @@ static struct argp_option options[] = {
N_("import old (mrtg-style) log files from DIR (or the basedir, if not given)"),
GRID+1 },
{"read", OPT_READ, NULL, 0,
- N_("read statistics from the given file or standard input") },
+ N_("read statistics from given FILEs or standard input") },
{"rebuild", 'b', NULL, 0,
N_("rebuild graphs using existing statistics"), GRID+1},
{"list", 'l', NULL, 0, N_("list contents of the rate database"), GRID+1},
@@ -187,12 +187,12 @@ static struct argp_option options[] = {
static void
show_defaults ()
{
- printf ("Configuration file: %s\n", TAGR_CONFIGFILE);
- printf ("Page template file: %s\n", TAGR_TEMPLATE);
- printf ("PID file: %s\n", TAGR_PIDFILE);
- printf ("DB file name: %s\n", TAGR_DBNAME);
- printf ("DB file permissions: %#o\n", TAGR_DBMODE);
- printf ("Syslog facility number: %d\n", LOGFACILITY);
+ printf (_("Configuration file: %s\n"), TAGR_CONFIGFILE);
+ printf (_("Page template file: %s\n"), TAGR_TEMPLATE);
+ printf (_("PID file: %s\n"), TAGR_PIDFILE);
+ printf (_("DB file name: %s\n"), TAGR_DBNAME);
+ printf (_("DB file permissions: %#o\n"), TAGR_DBMODE);
+ printf (_("Syslog facility number: %d\n"), LOG_FACILITY);
}
static void
@@ -335,7 +335,7 @@ change_privs (uid_t uid, gid_t gid)
emptygidset[0] = gid ? gid : getegid ();
if (geteuid () == 0 && setgroups (1, emptygidset))
{
- logmsg (L_ERR, "setgroups(1, %lu) failed: %s",
+ logmsg (L_ERR, _("setgroups(1, %lu) failed: %s"),
(u_long) emptygidset[0], strerror (errno));
rc = 1;
}
@@ -345,25 +345,26 @@ change_privs (uid_t uid, gid_t gid)
#if defined(HAVE_SETEGID)
if ((rc = setegid (gid)) < 0)
- logmsg (L_ERR, "setegid(%lu) failed: %s", (u_long) gid, strerror (errno));
+ logmsg (L_ERR, _("setegid(%lu) failed: %s"),
+ (u_long) gid, strerror (errno));
#elif defined(HAVE_SETREGID)
if ((rc = setregid (gid, gid)) < 0)
- logmsg (L_ERR, "setregid(%lu,%lu) failed: %s",
+ logmsg (L_ERR, _("setregid(%lu,%lu) failed: %s"),
(u_long) gid, (u_long) gid, strerror (errno));
#elif defined(HAVE_SETRESGID)
if ((rc = setresgid (gid, gid, gid)) < 0)
- logmsg (L_ERR, "setresgid(%lu,%lu,%lu) failed: %s",
+ logmsg (L_ERR, _("setresgid(%lu,%lu,%lu) failed: %s"),
(u_long) gid, (u_long) gid, (u_long) gid, strerror (errno));
#endif
if (rc == 0 && gid != 0)
{
if ((rc = setgid (gid)) < 0 && getegid () != gid)
- logmsg (L_ERR, "setgid(%lu) failed: %s",
+ logmsg (L_ERR, _("setgid(%lu) failed: %s"),
(u_long) gid, strerror (errno));
if (rc == 0 && getegid () != gid)
{
- logmsg (L_ERR, "cannot set effective gid to %lu: %s",
+ logmsg (L_ERR, _("cannot set effective gid to %lu: %s"),
(u_long) gid, strerror (errno));
rc = 1;
}
@@ -385,14 +386,14 @@ change_privs (uid_t uid, gid_t gid)
if (setreuid (uid, -1) < 0)
{
logmsg (L_ERR,
- "setreuid(%lu,-1) failed: %s",
+ _("setreuid(%lu,-1) failed: %s"),
(u_long) uid, strerror (errno));
rc = 1;
}
if (setuid (uid) < 0)
{
logmsg (L_ERR,
- "second setuid(%lu) failed: %s",
+ _("second setuid(%lu) failed: %s"),
(u_long) uid, strerror (errno));
rc = 1;
}
@@ -400,7 +401,7 @@ change_privs (uid_t uid, gid_t gid)
else
#endif
{
- logmsg (L_ERR, "setuid(%lu) failed: %s",
+ logmsg (L_ERR, _("setuid(%lu) failed: %s"),
(u_long) uid, strerror (errno));
rc = 1;
}
@@ -412,12 +413,12 @@ change_privs (uid_t uid, gid_t gid)
euid = geteuid ();
if (uid != 0 && setuid (0) == 0)
{
- logmsg (L_ERR, "seteuid(0) succeeded when it should not");
+ logmsg (L_ERR, _("seteuid(0) succeeded when it should not"));
rc = 1;
}
else if (uid != euid && setuid (euid) == 0)
{
- logmsg (L_ERR, "cannot drop non-root setuid privileges");
+ logmsg (L_ERR, _("cannot drop non-root setuid privileges"));
rc = 1;
}
}
@@ -434,7 +435,7 @@ change_user ()
if (getuid () == 0)
{
- logmsg (L_NOTICE, "not a superuser: ignoring the `user' statement");
+ logmsg (L_NOTICE, _("not a superuser: ignoring the `user' statement"));
return;
}
@@ -462,7 +463,8 @@ decode_buffer ()
if (reply->n_addr > MAXADDR)
{
- logmsg (L_NOTICE, "got invalid packet: n_addr = %d", reply->n_addr);
+ logmsg (L_NOTICE, _("got invalid packet: n_addr = %d"),
+ reply->n_addr);
return;
}
reply->timestamp = ntohl (reply->timestamp);
@@ -471,7 +473,7 @@ decode_buffer ()
char tbuf[sizeof("2009-04-01 00:00:00")];
strftime (tbuf, sizeof tbuf, "%Y-%m-%d %H:%M:%S",
gmtime (&reply->timestamp));
- logmsg (L_INFO, "Received packet: %d %lu - %s", reply->n_addr,
+ logmsg (L_INFO, _("Received packet: %d %lu - %s"), reply->n_addr,
(unsigned long) reply->timestamp, tbuf);
}
@@ -483,7 +485,7 @@ decode_buffer ()
if (pid > 0)
return;
else if (pid < 0)
- logmsg (L_ERR, "can't fork: %s", strerror (errno));
+ logmsg (L_ERR, _("cannot fork: %s"), strerror (errno));
else
{
signal (SIGHUP, SIG_IGN);
@@ -497,7 +499,7 @@ decode_buffer ()
{
sp->in = ntohl (sp->in);
sp->out = ntohl (sp->out);
- verbose (1, "Monitor %s: %lu %lu", sp->name, sp->in, sp->out);
+ verbose (1, _("Monitor %s: %lu %lu"), sp->name, sp->in, sp->out);
report (sp, reply->timestamp);
}
close_db ();
@@ -525,10 +527,11 @@ read_input (const char *name)
{
fp = fopen (name, "r");
if (!fp)
- die (EX_OSERR, "cannot open file `%s': %s", name, strerror (errno));
+ die (EX_OSERR, _("cannot open file `%s': %s"),
+ name, strerror (errno));
}
- verbose (2, "Reading `%s'", name);
+ verbose (2, _("Reading `%s'"), name);
open_db (TAGR_DB_WR);
while (getline (&buf, &bufsize, fp) > 0)
@@ -547,18 +550,18 @@ read_input (const char *name)
while (*p && !isspace (*p))
{
if (i > MAX_NAME_LENGTH)
- die (EX_DATAERR, "%s:%lu: ID too long", name, line);
+ die (EX_DATAERR, _("%s:%lu: ID too long"), name, line);
st.name[i++] = *p++;
}
st.name[i] = 0;
if (sscanf (p, " %lu %lu %lu\n", &t, &st.in, &st.out) != 3)
- die (EX_DATAERR, "%s:%lu: invalid input line", name, line);
+ die (EX_DATAERR, _("%s:%lu: invalid input line"), name, line);
report (&st, t);
}
fclose (fp);
close_db ();
- verbose (2, "Finished reading `%s'", name);
+ verbose (2, _("Finished reading `%s'"), name);
}
int
@@ -575,7 +578,7 @@ get_port (char *str)
pn = s->s_port;
else
{
- logmsg (L_ERR, "no such service: %s", str);
+ logmsg (L_ERR, _("no such service: %s"), str);
return 0;
}
}
@@ -594,7 +597,7 @@ enum command command;
RETSIGTYPE
sig_quit (int sig)
{
- logmsg (L_INFO, "exiting on signal %d", sig);
+ logmsg (L_INFO, _("exiting on signal %d"), sig);
unlink (pidfile);
exit (0);
}
@@ -602,7 +605,7 @@ sig_quit (int sig)
RETSIGTYPE
sig_fatal (int sig)
{
- logmsg (L_ERR, "FATAL: exiting on signal %d", sig);
+ logmsg (L_ERR, _("FATAL: exiting on signal %d"), sig);
unlink (pidfile);
exit (EX_UNAVAILABLE);
}
@@ -716,7 +719,7 @@ tagr_restart (char **argv)
#define CHECK_USAGE(cond, opt, mode_opt) \
do \
if (cond) \
- die (EX_USAGE, "%s is meaningless with %s", opt, mode_opt); \
+ die (EX_USAGE, _("%s is meaningless with %s"), opt, mode_opt); \
while (0)
#define CHECK_OPTION(opt, optname) \
@@ -773,7 +776,7 @@ main (int argc, char **argv)
argv += index;
if (argc != 0 && !(list_option || import_option))
- die (EX_USAGE, "Too many arguments");
+ die (EX_USAGE, _("Too many arguments"));
if (readconfig ())
exit (EX_CONFIG);
@@ -895,7 +898,7 @@ main (int argc, char **argv)
FILE *fp;
if (daemon (0, 0))
- die (EX_OSERR, "cannot become daemon: %s", strerror (errno));
+ die (EX_OSERR, _("cannot become daemon: %s"), strerror (errno));
if ((fp = fopen (pidfile, "w")) != NULL)
{
@@ -904,7 +907,7 @@ main (int argc, char **argv)
}
else
{
- logmsg (L_ERR, "can't write pid file %s: %s",
+ logmsg (L_ERR, _("cannot write pid file %s: %s"),
pidfile, strerror (errno));
}
}
diff --git a/src/readconfig.c b/src/readconfig.c
index e60d335..e4e4e83 100644
--- a/src/readconfig.c
+++ b/src/readconfig.c
@@ -381,38 +381,42 @@ static struct grecs_keyword tagr_kw[] = {
{ "rate-units", NULL, N_("Name of rate units"),
grecs_type_string, &rate_unit },
- { "number-suffixes", N_("suffixes"), NULL /* FIXME */,
+ { "number-suffixes", N_("suffixes"),
+ N_("Not implemented") /* FIXME */,
grecs_type_string, NULL, 0, cb_number_suffixes },
{ "transparent", NULL, N_("Transparent graphs"),
grecs_type_bool, &transparent_option },
- { "percent", NULL, NULL /* FIXME: descr */,
+ { "percent", NULL,
+ N_("Draw in/out percent graph (not implemented)"), /* FIXME */
grecs_type_bool, &percent_option },
- { "zero-unknown", NULL, NULL /* FIXME: descr */,
+ { "zero-unknown", NULL,
+ N_("Zero-out missing samples (not implemented)") /* FIXME */,
grecs_type_bool, &zero_unknown_option },
- { "fill-incoming", NULL, NULL /* FIXME: descr */,
+ { "fill-incoming", NULL, N_("Fill incoming graph"),
grecs_type_bool, &fill_incoming_option },
{ "color-background", NULL, N_("Set background color"),
grecs_type_int, color_background, 0, cb_color },
- { "color-light", NULL, NULL /* FIXME: descr */,
+ { "color-light", NULL, N_("`Light' color (for the border)"),
grecs_type_int, color_light, 0, cb_color },
- { "color-dark", NULL, NULL /* FIXME: descr */,
+ { "color-dark", NULL, N_("`Dark' color (for the border)"),
grecs_type_int, color_dark, 0, cb_color },
- { "color-major", NULL, NULL /* FIXME: descr */,
+ { "color-major", NULL,
+ N_("`Major' color (boundaries, max. values, zero mark, etc.)"),
grecs_type_int, color_major, 0, cb_color },
- { "color-in", NULL, NULL /* FIXME: descr */,
+ { "color-in", NULL, N_("Color for the input graph"),
grecs_type_int, color_in, 0, cb_color },
- { "color-out", NULL, NULL /* FIXME: descr */,
+ { "color-out", NULL, N_("Color for the output graph"),
grecs_type_int, color_out, 0, cb_color },
- { "color-grid", NULL, NULL /* FIXME: descr */,
+ { "color-percent", NULL, N_("Color for the i/o percent graph"),
+ grecs_type_int, color_percent, 0, cb_color },
+ { "color-grid", NULL, N_("Grid and axes color"),
grecs_type_int, color_grid, 0, cb_color },
- { "color-in-max", NULL, NULL /* FIXME: descr */,
+ { "color-in-max", NULL, N_("Not implemented") /* FIXME */,
grecs_type_int, color_in_max, 0, cb_color },
- { "color-out-max", NULL, NULL /* FIXME: descr */,
+ { "color-out-max", NULL, N_("Not implemented") /* FIXME */,
grecs_type_int, color_out_max, 0, cb_color },
- { "color-percent", NULL, NULL /* FIXME: descr */,
- grecs_type_int, color_percent, 0, cb_color },
/* FIXME */
{ NULL }
diff --git a/src/report.c b/src/report.c
index ed8a34d..ed3a81b 100644
--- a/src/report.c
+++ b/src/report.c
@@ -53,7 +53,7 @@ open_db (int flag)
TAGR_DBMODE, tagr_db_report);
if (dbf == NULL)
{
- logmsg (L_ERR, "Cannot open database %s: %s",
+ logmsg (L_ERR, _("cannot open database %s: %s"),
dbname, gdbm_strerror (gdbm_errno));
exit (1);
}
@@ -91,10 +91,11 @@ _read_db (datum key, struct traffic_record **tr)
content = gdbm_fetch (dbf, key);
if (content.dptr == NULL)
- logmsg (L_NOTICE, "Record for %*.*s not found", key.dsize, key.dsize, key.dptr);
+ logmsg (L_NOTICE, _("record for %*.*s not found"),
+ key.dsize, key.dsize, key.dptr);
else if (content.dsize != sizeof **tr)
{
- logmsg (L_ERR, "Wrong record size for %*.*s: %lu",
+ logmsg (L_ERR, _("wrong record size for %*.*s: %lu"),
key.dsize, key.dsize, key.dptr, content.dsize);
}
else
@@ -104,7 +105,7 @@ _read_db (datum key, struct traffic_record **tr)
return;
}
- logmsg (L_NOTICE, "Creating record for %*.*s",
+ logmsg (L_NOTICE, _("creating record for %*.*s"),
key.dsize, key.dsize, key.dptr);
*tr = xmalloc (sizeof **tr);
memset (*tr, 0, sizeof **tr);
@@ -136,7 +137,7 @@ write_db (struct monitor *mon, struct traffic_record *tr)
if (gdbm_store (dbf, key, content, GDBM_REPLACE))
{
- logmsg (L_ERR, "Failed to write data for %s: %s",
+ logmsg (L_ERR, _("failed to write data for %s: %s"),
mon->id, gdbm_strerror (gdbm_errno));
}
}
@@ -147,7 +148,9 @@ print_queue (const char *title, queue_t *q)
int i, count;
count = queue_count (q);
- printf ("%s (%d entries):\n", title, count);
+ printf (ngettext ("%s (%d entry):\n", "%s (%d entries):\n",
+ count),
+ title, count);
for (i = count - 1; i >= 0; i--)
{
struct traffic_history *th = queue_get_ptr (q, i);
@@ -175,20 +178,21 @@ print_tr (datum key, struct traffic_record *tr)
tm = localtime (&tr->last.time);
printf ("ID: %*.*s\n", key.dsize, key.dsize, key.dptr);
strftime (buf, sizeof buf, "%c", tm);
- printf ("Last sample: %lu (%s) %lu %lu\n",
+ printf (_("Last sample: %lu (%s) %lu %lu\n"),
tr->last.time, buf, tr->last.in, tr->last.out);
- printf ("Last rates: %g %g\n", tr->last_rates.inrate, tr->last_rates.outrate);
- print_queue ("Daily rates", &tr->day_hist);
+ printf (_("Last rates: %g %g\n"),
+ tr->last_rates.inrate, tr->last_rates.outrate);
+ print_queue (_("Daily rates"), &tr->day_hist);
- print_avg ("Weekly average", &tr->week_avg);
- print_queue ("Weekly rates", &tr->week_hist);
+ print_avg (_("Weekly average"), &tr->week_avg);
+ print_queue (_("Weekly rates"), &tr->week_hist);
- print_avg ("Monthly average", &tr->month_avg);
- print_queue ("Monthly rates", &tr->month_hist);
+ print_avg (_("Monthly average"), &tr->month_avg);
+ print_queue (_("Monthly rates"), &tr->month_hist);
- print_avg ("Yearly average", &tr->year_avg);
- print_queue ("Yearly rates", &tr->year_hist);
+ print_avg (_("Yearly average"), &tr->year_avg);
+ print_queue (_("Yearly rates"), &tr->year_hist);
}
void
@@ -232,7 +236,7 @@ report (Stat *stat, time_t timestamp)
free (tr);
}
else
- logmsg (L_WARNING, "%s not found in config", stat->name);
+ logmsg (L_WARNING, _("%s not found in config"), stat->name);
}
int
@@ -273,7 +277,7 @@ rebuild (int force)
datum content;
time_t now = time (NULL);
- verbose (1, "rebuild initiated");
+ verbose (1, _("rebuild initiated"));
open_db (TAGR_DB_WR);
key = gdbm_firstkey (dbf);
while (key.dptr)
@@ -284,5 +288,5 @@ rebuild (int force)
key = nextkey;
}
close_db ();
- verbose (1, "rebuild finished");
+ verbose (1, _("rebuild finished"));
}
diff --git a/src/stat.c b/src/stat.c
index ed4ab8e..85b76d9 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -45,7 +45,7 @@ interpolate (queue_t *q,
{
th.inrate = inrate;
th.outrate = outrate;
- verbose (3, "Insert %lu %g %g", next, th.inrate, th.outrate);
+ verbose (3, _("insert %lu %g %g"), next, th.inrate, th.outrate);
queue_put (q, &th);
if (ovf)
ovf (&th, tr, now);
@@ -58,7 +58,7 @@ interpolate (queue_t *q,
/ interval + last_rates->inrate;
th.outrate = (outrate - last_rates->outrate) * (next - last_time)
/ interval + last_rates->outrate;
- verbose (3, "Insert %lu %g %g", next, th.inrate, th.outrate);
+ verbose (3, _("insert %lu %g %g"), next, th.inrate, th.outrate);
queue_put (q, &th);
if (ovf)
ovf (&th, tr, now);
@@ -92,7 +92,7 @@ overflow (struct traffic_history *th,
struct traffic_history tmp;
tmp.inrate = avg->inrate;
tmp.outrate = avg->outrate;
- verbose (3, "Insert %lu %g %g", now, tmp.inrate, tmp.outrate);
+ verbose (3, _("insert %lu %g %g"), now, tmp.inrate, tmp.outrate);
queue_put (q, &tmp);
}
@@ -108,28 +108,31 @@ overflow (struct traffic_history *th,
int
ovf_monthly (struct traffic_history *th, struct traffic_record *tr, time_t now)
{
- verbose (2, "begin overflow_monthly %lu %g %g", now, th->inrate, th->outrate);
+ verbose (2, _("begin overflow_monthly %lu %g %g"),
+ now, th->inrate, th->outrate);
overflow (th, tr, now, NULL, &tr->year_avg, &tr->year_hist,
YEAR_COUNT, YEAR_SAMPLE);
- verbose (2, "end overflow_monthly");
+ verbose (2, _("end overflow_monthly"));
}
int
ovf_weekly (struct traffic_history *th, struct traffic_record *tr, time_t now)
{
- verbose (2, "begin overflow_weekly %lu %g %g", now, th->inrate, th->outrate);
+ verbose (2, _("begin overflow_weekly %lu %g %g"),
+ now, th->inrate, th->outrate);
overflow (th, tr, now, ovf_monthly, &tr->month_avg, &tr->month_hist,
MONTH_COUNT, MONTH_SAMPLE);
- verbose (2, "end overflow_daily");
+ verbose (2, _("end overflow_daily"));
}
int
ovf_daily (struct traffic_history *th, struct traffic_record *tr, time_t now)
{
- verbose (2, "begin overflow_daily %lu %g %g", now, th->inrate, th->outrate);
+ verbose (2, _("begin overflow_daily %lu %g %g"),
+ now, th->inrate, th->outrate);
overflow (th, tr, now, ovf_weekly, &tr->week_avg, &tr->week_hist,
WEEK_COUNT, WEEK_SAMPLE);
- verbose (2, "end overflow_daily");
+ verbose (2, _("end overflow_daily"));
}
void
@@ -144,7 +147,7 @@ update_stats (struct monitor *mon, struct traffic_sample *sample,
interval = sample->time - tr->last.time;
if (interval == 0)
{
- logmsg (L_ERR, "Ignoring zero interval");
+ logmsg (L_ERR, _("ignoring zero interval"));
return;
}
inrate = (double) sample->in / interval;
@@ -217,7 +220,7 @@ _convert (queue_t *q, ovf_t ovf,
if (interval == 0)
{
- logmsg (L_ERR, "Ignoring zero interval");
+ logmsg (L_ERR, _("ignoring zero interval"));
break;
}
if (lastp)
@@ -252,46 +255,46 @@ static void
convert_yearly (struct traffic_record *tr, struct traffic_sample *hp,
size_t count)
{
- verbose (2, "begin convert_yearly");
+ verbose (2, _("begin convert_yearly"));
_convert (&tr->year_hist, NULL, tr,
hp, count, YEAR_SAMPLE);
compute_avg (&tr->year_avg, &tr->year_hist, &tr->last);
- verbose (2, "end convert_yearly");
+ verbose (2, _("end convert_yearly"));
}
static void
convert_monthly (struct traffic_record *tr, struct traffic_sample *hp,
size_t count)
{
- verbose (2, "begin convert_monthly");
+ verbose (2, _("begin convert_monthly"));
if (count > MONTH_COUNT+1)
convert_yearly (tr, hp + MONTH_COUNT + 1, count - (MONTH_COUNT + 1));
_convert (&tr->month_hist, ovf_monthly, tr,
hp, MONTH_COUNT + 1, MONTH_SAMPLE);
compute_avg (&tr->month_avg, &tr->month_hist, &tr->last);
- verbose (2, "end convert_monthly");
+ verbose (2, _("end convert_monthly"));
}
static void
convert_weekly (struct traffic_record *tr, struct traffic_sample *hp, size_t count)
{
- verbose (2, "begin convert_weekly");
+ verbose (2, _("begin convert_weekly"));
if (count > WEEK_COUNT+1)
convert_monthly (tr, hp + WEEK_COUNT + 1, count - (WEEK_COUNT + 1));
_convert (&tr->week_hist, ovf_weekly,
tr, hp, WEEK_COUNT + 1, WEEK_SAMPLE);
compute_avg (&tr->week_avg, &tr->week_hist, &tr->last);
- verbose (2, "end convert_weekly");
+ verbose (2, _("end convert_weekly"));
}
static void
convert_daily (struct traffic_record *tr, struct traffic_sample *hp, size_t count)
{
- verbose (2, "begin convert_daily");
+ verbose (2, _("begin convert_daily"));
if (count > DAY_COUNT+1)
convert_weekly (tr, hp + DAY_COUNT + 1, count - (DAY_COUNT + 1));
_convert (&tr->day_hist, ovf_daily, tr, hp, DAY_COUNT + 1, DAY_SAMPLE);
- verbose (2, "end convert_daily");
+ verbose (2, _("end convert_daily"));
}
static void
@@ -329,15 +332,15 @@ import_log (const char *name)
fp = fopen (name, "r");
if (!fp)
{
- logmsg (L_ERR, "cannot open `%s': %s", name, strerror (errno));
+ logmsg (L_ERR, _("cannot open `%s': %s"), name, strerror (errno));
return 1;
}
- verbose (2, "Importing %s", name);
+ verbose (2, _("importing %s"), name);
if (fscanf (fp, "%ld %lu %lu\n", &last.time, &last.in, &last.out) != 3)
{
- logmsg (L_ERR, "%s:1: Unexpected number of fields", name);
+ logmsg (L_ERR, _("%s:1: unexpected number of fields"), name);
fclose (fp);
return 1;
}
@@ -364,7 +367,7 @@ import_log (const char *name)
hist.time = rd[0];
if (hist.time > cur)
{
- logmsg (L_WARNING, "%s:%lu: is corrupted", name, line);
+ logmsg (L_WARNING, _("%s:%lu: is corrupted"), name, line);
break;
}
cur = hist.time;
@@ -399,7 +402,7 @@ import_log (const char *name)
mon = find_monitor (base);
if (!mon)
{
- logmsg (L_ERR, "cannot find monitor `%s'", base);
+ logmsg (L_ERR, _("cannot find monitor `%s'"), base);
rc = 1;
}
else
@@ -416,10 +419,11 @@ import (const char *dirname)
size_t count = 0;
struct stat st;
- verbose (2, "Examining `%s'", dirname);
+ verbose (2, _("examining `%s'"), dirname);
if (stat (dirname, &st))
- die (EX_OSERR, "cannot stat file `%s': %s", dirname, strerror (errno));
+ die (EX_OSERR, _("cannot stat file `%s': %s"),
+ dirname, strerror (errno));
else if (S_ISREG (st.st_mode))
{
open_db (TAGR_DB_WR);
@@ -450,19 +454,20 @@ import (const char *dirname)
break;
case GLOB_NOSPACE:
- die (EX_UNAVAILABLE, "cannot scan directory: %s", strerror (ENOMEM));
+ die (EX_UNAVAILABLE, _("cannot scan directory: %s"),
+ strerror (ENOMEM));
case GLOB_ABORTED:
- die (EX_UNAVAILABLE, "scanning aborted");
+ die (EX_UNAVAILABLE, _("scanning aborted"));
case GLOB_NOMATCH:
break;
default:
- die (EX_UNAVAILABLE, "cannot scan directory `%s'", dirname);
+ die (EX_UNAVAILABLE, _("cannot scan directory `%s'"), dirname);
}
}
- verbose (1, "Number of imported log files: %d", count);
+ verbose (1, _("number of imported log files: %d"), count);
}
diff --git a/src/tagr.h b/src/tagr.h
index 96035f2..fafd56b 100644
--- a/src/tagr.h
+++ b/src/tagr.h
@@ -20,15 +20,16 @@
#include <sysexits.h>
#include <grecs.h>
-#define LOGFACILITY LOG_LOCAL5
#define TAGR_CONFIGFILE SYSCONFDIR "/tagr.conf"
#define TAGR_TEMPLATE SYSCONFDIR "/tagr.tmpl"
#define TAGR_PIDFILE "/var/run/tagr.pid"
#define TAGR_DBNAME "tagr.db"
#define TAGR_DBMODE 0600
-#define _(s) s
+#define _(s) gettext (s)
#define N_(s) s
+#define gettext(s) s
+#define ngettext(s,p,c) ((c) == 1 ? (s) : (p))
struct monitor
{

Return to:

Send suggestions and report system problems to the System administrator.