PennMUSH Community
Show
Ignore:
Timestamp:
06/12/07 15:21:47 (1 year ago)
Author:
shawnw
Message:

1.8.3p3

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 1.8.3/trunk/src/funtime.c

    r846 r919  
    2828int do_convtime(const char *str, struct tm *ttm); 
    2929void do_timestring(char *buff, char **bp, const char *format, 
    30           unsigned long secs); 
     30                   unsigned long secs); 
    3131 
    3232extern char valid_timefmt_codes[256]; 
     
    3737  struct tm *ttm; 
    3838  time_t tt; 
    39   int len, n; 
     39  size_t len, n; 
    4040 
    4141  if (!args[0] || !*args[0]) 
    42     return;            /* No field? Bad user. */ 
     42    return;                     /* No field? Bad user. */ 
    4343 
    4444  if (nargs == 2) { 
     
    7171      n++; 
    7272      if (args[0][n] == '$') 
    73    args[0][n] = '%'; 
     73        args[0][n] = '%'; 
    7474      else if (!valid_timefmt_codes[(unsigned char) args[0][n]]) { 
    75    safe_format(buff, bp, T("#-1 INVALID ESCAPE CODE '$%c'"), 
    76            args[0][n] ? args[0][n] : ' '); 
    77    return; 
     75        safe_format(buff, bp, T("#-1 INVALID ESCAPE CODE '$%c'"), 
     76                    args[0][n] ? args[0][n] : ' '); 
     77        return; 
    7878      } 
    7979    } 
     
    8787     * return an empty string. 
    8888     */ 
     89    safe_str(T("#-1 COULDN'T FORMAT TIME"), buff, bp); 
    8990    return; 
    9091  } 
     
    113114      tz = strtod(args[0], NULL); 
    114115      if (tz < -24.0 || tz > 24.0) { 
    115    safe_str(T("#-1 INVALID TIME ZONE"), buff, bp); 
    116    return; 
     116        safe_str(T("#-1 INVALID TIME ZONE"), buff, bp); 
     117        return; 
    117118      } 
    118119      mytime += (int) (tz * 3600); 
     
    124125      thing = match_thing(executor, args[0]); 
    125126      if (!GoodObject(thing)) { 
    126    safe_str(T(e_notvis), buff, bp); 
    127    return; 
     127        safe_str(T(e_notvis), buff, bp); 
     128        return; 
    128129      } 
    129130      /* Always make time(player) return a time, 
     
    131132      a = atr_get(thing, "TZ"); 
    132133      if (a && is_strict_number(ptr = atr_value(a))) { 
    133    tz = strtod(ptr, NULL); 
    134    if (tz >= -24.0 && tz <= 24.0) { 
    135      mytime += (int) (tz * 3600); 
    136    
     134        tz = strtod(ptr, NULL); 
     135        if (tz >= -24.0 && tz <= 24.0) { 
     136          mytime += (int) (tz * 3600); 
     137       
    137138      } 
    138139    } 
     
    195196  } 
    196197 
    197   secs = parse_uinteger(args[1]); 
     198  secs = strtoul(args[1], NULL, 10); 
    198199 
    199200  do_timestring(buff, bp, args[0], secs); 
     
    235236    } 
    236237    if (i == 0) { 
    237       return 0;            /* No numbers given */ 
     238      return 0;                 /* No numbers given */ 
    238239    } 
    239240    str2[i] = '\0'; 
    240241    if (!*str1) { 
    241       *secs += parse_integer(str2);    // no more chars, just add seconds and stop 
     242      *secs += parse_integer(str2);     /* no more chars, just add seconds and stop */ 
    242243      break; 
    243244    } 
     
    245246    case 'd': 
    246247    case 'D': 
    247       *secs += (parse_integer(str2) * 86400);  // days 
     248      *secs += (parse_integer(str2) * 86400);   /* days */ 
    248249      break; 
    249250    case 'h': 
    250251    case 'H': 
    251       *secs += (parse_integer(str2) * 3600);   // hours 
     252      *secs += (parse_integer(str2) * 3600);    /* hours */ 
    252253      break; 
    253254    case 'm': 
    254255    case 'M': 
    255       *secs += (parse_integer(str2) * 60); // minutes 
     256      *secs += (parse_integer(str2) * 60);      /* minutes */ 
    256257      break; 
    257258    case 's': 
    258259    case 'S': 
    259260    case ' ': 
    260       *secs += parse_integer(str2);    // seconds 
     261      *secs += parse_integer(str2);     /* seconds */ 
    261262      break; 
    262263    default: 
    263264      return 0; 
    264265    } 
    265     str1++;            // move past the time char 
     266    str1++;                     /* move past the time char */ 
    266267  } 
    267268  return 1; 
     
    338339    if (getdate_err <= 7) 
    339340      do_rawlog(LT_ERR, "getdate returned error code %d for %s", getdate_err, 
    340        str); 
     341                str); 
    341342#endif 
    342343    return 0; 
     
    405406    return 0; 
    406407  for (i = 0; (i < 12) && strcmp(month_table[i], p); i++) ; 
    407   if (i == 12)         /* not found */ 
     408  if (i == 12)                  /* not found */ 
    408409    return 0; 
    409410  else 
     
    412413  /* get the day of month */ 
    413414  p = q; 
    414   while (isspace((unsigned char) *p))  /* skip leading space */ 
     415  while (isspace((unsigned char) *p))   /* skip leading space */ 
    415416    p++; 
    416417  if (!(q = strchr(p, ' '))) 
     
    461462#else 
    462463    safe_integer(mktime(&ttm), buff, bp); 
    463 #endif             /* SUN_OS */ 
     464#endif                          /* SUN_OS */ 
    464465  } else { 
    465466    safe_str("-1", buff, bp); 
     
    468469 
    469470#ifdef WIN32 
    470 #pragma warning( disable : 4761)   /* NJG: disable warning re conversion */ 
     471#pragma warning( disable : 4761)        /* NJG: disable warning re conversion */ 
    471472#endif 
    472473/* ARGSUSED */ 
     
    497498do_timestring(char *buff, char **bp, const char *format, unsigned long secs) 
    498499{ 
    499   int days, hours, mins; 
     500  unsigned long days, hours, mins; 
    500501  int pad = 0; 
    501502  int width; 
    502503  const char *c; 
    503504  char *w; 
    504   int include_suffix, even_if_0, in_format_flags
     505  bool include_suffix, in_format_flags, even_if_0
    505506 
    506507  days = secs / 86400; 
     
    514515    if (*c == '$') { 
    515516      c++; 
    516       width = strtol(c, &w, 10); 
     517      width = parse_int(c, &w, 10); 
    517518      if (c == w) 
    518    pad = 0; 
     519        pad = 0; 
    519520      else 
    520    pad = 1; 
     521        pad = 1; 
    521522      if (width < 0) 
    522    width = 0; 
     523        width = 0; 
    523524      else if (width >= BUFFER_LEN) 
    524    width = BUFFER_LEN - 1; 
     525        width = BUFFER_LEN - 1; 
    525526      even_if_0 = in_format_flags = 1; 
    526527      include_suffix = 0; 
    527528      while (in_format_flags) { 
    528    switch (*w) { 
    529    case 'x': 
    530    case 'X': 
    531      include_suffix = 1; 
    532      w++; 
    533      break; 
    534    case 'z': 
    535    case 'Z': 
    536      even_if_0 = 0; 
    537      w++; 
    538      break; 
    539    case '$': 
    540      in_format_flags = 0; 
    541      if (pad) 
    542        safe_format(buff, bp, "%*c", width, '$'); 
    543      else 
    544        safe_chr('$', buff, bp); 
    545      break; 
    546    case 's': 
    547      in_format_flags = 0; 
    548      if (secs || even_if_0) { 
    549        if (pad) 
    550          safe_format(buff, bp, "%*lu", width, secs); 
    551        else 
    552          safe_uinteger(secs, buff, bp); 
    553        if (include_suffix) 
    554          safe_chr('s', buff, bp); 
    555      } else if (pad) 
    556        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    557      break; 
    558    case 'S': 
    559      in_format_flags = 0; 
    560      if (secs || even_if_0) { 
    561        if (pad) 
    562          safe_format(buff, bp, "%0*lu", width, secs); 
    563        else 
    564          safe_format(buff, bp, "%0lu", secs); 
    565        if (include_suffix) 
    566          safe_chr('s', buff, bp); 
    567      } else if (pad) 
    568        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    569      break; 
    570    case 'm': 
    571      in_format_flags = 0; 
    572      if (mins || even_if_0) { 
    573        if (pad) 
    574          safe_format(buff, bp, "%*d", width, mins); 
    575        else 
    576          safe_integer(mins, buff, bp); 
    577        if (include_suffix) 
    578          safe_chr('m', buff, bp); 
    579      } else if (pad) 
    580        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    581      break; 
    582    case 'M': 
    583      in_format_flags = 0; 
    584      if (mins || even_if_0) { 
    585        if (pad) 
    586          safe_format(buff, bp, "%0*d", width, mins); 
    587        else 
    588          safe_format(buff, bp, "%0d", mins); 
    589        if (include_suffix) 
    590          safe_chr('m', buff, bp); 
    591      } else if (pad) 
    592        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    593      break; 
    594    case 'h': 
    595      in_format_flags = 0; 
    596      if (hours || even_if_0) { 
    597        if (pad) 
    598          safe_format(buff, bp, "%*d", width, hours); 
    599        else 
    600          safe_integer(hours, buff, bp); 
    601        if (include_suffix) 
    602          safe_chr('h', buff, bp); 
    603      } else if (pad) 
    604        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    605      break; 
    606    case 'H': 
    607      in_format_flags = 0; 
    608      if (hours || even_if_0) { 
    609        if (pad) 
    610          safe_format(buff, bp, "%0*d", width, hours); 
    611        else 
    612          safe_format(buff, bp, "%0d", hours); 
    613        if (include_suffix) 
    614          safe_chr('h', buff, bp); 
    615      } else if (pad) 
    616        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    617      break; 
    618    case 'd': 
    619      in_format_flags = 0; 
    620      if (days || even_if_0) { 
    621        if (pad) 
    622          safe_format(buff, bp, "%*d", width, days); 
    623        else 
    624          safe_integer(days, buff, bp); 
    625        if (include_suffix) 
    626          safe_chr('d', buff, bp); 
    627      } else if (pad) 
    628        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    629      break; 
    630    case 'D': 
    631      in_format_flags = 0; 
    632      if (days || even_if_0) { 
    633        if (pad) 
    634          safe_format(buff, bp, "%0*d", width, days); 
    635        else 
    636          safe_format(buff, bp, "%0d", days); 
    637        if (include_suffix) 
    638          safe_chr('d', buff, bp); 
    639      } else if (pad) 
    640        safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
    641      break; 
    642    default: 
    643      in_format_flags = 0; 
    644      safe_chr('$', buff, bp); 
    645      for (; c != w; c++) 
    646        safe_chr(*c, buff, bp); 
    647      safe_chr(*c, buff, bp); 
    648    
     529        switch (*w) { 
     530        case 'x': 
     531        case 'X': 
     532          include_suffix = 1; 
     533          w++; 
     534          break; 
     535        case 'z': 
     536        case 'Z': 
     537          even_if_0 = 0; 
     538          w++; 
     539          break; 
     540        case '$': 
     541          in_format_flags = 0; 
     542          if (pad) 
     543            safe_format(buff, bp, "%*c", width, '$'); 
     544          else 
     545            safe_chr('$', buff, bp); 
     546          break; 
     547        case 's': 
     548          in_format_flags = 0; 
     549          if (secs || even_if_0) { 
     550            if (pad) 
     551              safe_format(buff, bp, "%*lu", width, secs); 
     552            else 
     553              safe_uinteger(secs, buff, bp); 
     554            if (include_suffix) 
     555              safe_chr('s', buff, bp); 
     556          } else if (pad) 
     557            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     558          break; 
     559        case 'S': 
     560          in_format_flags = 0; 
     561          if (secs || even_if_0) { 
     562            if (pad) 
     563              safe_format(buff, bp, "%0*lu", width, secs); 
     564            else 
     565              safe_format(buff, bp, "%0lu", secs); 
     566            if (include_suffix) 
     567              safe_chr('s', buff, bp); 
     568          } else if (pad) 
     569            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     570          break; 
     571        case 'm': 
     572          in_format_flags = 0; 
     573          if (mins || even_if_0) { 
     574            if (pad) 
     575              safe_format(buff, bp, "%*lu", width, mins); 
     576            else 
     577              safe_uinteger(mins, buff, bp); 
     578            if (include_suffix) 
     579              safe_chr('m', buff, bp); 
     580          } else if (pad) 
     581            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     582          break; 
     583        case 'M': 
     584          in_format_flags = 0; 
     585          if (mins || even_if_0) { 
     586            if (pad) 
     587              safe_format(buff, bp, "%0*lu", width, mins); 
     588            else 
     589              safe_format(buff, bp, "%0lu", mins); 
     590            if (include_suffix) 
     591              safe_chr('m', buff, bp); 
     592          } else if (pad) 
     593            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     594          break; 
     595        case 'h': 
     596          in_format_flags = 0; 
     597          if (hours || even_if_0) { 
     598            if (pad) 
     599              safe_format(buff, bp, "%*lu", width, hours); 
     600            else 
     601              safe_uinteger(hours, buff, bp); 
     602            if (include_suffix) 
     603              safe_chr('h', buff, bp); 
     604          } else if (pad) 
     605            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     606          break; 
     607        case 'H': 
     608          in_format_flags = 0; 
     609          if (hours || even_if_0) { 
     610            if (pad) 
     611              safe_format(buff, bp, "%0*lu", width, hours); 
     612            else 
     613              safe_format(buff, bp, "%0lu", hours); 
     614            if (include_suffix) 
     615              safe_chr('h', buff, bp); 
     616          } else if (pad) 
     617            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     618          break; 
     619        case 'd': 
     620          in_format_flags = 0; 
     621          if (days || even_if_0) { 
     622            if (pad) 
     623              safe_format(buff, bp, "%*lu", width, days); 
     624            else 
     625              safe_uinteger(days, buff, bp); 
     626            if (include_suffix) 
     627              safe_chr('d', buff, bp); 
     628          } else if (pad) 
     629            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     630          break; 
     631        case 'D': 
     632          in_format_flags = 0; 
     633          if (days || even_if_0) { 
     634            if (pad) 
     635              safe_format(buff, bp, "%0*lu", width, days); 
     636            else 
     637              safe_format(buff, bp, "%0lu", days); 
     638            if (include_suffix) 
     639              safe_chr('d', buff, bp); 
     640          } else if (pad) 
     641            safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); 
     642          break; 
     643        default: 
     644          in_format_flags = 0; 
     645          safe_chr('$', buff, bp); 
     646          for (; c != w; c++) 
     647            safe_chr(*c, buff, bp); 
     648          safe_chr(*c, buff, bp); 
     649       
    649650      } 
    650651      c = w; 
     
    655656 
    656657#ifdef WIN32 
    657 #pragma warning( default : 4761)   /* NJG: enable warning re conversion */ 
     658#pragma warning( default : 4761)        /* NJG: enable warning re conversion */ 
    658659#endif