[Scheme-reports] (command-line) needs to specify argv[0] behavior Per Bothner 03 Aug 2011 18:15 UTC

This has been discussed before, but I don't see a ticket for it.

The definitions of (command-line) is:

   Returns the command line arguments passed to the process
   as a list of strings.

It needs to clarify if this list includes the command used to
invoke the process - i.e. C's argv[0].

Making it implementation-dependent makes it useless.
However, it is possible to make the first car be implementation-dependent.
I.e. (car (command-line)) corresponds to C's argv[0], if known,
and is "" if unknown.

A complication is there may be multiple command names:
   /usr/local/bin/myscheme myprog.scm a b c
where myscheme is the Scheme "interpreter", myprog.scm is the Scheme
application, and (a b c) are the actual use commands.  In this case,
what should (command-line) return?

Similarly:
   java -classpath kawa.jar -Xmx120 kawa.repl a b c

So perhaps command-line should only return "user" command-line arguments.
I.e. in the above examples:
   ("a" "b" "c")

I suggest:
   The result should not include the command name used to invoke the
process,
   or (if the process is a Scheme evaluator) the name of the Scheme file
being
   evaluated or evaluator-specific options.

Perhaps there should be a separate function to get the "invocation
arguments":
   (command-invoker) ==> ("/usr/local/bin/myscheme" "myprog.scm")
   (command-invoker) ==> ("java" "-classpath" "kawa.jar" "-Xmx120"
"kawa.repl")
Some implementations (including Kawa) may have difficulty implementing
command-invoker.

Allowing command-line (and command-invoker) to return a list of
immutable strings
(like symbol->string does) would avoid the need for an extra copy operation
on Kawa, but that is pretty minor.
--
	--Per Bothner
per@bothner.com   http://per.bothner.com/

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports