[Commit] nickle ChangeLog,1.143,1.144 parse-args.5c,1.5,1.6

Bart Massey commit at keithp.com
Fri Dec 23 23:53:41 PST 2005


Committed by: bart

Update of /local/src/CVS/nickle
In directory home.keithp.com:/tmp/cvs-serv7748

Modified Files:
	ChangeLog parse-args.5c 
Log Message:
2005-12-23  Bart Massey <bart at cs.pdx.edu>
	
        * parse-args.5c:
	Make usage() function user-visible by exporting
	closure when parse_args() is called.
	


Index: ChangeLog
===================================================================
RCS file: /local/src/CVS/nickle/ChangeLog,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -d -r1.143 -r1.144
--- ChangeLog	12 Dec 2005 07:05:49 -0000	1.143
+++ ChangeLog	24 Dec 2005 07:53:39 -0000	1.144
@@ -1,3 +1,9 @@
+2005-12-23  Bart Massey <bart at cs.pdx.edu>
+	
+        * parse-args.5c:
+	Make usage() function user-visible by exporting
+	closure when parse_args() is called.
+	
 2005-12-11  Bart Massey <bart at cs.pdx.edu>
 version 2.52
 

Index: parse-args.5c
===================================================================
RCS file: /local/src/CVS/nickle/parse-args.5c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- parse-args.5c	27 Oct 2005 06:31:06 -0000	1.5
+++ parse-args.5c	24 Dec 2005 07:53:39 -0000	1.6
@@ -67,11 +67,17 @@
     }
 
     /*
-     * the argument description was defective, with
-     * a reason string
+     * The argument description was defective, with
+     * a reason string.
      */
     public exception bad_argd(string reason);
 
+    /*
+     * Print a usage message on the given file.
+     * XXX Valid only after parseargs() has been called.
+     */
+    public void(file f) usage;
+
     public void parseargs(&argdesc argd, &(string[*]) argv) 
 	/*
 	 * Parse arguments in 'argv' according to 'argd'
@@ -109,7 +115,7 @@
 	    }
 	}
 
-	void usage(file f)
+	void usagef(file f)
 	    /*
 	     * Print a description of program usage on f
 	     */
@@ -145,6 +151,7 @@
 	    }
 	    exit(1);
 	}
+	usage = usagef;
 
 	void save_value(&arg_var a, string value)
 	    /*
@@ -185,7 +192,7 @@
 		if (argind >= dim(argv)) {
 		    fprintf(stderr, "%s: missing value for --%s\n",
 			    argd.prog_name, a.name);
-		    usage(stderr);
+		    usagef(stderr);
 		}
 		save_value(&a.var, argv[argind]);
 		argind++;
@@ -195,7 +202,7 @@
 	/* handle the help case first */
 	if (argind < dim(argv) &&
 	    (argv[argind] == "--help" || argv[argind] == "--usage"))
-	    usage(stdout);
+	    usagef(stdout);
 	
 	/* now walk the arguments */
 	while(argind < dim(argv)) {
@@ -208,7 +215,7 @@
 			    "%s: don't know what to do with arg \"%s\"\n",
 			    argd.prog_name,
 			    a);
-			usage(stderr);
+			usagef(stderr);
 		}
 		break;
 	    }
@@ -220,7 +227,7 @@
 			fprintf(stderr, "%s: unknown flag char '-%c'\n",
 				argd.prog_name,
 				a[i]);
-			usage(stderr);
+			usagef(stderr);
 		    }
 		    process_flag(&arg_abbr_hash[a[i]]);
 		}
@@ -234,7 +241,7 @@
 			fprintf(stderr, "%s: unknown flag \"--%s\"\n",
 				argd.prog_name,
 				argname);
-			usage(stderr);
+			usagef(stderr);
 		}
 		process_flag(&arg_name_hash[argname]);
 		continue;
@@ -248,7 +255,7 @@
 	    fprintf(stderr, "%s: extra argument \"%s\"\n",
 		    argd.prog_name,
 		    argv[argind]);
-	    usage(stderr);
+	    usagef(stderr);
 	}
 
 	/* process any positional arguments */
@@ -261,7 +268,7 @@
 		    fprintf(stderr, "%s: missing required argument %s\n",
 			    argd.prog_name,
 			    argd.posn_args[i].name);
-		    usage(stderr);
+		    usagef(stderr);
 		}
 		save_value(&argd.posn_args[i].var, argv[argind]);
 		argind++;
@@ -280,7 +287,7 @@
 	        fprintf(stderr, "%s: unknown or extra argument \"%s\"\n",
 			argd.prog_name,
 			argv[argind]);
-		usage(stderr);
+		usagef(stderr);
 	    }
 	}
     }



More information about the Commit mailing list