diff options
author | Guido van Rossum <guido@python.org> | 1995-01-02 19:04:15 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1995-01-02 19:04:15 (GMT) |
commit | 1ae940a5870df2f706fa884afd533847f6b0b1a8 (patch) | |
tree | ac19577f141b553bd56f998a62478719d5b81cd4 /Python/getargs.c | |
parent | 824de25fe2edade0ded378b4d602351272f4cf63 (diff) | |
download | cpython-1ae940a5870df2f706fa884afd533847f6b0b1a8.zip cpython-1ae940a5870df2f706fa884afd533847f6b0b1a8.tar.gz cpython-1ae940a5870df2f706fa884afd533847f6b0b1a8.tar.bz2 |
Lots of changes, most minor (fatal() instead of abort(), use of
err_fetch/err_restore and so on). But...
NOTE: import.c has been rewritten and all the DL stuff is now in the
new file importdl.c.
Diffstat (limited to 'Python/getargs.c')
-rw-r--r-- | Python/getargs.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/Python/getargs.c b/Python/getargs.c index 15cd4e6..1232fd0 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -38,7 +38,7 @@ int vgetargs PROTO((object *, char *, va_list)); /* Forward */ -static int vgetargs1 PROTO((object *, char *, va_list, int)); +static int vgetargs1 PROTO((object *, char *, va_list *, int)); static void seterror PROTO((int, char *, int *, char *, char *)); static char *convertitem PROTO((object *, char **, va_list *, int *, char *)); static char *converttuple PROTO((object *, char **, va_list *, @@ -68,7 +68,7 @@ int getargs(va_alist) va_dcl args = va_arg(va, object *); format = va_arg(va, char *); #endif - retval = vgetargs1(args, format, va, 1); + retval = vgetargs1(args, format, &va, 1); va_end(va); return retval; } @@ -95,7 +95,7 @@ int newgetargs(va_alist) va_dcl args = va_arg(va, object *); format = va_arg(va, char *); #endif - retval = vgetargs1(args, format, va, 0); + retval = vgetargs1(args, format, &va, 0); va_end(va); return retval; } @@ -107,15 +107,23 @@ vgetargs(args, format, va) char *format; va_list va; { - return vgetargs1(args, format, va, 0); + va_list lva; + +#ifdef VA_LIST_IS_ARRAY + memcpy(lva, va, sizeof(va_list)); +#else + lva = va; +#endif + + return vgetargs1(args, format, &lva, 0); } static int -vgetargs1(args, format, va, compat) +vgetargs1(args, format, p_va, compat) object *args; char *format; - va_list va; + va_list *p_va; int compat; { char msgbuf[256]; @@ -186,7 +194,7 @@ vgetargs1(args, format, va, compat) err_setstr(TypeError, msgbuf); return 0; } - msg = convertitem(args, &format, &va, levels, msgbuf); + msg = convertitem(args, &format, p_va, levels, msgbuf); if (msg == NULL) return 1; seterror(levels[0], msg, levels+1, fname, message); @@ -226,7 +234,7 @@ vgetargs1(args, format, va, compat) for (i = 0; i < len; i++) { if (*format == '|') format++; - msg = convertitem(gettupleitem(args, i), &format, &va, + msg = convertitem(gettupleitem(args, i), &format, p_va, levels, msgbuf); if (msg) { seterror(i+1, msg, levels, fname, message); |