X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=psi.d%2Fgetopt.psi;h=ac7fd738c098d2c11bd208a89b4d9108caae985b;hb=d583a661f2349ac7be4922e6eca0687ea8ccfef3;hp=5f5bae6fcb67d6ac3224e55b94837d8b6589a502;hpb=a107dfcca2dfd0fc5a2779a8d679f778cb8f3290;p=m6w6%2Fext-psi diff --git a/psi.d/getopt.psi b/psi.d/getopt.psi index 5f5bae6..ac7fd73 100644 --- a/psi.d/getopt.psi +++ b/psi.d/getopt.psi @@ -1,8 +1,13 @@ -function psi\opterr() : int { - return to_int(opterr); +function psi\opterr(int $value) : void { + let opterr = intval($value); + return void(opterr_set); } -function psi\optind() : int { - return to_int(optind); +function psi\optind\get() : int { + return to_int(optind_get); +} +function psi\optind\set(int $v) : void { + let optind = intval($v); + return void(optind_set); } function psi\optopt() : int { return to_int(optopt); @@ -10,15 +15,22 @@ function psi\optopt() : int { function psi\optarg() : string { return to_string(optarg); } - -function psi\getopt(array &$argv, string $options) : int { +/* OSX +function psi\optreset() : void { + let _v = 1; + return void(optreset_set); +} +*/ +static function psi\getopt(array &$argv, string $options) : int { let argc = count($argv); let argv = &arrval($argv, *argv = strval($argv) ); let optstring = strval($options); - return to_int(getopt); - set $argv = to_array(argv, - to_string(argv) + return to_int(getopt); + set $argv = to_array( + *argv, + argc, + to_string(*argv) ); }