- Subject: [slang-users] cmdopt
- From: Morten Bo Johansen <mbj@xxxxxxxxxxx>
- Date: Tue, 11 Aug 2015 21:53:59 +0200
Hi,
I just looked at cmdopt.sl, wanting to use it in a script but
apparently I don't understand how it works. I am attaching a
little test script, "psl". The problem is that I cannot seem to
call the two different functions in the script with a different
number of arguments.
-------- psl begin ----------
#!/usr/bin/env slsh
_debug_info=1;_traceback=1;_slangtrace=1;
require ("cmdopt");
private define p (a)
{
() = printf ("%s\n", a);
}
private define pp (a, b, c)
{
() = printf ("%s%s%s\n", a, b, c);
}
define slsh_main ()
{
variable c = cmdopt_new ();
cmdopt_add (c, "a", &p, __argv[2]; type="str");
cmdopt_add (c, "b", &pp, __argv[2], __argv[3], __argv[4]; type="str");
variable i = cmdopt_process (c, __argv, 1);
if (i >= __argc)
exit (1);
}
-------- psl end ----------
Now, if I call the script as
./psl -b a b c
it prints "abc" as I want
but if I call the script as
./psl -a a
It doesn't print "a", rather it returns:
Invalid Index
Unable to access array element
./psl:21:slsh_main:Invalid Index
Local variables for slsh_main:
Struct_Type c = Struct_Type with 4 fields
Undefined_Type i = Undefined_Type
Error encountered while executing slsh_main
Line 21 refers to the "pp" function called with the "-b"
option and not the "p" function I just called with the "-a"
option..
If I comment out this line, then it works. In other words, the one
command line option works if the other is commented out and vice
versa. I can't have them both.
Thanks,
Morten
_______________________________________________
For list information, visit <http://jedsoft.org/slang/mailinglists.html>.
[2015 date index]
[2015 thread index]
[Thread Prev] [Thread Next]
[Date Prev] [Date Next]