Propagate argv[0] to the scheme level and use it as first element of

the command line.
This commit is contained in:
mainzelm 2006-04-05 08:06:16 +00:00
parent 3b4becd2ba
commit 5db687eae1
4 changed files with 11 additions and 19 deletions

View File

@ -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;

View File

@ -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);
}

View File

@ -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: \\ <script file name>\n"
@ -17,7 +15,7 @@ static void usage(void) {
"end-option: -i <image file name>\n"
" -- (Terminates vm args.)\n"
" -a (Terminates vm args. Obsolete.)\n",
prog_name);}
"scshvm");}
static void bad_args(int reason) {
/* fprintf(stderr, "reason : %s\n", reason); */
@ -26,15 +24,12 @@ static void bad_args(int reason) {
}
char ** process_args(char **argv,
char * _prog_name,
long *pheap_size,
long *pstack_size,
char **pobject_file,
char **pimage_name) {
extern char **process_meta_arg(char **);
prog_name = _prog_name;
/* Handle an initial \ <fname> meta-arg expansion. */
while ( *argv && streq(*argv, "\\") ) {
argv++;
@ -42,7 +37,7 @@ char ** process_args(char **argv,
argv = process_meta_arg(argv);
if( !argv ) {
fprintf(stderr, "%s: \\ <fname> expansion failed.\n",
prog_name);
"scshvm");
exit(1);}}
for (; *argv; argv++)

View File

@ -58,7 +58,7 @@
(init-fdports!)
(call-with-current-continuation
(lambda (halt)
(set! %vm-prog-args (cons "scsh" args)) ; WRONG -- use image.
(set! %vm-prog-args args)
(set-command-line-args! %vm-prog-args)
(with-handler
(simple-condition-handler halt (current-error-port))