diff --git a/misc.c b/misc.c index 45b4b10..849db32 100644 --- a/misc.c +++ b/misc.c @@ -29,7 +29,7 @@ #include #endif -__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.116 2009/08/28 21:04:16 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.117 2009/08/28 21:07:26 tg Exp $"); #undef USE_CHVT /* XXX conditions correct? */ @@ -445,11 +445,9 @@ parse_args(const char **argv, qsort(&argv[go.optind], i - go.optind, sizeof(void *), xstrcmp); } - if (arrayset) { - set_array(array, arrayset > 0 ? true : false, argv + go.optind); - for (; argv[go.optind]; go.optind++) - ; - } + if (arrayset) + go.optind += set_array(array, arrayset > 0 ? true : false, + argv + go.optind); return (go.optind); } diff --git a/sh.h b/sh.h index 31a0b8c..d2fdbd2 100644 --- a/sh.h +++ b/sh.h @@ -134,7 +134,7 @@ #endif #ifdef EXTERN -__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.331 2009/08/28 21:04:17 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.332 2009/08/28 21:07:27 tg Exp $"); #endif #define MKSH_VERSION "R39 2009/08/08" @@ -1647,7 +1647,7 @@ void change_random(unsigned long); void change_winsz(void); int array_ref_len(const char *); char *arrayname(const char *); -void set_array(const char *, bool, const char **); +uint32_t set_array(const char *, bool, const char **); enum Test_op { TO_NONOP = 0, /* non-operator */ diff --git a/var.c b/var.c index d53d97e..c6f1b1c 100644 --- a/var.c +++ b/var.c @@ -22,7 +22,7 @@ #include "sh.h" -__RCSID("$MirOS: src/bin/mksh/var.c,v 1.83 2009/08/28 21:04:18 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/var.c,v 1.84 2009/08/28 21:07:27 tg Exp $"); /* * Variables @@ -1315,9 +1315,8 @@ arrayname(const char *str) return (rv); } -/* Set (or overwrite, if reset) the array variable var to the values in vals. - */ -void +/* set (or overwrite, if reset) the array variable var to the values in vals */ +uint32_t set_array(const char *var, bool reset, const char **vals) { struct tbl *vp, *vq; @@ -1342,6 +1341,8 @@ set_array(const char *var, bool reset, const char **vals) /* would be nice to deal with errors here... (see above) */ setstr(vq, vals[i], KSH_RETURN_ERROR); } + + return (i); } void