Imported Upstream version 1.8.2
[debian/sudo] / plugins / sudoers / defaults.c
index f9e9961e9aaccd26e11a2c88d7f3a982492eb381..e449b1c67d8604667ddc92f98c7d9565c5c816d7 100644 (file)
@@ -118,51 +118,52 @@ dump_defaults(void)
     struct sudo_defs_types *cur;
     struct list_member *item;
     struct def_values *def;
+    char *desc;
 
     for (cur = sudo_defs_table; cur->name; cur++) {
        if (cur->desc) {
+           desc = _(cur->desc);
            switch (cur->type & T_MASK) {
                case T_FLAG:
                    if (cur->sd_un.flag)
-                       sudo_printf(SUDO_CONV_INFO_MSG, "%s\n", cur->desc);
+                       sudo_printf(SUDO_CONV_INFO_MSG, "%s\n", desc);
                    break;
                case T_STR:
                    if (cur->sd_un.str) {
-                       sudo_printf(SUDO_CONV_INFO_MSG,
-                           cur->desc, cur->sd_un.str);
+                       sudo_printf(SUDO_CONV_INFO_MSG, desc, cur->sd_un.str);
                        sudo_printf(SUDO_CONV_INFO_MSG, "\n");
                    }
                    break;
                case T_LOGFAC:
                    if (cur->sd_un.ival) {
-                       sudo_printf(SUDO_CONV_INFO_MSG,
-                           cur->desc, logfac2str(cur->sd_un.ival));
+                       sudo_printf(SUDO_CONV_INFO_MSG, desc,
+                           logfac2str(cur->sd_un.ival));
                        sudo_printf(SUDO_CONV_INFO_MSG, "\n");
                    }
                    break;
                case T_LOGPRI:
                    if (cur->sd_un.ival) {
-                       sudo_printf(SUDO_CONV_INFO_MSG,
-                           cur->desc, logpri2str(cur->sd_un.ival));
+                       sudo_printf(SUDO_CONV_INFO_MSG, desc,
+                           logpri2str(cur->sd_un.ival));
                        sudo_printf(SUDO_CONV_INFO_MSG, "\n");
                    }
                    break;
                case T_UINT:
                case T_INT:
-                   sudo_printf(SUDO_CONV_INFO_MSG, cur->desc, cur->sd_un.ival);
+                   sudo_printf(SUDO_CONV_INFO_MSG, desc, cur->sd_un.ival);
                    sudo_printf(SUDO_CONV_INFO_MSG, "\n");
                    break;
                case T_FLOAT:
-                   sudo_printf(SUDO_CONV_INFO_MSG, cur->desc, cur->sd_un.fval);
+                   sudo_printf(SUDO_CONV_INFO_MSG, desc, cur->sd_un.fval);
                    sudo_printf(SUDO_CONV_INFO_MSG, "\n");
                    break;
                case T_MODE:
-                   sudo_printf(SUDO_CONV_INFO_MSG, cur->desc, cur->sd_un.mode);
+                   sudo_printf(SUDO_CONV_INFO_MSG, desc, cur->sd_un.mode);
                    sudo_printf(SUDO_CONV_INFO_MSG, "\n");
                    break;
                case T_LIST:
                    if (cur->sd_un.list) {
-                       sudo_printf(SUDO_CONV_INFO_MSG, "%s\n", cur->desc);
+                       sudo_printf(SUDO_CONV_INFO_MSG, "%s\n", desc);
                        for (item = cur->sd_un.list; item; item = item->next) {
                            sudo_printf(SUDO_CONV_INFO_MSG,
                                "\t%s\n", item->value);
@@ -172,8 +173,7 @@ dump_defaults(void)
                case T_TUPLE:
                    for (def = cur->values; def->sval; def++) {
                        if (cur->sd_un.ival == def->ival) {
-                           sudo_printf(SUDO_CONV_INFO_MSG,
-                               cur->desc, def->sval);
+                           sudo_printf(SUDO_CONV_INFO_MSG, desc, def->sval);
                            break;
                        }
                    }
@@ -191,25 +191,28 @@ void
 list_options(void)
 {
     struct sudo_defs_types *cur;
-    char *p;
+    char *p, *desc;
 
     sudo_printf(SUDO_CONV_INFO_MSG,
-       "Available options in a sudoers ``Defaults'' line:\n\n");
+       _("Available options in a sudoers ``Defaults'' line:\n\n"));
     for (cur = sudo_defs_table; cur->name; cur++) {
-       if (cur->name && cur->desc) {
+       if (cur->desc) {
+           desc = _(cur->desc);
            switch (cur->type & T_MASK) {
                case T_FLAG:
                    sudo_printf(SUDO_CONV_INFO_MSG,
-                       "%s: %s\n", cur->name, cur->desc);
+                       _("%s: %s\n"), cur->name, desc);
                    break;
                default:
-                   p = strrchr(cur->desc, ':');
+                   p = strrchr(desc, ':');
                    if (p) {
-                       sudo_printf(SUDO_CONV_INFO_MSG, "%s: %.*s\n",
-                           cur->name, (int) (p - cur->desc), cur->desc);
+                       while (p > desc && isspace((unsigned char)p[-1]))
+                           p--;
+                       sudo_printf(SUDO_CONV_INFO_MSG, _("%s: %.*s\n"),
+                           cur->name, (int) (p - desc), desc);
                    } else {
                        sudo_printf(SUDO_CONV_INFO_MSG,
-                           "%s: %s\n", cur->name, cur->desc);
+                           _("%s: %s\n"), cur->name, desc);
                    }
                    break;
            }
@@ -235,7 +238,7 @@ set_default(char *var, char *val, int op)
            break;
     }
     if (!cur->name) {
-       warningx("unknown defaults entry `%s'", var);
+       warningx(_("unknown defaults entry `%s'"), var);
        return FALSE;
     }
 
@@ -243,18 +246,20 @@ set_default(char *var, char *val, int op)
        case T_LOGFAC:
            if (!store_syslogfac(val, cur, op)) {
                if (val)
-                   warningx("value `%s' is invalid for option `%s'", val, var);
+                   warningx(_("value `%s' is invalid for option `%s'"),
+                       val, var);
                else
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                return FALSE;
            }
            break;
        case T_LOGPRI:
            if (!store_syslogpri(val, cur, op)) {
                if (val)
-                   warningx("value `%s' is invalid for option `%s'", val, var);
+                   warningx(_("value `%s' is invalid for option `%s'"),
+                       val, var);
                else
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                return FALSE;
            }
            break;
@@ -262,16 +267,16 @@ set_default(char *var, char *val, int op)
            if (!val) {
                /* Check for bogus boolean usage or lack of a value. */
                if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                    return FALSE;
                }
            }
            if (ISSET(cur->type, T_PATH) && val && *val != '/') {
-               warningx("values for `%s' must start with a '/'", var);
+               warningx(_("values for `%s' must start with a '/'"), var);
                return FALSE;
            }
            if (!store_str(val, cur, op)) {
-               warningx("value `%s' is invalid for option `%s'", val, var);
+               warningx(_("value `%s' is invalid for option `%s'"), val, var);
                return FALSE;
            }
            break;
@@ -279,12 +284,12 @@ set_default(char *var, char *val, int op)
            if (!val) {
                /* Check for bogus boolean usage or lack of a value. */
                if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                    return FALSE;
                }
            }
            if (!store_int(val, cur, op)) {
-               warningx("value `%s' is invalid for option `%s'", val, var);
+               warningx(_("value `%s' is invalid for option `%s'"), val, var);
                return FALSE;
            }
            break;
@@ -292,12 +297,12 @@ set_default(char *var, char *val, int op)
            if (!val) {
                /* Check for bogus boolean usage or lack of a value. */
                if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                    return FALSE;
                }
            }
            if (!store_uint(val, cur, op)) {
-               warningx("value `%s' is invalid for option `%s'", val, var);
+               warningx(_("value `%s' is invalid for option `%s'"), val, var);
                return FALSE;
            }
            break;
@@ -305,12 +310,12 @@ set_default(char *var, char *val, int op)
            if (!val) {
                /* Check for bogus boolean usage or lack of a value. */
                if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                    return FALSE;
                }
            }
            if (!store_float(val, cur, op)) {
-               warningx("value `%s' is invalid for option `%s'", val, var);
+               warningx(_("value `%s' is invalid for option `%s'"), val, var);
                return FALSE;
            }
            break;
@@ -318,18 +323,18 @@ set_default(char *var, char *val, int op)
            if (!val) {
                /* Check for bogus boolean usage or lack of a value. */
                if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                    return FALSE;
                }
            }
            if (!store_mode(val, cur, op)) {
-               warningx("value `%s' is invalid for option `%s'", val, var);
+               warningx(_("value `%s' is invalid for option `%s'"), val, var);
                return FALSE;
            }
            break;
        case T_FLAG:
            if (val) {
-               warningx("option `%s' does not take a value", var);
+               warningx(_("option `%s' does not take a value"), var);
                return FALSE;
            }
            cur->sd_un.flag = op;
