1. 13 9月, 2018 2 次提交
    • R
      reduce spurious inclusion of libc.h · 5ce37379
      Rich Felker 提交于
      libc.h was intended to be a header for access to global libc state and
      related interfaces, but ended up included all over the place because
      it was the way to get the weak_alias macro. most of the inclusions
      removed here are places where weak_alias was needed. a few were
      recently introduced for hidden. some go all the way back to when
      libc.h defined CANCELPT_BEGIN and _END, and all (wrongly implemented)
      cancellation points had to include it.
      
      remaining spurious users are mostly callers of the LOCK/UNLOCK macros
      and files that use the LFS64 macro to define the awful *64 aliases.
      
      in a few places, new inclusion of libc.h is added because several
      internal headers no longer implicitly include libc.h.
      
      declarations for __lockfile and __unlockfile are moved from libc.h to
      stdio_impl.h so that the latter does not need libc.h. putting them in
      libc.h made no sense at all, since the macros in stdio_impl.h are
      needed to use them correctly anyway.
      5ce37379
    • R
      move __strftime_fmt_1 declaration to time_impl.h · 01294da7
      Rich Felker 提交于
      this is a helper function from strftime that's also used by wcsftime.
      01294da7
  2. 08 4月, 2018 1 次提交
    • S
      implement wcsftime padding specifier extensions · ea81529f
      Samuel Holland 提交于
      Commit 8a6bd730 added support for
      padding specifier extensions to strftime, but did not modify wcsftime.
      In the process, it added a parameter to __strftime_fmt_1 in strftime.c,
      but failed to update the prototype in wcsftime.c. This was found by
      compiling musl with LTO:
      
          src/time/wcsftime.c:7:13: warning: type of '__strftime_fmt_1' does \
              not match original declaration [-Wlto-type-mismatch]
      
      Fix the prototype of __strftime_fmt_1 in wcsftime.c, and generate the
      'pad' argument the same way as it is done in strftime.
      ea81529f
  3. 03 7月, 2014 1 次提交
  4. 12 12月, 2013 1 次提交
  5. 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
  6. 23 8月, 2013 1 次提交
    • R
      add strftime and wcsftime field widths · fc48ceee
      Rich Felker 提交于
      at present, since POSIX requires %F to behave as %+4Y-%m-%d and ISO C
      requires %F to behave as %Y-%m-%d, the default behavior for %Y has
      been changed to match %+4Y. this seems to be the only way to conform
      to the requirements of both standards, and it does not affect years
      prior to the year 10000. depending on the outcome of interpretations
      from the standards bodies, this may be adjusted at some point.
      fc48ceee
  7. 03 8月, 2013 1 次提交
  8. 28 7月, 2013 1 次提交
    • 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
  9. 25 7月, 2013 1 次提交
    • R
      add __wcsftime_l symbol · cccf64e2
      Rich Felker 提交于
      unlike the strftime commit, this one is purely an ABI compatibility
      issue. the previous version of the code would have worked just as well
      with LC_TIME once LC_TIME support is added.
      cccf64e2
  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. 29 2月, 2012 1 次提交