diff options
Diffstat (limited to 'src/pies.c')
-rw-r--r-- | src/pies.c | 68 |
1 files changed, 50 insertions, 18 deletions
@@ -15,6 +15,8 @@ along with Pies. If not, see <http://www.gnu.org/licenses/>. */ #include "pies.h" +#include <locale.h> +#include <configmake.h> #include "meta1lex.h" char *conffile = SYSCONFDIR "/pies.conf"; @@ -106,7 +108,7 @@ _cb_action (enum grecs_callback_command cmd, return 0; } -struct grecs_keyword return_code_cfg_param[] = { +struct grecs_keyword return_code_keywords[] = { {"action", /* TRANSLATORS: disable and restart are keywords, do not translate them. */ N_("arg: {disable | restart}"), @@ -718,7 +720,7 @@ _cb_limits (enum grecs_callback_command cmd, return 0; } -struct grecs_keyword component_cfg_param[] = { +struct grecs_keyword component_keywords[] = { {"mode", /* TRANSLATORS: The words between '{' and '}' are keywords, do not translate them. */ @@ -868,7 +870,7 @@ struct grecs_keyword component_cfg_param[] = { N_("<tag: exit-code-list>"), NULL, /* FIXME: Docstring? */ grecs_type_section, NULL, 0, - return_code_section_parser, NULL, return_code_cfg_param}, + return_code_section_parser, NULL, return_code_keywords}, {NULL} }; @@ -877,7 +879,7 @@ find_component_keyword (const char *ident) { struct grecs_keyword *kwp; - for (kwp = component_cfg_param; kwp->ident; kwp++) + for (kwp = component_keywords; kwp->ident; kwp++) if (strcmp (kwp->ident, ident) == 0) return kwp; return NULL; @@ -1028,6 +1030,10 @@ component_section_parser (enum grecs_callback_command cmd, case grecs_callback_section_end: comp = *(struct component **) section_data; component_finish (comp, locus); + break; + + case grecs_callback_set_value: + grecs_error (locus, 0, _("expected block statement")); } return 0; } @@ -1064,13 +1070,13 @@ _cm_include_meta1 (enum grecs_callback_command cmd, return 0; } -struct grecs_keyword pies_cfg_param[] = { +struct grecs_keyword pies_keywords[] = { /* FIXME */ {"component", N_("<tag: string>"), NULL, /* FIXME: Docstring */ grecs_type_section, NULL, 0, - component_section_parser, NULL, component_cfg_param}, + component_section_parser, NULL, component_keywords}, {"syslog", NULL, N_("Configure syslog logging"), @@ -1140,7 +1146,7 @@ struct grecs_keyword pies_cfg_param[] = { N_("<tag: exit-code-list>"), NULL, /* FIXME: Docstring? */ grecs_type_section, &default_component, 0, - return_code_section_parser, NULL, return_code_cfg_param}, + return_code_section_parser, NULL, return_code_keywords}, {"acl", N_("name: string"), N_("Define ACL."), @@ -1164,7 +1170,7 @@ struct grecs_keyword pies_cfg_param[] = { void config_init () { - grecs_set_keywords (pies_cfg_param); + grecs_set_keywords (pies_keywords); grecs_include_path_setup (DEFAULT_VERSION_INCLUDE_DIR, DEFAULT_INCLUDE_DIR, NULL); grecs_preprocessor = DEFAULT_PREPROCESSOR; @@ -1178,19 +1184,18 @@ config_help () N_("Configuration file structure for pies.\n" "For more information, use `info pies configuration'."); grecs_format_docstring (stdout, docstring, 0); - grecs_format_statement_array (stdout, pies_cfg_param, 1, 0); + grecs_format_statement_array (stdout, pies_keywords, 1, 0); } const char *program_version = "pies (" PACKAGE_STRING ")"; -const char *package_bugreport = "<" PACKAGE_BUGREPORT ">"; +const char *argp_program_bug_address = "<" PACKAGE_BUGREPORT ">"; static char doc[] = N_("pies -- process invocation and execution supervisor"); static char args_doc[] = ""; enum { OPT_FOREGROUND = 256, - OPT_LOG_TAG, OPT_SYSLOG, OPT_STDERR, OPT_DUMP_PREREQ, @@ -1210,8 +1215,6 @@ static struct argp_option options[] = { {"foreground", OPT_FOREGROUND, 0, 0, N_("remain in foreground"), GRP + 1}, {"stderr", OPT_STDERR, NULL, 0, N_("log to stderr"),}, {"syslog", OPT_SYSLOG, NULL, 0, N_("log to syslog"),}, - {"log-tag", OPT_LOG_TAG, N_("STRING"), 0, - N_("set the identifier used in syslog messages to STRING"), GRP + 1}, {"debug", 'x', N_("LEVEL"), 0, N_("set debug verbosity level"), GRP + 1}, {"source-info", OPT_SOURCE_INFO, NULL, 0, @@ -1304,10 +1307,6 @@ parse_opt (int key, char *arg, struct argp_state *state) force_option = 1; break; - case OPT_LOG_TAG: - log_tag = arg; - break; - case ARGP_KEY_INIT: break; @@ -1672,6 +1671,33 @@ remove_pidfile (char *name) name, strerror (errno)); } +const char version_etc_copyright[] = + /* Do *not* mark this string for translation. %s is a copyright + symbol suitable for this locale */ + "Copyright %s 2009 Sergey Poznyakoff"; + + +static void +version (FILE *stream, struct argp_state *state) +{ + fprintf (stream, "%s (%s) %s\n", "pies", PACKAGE, PACKAGE_VERSION); + /* TRANSLATORS: Translate "(C)" to the copyright symbol + (C-in-a-circle), if this symbol is available in the user's + locale. Otherwise, do not translate "(C)"; leave it as-is. */ + fprintf (stream, version_etc_copyright, _("(C)")); + + fputs (_("\ +\n\ +License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\ +This is free software: you are free to change and redistribute it.\n\ +There is NO WARRANTY, to the extent permitted by law.\n\ +\n\ +"), + stream); + + /* TRANSLATORS: %s denotes an author name. */ + fprintf (stream, _("Written by %s.\n"), "Sergey Poznyakoff"); +} int main (int argc, char **argv) @@ -1681,12 +1707,18 @@ main (int argc, char **argv) extern char **environ; set_program_name (argv[0]); - mf_init_nls (); +#ifdef ENABLE_NLS + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + bindtextdomain ("mailfromd", LOCALEDIR); + textdomain (PACKAGE); +#endif mf_proctitle_init (argc, argv, environ); /* Set default logging */ log_setup (!stderr_closed_p ()); config_init (); + argp_program_version_hook = version; if (argp_parse (&argp, argc, argv, 0, &index, NULL)) exit (EX_USAGE); |