You need to sign in or sign up before continuing.
  1. 03 7月, 2014 1 次提交
  2. 09 5月, 2014 1 次提交
  3. 27 11月, 2013 1 次提交
    • R
      fix off-by-one length failure in strftime/wcsftime and improve error behavior · f63b8c8c
      Rich Felker 提交于
      these functions were spuriously failing in the case where the buffer
      size was exactly the number of bytes/characters to be written,
      including null termination. since these functions do not have defined
      error conditions other than buffer size, a reasonable application may
      fail to check the return value when the format string and buffer size
      are known to be valid; such an application could then attempt to use a
      non-terminated buffer.
      
      in addition to fixing the bug, I have changed the error handling
      behavior so that these functions always null-terminate the output
      except in the case where the buffer size is zero, and so that they
      always write as many characters as possible before failing, rather
      than dropping whole fields that do not fit. this actually simplifies
      the logic somewhat anyway.
      f63b8c8c
  4. 25 8月, 2013 3 次提交
    • R
      add the %s (seconds since the epoch) format to strftime · 242a4bb4
      Rich Felker 提交于
      this is a nonstandard extension but will be required in the next
      version of POSIX, and it's widely used/useful in shell scripts
      utilizing the date utility.
      242a4bb4
    • R
      fix strftime regression in %e format · 2828a130
      Rich Felker 提交于
      %e pads with spaces instead of zeros.
      2828a130
    • R
      fix strftime handling of time zone data · d78be392
      Rich Felker 提交于
      this may need further revision in the future, since POSIX is rather
      unclear on the requirements, and is designed around the assumption of
      POSIX TZ specifiers which are not sufficiently powerful to represent
      real-world timezones (this is why zoneinfo support was added).
      
      the basic issue is that strftime gets the string and numeric offset
      for the timezone from the extra fields in struct tm, which are
      initialized when calling localtime/gmtime/etc. however, a conforming
      application might have created its own struct tm without initializing
      these fields, in which case using __tm_zone (a pointer) could crash.
      other zoneinfo-based implementations simply check for a null pointer,
      but otherwise can still crash of the field contains junk.
      
      simply ignoring __tm_zone and using tzname[] would "work" but would
      give incorrect results in time zones with more complex rules. I feel
      like this would lower the quality of implementation.
      
      instead, simply validate __tm_zone: unless it points to one of the
      zone name strings managed by the timezone system, assume it's invalid.
      
      this commit also fixes several other minor bugs with formatting:
      tm_isdst being negative is required to suppress printing of the zone
      formats, and %z was using the wrong format specifiers since the type
      of val was changed, resulting in bogus output.
      d78be392
  5. 23 8月, 2013 6 次提交
  6. 28 7月, 2013 2 次提交
    • R
      fix semantically incorrect use of LC_GLOBAL_LOCALE · 1ae4bc42
      Rich Felker 提交于
      LC_GLOBAL_LOCALE refers to the global locale, controlled by setlocale,
      not the thread-local locale in effect which these functions should be
      using. neither LC_GLOBAL_LOCALE nor 0 has an argument to the *_l
      functions has behavior defined by the standard, but 0 is a more
      logical choice for requesting the callee to lookup the current locale.
      in the future I may move the current locale lookup the the caller (the
      non-_l-suffixed wrapper).
      
      at this point, all of the locale logic is dummied out, so no harm was
      done, but it should at least avoid misleading usage.
      1ae4bc42
    • R
      reorder strftime to eliminate the incorrect indention level · d53b1f82
      Rich Felker 提交于
      this change is in preparation for possibly adding support for the
      field width and padding specifiers added in POSIX 2008.
      d53b1f82
  7. 25 7月, 2013 2 次提交
  8. 17 7月, 2013 1 次提交
    • R
      the big time handling overhaul · 1cc81f5c
      Rich Felker 提交于
      this commit has two major user-visible parts: zoneinfo-format time
      zones are now supported, and overflow handling is intended to be
      complete in the sense that all functions return a correct result if
      and only if the result fits in the destination type, and otherwise
      return an error. also, some noticable bugs in the way DST detection
      and normalization worked have been fixed, and performance may be
      better than before, but it has not been tested.
      1cc81f5c
  9. 29 6月, 2013 3 次提交
  10. 07 9月, 2012 1 次提交
    • R
      use restrict everywhere it's required by c99 and/or posix 2008 · 400c5e5c
      Rich Felker 提交于
      to deal with the fact that the public headers may be used with pre-c99
      compilers, __restrict is used in place of restrict, and defined
      appropriately for any supported compiler. we also avoid the form
      [restrict] since older versions of gcc rejected it due to a bug in the
      original c99 standard, and instead use the form *restrict.
      400c5e5c
  11. 12 2月, 2011 1 次提交