History log of /seL4-test-master/projects/musllibc/include/time.h
Revision Date Author Comments
# 7597fc25 20-Oct-2016 Rich Felker <dalias@aerifal.cx>

fix various header namespace issues under feature-test-macro control

reported and changes suggested by Daniel Sabogal.


# befa5866 03-Jul-2016 Rich Felker <dalias@aerifal.cx>

make brace placement in public header struct definitions consistent

placing the opening brace on the same line as the struct keyword/tag
is the style I prefer and seems to be the prevailing practice in more
recent additions.

these changes were generated by the command:

find include/ arch/*/bits -name '*.h' \
-exec sed -i '/^struct [^;{]*$/{N;s/\n/ /;}' {} +

and subsequently checked by hand to ensure that the regex did not pick
up any false positives.


# ab8f6a6e 09-Sep-2014 Rich Felker <dalias@aerifal.cx>

fix places where _BSD_SOURCE failed to yield a superset of _XOPEN_SOURCE

the vast majority of these failures seem to have been oversights at
the time _BSD_SOURCE was added, or perhaps shortly afterward. the one
which may have had some reason behind it is omission of setpgrp from
the _BSD_SOURCE feature profile, since the standard setpgrp interface
conflicts with a legacy (pre-POSIX) BSD interface by the same name.
however, such omission is not aligned with our general policy in this
area (for example, handling of similar _GNU_SOURCE cases) and should
not be preserved.


# 6eb19505 05-Sep-2014 Rich Felker <dalias@aerifal.cx>

add C11 timespec_get function, with associated time.h changes for C11

based on patch by Jens Gustedt for inclusion with C11 threads
implementation, but committed separately since it's independent of
threads.


# 1d23b3c9 07-Jan-2014 Rich Felker <dalias@aerifal.cx>

fix const-correctness of argument to stime

it's unclear what the historical signature for this function was, but
semantically, the argument should be a pointer to const, and this is
what glibc uses. correct programs should not be using this function
anyway, so it's unlikely to matter.


# c8a9c221 24-Nov-2013 Rich Felker <dalias@aerifal.cx>

restore type of NULL to void * except when used in C++ programs

unfortunately this eliminates the ability of the compiler to diagnose
some dangerous/incorrect usage, but POSIX requires (as an extension to
the C language, i.e. CX shaded) that NULL have type void *. plain C
allows it to be defined as any null pointer constant.

the definition 0L is preserved for C++ rather than reverting to plain
0 to avoid dangerous behavior in non-conforming programs which use
NULL as a variadic sentinel. (it's impossible to use (void *)0 for C++
since C++ lacks the proper implicit pointer conversions, and other
popular alternatives like the GCC __null extension seem non-conforming
to the standard's requirements.)


# 551da2c1 07-Oct-2013 Szabolcs Nagy <nsz@port70.net>

fix clockid macro names in time.h, reported by Paul Schutte


# d74e462a 24-Jul-2013 Szabolcs Nagy <nsz@port70.net>

add CLOCK_TAI (and CLOCK_SGI_CYCLE) clock ids to time.h
added in linux-v3.10 commit 1ff3c9677bff7e468e0c487d0ffefe4e901d33f4


# 4191d244 08-Jun-2013 Rich Felker <dalias@aerifal.cx>

add clock id macros for a number of new(ish) Linux-specific clocks

arguably CLOCK_MONOTONIC should be redirected to CLOCK_BOOTTIME with a
fallback for old kernels that don't support it, since Linux's
CLOCK_BOOTTIME semantics seem to match the spirit of the POSIX
requirements for CLOCK_MONOTONIC better than Linux's version of
CLOCK_MONOTONIC does. however, this is a change that would require
further discussion and research, so for now, I'm simply making them
all available.


# 01739902 08-Jun-2013 Rich Felker <dalias@aerifal.cx>

fix the type of CLOCKS_PER_SEC to match new clock_t type

originally it was right on 32-bit archs and wrong on 64-bit, but after
recent changes it was wrong everywhere. with this commit, it's now
right everywhere.


# f7244d20 07-Jun-2013 Rich Felker <dalias@aerifal.cx>

improve handling of nonstandard fields in struct tm

defining tm_gmtoff and tm_zone as macros was breaking some application
code that used these names for its own purposes.


# da144eec 01-Apr-2013 rofl0r <retnyg@gmx.net>

make tm_zone etc visible under _GNU_SOURCE


# 41d7c77d 18-Jan-2013 Rich Felker <dalias@aerifal.cx>

use a common definition of NULL as 0L for C and C++

the historical mess of having different definitions for C and C++
comes from the historical C definition as (void *)0 and the fact that
(void *)0 can't be used in C++ because it does not convert to other
pointer types implicitly. however, using plain 0 in C++ exposed bugs
in C++ programs that call variadic functions with NULL as an argument
and (wrongly; this is UB) expect it to arrive as a null pointer. on
64-bit machines, the high bits end up containing junk. glibc dodges
the issue by using a GCC extension __null to define NULL; this is
observably non-conforming because a conforming application could
observe the definition of NULL via stringizing and see that it is
neither an integer constant expression with value zero nor such an
expression cast to void.

switching to 0L eliminates the issue and provides compatibility with
broken applications, since on all musl targets, long and pointers have
the same size, representation, and argument-passing convention. we
could maintain separate C and C++ definitions of NULL (i.e. just use
0L on C++ and use (void *)0 on C) but after careful analysis, it seems
extremely difficult for a C program to even determine whether NULL has
integer or pointer type, much less depend in subtle, unintentional
ways, on whether it does. C89 seems to have no way to make the
distinction. on C99, the fact that (int)(void *)0 is not an integer
constant expression, along with subtle VLA/sizeof semantics, can be
used to make the distinction, but many compilers are non-conforming
and give the wrong result to this test anyway. on C11, _Generic can
trivially make the distinction, but it seems unlikely that code
targetting C11 would be so backwards in caring which definition of
NULL an implementation uses.

as such, the simplest path of using the same definition for NULL in
both C and C++ was chosen. the #undef directive was also removed so
that the compiler can catch and give a warning or error on
redefinition if buggy programs have defined their own versions of
NULL prior to inclusion of standard headers.


# 87781ac6 03-Jan-2013 rofl0r <retnyg@gmx.net>

time.h: add BSD aliases for otherwise internal struct tm members


# c1a9658b 07-Sep-2012 Rich Felker <dalias@aerifal.cx>

default features: make musl usable without feature test macros

the old behavior of exposing nothing except plain ISO C can be
obtained by defining __STRICT_ANSI__ or using a compiler option (such
as -std=c99) that predefines it. the new default featureset is POSIX
with XSI plus _BSD_SOURCE. any explicit feature test macros will
inhibit the default.

installation docs have also been updated to reflect this change.


# 400c5e5c 06-Sep-2012 Rich Felker <dalias@aerifal.cx>

use restrict everywhere it's required by c99 and/or posix 2008

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.


# de05a2ac 13-Jun-2012 Rich Felker <dalias@aerifal.cx>

revert one change in time.h; no evidence BSD_SOURCE should expose these..


# cf254c32 13-Jun-2012 Rich Felker <dalias@aerifal.cx>

fix feature test macros in time.h

stime is not _XOPEN_SOURCE, and some functions were missing with
_BSD_SOURCE..


# 23be72ae 13-Jun-2012 Rich Felker <dalias@aerifal.cx>

add timegm function (inverse of gmtime), nonstandard


# 419ae6d5 22-May-2012 Rich Felker <dalias@aerifal.cx>

support _BSD_SOURCE feature test macro

patch by Isaac Dunham. matched closely (maybe not exact) to glibc's
idea of what _BSD_SOURCE should make visible.


# ba6a9e77 17-Apr-2012 Rich Felker <dalias@aerifal.cx>

legacy junk compatibility grab-bag

- add the rest of the junk traditionally in sys/param.h
- add prototypes for some nonstandard functions
- add _GNU_SOURCE to their source files so the compiler can check proto


# 36bf5694 06-Feb-2012 Rich Felker <dalias@aerifal.cx>

more locale_t interfaces (string stuff) and header updates

this should be everything except for some functions where the non-_l
version isn't even implemented yet (mainly some non-ISO-C wcs*
functions).


# fd142e5e 25-Sep-2011 Rich Felker <dalias@aerifal.cx>

cleanup various minor issues reported by nsz

the changes to syscall_ret are mostly no-ops in the generated code,
just cleanup of type issues and removal of some implementation-defined
behavior. the one exception is the change in the comparison value,
which is fixed so that 0xf...f000 (which in principle could be a valid
return value for mmap, although probably never in reality) is not
treated as an error return.


# 13cd9695 13-Sep-2011 Rich Felker <dalias@aerifal.cx>

fix various errors in function signatures/prototypes found by nsz


# 4e302496 15-Feb-2011 Rich Felker <dalias@aerifal.cx>

fix another error from header cleanup, missing size_t in time.h


# 131b5be2 14-Feb-2011 Rich Felker <dalias@aerifal.cx>

more header cleanup and conformance fixes - locale.h, time.h


# 0b44a031 11-Feb-2011 Rich Felker <dalias@aerifal.cx>

initial check-in, version 0.5.0