]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/options.c
Set current_option for error reporting. Bug and fix by Clive Nicolson.
[ppp.git] / pppd / options.c
index 5073ed795067d2d41b8b59d77409759a73516b97..1e31ed5eba41e7bbf0a5c718b881667cba8758c2 100644 (file)
@@ -17,7 +17,7 @@
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#define RCSID  "$Id: options.c,v 1.85 2002/07/18 15:25:04 dfs Exp $"
+#define RCSID  "$Id: options.c,v 1.89 2002/10/27 13:00:13 fcusack Exp $"
 
 #include <ctype.h>
 #include <stdio.h>
@@ -602,6 +602,7 @@ process_option(opt, cmd, argv)
     int prio = option_priority;
     option_t *mainopt = opt;
 
+    current_option = opt->name;
     if ((opt->flags & OPT_PRIVFIX) && privileged_option)
        prio += OPRIO_ROOT;
     while (mainopt->flags & OPT_PRIOSUB)
@@ -653,8 +654,6 @@ process_option(opt, cmd, argv)
            *(u_char *)(opt->addr2) &= ~v;
        else if (opt->addr2 && (opt->flags & OPT_A2OR))
            *(u_char *)(opt->addr2) |= v;
-       if (opt->addr3 && (opt->flags & OPT_A3OR))
-           *(u_char *)(opt->addr3) |= v;
        break;
 
     case o_int:
@@ -677,7 +676,7 @@ process_option(opt, cmd, argv)
                    break;
                case OPT_LIMITS:
                    option_error("%s value must be%s between %d and %d",
-                               opt->name, opt->lower_limit, opt->upper_limit);
+                               opt->name, zok, opt->lower_limit, opt->upper_limit);
                    break;
                }
                return 0;
@@ -902,7 +901,9 @@ print_option(opt, mainopt, printer, arg)
                        void (*oprt) __P((option_t *,
                                          void ((*)__P((void *, char *, ...))),
                                          void *));
-                       oprt = opt->addr2;
+                       oprt = (void (*) __P((option_t *,
+                                        void ((*)__P((void *, char *, ...))),
+                                        void *)))opt->addr2;
                        (*oprt)(opt, printer, arg);
                } else if (opt->flags & OPT_A2STRVAL) {
                        p = (char *) opt->addr2;