]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/options.c
Large patch from Frank Cusack <fcusack@fcusack.com> to add proper
[ppp.git] / pppd / options.c
index 689bde6c64c661e95071523d4c82237856a09f78..3779b289419ca491fb8baeedb26d07053ec5a367 100644 (file)
@@ -17,7 +17,7 @@
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#define RCSID  "$Id: options.c,v 1.79 2001/03/08 05:11:15 paulus Exp $"
+#define RCSID  "$Id: options.c,v 1.82 2002/03/01 14:39:18 dfs Exp $"
 
 #include <ctype.h>
 #include <stdio.h>
@@ -497,6 +497,7 @@ options_from_list(w, priv)
        }
        if (!process_option(opt, w0->word, argv))
            goto err;
+       w = w->next;
     }
     ret = 1;
 
@@ -622,6 +623,12 @@ process_option(opt, cmd, argv)
        *(bool *)(opt->addr) = v;
        if (opt->addr2 && (opt->flags & OPT_A2COPY))
            *(bool *)(opt->addr2) = v;
+       else if (opt->addr2 && (opt->flags & OPT_A2CLR))
+           *(bool *)(opt->addr2) = 0;
+       else if (opt->addr2 && (opt->flags & OPT_A2CLRB))
+           *(u_char *)(opt->addr2) &= ~v;
+       if (opt->addr3 && (opt->flags & OPT_A3OR))
+           *(u_char *)(opt->addr3) |= v;
        break;
 
     case o_int:
@@ -815,8 +822,9 @@ print_option(opt, mainopt, printer, arg)
        case o_bool:
                v = opt->flags & OPT_VALUE;
                if (*(bool *)opt->addr != v)
-                       printer(arg, "oops, %s value is %d not %d?\n",
-                               opt->name, *(bool *)opt->addr, v);
+                       /* this can happen legitimately, e.g. lock
+                          option turned off for default device */
+                       break;
                printer(arg, "%s", opt->name);
                break;
        case o_int:
@@ -929,6 +937,7 @@ print_options(printer, arg)
        struct option_list *list;
        int i;
 
+       printer(arg, "pppd options in effect:\n");
        print_option_list(general_options, printer, arg);
        print_option_list(auth_options, printer, arg);
        for (list = extra_options; list != NULL; list = list->next)
@@ -1493,7 +1502,7 @@ loadplugin(argv)
        warn("Warning: plugin %s has no version information", arg);
     } else if (strcmp(vers, VERSION) != 0) {
        option_error("Plugin %s is for pppd version %s, this is %s",
-                    vers, VERSION);
+                    arg, vers, VERSION);
        goto errclose;
     }
     info("Plugin %s loaded.", arg);