diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-04-27 00:50:31 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-04-27 00:50:31 +0300 |
commit | fe8f5226e8bc39bdc75e40e1c1ea464e9fc60ad3 (patch) | |
tree | 611a7c8505a0eb77a2b84de5dab80b6ca02a14e6 /src | |
parent | d50fc04ded36255465184a16c70eb4c50acdb199 (diff) | |
download | tagr-fe8f5226e8bc39bdc75e40e1c1ea464e9fc60ad3.tar.gz tagr-fe8f5226e8bc39bdc75e40e1c1ea464e9fc60ad3.tar.bz2 |
Provide i18n markers
Diffstat (limited to 'src')
-rw-r--r-- | src/graph.c | 1 | ||||
-rw-r--r-- | src/html.gram.y | 34 | ||||
-rw-r--r-- | src/html.lex.l | 10 | ||||
-rw-r--r-- | src/log.c | 16 | ||||
-rw-r--r-- | src/main.c | 77 | ||||
-rw-r--r-- | src/readconfig.c | 32 | ||||
-rw-r--r-- | src/report.c | 40 | ||||
-rw-r--r-- | src/stat.c | 65 | ||||
-rw-r--r-- | src/tagr.h | 5 |
9 files changed, 149 insertions, 131 deletions
diff --git a/src/graph.c b/src/graph.c index bfd00cb..1464e8b 100644 --- a/src/graph.c +++ b/src/graph.c @@ -45,24 +45,25 @@ int color_in[3] = { 0,235,12 }; int color_out[3] = { 0,94,255 }; int color_grid[3] = { 0,0,0 }; int color_in_max[3] = { 0,166,33 }; int color_out_max[3] = { 255,0,255 }; int color_percent[3] = { 239,159,79 }; int graph_xsize = 460; 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) \ gdImageColorAllocate (g, (ar)[0], (ar)[1], (ar)[2]) static void draw_vtext (gdImagePtr graph, int color, const char *text) { gdImageStringUp (graph, gdFontSmall, 8, graph_ysize + graph_v_margin[0] - (graph_ysize - gdFontSmall->w * strlen (text))/2, 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 @@ -104,25 +104,25 @@ cbrace: CBRACE expr : value | '(' expr ')' { $$ = $2; } | expr '+' expr { if ($1.type == unspecified_value || $3.type == unspecified_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 { $$.type = $1.type; deduce_format (&$$, &$1, &$3); switch ($1.type) { case numeric_value: $$.v.number = $1.v.number + $3.v.number; break; @@ -136,110 +136,110 @@ expr : value default: abort (); /* Should not happen */ } } } | expr '-' expr { if ($1.type == unspecified_value || $3.type == unspecified_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 { $$.type = $1.type; deduce_format (&$$, &$1, &$3); $$.v.number = $1.v.number - $3.v.number; } } | expr '*' expr { if ($1.type == unspecified_value || $3.type == unspecified_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 { $$.type = $1.type; deduce_format (&$$, &$1, &$3); $$.v.number = $1.v.number * $3.v.number; } } | expr '/' expr { if ($1.type == unspecified_value || $3.type == unspecified_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 { $$.type = $1.type; deduce_format (&$$, &$1, &$3); $$.v.number = $1.v.number / $3.v.number; } } | '-' expr %prec UMINUS { if ($2.type == unspecified_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 { $$ = $2; $$.v.number = - $2.v.number; } } | '+' expr %prec UMINUS { if ($2.type == unspecified_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 { $$ = $2; } } ; value : IDENT | NUMBER { @@ -264,45 +264,45 @@ int create_html (pp_tab_t *tab, char *file, char *dest) { int rc; if (html_open (file)) return 1; tmp_file_name = mkfilename (NULL, dest, ".tmp"); 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; } ident_tab = tab; rc = yyparse (); fclose (tmp_file); if (rc == 0) { 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; } } free (tmp_file_name); return rc; } static void out_char (int c) { @@ -485,64 +485,64 @@ read_symtab (pp_tab_t **tab, const char *name) line++; if (buf[len-1] == '\n') buf[len-1] = 0; if (buf[0] == '#' || buf[0] == 0) continue; p = buf; 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; } var = p; 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; } *p++ = 0; value = p; switch (cmd) { case 's': add_string_value (tab, var, value); break; case 'n': { char *p; 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; } else add_numeric_value (tab, var, num); } break; default: - logmsg (L_NOTICE, "%s:%u: ignoring unknown command %#03o", + logmsg (L_NOTICE, _("%s:%u: ignoring unknown command %#03o"), name, line, cmd); } } free (buf); fclose (fp); return status; } int write_symtab (pp_tab_t *tab, const char *name) { 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 @@ -34,59 +34,59 @@ int html_input_line; NAME [A-Za-z_][A-Za-z0-9_]* N [0-9]+ %% \$\$ { yylval.character = '$'; return CHAR; } \${NAME} { if (find_value (yytext+1, &yylval.value)) { - yyerror ("unknown identifier"); + yyerror (_("unknown identifier")); init_value (&yylval.value, unspecified_value, NULL); } return IDENT; } \$\({NAME}\) { 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; } \$\({NAME}:{N}\) { char *p = strchr (yytext, ':'); *p = 0; if (find_value (yytext+2, &yylval.value)) { - yyerror ("unknown identifier"); + yyerror (_("unknown identifier")); init_value (&yylval.value, unspecified_value, NULL); } else { yylval.value.prec = strtoul (p+1, NULL, 10); } return IDENT; } \$\({NAME}:[^)]+\) { pp_value_t val; char *p = strchr (yytext, ':'); *p++ = 0; if (find_value (yytext+2, &val)) { - yyerror ("unknown identifier"); + yyerror (_("unknown identifier")); init_value (&yylval.value, unspecified_value, NULL); } else { size_t len = strlen (p) - 1; init_value (&yylval.value, val.type, &val.v); yylval.value.prec = val.prec; yylval.value.format = val.format; yylval.value.fmt = xmalloc (len + 1); memcpy (yylval.value.fmt, p, len); yylval.value.fmt[len] = 0; } @@ -121,25 +121,25 @@ begin_eval () void end_eval () { BEGIN (INITIAL); } int 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; } html_input_file = file; html_input_line = 1; return 0; } void html_close () { if (yyin) @@ -20,61 +20,61 @@ #include <stdlib.h> #include <stdio.h> #include <stdarg.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <syslog.h> #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 */ void init_syslog (char *progname) { if (!log_tag) log_tag = progname; openlog (log_tag, LOG_PID, log_facility); } int syslog_level[] = { LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_WARNING, LOG_ERR, LOG_CRIT, }; char *level_str[] = { - "debug", - "info", - "notice", - "warning", - "error", - "CRITICAL", + N_("debug"), + N_("info"), + N_("notice"), + N_("warning"), + N_("error"), + N_("CRITICAL"), }; void 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"); } else vsyslog (syslog_level[level], fmt, ap); } void logmsg (int level, const char *fmt, ...) { va_list ap; @@ -71,26 +71,26 @@ int single_process_option = 0; int verbose_level; static int rebuild_option; static int import_option; static int read_option; static int list_option; static char *check_mode = 0; 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, OPT_TEST_TEMPLATE, OPT_SHOW_DEFAULTS, OPT_SYSLOG, OPT_STDERR, OPT_PREPROCESSOR, OPT_NO_PREPROCESSOR, OPT_DUMP_GRAMMAR_TRACE, OPT_DUMP_LEX_TRACE, OPT_CONFIG_HELP, @@ -103,25 +103,25 @@ static struct argp_option options[] = { N_("Main operation mode"), GRID }, {"lint", 't', NULL, 0, N_("parse configuration file and exit"), GRID+1}, {NULL, 'E', NULL, 0, N_("preprocess configuration file and exit"), GRID+1}, {"test-template", OPT_TEST_TEMPLATE, NULL, 0, N_("test page template file syntax"), GRID+1}, {"import", OPT_IMPORT, NULL, 0, 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}, {"show-defaults", OPT_SHOW_DEFAULTS, NULL, 0, N_("Show configuration default values"), GRID+1}, #undef GRID #define GRID 20 {NULL, 0, NULL, 0, N_("Operation mode modifiers"), GRID }, {"foreground", 'f', NULL, 0, N_("run in foreground mode"), GRID+1}, @@ -178,30 +178,30 @@ static struct argp_option options[] = { {NULL, 0, NULL, 0, N_("Additional help"), GRID }, {"config-help", OPT_CONFIG_HELP, NULL, 0, N_("show configuration file summary"), GRID+1}, #undef GRID {NULL} }; 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 add_check_mode (int c) { char s[2]; s[0] = c; s[1] = 0; if (!check_mode) check_mode = xstrdup (s); else strcat (xrealloc (check_mode, strlen (check_mode) + 2), s); @@ -326,124 +326,125 @@ static struct argp argp = { On failure returns 1 (or exits, depending on topt settings. See anubis_error) */ static int change_privs (uid_t uid, gid_t gid) { int rc = 0; gid_t emptygidset[1]; /* Reset group permissions */ 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; } /* Switch to the user's gid. On some OSes the effective gid must be reset first */ #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; } } /* now reset uid */ if (rc == 0 && uid != 0) { uid_t euid; if (setuid (uid) || geteuid () != uid || (getuid () != uid && (geteuid () == 0 || getuid () == 0))) { #if defined(HAVE_SETREUID) if (geteuid () != uid) { 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; } } else #endif { - logmsg (L_ERR, "setuid(%lu) failed: %s", + logmsg (L_ERR, _("setuid(%lu) failed: %s"), (u_long) uid, strerror (errno)); rc = 1; } } if (html_template_option) html_template = html_template_option; 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; } } return rc; } void change_user () { struct passwd *pwd; if (user == NULL) return; if (getuid () == 0) { - logmsg (L_NOTICE, "not a superuser: ignoring the `user' statement"); + logmsg (L_NOTICE, _("not a superuser: ignoring the `user' statement")); return; } pwd = getpwnam (user); if (pwd) { if (change_privs (pwd->pw_uid, pwd->pw_gid)) exit (EX_NOUSER); chdir (pwd->pw_dir); } } @@ -453,60 +454,61 @@ void decode_buffer () { int i; Stat_reply *reply; Stat *sp; int child = 0; reply = (Stat_reply *) recv_buffer; reply->n_addr = ntohl (reply->n_addr); 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); if (verbose_level) { 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); } sp = reply->stat; if (!single_process_option) { pid_t pid = fork (); 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); signal (SIGCHLD, SIG_IGN); child = 1; } } open_db (TAGR_DB_WR); for (i = 0; i < reply->n_addr; i++, sp++) { 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 (); if (child) exit (0); } void read_input (const char *name) { @@ -516,102 +518,103 @@ read_input (const char *name) unsigned long line = 0; unsigned long t; if (!name || strcmp (name, "-") == 0) { name = "-"; fp = stdin; } else { 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) { char *p; int i; Stat st; line++; for (p = buf; *p && isascii (*p) && isspace (*p); p++) ; if (*p == '#' || *p == 0) continue; i = 0; 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 get_port (char *str) { int pn; if (isdigit (str[0])) pn = htons (atoi (str)); else { struct servent *s = getservbyname (str, "udp"); if (s) pn = s->s_port; else { - logmsg (L_ERR, "no such service: %s", str); + logmsg (L_ERR, _("no such service: %s"), str); return 0; } } return pn; } enum command { command_none, command_update, command_reconfig }; 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); } 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); } RETSIGTYPE sig_hup (int sig) { command = command_reconfig; signal (sig, sig_hup); } RETSIGTYPE @@ -707,25 +710,25 @@ tagr_restart (char **argv) execv (argv[0], argv); logmsg (L_ERR, _("cannot restart: %s"), strerror (errno)); exit (EX_UNAVAILABLE); } #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) \ do \ { \ if (opt != import_option) \ CHECK_USAGE (import_option, "--import", optname); \ if (opt != rebuild_option) \ CHECK_USAGE (rebuild_option, "--rebuild", optname); \ if (opt != list_option) \ CHECK_USAGE (list_option, "--list", optname); \ if (opt != read_option) \ @@ -764,25 +767,25 @@ main (int argc, char **argv) init_syslog (argv[0]); if (argp_parse (&argp, argc, argv, 0, &index, NULL)) exit (EX_USAGE); if (html_template_option) html_template = html_template_option; argc -= index; 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); if (lint_option) { CHECK_USAGE (import_option, "--import", "--lint"); CHECK_USAGE (rebuild_option, "--rebuild", "--lint"); CHECK_USAGE (list_option, "--list", "--lint"); CHECK_USAGE (read_option, "--read", "--lint"); exit (0); } @@ -886,34 +889,34 @@ main (int argc, char **argv) signal (SIGQUIT, sig_quit); signal (SIGTERM, sig_quit); signal (SIGIOT, sig_fatal); signal (SIGCHLD, sig_child); signal (SIGPIPE, SIG_IGN); signal (SIGALRM, sig_alrm); if (!foreground) { 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) { fprintf (fp, "%lu\n", (unsigned long) getpid ()); fclose (fp); } else { - logmsg (L_ERR, "can't write pid file %s: %s", + logmsg (L_ERR, _("cannot write pid file %s: %s"), pidfile, strerror (errno)); } } logmsg (L_INFO, _("%s started"), program_version); command = command_none; alarm (update_interval); for (;;) { switch (command) { diff --git a/src/readconfig.c b/src/readconfig.c index e60d335..e4e4e83 100644 --- a/src/readconfig.c +++ b/src/readconfig.c @@ -372,56 +372,60 @@ static struct grecs_keyword tagr_kw[] = { grecs_type_uint, &update_interval }, { "monitor", N_("id: string"), N_("Configure a monitor"), grecs_type_section, NULL, 0, cb_monitor, NULL, monitor_kw }, { "log", NULL, N_("Configure logging"), grecs_type_section, NULL, 0, NULL, NULL, log_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 } }; void config_help () { static char docstring[] = N_("Configuration file structure for tagr.\n"); /* FIXME: "For more information, use `info tagr configuration'."); */ diff --git a/src/report.c b/src/report.c index ed8a34d..ed3a81b 100644 --- a/src/report.c +++ b/src/report.c @@ -44,25 +44,25 @@ tagr_db_report (char *str) void open_db (int flag) { dbname = xmalloc (strlen (basedir) + 1 + sizeof (TAGR_DBNAME)); strcpy (dbname, basedir); strcat (dbname, "/"); strcat (dbname, TAGR_DBNAME); dbf = gdbm_open (dbname, 0, flag == TAGR_DB_WR ? GDBM_WRCREAT : GDBM_READER, 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); } } void close_db () { gdbm_close (dbf); free (dbname); dbname = NULL; } @@ -82,38 +82,39 @@ tr_init (struct traffic_record *tr) tr->year_hist.queue = tr->month_hist.queue + tr->month_hist.size; tr->year_hist.size = YEAR_COUNT; } static void _read_db (datum key, struct traffic_record **tr) { datum content; 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 { *tr = (struct traffic_record *) content.dptr; tr_init (*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); tr_init (*tr); } void read_db (struct monitor *mon, struct traffic_record **tr) { datum key; datum content; @@ -127,36 +128,38 @@ write_db (struct monitor *mon, struct traffic_record *tr) { datum key; datum content; key.dptr = mon->id; key.dsize = strlen (mon->id); content.dsize = sizeof *tr; |