diff options
-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"); |