From 5db687eae1749d69a7ad5066345632a0a3c04807 Mon Sep 17 00:00:00 2001 From: mainzelm Date: Wed, 5 Apr 2006 08:06:16 +0000 Subject: [PATCH] Propagate argv[0] to the scheme level and use it as first element of the command line. --- c/init.c | 5 +---- c/main.c | 12 ++++++------ scsh/process_args.c | 9 ++------- scsh/startup.scm | 4 ++-- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/c/init.c b/c/init.c index c300cc7..c2b62c6 100644 --- a/c/init.c +++ b/c/init.c @@ -15,8 +15,6 @@ char *s48_object_file; /* specified via a command line argument */ char *s48_reloc_file; /* dynamic loading will set this */ -char *prog_name; - void *heap, *stack; int s48_main (long heap_size, long stack_size, @@ -30,7 +28,7 @@ int s48_main (long heap_size, long stack_size, } int -internal_s48_main(long heap_size, long stack_size, char * _prog_name, +internal_s48_main(long heap_size, long stack_size, char* object_file, char *image_name, int argc, char** argv) { long return_value; @@ -45,7 +43,6 @@ internal_s48_main(long heap_size, long stack_size, char * _prog_name, extern long i_count, *i_areas[], i_sizes[]; #endif - prog_name = _prog_name; s48_object_file = object_file; s48_reloc_file = NULL; diff --git a/c/main.c b/c/main.c index 98daaf7..0752696 100644 --- a/c/main.c +++ b/c/main.c @@ -32,7 +32,6 @@ char ** process_args(char **argv, - char* prog_name, long *heap_size, long *stack_size, char **object_file, @@ -40,7 +39,7 @@ char ** process_args(char **argv, extern int internal_s48_main(long heap_size, long stack_size, - char* prog_name, char* object_file, char* image_name, + char* object_file, char* image_name, int argc, char** argv); int @@ -63,12 +62,13 @@ main(argc, argv) #endif long vm_argc = 0; - char *me = *argv; /* Save program name. */ - prog_name = *argv++; + prog_name = *argv++;/* Save program name. */ - argv=process_args(argv, prog_name, + argv=process_args(argv, &heap_size, &stack_size, &object_file, &image_name); + argv--; + argv[0] = prog_name; for(argc=0, argp=argv; *argp; argc++, argp++); /* Recompute argc. */ - return internal_s48_main(heap_size, stack_size, prog_name, object_file, image_name, argc, argv); + return internal_s48_main(heap_size, stack_size, object_file, image_name, argc, argv); } diff --git a/scsh/process_args.c b/scsh/process_args.c index e39c791..7f9add8 100644 --- a/scsh/process_args.c +++ b/scsh/process_args.c @@ -4,8 +4,6 @@ #define streq(a,b) (strcmp((a),(b))==0) -static char* prog_name; - static void usage(void) { fprintf(stderr, "Usage: %s [meta-arg] [vm-option+] [end-option scheme-args]\n" "meta-arg: \\