From bb099046911374a63d73fb9d7bac04ee096f4253 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 23 Sep 2009 04:16:41 +0000 Subject: * time.c: fixed type. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- time.c | 103 +++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 52 insertions(+), 51 deletions(-) (limited to 'time.c') diff --git a/time.c b/time.c index 29f448717e..62b2f5d1cf 100644 --- a/time.c +++ b/time.c @@ -51,7 +51,7 @@ typedef unsigned LONG_LONG unsigned_time_t; VALUE rb_cTime; static VALUE time_utc_offset _((VALUE)); -static long obj2long(VALUE obj); +static int obj2int(VALUE obj); static VALUE obj2vint(VALUE obj); static int month_arg(VALUE arg); static void validate_utc_offset(VALUE utc_offset); @@ -456,7 +456,8 @@ gmtime_with_leapsecond(const time_t *timep, struct tm *result) /* 4.4BSD counts leap seconds only with localtime, not with gmtime. */ struct tm *t; int sign; - long gmtoff, gmtoff_sec, gmtoff_min, gmtoff_hour, gmtoff_day; + int gmtoff_sec, gmtoff_min, gmtoff_hour, gmtoff_day; + long gmtoff; t = localtime_r(timep, result); if (t == NULL) return NULL; @@ -470,11 +471,11 @@ gmtime_with_leapsecond(const time_t *timep, struct tm *result) sign = -1; gmtoff = t->tm_gmtoff; } - gmtoff_sec = gmtoff % 60; + gmtoff_sec = (int)(gmtoff % 60); gmtoff = gmtoff / 60; - gmtoff_min = gmtoff % 60; + gmtoff_min = (int)(gmtoff % 60); gmtoff = gmtoff / 60; - gmtoff_hour = gmtoff; + gmtoff_hour = (int)gmtoff; /* <= 12 */ gmtoff_sec *= sign; gmtoff_min *= sign; @@ -638,7 +639,7 @@ timegmxv(struct vtm *vtm) return add(timexv, rb_time_magnify(INT2NUM(number_of_leap_seconds_known))); } - tm.tm_year = NUM2LONG(vtm->year) - 1900; + tm.tm_year = rb_long2int(NUM2LONG(vtm->year) - 1900); tm.tm_mon = vtm->mon - 1; tm.tm_mday = vtm->mday; tm.tm_hour = vtm->hour; @@ -877,7 +878,7 @@ timelocalxv(struct vtm *vtm) long l = FIX2LONG(vtm->year) - 1900; if (l < INT_MIN || INT_MAX < l) goto no_localtime; - tm.tm_year = l; + tm.tm_year = (int)l; } else { v = sub(vtm->year, INT2FIX(1900)); @@ -1338,8 +1339,8 @@ utc_offset_arg(VALUE arg) !ISDIGIT(s[4]) || !ISDIGIT(s[5])) rb_raise(rb_eArgError, "\"+HH:MM\" or \"-HH:MM\" expected for utc_offset"); - n = strtol(s+1, NULL, 10) * 3600; - n += strtol(s+4, NULL, 10) * 60; + n = (s[1] * 10 + s[2] - '0' * 11) * 3600; + n += (s[4] * 10 + s[5] - '0' * 11) * 60; if (s[0] == '-') n = -n; return INT2FIX(n); @@ -1367,11 +1368,11 @@ time_init_1(int argc, VALUE *argv, VALUE time) vtm.mon = NIL_P(v[1]) ? 1 : month_arg(v[1]); - vtm.mday = NIL_P(v[2]) ? 1 : obj2long(v[2]); + vtm.mday = NIL_P(v[2]) ? 1 : obj2int(v[2]); - vtm.hour = NIL_P(v[3]) ? 0 : obj2long(v[3]); + vtm.hour = NIL_P(v[3]) ? 0 : obj2int(v[3]); - vtm.min = NIL_P(v[4]) ? 0 : obj2long(v[4]); + vtm.min = NIL_P(v[4]) ? 0 : obj2int(v[4]); vtm.sec = 0; vtm.subsecx = INT2FIX(0); @@ -1637,7 +1638,7 @@ time_timeval(VALUE num, int interval) struct timeval rb_time_interval(VALUE num) { - return time_timeval(num, Qtrue); + return time_timeval(num, TRUE); } struct timeval @@ -1654,7 +1655,7 @@ rb_time_timeval(VALUE time) t.tv_usec = (TYPEOF_TIMEVAL_TV_USEC)(ts.tv_nsec / 1000); return t; } - return time_timeval(time, Qfalse); + return time_timeval(time, FALSE); } struct timespec @@ -1668,7 +1669,7 @@ rb_time_timespec(VALUE time) t = timexv2timespec(tobj->timexv); return t; } - return time_timespec(time, Qfalse); + return time_timespec(time, FALSE); } /* @@ -1738,21 +1739,21 @@ static const char months[][4] = { "jul", "aug", "sep", "oct", "nov", "dec", }; -static long -obj2long(VALUE obj) +static int +obj2int(VALUE obj) { if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); } - return NUM2LONG(obj); + return NUM2INT(obj); } static VALUE obj2vint(VALUE obj) { if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); } else { obj = rb_to_int(obj); @@ -1761,27 +1762,27 @@ obj2vint(VALUE obj) return obj; } -static long +static int obj2subsecx(VALUE obj, VALUE *subsecx) { VALUE subsec; if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); *subsecx = INT2FIX(0); - return NUM2LONG(obj); + return NUM2INT(obj); } divmodv(num_exact(obj), INT2FIX(1), &obj, &subsec); *subsecx = rb_time_magnify(subsec); - return NUM2LONG(obj); + return NUM2INT(obj); } static long usec2subsecx(VALUE obj) { if (TYPE(obj) == T_STRING) { - obj = rb_str_to_inum(obj, 10, Qfalse); + obj = rb_str_to_inum(obj, 10, FALSE); } return mulquo(num_exact(obj), INT2FIX(TIME_SCALE), INT2FIX(1000000)); @@ -1806,12 +1807,12 @@ month_arg(VALUE arg) char c = RSTRING_PTR(s)[0]; if ('0' <= c && c <= '9') { - mon = obj2long(s); + mon = obj2int(s); } } } else { - mon = obj2long(arg); + mon = obj2int(arg); } return mon; } @@ -1886,15 +1887,15 @@ time_arg(int argc, VALUE *argv, struct vtm *vtm) vtm->mday = 1; } else { - vtm->mday = obj2long(v[2]); + vtm->mday = obj2int(v[2]); } - vtm->hour = NIL_P(v[3])?0:obj2long(v[3]); + vtm->hour = NIL_P(v[3])?0:obj2int(v[3]); - vtm->min = NIL_P(v[4])?0:obj2long(v[4]); + vtm->min = NIL_P(v[4])?0:obj2int(v[4]); if (!NIL_P(v[6]) && argc == 7) { - vtm->sec = NIL_P(v[5])?0:obj2long(v[5]); + vtm->sec = NIL_P(v[5])?0:obj2int(v[5]); vtm->subsecx = usec2subsecx(v[6]); } else { @@ -2308,7 +2309,7 @@ time_utc_or_local(int argc, VALUE *argv, int utc_p, VALUE klass) static VALUE time_s_mkutc(int argc, VALUE *argv, VALUE klass) { - return time_utc_or_local(argc, argv, Qtrue, klass); + return time_utc_or_local(argc, argv, TRUE, klass); } /* @@ -2339,7 +2340,7 @@ time_s_mkutc(int argc, VALUE *argv, VALUE klass) static VALUE time_s_mktime(int argc, VALUE *argv, VALUE klass) { - return time_utc_or_local(argc, argv, Qfalse, klass); + return time_utc_or_local(argc, argv, FALSE, klass); } /* @@ -3401,11 +3402,11 @@ rb_strftime(char *s, size_t maxsize, const char *format, int gmt); #define SMALLBUF 100 -static int +static size_t rb_strftime_alloc(char **buf, const char *format, struct vtm *vtm, VALUE timev, int gmt) { - int size, len, flen; + size_t size, len, flen; (*buf)[0] = '\0'; flen = strlen(format); @@ -3426,10 +3427,10 @@ rb_strftime_alloc(char **buf, const char *format, * if the buffer is 1024 times bigger than the length of the * format string, it's not failing for lack of room. */ - if (len > 0 || size >= 1024 * flen) return len; + if (len > 0 || size >= 1024 * flen) break; xfree(*buf); } - /* not reached */ + return len; } static VALUE @@ -3630,16 +3631,16 @@ time_mdump(VALUE time) * However it can be longer. * Extra digits are ignored for loading. */ - unsigned char buf[2]; - int len = sizeof(buf); - buf[1] = (nsec % 10) << 4; + char buf[2]; + int len = (int)sizeof(buf); + buf[1] = (char)((nsec % 10) << 4); nsec /= 10; - buf[0] = nsec % 10; + buf[0] = (char)(nsec % 10); nsec /= 10; - buf[0] |= (nsec % 10) << 4; + buf[0] |= (char)((nsec % 10) << 4); if (buf[1] == 0) len = 1; - rb_ivar_set(str, id_submicro, rb_str_new((char *)buf, len)); + rb_ivar_set(str, id_submicro, rb_str_new(buf, len)); } if (!rb_equal(subnano, INT2FIX(0))) { rb_ivar_set(str, id_subnano, subnano); @@ -3717,14 +3718,14 @@ time_mload(VALUE time, VALUE str) } else { p &= ~(1UL<<31); - gmt = (p >> 30) & 0x1; - - vtm.year = INT2FIX(((p >> 14) & 0xffff) + 1900); - vtm.mon = ((p >> 10) & 0xf) + 1; - vtm.mday = (p >> 5) & 0x1f; - vtm.hour = p & 0x1f; - vtm.min = (s >> 26) & 0x3f; - vtm.sec = (s >> 20) & 0x3f; + gmt = (int)((p >> 30) & 0x1); + + vtm.year = INT2FIX(((int)(p >> 14) & 0xffff) + 1900); + vtm.mon = ((int)(p >> 10) & 0xf) + 1; + vtm.mday = (int)(p >> 5) & 0x1f; + vtm.hour = (int) p & 0x1f; + vtm.min = (int)(s >> 26) & 0x3f; + vtm.sec = (int)(s >> 20) & 0x3f; vtm.utc_offset = INT2FIX(0); vtm.yday = vtm.wday = 0; vtm.isdst = 0; -- cgit v1.2.3