From 2adf00d8d64a979a1f812b6153c9f48311f81f60 Mon Sep 17 00:00:00 2001 From: Martin Stjernholm <mast@lysator.liu.se> Date: Sun, 29 Feb 2004 04:41:37 +0100 Subject: [PATCH] Some cleanup by using the optional args feature in get_all_args. Rev: src/builtin_functions.c:1.531 --- src/builtin_functions.c | 70 +++++++++++------------------------------ 1 file changed, 19 insertions(+), 51 deletions(-) diff --git a/src/builtin_functions.c b/src/builtin_functions.c index 8902e1ecb4..6b8e0b5248 100644 --- a/src/builtin_functions.c +++ b/src/builtin_functions.c @@ -2,11 +2,11 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: builtin_functions.c,v 1.530 2004/02/03 22:00:07 grubba Exp $ +|| $Id: builtin_functions.c,v 1.531 2004/02/29 03:41:37 mast Exp $ */ #include "global.h" -RCSID("$Id: builtin_functions.c,v 1.530 2004/02/03 22:00:07 grubba Exp $"); +RCSID("$Id: builtin_functions.c,v 1.531 2004/02/29 03:41:37 mast Exp $"); #include "interpret.h" #include "svalue.h" #include "pike_macros.h" @@ -1657,16 +1657,9 @@ PMOD_EXPORT void f_string_to_utf8(INT32 args) struct pike_string *in; struct pike_string *out; ptrdiff_t i,j; - int extended = 0; + INT_TYPE extended = 0; - get_all_args("string_to_utf8", args, "%W", &in); - - if (args > 1) { - if (Pike_sp[1-args].type != T_INT) { - SIMPLE_BAD_ARG_ERROR("string_to_utf8", 2, "int|void"); - } - extended = Pike_sp[1-args].u.integer; - } + get_all_args("string_to_utf8", args, "%W.%i", &in, &extended); len = in->len; @@ -1791,16 +1784,9 @@ PMOD_EXPORT void f_utf8_to_string(INT32 args) int len = 0; int shift = 0; int i,j; - int extended = 0; - - get_all_args("utf8_to_string", args, "%S", &in); + INT_TYPE extended = 0; - if (args > 1) { - if (Pike_sp[1-args].type != T_INT) { - SIMPLE_BAD_ARG_ERROR("utf8_to_string()", 2, "int|void"); - } - extended = Pike_sp[1-args].u.integer; - } + get_all_args("utf8_to_string", args, "%S.%i", &in, &extended); for(i=0; i < in->len; i++) { unsigned int c = ((unsigned char *)in->str)[i]; @@ -4467,6 +4453,7 @@ static time_t my_timegm(struct tm *target_tm) PMOD_EXPORT void f_mktime (INT32 args) { INT_TYPE sec, min, hour, mday, mon, year; + INT_TYPE isdst = -1, tz; struct tm date; int retval; @@ -4494,8 +4481,8 @@ PMOD_EXPORT void f_mktime (INT32 args) args=8; } - get_all_args("mktime",args, "%i%i%i%i%i%i", - &sec, &min, &hour, &mday, &mon, &year); + get_all_args("mktime",args, "%i%i%i%i%i%i.%i%i", + &sec, &min, &hour, &mday, &mon, &year, &isdst, &tz); MEMSET(&date, 0, sizeof(date)); date.tm_sec=sec; @@ -4504,35 +4491,18 @@ PMOD_EXPORT void f_mktime (INT32 args) date.tm_mday=mday; date.tm_mon=mon; date.tm_year=year; - - if (args > 6) { - if (Pike_sp[6-args].type != T_INT) { - SIMPLE_BAD_ARG_ERROR("mktime", 6, "int"); - } - if (args > 7) { - if (Pike_sp[7-args].type != T_INT) { - SIMPLE_BAD_ARG_ERROR("mktime", 7, "int"); - } - } - } - - if ((args > 6) && (Pike_sp[6-args].subtype == NUMBER_NUMBER)) - { - date.tm_isdst = Pike_sp[6-args].u.integer; - } else { - date.tm_isdst = -1; - } + date.tm_isdst=isdst; /* date.tm_zone = NULL; */ #ifdef HAVE_GMTIME - if((args > 7) && (Pike_sp[7-args].subtype == NUMBER_NUMBER)) + if(args > 7) { /* UTC-relative time. Use my_timegm(). */ retval = my_timegm(&date); if (retval == -1) PIKE_ERROR("mktime", "Cannot convert.\n", Pike_sp, args); - retval += Pike_sp[7-args].u.integer; + retval += tz; } else { #endif /* HAVE_GMTIME */ @@ -4544,7 +4514,7 @@ PMOD_EXPORT void f_mktime (INT32 args) /* Linux-style */ date.__tm_gmtoff = 0; #else - if((args > 7) && (Pike_sp[7-args].subtype == NUMBER_NUMBER)) + if(args > 7) { /* Pre-adjust for the timezone. * @@ -4552,7 +4522,7 @@ PMOD_EXPORT void f_mktime (INT32 args) * near Jan 1, 1970, sine AIX mktime(3) doesn't support * negative time. */ - date.tm_sec += Pike_sp[7-args].u.integer + date.tm_sec += tz #ifdef HAVE_EXTERNAL_TIMEZONE - timezone #endif /* HAVE_EXTERNAL_TIMEZONE */ @@ -4567,7 +4537,7 @@ PMOD_EXPORT void f_mktime (INT32 args) PIKE_ERROR("mktime", "Cannot convert.\n", Pike_sp, args); #if defined(STRUCT_TM_HAS_GMTOFF) || defined(STRUCT_TM_HAS___TM_GMTOFF) - if((args > 7) && (Pike_sp[7-args].subtype == NUMBER_NUMBER)) + if(args > 7) { /* Post-adjust for the timezone. * @@ -4577,17 +4547,15 @@ PMOD_EXPORT void f_mktime (INT32 args) * field is set by mktime(3). */ #ifdef STRUCT_TM_HAS_GMTOFF - retval += Pike_sp[7-args].u.integer + date.tm_gmtoff; + retval += tz + date.tm_gmtoff; #else - retval += Pike_sp[7-args].u.integer + date.__tm_gmtoff; + retval += tz + date.__tm_gmtoff; #endif /* STRUCT_TM_HAS_GMTOFF */ } - if ((args > 6) && (Pike_sp[6-args].subtype == NUMBER_NUMBER) && - (Pike_sp[6-args].u.integer != -1) && - (Pike_sp[6-args].u.integer != date.tm_isdst)) { + if ((isdst != -1) && (isdst != date.tm_isdst)) { /* Some stupid libc's (Hi Linux!) don't accept that we've set isdst... */ - retval += 3600 * (Pike_sp[6-args].u.integer - date.tm_isdst); + retval += 3600 * (isdst - date.tm_isdst); } #endif /* STRUCT_TM_HAS_GMTOFF || STRUCT_TM_HAS___TM_GMTOFF */ #ifdef HAVE_GMTIME -- GitLab