@@ -338,22 +343,22 @@ set_default(char *var, char *val, int op)
            if (!val) {
                /* Check for bogus boolean usage or lack of a value. */
                if (!ISSET(cur->type, T_BOOL) || op != FALSE) {
-                   warningx("no value specified for `%s'", var);
+                   warningx(_("no value specified for `%s'"), var);
                    return FALSE;
                }
            }
            if (!store_list(val, cur, op)) {
-               warningx("value `%s' is invalid for option `%s'", val, var);
+               warningx(_("value `%s' is invalid for option `%s'"), val, var);
                return FALSE;
            }
            break;
        case T_TUPLE:
            if (!val && !ISSET(cur->type, T_BOOL)) {
-               warningx("no value specified for `%s'", var);
+               warningx(_("no value specified for `%s'"), var);
                return FALSE;
            }
            if (!store_tuple(val, cur, op)) {
-               warningx("value `%s' is invalid for option `%s'", val, var);
+               warningx(_("value `%s' is invalid for option `%s'"), val, var);
                return FALSE;
            }
            break;
@@ -479,10 +484,10 @@ init_defaults(void)
 
     /* Now do the strings */
     def_mailto = estrdup(MAILTO);
-    def_mailsub = estrdup(MAILSUBJECT);
-    def_badpass_message = estrdup(INCORRECT_PASSWORD);
+    def_mailsub = estrdup(_(MAILSUBJECT));
+    def_badpass_message = estrdup(_(INCORRECT_PASSWORD));
     def_timestampdir = estrdup(_PATH_SUDO_TIMEDIR);
-    def_passprompt = estrdup(PASSPROMPT);
+    def_passprompt = estrdup(_(PASSPROMPT));
     def_runas_default = estrdup(RUNAS_DEFAULT);
 #ifdef _PATH_SUDO_SENDMAIL
     def_mailerpath = estrdup(_PATH_SUDO_SENDMAIL);