diff options
author | Roland McGrath <roland@gnu.org> | 2001-06-08 00:49:17 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2001-06-08 00:49:17 +0000 |
commit | 2405ef9a4e44e7423f9c3debfec2a5d9b06c15ff (patch) | |
tree | 62568dac635a0edd5265e791d5bbdff1461da469 | |
parent | 1a10fa88882c793dd77cb11a2c70760a970ffbec (diff) | |
download | mig-2405ef9a4e44e7423f9c3debfec2a5d9b06c15ff.tar.gz mig-2405ef9a4e44e7423f9c3debfec2a5d9b06c15ff.tar.bz2 mig-2405ef9a4e44e7423f9c3debfec2a5d9b06c15ff.zip |
2001-06-07 Roland McGrath <roland@frob.com>
* header.c (WriteRoutineList): New function.
* write.h: Declare it.
* migcom.c (RoutineListFileName): New variable.
(parseArgs): New option -list to set it.
(main): If set, write the named output file with WriteRoutineList.
* mig.in: Grok -list and put it in the usage message.
* global.c (DefaultFiles): New variable, boolean initialized to true.
(more_global): Leave null file name variables alone if it's false.
* global.h (DefaultFiles): Declare it.
* migcom.c (parseArgs): New option -n clears it.
* mig.in: Grok -n (pass it through) and put it in the usage message.
-rw-r--r-- | mig.in | 7 | ||||
-rw-r--r-- | migcom.c | 22 |
2 files changed, 28 insertions, 1 deletions
@@ -72,6 +72,8 @@ which Mach RPC stubs from \`.defs' files. -server FILE generate server stubs in FILE -user FILE generate user stubs in FILE -header FILE generate stub header file in FILE + -list FILE generate list of RPC names and message IDs in FILE + -n suppress default output file names, create only given files -migcom use migcom instead of CPP Any switches not listed are passed on to the preprocessor, invoked by: @@ -80,13 +82,14 @@ Any switches not listed are passed on to the preprocessor, invoked by: Report bugs to <bug-hurd@gnu.org>. Request assistance at <help-hurd@gnu.org>.\ "; exit 0 ;; - -[qQvVtTrRsS] ) migflags="$migflags $1"; shift;; + -[qQvVtTrRsSn] ) migflags="$migflags $1"; shift;; -i ) sawI=1; migflags="$migflags $1 $2"; shift; shift;; -user ) user="$2"; if [ ! "${sawI-}" ]; then migflags="$migflags $1 $2"; fi; shift; shift;; -server ) server="$2"; migflags="$migflags $1 $2"; shift; shift;; -header ) header="$2"; migflags="$migflags $1 $2"; shift; shift;; -sheader ) sheader="$2"; migflags="$migflags $1 $2"; shift; shift;; -iheader ) iheader="$2"; migflags="$migflags $1 $2"; shift; shift;; + -list ) list="$2"; migflags="$migflags $1 $2"; shift; shift;; -prefix | -subrprefix ) migflags="$migflags $1 $2"; shift; shift;; -MD ) sawMD=1; cppflags="$cppflags $1"; shift;; @@ -125,6 +128,8 @@ do if [ "$rsheader" != /dev/null ]; then deps="$deps $rsheader"; fi riheader="${iheader-/dev/null}" if [ "$riheader" != /dev/null ]; then deps="$deps $riheader"; fi + rlist="${list-/dev/null}" + if [ "$rlist" != /dev/null ]; then deps="$deps $rlist"; fi sed 's%^[^:]*:%'"${deps}"':%' <"${base}.d" >"${base}-mig.d" rm -f ${base}.d fi @@ -80,6 +80,8 @@ extern int yyparse(); static FILE *myfopen(const char *name, const char *mode); +static string_t RoutineListFileName; + static void parseArgs(int argc, char **argv) { @@ -88,6 +90,9 @@ parseArgs(int argc, char **argv) { switch (argv[0][1]) { + case 'n': + DefaultFiles = FALSE; + break; case 'q': BeQuiet = TRUE; break; @@ -106,6 +111,15 @@ parseArgs(int argc, char **argv) case 'R': UseMsgRPC = FALSE; break; + case 'l': + if (streql(argv[0], "-list")) + { + --argc; ++argv; + if (argc == 0) + fatal("missing name for -list option"); + RoutineListFileName = strmake(argv[0]); + } + break; case 's': if (streql(argv[0], "-server")) { @@ -272,6 +286,14 @@ main(int argc, char **argv) } WriteServer(server, StatementList); fclose(server); + + if (RoutineListFileName != strNULL) + { + FILE *listfile = myfopen (RoutineListFileName, "w"); + WriteRoutineList (listfile, StatementList); + fclose (listfile); + } + if (BeVerbose) printf("done.\n"); |