chiark / gitweb /
dump-ecl: Defeat ASDF's magic internal knowledge of itself.
[runlisp] / runlisp.c
index 65741ad85d0544a6f2a06c85c6a24a67989fcc25..87c478f91c408e783f170006b6c55b19d57a51e7 100644 (file)
--- a/runlisp.c
+++ b/runlisp.c
@@ -199,7 +199,8 @@ static void usage(FILE *fp)
   fprintf(fp, "\
 usage:\n\
        %s [OPTIONS] [--] SCRIPT [ARGUMENTS ...]\n\
-       %s [OPTIONS] [-e EXPR] [-p EXPR] [-l FILE] [--] [ARGUMENTS ...]\n\
+       %s [OPTIONS] [-e EXPR] [-d EXPR] [-p EXPR] [-l FILE]\n\
+               [--] [ARGUMENTS ...]\n\
 OPTIONS:\n\
        [-CDEnqv] [+DEn] [-L SYS,SYS,...] [-c CONF] [-o [SECT:]VAR=VAL]\n",
          progname, progname);
@@ -228,9 +229,10 @@ Lisp implementation selection:\n\
   -L, --accept-lisp=SYS,SYS,...        Only use the listed Lisp systems.\n\
 \n\
 Evaluation mode:\n\
+  -d, --dump-expression=EXPR   Print (`prin1') EXPR (repeatable).\n\
   -e, --evaluate-expression=EXPR Evaluate EXPR for effect (repeatable).\n\
   -l, --load-file=FILE         Load FILE (repeatable).\n\
-  -p, --print-expression=EXPR  Print (`prin1') EXPR (repeatable).\n",
+  -p, --print-expression=EXPR  Print (`princ') EXPR (repeatable).\n",
        fp);
 }
 
@@ -257,6 +259,7 @@ static void parse_options(int argc, char *argv[])
     { "command-line-only",     OPTF_NEGATE,    0,      'E' },
     { "accept-lisp",           OPTF_ARGREQ,    0,      'L' },
     { "config-file",           OPTF_ARGREQ,    0,      'c' },
+    { "dump-expression",       OPTF_ARGREQ,    0,      'd' },
     { "evaluate-expression",   OPTF_ARGREQ,    0,      'e' },
     { "load-file",             OPTF_ARGREQ,    0,      'l' },
     { "dry-run",               OPTF_NEGATE,    0,      'n' },
@@ -280,7 +283,7 @@ static void parse_options(int argc, char *argv[])
 
   optarg = 0; optind = 0; optprog = (/*unconst*/ char *)progname;
   for (;;) {
-    i = mdwopt(argc, argv, "+hVD+E+L:c:e:l:n+o:p:qv", opts, 0, 0,
+    i = mdwopt(argc, argv, "+hVD+E+L:c:d:e:l:n+o:p:qv", opts, 0, 0,
               OPTF_NEGATION | OPTF_NOPROGNAME);
     if (i < 0) break;
     switch (i) {
@@ -293,16 +296,20 @@ static void parse_options(int argc, char *argv[])
                    offsetof(struct lispsys, next_accept));
        break;
       case 'c': CMDL; read_config_path(optarg, 0); flags |= AF_SETCONF; break;
+      case 'd': CMDL; push_eval_op('?', optarg); break;
       case 'e': CMDL; push_eval_op('!', optarg); break;
       case 'l': CMDL; push_eval_op('<', optarg); break;
       FLAGOPT('n', AF_DRYRUN, { CMDL; });
       case 'o': CMDL; if (set_config_var(optarg)) flags |= AF_BOGUS; break;
-      case 'p': CMDL; push_eval_op('?', optarg); break;
+      case 'p': CMDL; push_eval_op('=', optarg); break;
       case 'q': CMDL; if (verbose) verbose--; break;
       case 'v': CMDL; verbose++; break;
       default: flags |= AF_BOGUS; break;
     }
   }
+
+#undef FLAGOPT
+#undef CMDL
 }
 
 /* Extract and process the embedded options from a SCRIPT. */