URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/rtos/ecos-2.0/packages/language/c/libc/time
- from Rev 27 to Rev 174
- ↔ Reverse comparison
Rev 27 → Rev 174
/v2_0/ChangeLog.libc
0,0 → 1,2736
This ChangeLog file is now obsolete. This is the original ChangeLog from when |
libc was one large package, before being separated. It is included for |
historical reasons. |
|
2000-04-05 Jesper Skov <jskov@redhat.com> |
|
* src/time/settime.cxx: |
* src/time/time.cxx: |
Wallclock moved to io/. |
|
2000-03-28 John Dallaway <jld@cygnus.co.uk> |
|
* cdl/string.cdl, |
cdl/stdlib.cdl, |
cdl/stdio.cdl, |
cdl/libc.cdl: |
|
Adjust documentation URLs. |
|
2000-03-27 Jesper Skov <jskov@redhat.com> |
|
* src/clibincl/stream.inl (check_this): Use cyb_bool instead of bool. |
|
2000-03-06 Jesper Skov <jskov@redhat.com> |
|
* tests/time/strftime.c (test): Adjust test to match below change. |
|
2000-03-02 Jonathan Larmour <jlarmour@redhat.co.uk> |
|
* src/time/strftime.cxx (do_format): Make sure %m counts from |
1..12 rather than 0..11. Fix for case 103300 |
|
2000-02-29 Jonathan Larmour <jlarmour@redhat.co.uk> |
|
* src/stdio/output/vfnprintf.cxx: Correctly use 'n' parameter to |
restrict length. Credit due to Andrew Lunn here as well. |
Resolves 103057-CR-1 |
|
* tests/stdio/sprintf2.c (test): |
Add snprintf tests to verify the correct behaviour of restricting |
output length |
|
2000-02-10 Jesper Skov <jskov@redhat.com> |
|
* tests/signal/signal2.c (main): |
Also reclaim DATA_TLB_MISS vector if available. |
|
2000-01-31 Simon FitzMaurice <sdf@cygnus.co.uk> |
* cdl/*.cdl: |
|
Adjust help URLs in line with new doc layout. |
|
2000-01-28 Simon FitzMaurice <sdf@cygnus.co.uk> |
* cdl/*.cdl: |
|
Adjust help URLs in line with new doc layout. |
|
2000-01-19 Hugo Tyson <hmt@cygnus.co.uk> |
|
* cdl/*.cdl: Add descriptions to a number of options &c which were |
lacking same, also tidied up other typos as noticed en passant. |
|
1999-11-11 Bart Veer <bartv@cygnus.co.uk> |
|
* cdl/string.cdl: |
Switch to a single boolean configuration option for code size vs. |
speed optimization. |
|
1999-11-03 John Dallaway <jld@cygnus.co.uk> |
|
* cdl/libc.cdl: Define tests. |
|
1999-10-19 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/output/vfnprintf.cxx: We can now remove Berkeley |
advertising clause |
* src/stdlib/div.cxx: ditto |
* src/stdlib/ldiv.cxx: ditto |
* src/stdlib/strtol.cxx: ditto |
* src/stdlib/strtoul.cxx: ditto |
* src/string/strtok.cxx: ditto |
|
1999-10-19 John Dallaway <jld@cygnus.co.uk> |
|
* cdl/libc.cdl: |
|
Define CDL options for package-specific CFLAGS. |
|
1999-10-08 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h (CYGNUM_LIBC_MAIN_THREAD_PRIORITY): Change |
default to 10 to keep test farm happy |
* cdl/startup.cdl: Likewise |
|
1999-10-07 John Dallaway <jld@cygnus.co.uk> |
|
* cdl/stdlib.cdl, cdl/string.cdl: |
|
Specify radio buttons using CDL interfaces. |
|
1999-10-06 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* cdl/stdio.cdl: Change default to /dev/ttydiag as per 1999-10-01 |
change below |
* cdl/startup.cdl: Add new form CDL for the startup changes as |
per 1999-10-05 |
|
1999-10-05 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/libc.h: Add CYGSEM_LIBC_MAIN_STACK_FROM_SYSTEM to allow |
the user to supply their own stack. |
Rename CYGNUM_LIBC_MAIN_STACK_SIZE to |
CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE and reparent under |
CYGSEM_LIBC_MAIN_STACK_FROM_SYSTEM |
Add CYGNUM_LIBC_MAIN_THREAD_PRIORITY to provide main() thread |
priority |
|
* src/support/mainthread.cxx: Add support for user-supplied stack |
Allow user to specify thread priority |
|
These changes fix CR 101069 |
|
1999-10-01 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h (CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE): Change |
default to /dev/ttydiag to get correct console-like behaviour |
Also don't preclude use if haldiag package isn't included |
(case 102065) |
|
1999-09-15 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/signal/signal2.c (cause_fpe): Try both float and integer |
division by zero. |
|
1999-09-10 Jesper Skov <jskov@cygnus.co.uk> |
|
* src/stdlib/malloc.cxx (cyg_libc_get_malloc_pool): Added for |
stress_threads test. |
|
1999-09-07 Jesper Skov <jskov@cygnus.co.uk> |
PRs 20243, 20433 |
* tests/signal/signal2.c: Disabled test3 on ARM. |
|
1999-09-02 Hugo Tyson <hmt@cygnus.co.uk> |
|
* include/assert.h: Make the sense of NDEBUG correct; it is "set" |
when NOT debugging. Fix for CR 101983-CR-1 |
See Stroustrup, "The C++ Programming Language." |
|
1999-08-18 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/fopen.cxx (_fopen): Set buffer size 0 when not |
buffering |
Fix for case 101868 |
|
1999-08-17 John Dallaway <jld@cygnus.co.uk> |
|
* cdl/stdlib.cdl, cdl/string.cdl: |
|
Implement radio buttons using "FIXME radio" hack in |
description field for now. |
|
1999-08-12 John Dallaway <jld@cygnus.co.uk> |
|
* cdl/stdlib.cdl: |
Take advantage of MACRONAME_ENUMVAL macros output by CDL. |
|
1999-08-06 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sprintf2.c (test): Don't rely on 2.345 being exactly |
representable in binary as a difference of 1 ulp will make it round |
the wrong way. |
|
1999-07-16 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/input/fgetc.cxx: |
Include outline versions of getc() (actually just a symbol alias for |
fgetc() ) and getchar() |
Some minor clean-ups |
Add tracing/assertions |
|
* src/stdio/input/fputc.cxx: |
Likewise (except applied to putc() and putchar()) |
|
* src/stdio/common/stdioinlines.cxx (_puts): |
Call fputc() not _fputc() |
|
* src/clibincl/stdiosupp.hxx: |
Remove now obsolete prototypes for _fgetc() and _fputc() |
|
* include/stdio.h: |
Don't bother with getc()/putc() macros any more, just call |
them as functions |
Include protos for getc(), putc(), getchar() and putchar() functions |
|
1999-06-21 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/signal/signal2.c: Disabled test 3 for SH EDK7708. |
|
1999-06-11 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/stdio.h: Make FILEs array types so they won't be |
given $gp relocations on MIPS targets |
|
1999-05-27 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/time/ctime.c: Fixed compiler warning. |
|
1999-05-25 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/signal/signal2.c (main): |
Update CYGPKG_HAL_TX39 -> CYGPKG_HAL_MIPS_TX39 due to recent MIPS |
HAL changes |
Fix for PR 20116 |
|
1999-04-30 Jesper Skov <jskov@lassi.cygnus.co.uk> |
PR 19945/19946 workaround |
* tests/signal/signal2.c: Disabled test 3 for PowerPC sim. |
|
1999-04-19 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/time.inl: |
Ensure all calls to cyg_libc_time_year_is_leap() are with the full |
year, and not the direct contents of a struct tm, which are (year-1900) |
|
1999-04-19 Jesper Skov <jskov@cygnus.co.uk> |
PR 19308, 19410, 19528 |
* tests/time/clock.c (test): Also disable data cache which may |
affect timing when tracing/assertions are enabled. |
|
1999-04-15 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/stdiosupp.hxx: |
Add prototype for new cyg_libc_stdio_flush_all_but() function |
|
* src/clibincl/stream.hxx: |
Don't include stdiosupp.hxx any more to prevent circular dependency, |
therefore manually provide _setvbuf prototype |
Make sure pkgconf/kernel.h is included before mutex.hxx |
|
* src/clibincl/stream.inl (Cyg_StdioStream::set_error()): |
Add missing unlock_me() |
|
* src/stdio/common/fflush.cxx: |
Separate most of code for fflush(NULL) into separate |
cyg_libc_stdio_flush_all_but() function, which has the extra |
capability of omitting one stream |
|
* src/stdio/common/stderr.cxx: |
* src/stdio/common/stdin.cxx: |
* src/stdio/common/stdout.cxx: |
* src/stdio/common/vsnprintf.cxx: |
* src/stdio/common/vsscanf.cxx: |
Add missing clibincl/stdiosupp.hxx include |
|
* src/stdio/common/stream.cxx (Cyg_StdioStream::read()): |
When reading, ensure we flush all output streams |
|
* src/stdio/common/stream.cxx (Cyg_StdioStream::flush_output_unlocked): |
Flush the device as well |
|
1999-04-15 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/streambuf.cxx (set_buffer): |
* src/stdio/common/stdioinlines.cxx (_setbuf): |
* src/clibincl/streambuf.inl: |
* src/clibincl/streambuf.hxx: |
* src/clibincl/stream.hxx (class Cyg_StdioStream): |
* include/pkgconf/libc.h: |
* include/stdio.inl (setbuf): |
Fix dumb typo: BUFSIZE -> BUFSIZ |
This fixes PR19837 |
|
1999-04-15 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/stdioinlines.cxx (_setbuf): |
* include/stdio.inl (setbuf): |
Use _IONBF when buf==NULL, and _IOLBF otherwise. |
Fix for PR 19836 |
|
1999-04-15 John Dallaway <jld@cygnus.co.uk> |
|
* include/pkgconf/libc.h: Tidy display string capitalization. |
|
1999-04-12 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Clarify CDL description of CYGNUM_LIBC_MALLOC_MEMPOOL_SIZE |
|
* tests/signal/signal2.c: Try harder to generate an exception by |
accessing a misaligned address |
Don't handle SIGTRAP any more |
Part of fix for PRs 19731/19607 |
|
1999-04-07 Jesper Skov <jskov@cygnus.co.uk> |
PR 19667 |
* src/support/mainthread.cxx: |
Changed to use the new Cyg_Thread constructor. |
|
1999-04-07 Hugo Tyson <hmt@cygnus.co.uk> |
|
* tests/signal/signal2.c (main): Use new macro |
HAL_VSR_SET_TO_ECOS_HANDLER if defined, to wrest control from |
CygMon, for example, by reinstalling eCos' default VSRs for |
exceptions that we are provoking. |
|
1999-03-29 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/signal/siginit.cxx: Include stdlib.h for exit() |
Fix for PR 19720 |
|
1999-03-29 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/time/clock.c (test): Disable instruction cache |
Hopefully fixes PR 19308 |
|
1999-03-29 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/signal/signal2.c: Disabled test 3 for PPC as it cannot |
trap division by zero. |
|
1999-03-26 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/main.cxx (main): Invoke cyg_user_start() if no kernel |
Only sensible thing to do in our default main in a non-kernel config |
|
1999-03-25 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/time/time.c: |
Increase MAX_TIMEOUT since the sparclite gets very close to overrunning |
it even when working. |
Should return -1 iff CYGSEM_LIBC_TIME_TIME_WORKING isn't defined |
Cosmetic changes |
|
1999-03-25 Hugo Tyson <hmt@cygnus.co.uk> |
|
* tests/time/time.c (test): Take into account setting of |
CYGSEM_LIBC_TIME_SETTIME_WORKING ie. does cyg_libc_time_settime() |
work? If not, check that it returns an error. |
This was exposed by the random combo in PR#19479. |
|
1999-03-23 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Rename CYGSEM_LIBC_RAND_SIMPLEST and CYGSEM_LIBC_RAND_KNUTH1 to |
CYGIMP_... |
|
Add another rand implementation CYGIMP_LIBC_RAND_SIMPLE1 which is |
the default |
|
Part of fix for PR 19562 |
|
* include/sys/cstartup.h: |
Tidy and remove unnecessary dependencies |
|
* src/stdlib/rand.cxx: |
Rename algorithms from CYGSEM_... to CYGIMP_... |
Add new "simple1" algorithm |
|
* tests/ctype/ctype.c: |
Tidy |
|
* tests/stdlib/rand3.c: |
Fix so that 0..RAND_MAX is split evenly over buckets, which it wasn't |
before |
Deal with case of RAND_MAX not being divisible by NUM_BUCKETS |
exactly |
Increase TEST_LENGTH to 200000 to provide more representative sample |
Add CYG_TEST_INFO output to help ensure it doesn't time out |
Tidy |
|
* tests/stdlib/rand4.c: |
Only fail if more than _two_ thirds (rather than one third) match. |
This is because half would match for a perfectly random distribution |
This is the rest of the fix for PR 19562 |
Cosmetic changes |
|
1999-03-22 Hugo Tyson <hmt@cygnus.co.uk> |
|
* src/support/mainthread.cxx (CYGNUM_LIBC_MAIN_STACK_SIZE): |
Use CYGNUM_HAL_STACK_SIZE_TYPICAL for the stack size instead of |
CYGNUM_HAL_MINIMUM_STACK_SIZE. |
|
1999-03-22 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/PKGconf.mak: Add -Wno-format when building strftime otherwise |
it generates warnings for things that we do want to test (null |
string, and %y format) |
|
1999-03-19 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h (CYGNUM_LIBC_TIME_DST_DEFAULT_STATE): |
Put brackets back round negative number since sdf says the config |
tool is fixed now (PR 19537) |
|
Add new CYGSEM_LIBC_RAND_SIMPLEST and CYGSEM_LIBC_RAND_KNUTH1 |
options for different rand() algorithms in a so far failed attempt |
to fix PR 19562 |
|
* src/stdlib/rand.cxx: |
Add new optional algorithm from Knuth vol.2 |
|
* tests/stdlib/rand4.c: |
Some tidies |
Don't run test when using simplest algorithm |
|
* tests/signal/signal2.c (main): |
Don't try to make an FPE on tx39 - its possible to detect but requires |
too much HAL work to be sensible |
|
1999-03-18 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/signal/siginit.cxx (cyg_libc_signals_hwexcept_handler): |
Use HAL_ENABLE_INTERRUPTS() rather than kernel to enable interrupts |
|
1999-03-18 Mark Galassi <rosalia@cygnus.com> |
|
* tests/PKGconf.mak (TESTS): added rand4 compilation. |
|
* tests/stdlib/rand4.c: added this test for periodicity in the |
least significant bit of rand(). |
|
1999-03-18 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: Remove CYGFUN_LIBC_TIME_POSIX dependency |
on CYGPKG_LIBC_STDIO |
|
* src/stdlib/itoa.cxx: |
New file to convert integers to ascii |
|
* include/stdlib.h: |
Add proto for new cyg_libc_itoa() function |
|
* include/time.inl: |
Rework __asctime_r() to use memcpy() and cyg_libc_itoa() rather than |
sprintf() |
|
* src/PKGconf.mak: |
Build stdlib/itoa.cxx |
|
The above changes fix PR 19448 |
|
1999-03-17 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/time.h: Add #define of __time_t_defined to placate newlib |
if it is used by accident. This is just a temporary workaround though. |
|
1999-03-16 Gary Thomas <gthomas@cygnus.co.uk> |
|
* src/PKGconf.mak: Add compile option to step around ARM compiler bug. |
|
1999-03-16 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h (CYGNUM_LIBC_TIME_DST_DEFAULT_STATE): |
Don't use parentheses for now |
|
* src/stdio/common/stream.cxx (refill_read_buffer): |
Silence bogus compiler warning |
|
1999-03-16 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/signal/signal2.c (main): Enable SIGSEGV test for |
i386/Linux. |
|
|
1999-03-15 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/signal/siginit.cxx (cyg_libc_signals_hwexcept_handler): |
Only enable interrupts if they were disabled |
|
* include/sys/timeutil.h: |
* src/time/timeutil.cxx: |
Add FIX ME line as a reminder that the workaround there can go away |
in future |
|
* include/pkgconf/libc.h: |
Add proper define for CYGSEM_LIBC_EXIT_CALLS_FFLUSH |
Put brackets round negative CYGNUM_LIBC_TIME_DST_DEFAULT_STATE define |
Fix run time typo |
|
* include/time.inl (__localtime_r): |
Include sys/timeutil.h before this to get |
cyg_libc_time_normalize_structtm() |
|
1999-03-12 Gary Thomas <gthomas@cygnus.co.uk> |
|
* include/sys/timeutil.h: |
* src/time/timeutil.cxx: Remove 'const' from char arrays since |
this fails [silently] on ARM when -fwritable-strings (PR19440) |
|
1999-03-12 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/signal/signal2.c (main): Compiler warnings fix was |
slightly broken. |
|
1999-03-12 Jesper Skov <jskov@cygnus.co.uk> |
PR 19473 |
* tests/signal/signal2.c (main): |
Disabling SIGTRAP handling on i386/Linux is not a good idea. |
1999-03-11 Jesper Skov <jskov@cygnus.co.uk> |
PR 19473 |
* tests/signal/signal2.c: |
Added compiler warnings fix. |
Added N/A handling for i386/Linux. |
|
1999-03-10 Gary Thomas <gthomas@cygnus.co.uk> |
|
* include/pkgconf/libc.h: Force "haldiag" device to be present. |
'asctime' and friends need 'stdio' as well. |
|
* include/time.inl: Fix syntax error on difftime() declaration. |
|
1999-03-08 Gary Thomas <gthomas@cygnus.co.uk> |
|
* src/clibincl/stream.hxx: <cyg/infra/cyg_ass.h> needed for this file. |
|
* src/stdio/common/vsscanf.cxx (str_read): Fix problem with string |
pointer [created by merge with new I/O package]. |
|
1999-03-05 John Dallaway <jld@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Add legal values for CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET |
and CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET. |
|
1999-03-05 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/time.inl (cyg_libc_time_year_is_leap): |
Fix bug with modulo year 400 |
Fix typo in asctime_r macro |
Fix gmtime_r, and mktime as a result of testing |
|
* tests/time/asctime.c, tests/time/ctime.c, tests/time/gmtime.c, |
tests/time/gmtime.c, tests/time/localtime.c, tests/time/mktime.c, |
tests/time/strftime.c, tests/time/time.c: |
New tests |
|
* tests/PKGconf.mak: |
Build above new tests |
|
* include/pkgconf/libc.h: |
Add reminder FIX ME about extra config option |
|
* src/time/strftime.cxx: |
Fix %w and %Y parameters as a result of testing |
|
* src/time/timeutil.cxx: |
Fix cyg_libc_time_normalize_structtm() as a result of testing |
of mktime() |
|
* tests/time/clock.c: |
Reformat, remove obsolete bits and tidy |
|
* include/time.h: |
Add Cyg_libc_time_dst type and new functions |
cyg_libc_time_setzoneoffsets(), cyg_libc_time_setdst(), |
cyg_libc_time_getzoneoffsets(), cyg_libc_time_settime() |
|
* include/time.inl: |
Implement the above functions. This allows us to adjust for timezone |
diffences and set the time. |
Change localtime() to adjust for STD/DST |
Change mktime() to adjust for STD/DST |
|
* include/libc.h: |
Add new config options CYGSEM_LIBC_TIME_SETTIME_WORKING |
and component CYGPKG_LIBC_TIME_ZONES containing options |
CYGNUM_LIBC_TIME_DST_DEFAULT_STATE, |
CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET, |
CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET |
|
* src/strftime.cxx: |
Adjust handling of %Z to _not_ deal with STD/DST |
|
* src/time/settime.cxx: |
New file to implement cyg_libc_time_settime() |
|
* src/PKGconf.mak: |
Build settime.cxx |
|
* src/time/timeutil.cxx: |
Supply outline versions of cyg_libc_time_setzoneoffsets(), |
cyg_libc_time_setdst(), and cyg_libc_time_getzoneoffsets() |
Add variables for STD/DST state |
Some minor comment changes |
|
* include/errno.h: |
Use CYGBLD_ATTRIB_CONST instead of __attribute__((const)) directly |
|
* include/signal.h: |
Change format of function comment headers |
|
* include/signal.inl: |
Restrict errno.h inclusion to when its actually used |
Fix a spelling typo |
|
* include/stdlib.h: |
Add CYGBLD_ATTRIB_CONST to abs, div, labs, ldiv |
|
* include/stdlib.inl: |
Reformat and tidy |
Include new versions of div and ldiv which are more portable and |
are cleanly rewritten so aren't covered by the BSD licence, which |
is now removed |
|
* src/stdlib/div.cxx, src/stdlib/ldiv.cxx: |
Non-inline, non-BSD and portable versions of the new versions of div |
and ldiv from stdlib.inl |
|
* include/time.h: |
Much reformatting, tidying and improving comments |
Change CLOCKS_PER_SEC from 1000 to 1000000 |
Add new functions asctime_r, ctime_r, gmtime_r, localtime_r, clock, |
difftime, mktime, time, asctime, ctime, gmtime, localtime, strftime |
Include new time.inl file |
|
* include/pkgconf/libc.h: |
Add new options CYGSEM_LIBC_TIME_CLOCK_WORKING, |
CYGSEM_LIBC_TIME_TIME_WORKING, CYGFUN_LIBC_TIME_POSIX, |
CYGNUM_LIBC_TIME_CLOCK_TRACE_LEVEL, CYGIMP_LIBC_TIME_ASCTIME_INLINE, |
CYGIMP_LIBC_TIME_CTIME_INLINE, CYGIMP_LIBC_TIME_DIFFTIME_INLINE, |
CYGIMP_LIBC_TIME_GMTIME_INLINE, CYGIMP_LIBC_TIME_LOCALTIME_INLINE, |
CYGIMP_LIBC_TIME_MKTIME_INLINE, CYGIMP_LIBC_TIME_ASCTIME_R_INLINE, |
CYGIMP_LIBC_TIME_CTIME_R_INLINE, CYGIMP_LIBC_TIME_GMTIME_R_INLINE, |
and CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE |
|
* time/asctime.cxx, time/asctime_r.cxx, time/clock.cxx, time/ctime.cxx, |
time/ctime_r.cxx, time/difftime.cxx, time/gmtime.cxx, |
time/gmtime_r.cxx, time/localtime.cxx, time/localtime_r.cxx, |
time/mktime.cxx, time/strftime.cxx, time/time.cxx, time/timeutil.cxx, |
include/time.inl: |
New files to implement the new time functions. Many of them simply |
provide the outline definitions, but the real body of the function |
comes from time.inl |
|
* src/PKGconf.mak: |
Build new .cxx files |
|
* src/clibincl/stdlibsupp.hxx: |
Remove _div and _ldiv prototypes since they're no longer needed |
|
* src/clibincl/timesupp.hxx: |
Delete as its now obsolete |
|
* src/time/clock.cxx: |
Use new CYGSEM_LIBC_TIME_CLOCK_WORKING option to control whether it |
just returns (clock_t)-1 or not. |
Much reformatting and tidying |
Change real imlpementation from _clock to __clock |
Use CYGBLD_ATTRIB_WEAK_ALIAS now |
|
* tests/stdlib/div.c, tests/stdlib/ldiv.c: |
Add some extra tests for handling of negative numbers |
Reformat and tidy a bit, including removing the test for CYGPKG_LIBC |
since its now always defined if the test is to be compiled |
|
* tests/time/clock.c: |
Remove duplication CYG_TEST_INFO line |
Check if unimplemented using "(clock_t)-1" and not just "-1" |
|
1999-03-04 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/system.cxx: |
Make sure system() is a weak alias for __system() |
|
* include/pkgconf/libc.h: Rework CDL description for |
CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE and change its default to |
"/dev/haldiag" |
|
* src/stdio/common/stream.cxx: |
Check that dev is valid when passed to stream constructor |
|
* src/stdio/common/stdiosupp.cxx: |
Tidy |
|
* src/support/mainthread.cxx: Make this depend on |
CYGSEM_LIBC_STARTUP_MAIN_THREAD rather than just CYGPKG_KERNEL |
|
1999-03-04 Gary Thomas <gthomas@cygnus.co.uk> |
|
Merged in changes from 'ecos-new_devs-19990216-branch' |
|
(1999-02-24 Jonathan Larmour <jlarmour@cygnus.co.uk>) |
|
* src/stdio/common/stream.cxx: |
Add "fix me" comments and remove a couple of commented out lines |
|
* src/stdio/common/vsnprintf.cxx: |
* src/stdio/common/vsscanf.cxx: |
Revert to using pointer to string for private data, not just string. |
This preserves the state across multiple calls |
|
(1999-02-24 Gary Thomas <gthomas@cygnus.co.uk>) |
|
* src/stdio/common/vsscanf.cxx: |
* src/stdio/common/vsnprintf.cxx: |
* src/stdio/common/stream.cxx: |
* src/stdio/common/stdiosupp.cxx: |
* src/stdio/common/fopen.cxx: |
* src/clibincl/stream.inl: |
* src/clibincl/stream.hxx: |
* src/clibincl/stdiosupp.hxx: |
* include/pkgconf/libc.h: Changes for new I/O system. |
|
1999-03-03 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/atexit.c: Forgot to config atexit test for |
CYGFUN_LIBC_ATEXIT option |
|
* include/pkgconf/libc.h: |
Require CYGVAR_KERNEL_THREADS_DATA for CYGSEM_LIBC_PER_THREAD_STRTOK |
This fixes PR 19362 |
Require CYGPKG_KERNEL for thread safe streams |
Also don't need "requires CYGPKG_KERNEL" for per-thread rand and errno |
if we already require a finer granularity kernel option |
|
1999-02-25 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: Fix CYGNUM_LIBC_MAIN_STACK_SIZE by changing |
CYGPKG_LIBC_STARTUP_MAIN_THREAD -> CYGSEM_LIBC_STARTUP_MAIN_THREAD |
Fix for PR 19304 |
|
1999-02-23 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/system.cxx: Add to implement trivial system() call |
* include/stdlib.h: Add system() prototype |
* src/PKGconf.mak: Build system.cxx |
|
* tests/ctype/ctype.c, tests/i18n/setlocale.c, tests/setjmp/setjmp.c, |
tests/signal/signal1.c, tests/signal/signal2.c, |
tests/stdio/sprintf1.c, tests/stdio/sprintf2.c, tests/stdio/sscanf.c, |
tests/stdio/stdiooutput.c, tests/stdlib/atexit.c, |
tests/stdlib/atoi.c, tests/stdlib/atol.c, tests/stdlib/bsearch.c, |
tests/stdlib/div.c, tests/stdlib/getenv.c, tests/stdlib/labs.c, |
tests/stdlib/ldiv.c, tests/stdlib/malloc1.c, tests/stdlib/malloc2.c, |
tests/stdlib/malloc3.c, tests/stdlib/qsort.c, tests/stdlib/rand1.c, |
tests/stdlib/rand2.c, tests/stdlib/rand3.c, tests/stdlib/realloc.c, |
tests/stdlib/srand.c, tests/stdlib/strtol.c, tests/stdlib/strtoul.c, |
tests/string/memchr.c, tests/string/memcmp1.c, |
tests/string/memcmp2.c, tests/string/memcpy1.c, |
tests/string/memcpy2.c, tests/string/memmove1.c, |
tests/string/memmove2.c, tests/string/memset.c, |
tests/string/strcat1.c, tests/string/strcat2.c, |
tests/string/strchr.c, tests/string/strcmp1.c, |
tests/string/strcmp2.c, tests/string/strcoll1.c, |
tests/string/strcpy1.c, tests/string/strcpy2.c, |
tests/string/strcspn.c, tests/string/strlen.c, |
tests/string/strncat1.c, tests/string/strncat2.c, |
tests/string/strncpy1.c, tests/string/strncpy2.c, |
tests/string/strpbrk.c, tests/string/strrchr.c, |
tests/string/strspn.c, tests/string/strstr.c, tests/string/strtok.c, |
tests/string/strxfrm1.c, tests/string/strxfrm2.c, tests/time/clock.c: |
Use CYG_TEST_NA() macro for non-applicable test configurations |
|
1999-02-20 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/signal.h: |
* include/signal.inl: |
* src/signal/raise.cxx: |
* src/signal/siginit.cxx: |
* src/signal/signal.cxx: |
* tests/signal/signal1.c |
* tests/signal/signal2.c: |
New files to implement ISO standard signals |
|
* src/PKGconf.mak (TESTS): |
* tests/PKGconf.mak (TESTS): |
Update to build new files above |
|
* include/stdlib.h: |
* src/clibincl/stdlibsupp.hxx: |
Comment and QA changes (including giving better names to some types) |
|
* include/libc.h: |
Add new configuration options for signals |
Add new CYGSEM_LIBC_STARTUP_MAIN_THREAD option |
Add a note to CYGNUM_LIBC_MAIN_STACK_SIZE option that it may be |
overriden by HAL |
Add new CYGFUN_LIBC_ATEXIT option and move ...ATEXIT_HANDLERS under |
it |
Add new CYGSEM_LIBC_EXIT_CALLS_FFLUSH option |
Require CYGSEM_LIBC_STARTUP_MAIN_THREAD for "Invoke default static |
constructors" option |
|
* src/stdlib/atexit.cxx: |
Support above CYGFUN_LIBC_ATEXIT and QA changes |
|
* src/stdlib/exit.cxx: |
Support for above new libc.h options, and some QA changes |
|
* src/support/cstartup.cxx: |
Add support for new CYGSEM_LIBC_STARTUP_MAIN_THREAD option |
|
* src/support/mainthread.cxx: |
Override main stack size if the HAL has a minimum |
|
* src/string/strncpy.cxx: |
Use improved algorithm for aligned copies - imported from newlib |
QA changes |
|
* src/stdlib/abort.cxx: |
Support raise(SIGABRT), and some QA |
|
* include/errno.h: |
Add const attribute |
|
* tests/stdlib/abs.c: |
QA improvements |
|
1999-02-04 Jesper Skov <jskov@cygnus.co.uk> |
|
* src/support/cstartup.cxx: Only define cyg_libc_main_thread when |
the kernel is around. |
|
1999-02-01 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/time/clock.c: Joined the two test/NOP checks into |
one. |
Increased tolerance in attempt to fix PRs 18737,18787,18846. |
Fixed typo. |
|
1999-01-28 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strtok.cxx: |
* src/stdlib/rand.cxx: |
Include <pkgconf/kernel.h> if we use kernel header files |
|
1999-01-25 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sscanf.c (test): |
CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT should be |
CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT |
Fix for PR 18786 |
|
* src/string/strtok.cxx: |
* src/stdio/common/stdiofiles.cxx: |
* src/errno/errno.cxx: |
* src/stdlib/rand.cxx: |
Give mutex protection objects a libc constructor priority |
|
* src/support/invokemain.cxx: |
Add prototype for cyg_hal_invoke_constructors() |
|
* src/support/mainthread.cxx: |
Give cyg_libc_dummy_constructor_obj a libc constructor priority, |
and make its class have a public constructor |
|
* src/stdio/common/stderr.cxx: |
* src/stdio/common/stdout.cxx: |
* src/stdio/common/stdin.cxx: |
Give cyg_libc_stdio_stdin/out/err static objects a libc constructor |
priority |
|
* src/clibincl/streambuf.hxx (class Cyg_StdioStreamBuffer): |
* src/clibincl/stream.hxx (class Cyg_StdioStream): |
Remove private copy constructor. Needed to make prioritised |
static constructors work. Fix for PR 18898 |
|
1999-01-22 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/errno/errno.cxx: |
Include pkgconf/kernel.h otherwise it fails with per-thread errno |
enabled |
|
* include/pkgconf/libc.h: |
Enable per-thread errno by default since that is what POSIX would |
want |
|
* tests/time/clock.c (test): |
Placate compiler by initializing clock_first/second/third anyway, |
even though they won't be in practice. This is only a test program |
so adding an extra instruction doesn't matter. |
|
* src/i18n/locale.cxx (_setlocale): |
Placate compiler, since it is dumb, by nesting, not serializing, if's |
This is an idempotent change, but screws up the formatting :-(. |
|
* src/string/strpbrk.cxx (_strpbrk): |
Change while loop to do loop to placate compiler. It'll even save an |
instruction too (wow!) |
|
1999-01-22 John Dallaway <jld@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Add closing curly brace to CYGPKG_LIBC_STRING_STRTOK definition |
|
1999-01-21 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/errno.h: |
Tidy up and add to header description |
Change cyg_get_errno_p() to cyg_libc_get_errno_p() |
Remove ifdef CYGPKG_LIBC |
|
* include/sys/file_if.h: |
Remove - move contents to stdio.h |
|
* include/stdio.h: |
Tidy up header description |
Move FILE typedef here from sys/file_if.h |
SEEK_SET, SEEK_CUR, SEEK_END defined to 0, 1, 2 respectively |
for backwards compatibility with old UNIX |
Change definitions of stdin/out/err to be addresses of FILE |
globals - even though they're actually Cyg_StdioStream it'll work |
|
* include/pkgconf/libc.h: |
Make CYGPRI_LIBC_WEAK et al macros depend on new ones in infra |
Reorganise trace options under the individual components they are |
associated with. |
Reorganise thread-safety options under the individual components |
they are associated with. |
Add new CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS option |
Misc. reformatting |
Remove dependency on pkgconf/kernel.h - Configuration Tool will |
generate check macros anyway. |
Remove CYGPKG_LIBC_TRACE, CYGFUN_LIBC_strtok, CYGPKG_LIBC_RAND |
options |
Tidy up description header |
|
* src/clibincl/clibdata.hxx: |
* src/clibincl/clibdata.inl: |
* src/support/clibdata.cxx: |
Remove and instead rely on each component to initialise its own data |
|
* src/clibincl/stdiofiles.hxx, src/clibincl/stdiofiles.inl: |
New files to contain global file list and lock (if applicable). |
Implemented as class with member access functions |
|
* src/errno/errno.cxx: |
Reorganise with self-contained per-thread data, if applicable |
Remove ifdef CYGPKG_LIBC |
Tidy up description header |
Rename cyg_get_errno_p() to cyg_libc_get_errno_p() |
|
* src/stdio/common/fclose.cxx: |
* src/stdio/common/fflush.cxx: |
* src/stdio/common/fopen.cxx: |
* src/stdio/common/freopen.cxx: |
Remove ifdef CYGPKG_LIBC |
Use new global file access method from stdiofiles.hxx |
Tidy up description header |
Use new CYGBLD_ATTRIB_WEAK_ALIAS |
Access errno "normally" rather than clibdata way |
|
* src/stdio/common/stdin.cxx: |
* src/stdio/common/stdout.cxx |
* src/stdio/common/stderr.cxx: |
New files. Implement Cyg_StdioStream objects for each stream. In |
separate self-contained files so using one doesn't bring in the |
others |
|
* src/stdio/common/stdiofiles.cxx: |
New file. Implements global files array and lock |
|
* src/stdlib/_exit.cxx: |
Tidy up description header |
Remove ifdef CYGPKG_LIBC |
Use infra CYGBLD* macros |
|
* src/stdlib/malloc.cxx: |
Tidy up description header |
Remove ifdef CYGPKG_LIBC |
Add pkgconf/kernel.h now that pkgconf/libc.h doesn't have it |
Use infra CYGBLD* macros |
Make pool visible externally with weak attribute and new name |
cyg_libc_malloc_memorypool |
|
* src/stdlib/rand.cxx: |
* src/stdlib/strtok.cxx: |
Reorganise with self-contained per-thread data, if applicable |
Remove ifdef CYGPKG_LIBC |
Tidy up description header |
Use infra CYGBLD* macros |
|
* src/support/cstartup.cxx: |
Split into smaller files to make selective linking work better, |
fix i386 port problem and make GDB happy |
|
* src/support/environ.cxx: |
* src/support/invokemain.cxx: |
* src/support/main.cxx: |
* src/support/mainthread.cxx: |
New files from bits of the old cstartup.cxx |
Add support for CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG |
|
* src/PKGconf.mak: |
Update to reflect file additions/deletion |
|
* tests/stdlib/rand1.c: |
* tests/stdlib/rand2.c: |
* tests/stdlib/rand3.c: |
* tests/stdlib/srand.c: |
Make conform to coding standards |
Remove ifdef CYGPKG_LIBC_RAND |
Tidy up description header |
|
* tests/string/strtok.c: |
Make conform to coding standards |
Remove ifdef CYGFUN_LIBC_strtok |
Tidy up description header |
|
1999-01-15 Mark Galassi <rosalia@cygnus.com> |
|
* tests/stdlib/getenv.c (main): added tests for the case in which |
the user does not supply environ and in which the user supplies a |
NULL environ. |
|
1999-01-15 Jesper Skov <jskov@cygnus.co.uk> |
|
* src/support/cstartup.cxx: Added workaround for weak aliasing |
problem in i386 gcc. |
|
|
1999-01-15 Gary Thomas <gthomas@cygnus.co.uk> |
|
* include/pkgconf/libc.h (CYGNUM_LIBC_MAIN_STACK_SIZE): |
(CYGNUM_LIBC_MALLOC_MEMPOOL_SIZE): Change defaults to be |
more reasonable on small systems. |
|
1999-01-04 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/clibdata.cxx: |
Minor bug with environ not being initialised correctly by |
default |
|
1998-12-24 Bart Veer <bartv@cygnus.co.uk> |
|
* src/clibincl/stream.inl (Cyg_StdioStream): |
check_this() member functions should now be const |
|
1998-12-22 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/memchr.cxx (_memchr): |
treat search value parameter to memchr as an unsigned byte, |
not a signed int - copied fix from newlib PR 18471 |
|
1998-12-21 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/realloc.c: |
* tests/stdlib/malloc3.c: |
* tests/stdlib/malloc2.c: |
Warning cleanup |
|
1998-12-14 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/malloc2.c, tests/stdlib/malloc3.c, |
tests/stdlib/realloc.c: |
Only run these tests when we have a coalescing memory allocator |
|
1998-12-14 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/stream.cxx: |
Only check buffer init success if buffering |
|
* src/stdio/common/streambuf.cxx (set_buffer): |
Check for diff of requested size against buffer_size, not |
get_buffer_size(), since this may return -1, which won't be |
equal to size, and will cause malloc to be called |
|
1998-12-01 Jesper Skov <jskov@cygnus.co.uk> |
|
* tests/stdlib/getenv.c (main): Don't declare variables when they |
are not used. |
|
Thu Nov 26 17:59:12 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/string/strncpy1.c: |
Fix off-by-one error since it called my_strcmp() and not |
my_strncmp(), which meant in included the trailing NULL when it |
shouldn't have. |
|
1998-11-26 Jesper Skov <jskov@cygnus.co.uk> |
|
* src/stdlib/qsort.cxx (_qsort): |
* src/stdlib/rand.cxx (_srand): |
Changed CYG_REPORT_FUNCNAMETYPE to CYG_REPORT_FUNCNAME in void |
functions. |
|
Mon Oct 26 18:49:00 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/cstartup.cxx (cyg_libc_dummy_main): |
Silence compiler warning with cast of char * to CYG_ADDRWORD |
|
Wed Oct 28 17:31:21 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/time/clock.cxx (_clock): |
Reorder scaling expression as it was both incorrect and risked |
overflow. |
Fix for PR 18076 |
|
Mon Oct 19 14:40:06 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/stdio.h (EOF): |
Change from -64 to (-1), to allow broken code to work :-/ |
Also change other negative defines to be within parentheses |
|
1998-10-19 Mark Galassi <rosalia@cygnus.com> |
|
* include/pkgconf/libc.h: updated the doc URL |
|
Thu Oct 15 21:33:44 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.hxx: |
Only include kernel thread headers when we're in thread-safe mode |
|
* src/time/clock.cxx: |
Only include kernel clock headers if there's a kernel with the |
right functionality available |
|
* tests/time/clock.c: |
Remove unnecessary inclusion of <pkgconf/kernel.h> |
|
Above changes are required for PR 17229 |
|
Wed Oct 14 16:38:55 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.hxx, src/clibincl/clibdata.inl: |
Conditionalise inclusion of clibincl/stdiosupp.hxx and |
clibincl/stream.hxx. Tidying up PR 17502 |
|
Wed Oct 14 14:08:56 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Rename CYGPKG_LIBC_STRING_OPTIMISATIONS to |
CYGPKG_LIBC_STRING_OPTIMIZATIONS to make it truely merkin. |
|
Tue Oct 13 19:34:41 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h (CYGDAT_LIBC_ARGUMENTS): |
Add a default argv[0] of "" as many programs assume argc>0 |
The standard allows argv[0] to be "" if the program name |
is not available |
|
1998-09-26 Bart Veer <bartv@cygnus.co.uk> |
|
* src/clibincl/stdiosupp.hxx: |
PR 17502: this header file now does nothing if the stdio option |
is disabled completely. This is the same behaviour is |
clibincl/stream.hxx, although arguably the #ifdef protection |
should happen wherever the header file is #include'd rather than |
in the header file itself. |
|
* src/clibincl/clibdata.hxx: |
PR 17502: this header file still #include's internal stdio-related |
header files and references the FILE structure, even if stdio is |
disabled. There were some #ifdef's for CYGPKG_LIBC_STDIO already. |
One more has been added for _fopen() and _fclose(). |
|
1998-09-25 Bart Veer <bartv@cygnus.co.uk> |
|
* src/clibincl/streambuf.inl (Cyg_StdioStreamBuffer): |
PR 17487: Reorder the calls to initialize member fields, to |
eliminate a compiler warning. |
|
Fri Sep 25 19:04:29 1998 Jonathan Larmour <jlarmour@peshwari.cygnus.co.uk> |
|
* src/errno/errno.cxx, src/stdlib/bsearch.cxx, |
src/stdlib/qsort.cxx, src/stdlib/rand.cxx, src/string/strtok.cxx, |
src/time/clock.cxx: |
Only define tracing variable and tracing level macro when |
the relevant tracing level config options are set. Otherwise |
keep the tracing level fixed at 0 |
Fix for PR 17476 |
|
* include/pkgconf/libc.h: |
Define trace levels only if parent CYGPKG_LIBC_TRACE is defined |
for consistency with Configuration Tool |
|
|
Fri Sep 25 17:24:45 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/stdioinlines.cxx: |
Make definition of vscanf() dependent on CYGFUN_LIBC_STDIO_ungetc |
otherwise _vfscanf() won't be compiled. This therefore would |
cause a link fail iff selective linking is not enabled. |
Fix for PR 17455 |
|
Fri Sep 25 17:23:17 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/rand.cxx: |
Make compilation dependent on CYGPKG_LIBC_RAND |
Fix for PR 17473 |
|
* tests/stdlib/srand.c: |
Make definition of dummy test pass conditional on CYGPKG_LIBC_RAND |
not being defined, as well as CYGPKG_LIBC |
Caused compilation failure when testing PR 17473 fix |
|
Mon Sep 21 17:11:04 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sscanf.c: |
Make sscanf test conditional on CYGFUN_LIBC_STDIO_ungetc since |
_vfscanf() only gets compiled if this is defined |
Fix for PR 17346 |
|
1998-09-20 Mark Galassi <rosalia@cygnus.com> |
|
* include/pkgconf/libc.h: updated CDL doc strings. |
|
Fri Sep 18 22:18:47 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.inl (get_errno_p): |
Rather than this function only being available in thread-safe mode, |
instead make what it returns be either the per-thread errno, or |
global errno depending on the configuration. |
Include <errno.h> (conditionally) to support this change |
|
Wed Sep 16 11:20:31 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Remove "fix me" comment which I forgot to remove before |
|
Tue Sep 15 19:27:57 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Updated descriptions and a few other minor things after review. |
Notably though, the NDEBUG config option has been removed |
|
1998-09-15 Bart Veer <bartv@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
PR 17201: removed dependency on CYGPKG_KERNEL in the option |
CYGNUM_LIBC_MAIN_STACK_SIZE, since the actual dependencies cannot |
be expressed sensibly in the current system. |
|
1998-09-11 Bart Veer <bartv@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Sorting out dependencies for error package. |
|
1998-09-10 Mark Galassi <rosalia@cygnus.com> |
|
* include/pkgconf/libc.h: started adding doc fields to the |
cdl_package data, as a pilot for now. |
|
Wed Sep 9 17:41:23 1998 Hugo Tyson <hmt@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Add option CYGIMP_LIBC_MALLOC_CXX_DELETE_CALLS_FREE to explicitly |
control whether the empty delete functions (currently) in |
kernel/.../common/delete.cxx are enabled; controls code bloat, see |
the comments in delete.cxx. |
|
Fri Sep 4 16:43:38 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/stdiooutput.c: |
Add a default CYG_TEST_PASS() to make sure the test infra doesn't |
complain. |
Also remove the unused string functionsa |
|
Fri Sep 4 15:43:48 1998 Hugo Tyson <hmt@cygnus.co.uk> |
|
* src/stdlib/exit.cxx (__libc_exit): |
* src/stdlib/_exit.cxx (__libc__exit): |
* src/stdlib/malloc.cxx (_free): |
* src/stdlib/abort.cxx (abort): |
* src/support/cstartup.cxx (invoke_main): |
Tracing system asserted cos it was being called incorrectly; these |
are void functions so you shouldn't give a type to the function |
reporting call. |
|
Fri Sep 4 15:03:10 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Fix CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE description to refer to |
the table.cxx file, not table.h |
|
Fri Sep 4 14:38:52 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Add description for CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE since |
Proven won't be making any changes to the device driver |
implementation after all. |
Fix for PR 17148 |
|
* src/clibincl/stream.inl (set_position): |
Remove "fix me" line. It is obvious that this will have to change |
with a filesystem interface |
Fix for PR 17147 |
|
* src/stdio/common/freopen.cxx: |
Remove "fix me" - I know about this issue |
Fix for PR 17145 |
|
* src/stdio/common/stream.cxx (read): |
Remove "fix me" and change to use memcpy |
Fix for PR 17144 |
|
Fri Sep 4 14:36:47 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/stdiooutput.c: |
Actually add it this time! |
|
Fri Sep 4 13:48:13 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/stdiooutput.c: |
Add new tests for misc stdio output functions |
|
* tests/PKGconf.mak: |
Build stdiooutput.c test |
|
Fri Sep 4 12:52:10 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/stream.inl (write_byte): |
Remove bogus assert |
|
* tests/stdlib/getenv.c (main): |
Check whether str is NULL before doing a strcmp() |
|
* tests/stdio/sprintf2.c (main): |
Reformat to 76 columns |
|
Fri Sep 4 02:10:54 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/stream.hxx, src/stdio/common/stream.cxx: |
Add new peek_byte method to Cyg_StdioStream |
|
* src/stdio/input/vfscanf.cxx (_vfscanf): |
Fix up buffer access to work with new peek_byte method above |
Fix for PR 16954 |
|
Thu Sep 3 19:40:11 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/rand1.c, tests/stdlib/rand2.c, |
tests/stdlib/rand3.c: |
Add extra check for CYGPKG_LIBC_RAND to decide whether the test |
is applicable or not |
|
* tests/stdlib/rand2.c (test): |
Use CYGNUM_LIBC_RAND_SEED for default seed, not 1 |
|
* tests/string/strtok.c: |
Add extra check for CYGFUN_LIBC_strtok to decide whether the |
test is applicable or not |
|
Wed Sep 2 19:11:40 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/input/fread.cxx, src/stdio/output/fwrite.cxx: |
Add fread() and fwrite() functions |
|
* src/PKGconf.mak: |
Build fread.cxx and fwrite.cxx from above |
|
* src/stdio/common/stream.cxx: |
Reformat to 76 columns |
In write(), move initialisation of *bytes_written to start |
In read(), move initialisation of *bytes_read to start |
|
* include/stdio.h: |
Reformat to 76 columns |
|
Replace all references to the ANSI |
standard to instead by the ISO C standard |
|
Add commented argument names for "documentation" |
|
Add fread() and fwrite() prototypes |
|
* src/clibincl/stdiosupp.hxx: |
Copy the above changes from stdio.h, and add _fread() and _fwrite() |
prototypes |
|
* src/stdio/output/fputs.cxx, src/stdio/input/fgets.cxx: |
Reformat to 76 columns |
|
Wed Sep 2 15:41:15 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/input/vfscanf.cxx: |
Reformat to 76 columns |
|
Wed Sep 2 14:46:18 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/fflush.cxx: |
Use trylock_me() instead of lock_me(), and loop to prevent |
deadlocks |
|
* src/clibincl/stream.hxx, src/clibincl/stream.inl: |
Add trylock_me() method |
|
* src/clibincl/stream.hxx, src/clibincl/stream.inl, |
src/stdio/common/fflush.cxx: |
Reformat to 76 columns |
|
Wed Sep 2 12:24:27 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Change 0x7fff to 0x7fffffff. Oops! |
give main stack size option a legal_values field |
Undefine tracing by default |
Add some more description in the header |
|
Tue Sep 1 20:02:07 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/i18n/setlocale.c (cyg_package_start): |
Fix typo - extra "x" for no reason at all! :-) |
|
Tue Sep 1 19:44:58 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/i18n/locale.cxx: |
Fix bug in find_locale_data() that miscalculated size of |
all_locales |
|
Make find_locale_data() match the locale "" and add some |
other things in _setlocale() to ensure that "C" gets returned |
when the default locale "" is passed. |
|
Only check the locale pointer when it is non-NULL |
|
* tests/i18n/setlocale.c: |
New tests for setlocale() |
|
* tests/PKGconf.mak: |
Update to build setlocale.c test |
|
* src/support/cstartup.cxx: |
Don't actually call system default main() "main" otherwise GDB |
gets confused and thinks its the entry point. Instead make a weak |
alias and call the real function something different. |
|
Tue Sep 1 18:31:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/i18n/locale.cxx (_setlocale): |
Fix tracing macro name and remove "str maybe used before |
initialised" warning |
|
* tests/stdlib/qsort.c: |
Correct file description header |
|
Tue Sep 1 17:04:32 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/locale.h, src/clibincl/i18nsupp.hxx, src/i18n/locale.cxx: |
New files to add support for locales as defined by the ISO C |
standard. i.e. setlocale() and localeconv() functions and some |
other bits |
|
* include/pkgconf/libc.h: |
Add CYGNUM_LIBC_MAX_LOCALE_NAME_SIZE config option for locale |
support |
|
* src/PKGconf.mak: |
build locale.cxx |
|
* include/errno.h, src/clibincl/ctypesupp.hxx: |
Tidy up to 76 columns |
|
Tue Sep 1 00:24:22 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Move environment-related options from stdlib into new |
CYGPKG_LIBC_STARTUP component. Also add options for main()'s |
arguments (CYGPKG_LIBC_ARGUMENTS), main()'s default stack size |
(CYGNUM_LIBC_MAIN_STACK_SIZE), number of atexit handlers |
(CYGNUM_LIBC_ATEXIT_HANDLERS), and whether _exit() stops the |
system (CYGSEM_LIBC_EXIT_STOPS_SYSTEM). |
|
* src/clibincl/stdlibsupp.hxx: |
Fix a few comment bugs, and add new |
cyg_libc_invoke_atexit_handlers() function prototype |
|
* src/stdlib/_exit.cxx, src/stdlib/atexit.cxx, src/stdlib/exit.cxx: |
Implement exit(), atexit() and _exit() correctly now. Also |
includes cyg_libc_invoke_atexit_handlers() in atexit.cxx. Now |
we get the correct behaviour of atexit(), and exit() invokes the |
atexit handlers and fflushs all the stdio streams. Add plenty of |
tracing of asserts too. |
|
* src/support/cstartup.cxx: |
Make main_thread object an exported global. Allow user-settable |
arguments. Add MUCH more tracing and asserts. Improve comments. |
Tidy up to 76 columns |
|
* tests/stdlib/atexit.c: |
Add simple test for atexit() and it calling registered functions |
|
* tests/PKGconf.mak: |
Build atexit.c test |
|
Mon Aug 31 18:54:48 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/getenv.cxx, tests/stdlib/getenv.c: |
Add support for getenv(), and some tests to ensure it works |
|
* src/PKGconf.mak, tests/PKGconf.mak: |
Update to include getenv.cxx and getenv.c test |
|
* src/clibincl/clibdata.hxx: |
remove prototype for environ - we expect files needing it to |
define it themselves |
|
* src/support/clibdata.cxx: |
Tidy up to 76 columns and add definition of char **environ, but |
with a configurable initialiser (see libc.h below) |
|
* tests/stdlib/abs.c (main): |
Tidy up to 76 columns |
|
* src/stdlib/malloc.cxx: |
Tidy up to 76 columns and remove warning for undefined _memcpy() |
by changing to memcpy(), and casting away signedness |
|
* include/pkgconf/libc.h: |
Add CYGPKG_LIBC_ENVIRONMENT and CYGDAT_LIBC_DEFAULT_ENVIRONMENT |
configuration options |
|
* include/pkgconf/libc.h, src/clibincl/clibdata.hxx: |
Tidy up to 76 columns |
|
* include/stdlib.h: |
Add getenv() prototype and tidy up to 76 columns |
|
* src/clibincl/stdlibsupp.hxx: |
Add _getenv() prototype |
|
Mon Aug 31 13:37:08 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/malloc.cxx: |
Add realloc() |
|
* tests/stdlib/realloc.c: |
Add this file to test new realloc() functionality |
|
* tests/PKGconf.mak: |
Build realloc test |
|
* tests/stdlib/malloc3.c (main), tests/stdlib/malloc2.c (main), |
tests/stdlib/malloc1.c (main): |
Conditionalise local vars to prevent warnings |
|
* tests/stdlib/malloc3.c (fill_with_data): |
Move '{' into "verb" line |
|
* include/pkgconf/libc.h: |
Require infra tracing support to allow tracing |
|
* include/stdlib.h: |
Add realloc() |
|
* src/clibincl/stdlibsupp.hxx: |
Update the commented argument names from stdlib.h, including realloc() |
|
1998-08-28 Bart Veer <bartv@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
* src/clibincl/clibdata.hxx, src/time/clock.cxx: |
|
Updated for new kernel configuration option symbol names |
|
Fri Aug 28 19:18:25 1998 Hugo Tyson <hmt@cygnus.co.uk> |
|
Changed the entry below to sat "tx39" instead of "mn10300". |
It's been a long week. |
|
Fri Aug 28 18:59:20 1998 Hugo Tyson <hmt@cygnus.co.uk> |
|
* src/support/cstartup.cxx: Add a weakly named main to allow the |
default configuration to link on the tx39 which has no |
scalextric linking yet. The static Cyg_Thread main_thread object |
below continues to exist, though unreferenced, so all its |
descendants must exist too. |
|
Fri Aug 28 08:54:29 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/stdlib.h: |
Add commented argument names Add exit(), and atexit(). And move |
these along with abort() and _exit() to a new section. |
|
* src/stdlib/atexit.cxx, src/stdlib/exit.cxx: |
Add trivial versions of atexit() and exit() |
|
* include/pkgconf/libc.h: |
Add CYGNUM_LIBC_MAIN_STACK_SIZE config option |
|
* include/sys/cstartup.h, src/support/cstartup.cxx, src/PKGconf.mak: |
New files to provide a new function cyg_iso_c_support(), which |
invokes main "correctly". |
|
* tests/ctype/ctype.c, tests/setjmp/setjmp.c, tests/stdio/sprintf1.c, |
tests/stdio/sprintf2.c, tests/stdio/sscanf.c, tests/stdlib/abs.c, |
tests/stdlib/atoi.c, tests/stdlib/atol.c, tests/stdlib/bsearch.c, |
tests/stdlib/div.c, tests/stdlib/labs.c, tests/stdlib/ldiv.c, |
tests/stdlib/malloc1.c, tests/stdlib/malloc2.c, |
tests/stdlib/malloc3.c, tests/stdlib/qsort.c, tests/stdlib/rand1.c, |
tests/stdlib/rand2.c, tests/stdlib/rand3.c, tests/stdlib/srand.c, |
tests/stdlib/strtol.c, tests/stdlib/strtoul.c, |
tests/string/memchr.c, tests/string/memcmp1.c, |
tests/string/memcmp2.c, tests/string/memcpy1.c, |
tests/string/memcpy2.c, tests/string/memmove1.c, |
tests/string/memmove2.c, tests/string/memset.c, |
tests/string/strcat1.c, tests/string/strcat2.c, |
tests/string/strchr.c, tests/string/strcmp1.c, |
tests/string/strcmp2.c, tests/string/strcoll1.c, |
tests/string/strcoll2.c, tests/string/strcpy1.c, |
tests/string/strcpy2.c, tests/string/strcspn.c, |
tests/string/strlen.c, tests/string/strncat1.c, |
tests/string/strncat2.c, tests/string/strncpy1.c, |
tests/string/strncpy2.c, tests/string/strpbrk.c, |
tests/string/strrchr.c, tests/string/strspn.c, |
tests/string/strstr.c, tests/string/strtok.c, |
tests/string/strxfrm1.c, tests/string/strxfrm2.c, |
tests/time/clock.c: |
|
Modify all tests to use new startup mechanism, and cyg_iso_c_start() |
|
Fri Aug 28 00:29:38 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/stream.cxx: |
Add #ifdef CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO around all accesses to |
flags.last_buffer_op_was_read. Fix for PR 16997 |
|
Thu Aug 27 01:12:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/sys/file_if.h: |
Fix comments and remove cyg_get_file_star() |
|
Wed Aug 26 20:24:32 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Remove #define CYGPKG_LIBC is that is meant to live in |
<pkgconf/system.h> after all |
|
Wed Aug 26 19:39:23 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
More fixes to CDL stuff to make it work better, and look better on |
the screen |
|
Tue Aug 25 20:21:41 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Make some fixes after running the ConfigTool |
|
Tue Aug 25 16:46:28 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h (CYGNUM_LIBC_STDIO_BUFSIZE): |
Fix typo of CYGNUM_LIBC_STDIO_BUFSIZE |
|
Tue Aug 25 15:10:57 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Tidy up CDL stuff a bit more, prior to checking it actually works. |
|
Tue Aug 25 11:38:52 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/malloc2.c (main): |
Prevent calls to CYG_TEST_STILL_ALIVE for now |
|
Tue Aug 25 05:39:28 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Change cosmetic paragraph alignment. |
|
Tue Aug 25 03:11:34 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/clibdata.cxx: |
Make stderr initialise with buffer size 0. |
For PR 16955 |
|
Mon Aug 24 17:38:46 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
First pass at CDL-ifying the C library configuration. Currently |
deliberately disabled as there a few outstanding issues. |
|
Mon Aug 24 16:14:22 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/output/vfnprintf.cxx (_vfnprintf): |
clear up warning for unused argument |
|
* tests/stdlib/malloc2.c (NUM_ITERATIONS): |
Lower to 100 from 50000 so it won't take too long under the simulator |
|
Thu Aug 20 17:48:43 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/malloc.cxx: |
Remove now unnecessary inclusion of kernel/ktypes.h |
|
Wed Aug 19 19:19:14 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sprintf1.c, tests/stdio/sprintf2.c, |
tests/stdio/sscanf.c, tests/stdlib/atoi.c, tests/stdlib/atol.c, |
tests/stdlib/rand1.c, tests/stdlib/rand2.c, tests/stdlib/rand3.c, |
tests/stdlib/srand.c, tests/stdlib/strtol.c, |
tests/stdlib/strtoul.c, tests/string/strtok.c, |
tests/time/clock.c: |
Add parameters to "main()" to silence warnings |
|
Wed Aug 19 18:52:59 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/stream.cxx (refill_read_buffer): |
Put conditional error check into same #ifdef and if as what was being |
checked in the first place! |
|
Wed Aug 19 18:49:19 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/stream.inl: |
Reorder Cyg_StdioStream::check_this() to be first to silence |
warnings |
|
Tue Aug 18 16:10:03 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* ecc/language/c/libc/current/src/clibincl/clibdata.hxx, |
ecc/language/c/libc/current/src/errno/errno.cxx, |
ecc/language/c/libc/current/src/stdio/common/fopen.cxx, |
ecc/language/c/libc/current/src/stdlib/rand.cxx, |
ecc/language/c/libc/current/src/string/strtok.cxx: |
Rename CYGIMP_LIBC_INTERNAL_DATA_PREAMBLE, |
CYGIMP_LIBC_INTERNAL_DATA_ALLOC_CHECK_PREAMBLE, |
CYGVAR_LIBC_INTERNAL_DATA, and |
CYGIMP_LIBC_INTERNAL_DATA_CHECK to all have CYGPRI_ prefix instead |
as recommended by the config name rules |
|
|
Tue Aug 18 14:31:19 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/setvbuf.cxx (_setvbuf): |
Rename variable names in assert line, otherwise doesn't build |
with asserts on! |
|
Sun Aug 16 18:15:12 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/input/vfscanf.cxx (_vfscanf): |
Fix some bugs, although there are some left to fix still. Unrelated |
to the rest of the checkins, so I will check the partial fix in now. |
|
* src/clibincl/stream.hxx, src/clibincl/stream.inl, |
src/stdio/common/stream.cxx: |
Add parameters to constructor to allow more things to be done at |
construction time. |
|
Now we have "new", remove separate "construct" method |
|
Add more documentation on constructor |
|
As requested by code review, where possible, move boolean flags |
into separate packed bitfield structure for space efficiency |
|
Make readbuf_char be usable all the time rather than when configured |
not to be buffering, as it is also needed for non-buffered mode i.e. |
_IONBF |
|
* src/stdio/common/fopen.cxx: |
Change to use new method of construction from above, using new |
|
Use thread-specific data, rather than global. And so change errnos |
to access errno entry specifically |
|
Make process_mode() check for append mode too |
|
Reformat for coding standards to have { in same line as "verb" |
|
* src/stdio/common/setvbuf.cxx: |
|
Change to cope with different way of dealing with buffering policy |
flags etc. in Cyg_StdioStream |
|
* src/stdio/common/vsnprintf.cxx, src/stdio/common/vsscanf.cxx, |
src/support/clibdata.cxx: |
Change construction of streams to use new parameters added above, |
and change to use _IONBF mode for string stdio functions, |
otherwise its a waste of memory. And use _IONBF for stderr as the |
ISO standard tells us to! |
|
Reformat for coding standards to have { in same line as "verb" |
|
* src/clibincl/streambuf.hxx, src/clibincl/streambuf.inl: |
Change constructor so that it can be set with default size and |
dynamic buffer (if applicable) |
|
Fix minor bug in destructor - should only call free when allocated |
dynamically |
|
Change get_buffer_size to return -1 if the buffer was not allowed |
to be set up |
|
* src/stdio/common/streambuf.cxx: |
Remove unnecessary stdio.h include and add extra comment to whether |
to free bit in set_buffer() |
|
* src/stdio/common/freopen.cxx: |
Change @@@ to standard fix me string |
|
* src/stdio/output/fputc.cxx: |
Remove unnecessary "written" variable |
|
Thu Aug 13 15:37:28 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/_exit.cxx: |
Included use of "fix me" line to ensure this is discussed before |
release |
|
* include/stdlib.h, src/stdlib/abort.cxx, src/PKGconf.mak: |
Add abort.cxx to implement abort(), albeit naively |
|
Thu Jul 30 18:03:09 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/vsscanf.cxx (_vsscanf), |
src/stdio/common/vsnprintf.cxx (_vsnprintf): |
Fix initialiser of pseudo string device table that didn't get updated |
when the table changed (Bad proven, no biscuit). |
|
* src/clibincl/stream.inl (~Cyg_StdioStream): |
Move invalidation of magic_validity_word to after unlock_me(), |
otherwise it always fails! |
|
Tue Jul 28 21:29:53 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.hxx: |
Shorten over-long lines |
|
Tue Jul 28 20:28:23 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/stream.hxx (class Cyg_StdioStream), |
src/clibincl/stream.inl, src/stdio/common/stream.cxx: |
Clarify some comments and get the CYGDBG_DEFINE_CHECK_THIS and |
CYG_ASSERTCLASS stuff going |
|
* src/clibincl/stream.inl: |
Put '{'s on same line as "action" as per coding standards |
Shorten over-long lines |
|
Tue Jul 28 15:31:06 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/streambuf.inl, src/stdio/common/streambuf.cxx: |
Move set_buffer() from streambuf.inl to new file streambuf.cxx |
|
* src/PKGconf.mak (COMPILE): |
Build new file streambuf.cxx |
|
* src/clibincl/streambuf.hxx (class Cyg_StdioStreamBuffer): |
Add METHODS comment |
|
* src/stdio/common/stream.cxx: |
Put '{'s on same line as "action" as per coding standards |
Shorten over-long lines |
|
Tue Jul 28 00:26:36 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/stdlib.inl, src/stdio/input/vfscanf.cxx, |
src/stdio/output/vfnprintf.cxx, src/stdlib/div.cxx, |
src/stdlib/ldiv.cxx, src/stdlib/qsort.cxx, src/stdlib/strtol.cxx, |
src/stdlib/strtoul.cxx, src/string/strtok.cxx: |
|
Include proper Berkeley license inline in the file, rather than |
referring to an external file |
|
* doc/COPYING.UCB: |
Remove, now that it isn't referred to any more |
|
Mon Jul 27 23:34:26 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/ctype.h, include/ctype.inl, include/errno.h, |
include/stdio.h, include/stdio.inl, include/stdlib.h, |
include/stdlib.inl, include/string.h, include/string.inl, |
include/time.h, include/sys/file_if.h, src/PKGconf.mak, |
src/clibincl/clibdata.hxx, src/clibincl/clibdata.inl, |
src/clibincl/ctypesupp.hxx, src/clibincl/stdiosupp.hxx, |
src/clibincl/stream.hxx, src/clibincl/streambuf.hxx, |
src/clibincl/streambuf.inl, src/clibincl/stringsupp.hxx, |
src/clibincl/timesupp.hxx, src/ctype/isalnum.cxx, |
src/ctype/isalpha.cxx, src/ctype/iscntrl.cxx, |
src/ctype/isdigit.cxx, src/ctype/isgraph.cxx, |
src/ctype/islower.cxx, src/ctype/isprint.cxx, |
src/ctype/ispunct.cxx, src/ctype/isspace.cxx, |
src/ctype/isupper.cxx, src/ctype/isxdigit.cxx, |
src/ctype/tolower.cxx, src/ctype/toupper.cxx, |
src/errno/errno.cxx, src/stdio/common/snprintf.cxx, |
src/stdio/common/sprintf.cxx, src/stdio/common/sscanf.cxx, |
src/stdio/common/stdioinlines.cxx, src/stdio/common/stream.cxx, |
src/stdio/common/ungetc.cxx, src/stdio/common/vsnprintf.cxx, |
src/stdio/common/vsscanf.cxx, src/stdio/input/fgetc.cxx, |
src/stdio/input/fgets.cxx, src/stdio/input/fscanf.cxx, |
src/stdio/input/gets.cxx, src/stdio/input/scanf.cxx, |
src/stdio/output/fnprintf.cxx, src/stdio/output/fprintf.cxx, |
src/stdio/output/fputc.cxx, src/stdio/output/fputs.cxx, |
src/stdio/output/printf.cxx, src/stdlib/_exit.cxx, |
src/stdlib/abs.cxx, src/stdlib/atof.cxx, src/stdlib/atoi.cxx, |
src/stdlib/atol.cxx, src/stdlib/div.cxx, src/stdlib/labs.cxx, |
src/stdlib/ldiv.cxx, src/stdlib/rand.cxx, src/stdlib/strtod.cxx, |
src/string/memchr.cxx, src/string/memcmp.cxx, |
src/string/memmove.cxx, src/string/strcat.cxx, |
src/string/strchr.cxx, src/string/strcmp.cxx, |
src/string/strcoll.cxx, src/string/strcpy.cxx, |
src/string/strcspn.cxx, src/string/strlen.cxx, |
src/string/strncat.cxx, src/string/strncmp.cxx, |
src/string/strncpy.cxx, src/string/strpbrk.cxx, |
src/string/strrchr.cxx, src/string/strspn.cxx, |
src/string/strstr.cxx, src/string/strsuppt.cxx, |
src/string/strtok.cxx, src/string/strxfrm.cxx, |
src/support/clibdata.cxx, src/time/clock.cxx: |
Untabify |
|
Mon Jul 27 23:14:18 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/errno/errno.cxx, src/stdio/input/vfscanf.cxx, |
src/stdio/output/vfnprintf.cxx, src/stdlib/strtol.cxx, |
src/stdlib/strtoul.cxx, src/stdlib/malloc.cxx, src/stdlib/qsort.cxx, |
tests/ctype/ctype.c, tests/stdlib/rand3.c, tests/stdlib/malloc3.c: |
Remove all mentions of "register" in variable declarations. Also |
untabify where needed |
|
* src/stdlib/bsearch.cxx: |
Untabify this too |
|
|
Mon Jul 27 22:18:51 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/output/fputc.cxx (_fputc): |
Replace call to stream write() with call to write_byte() |
|
* src/clibincl/stream.inl (write_byte): |
Add asserts for stream write() returning odd values for how much has |
been written |
|
(bytes_available_to_read): |
Remove "register" def for variable declaration |
|
Mon Jul 27 22:06:22 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/stdiosupp.cxx: |
Remove #if 0'd cyg_get_file_star() and unnecessary pseudo string |
device definition |
|
Mon Jul 27 21:57:25 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h, src/support/clibdata.cxx: |
Change CYGXXX_LIBC_STDIO_DEFAULT_CONSOLE to |
CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE |
|
Mon Jul 27 21:49:23 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.hxx, src/clibincl/clibdata.inl, |
src/clibincl/ctypesupp.hxx, src/clibincl/setjmpsupp.hxx, |
src/clibincl/stdiosupp.hxx, src/clibincl/stdlibsupp.hxx, |
src/clibincl/stream.hxx, src/clibincl/stream.inl, |
src/clibincl/streambuf.hxx, src/clibincl/streambuf.inl, |
src/clibincl/stringsupp.hxx, src/clibincl/timesupp.hxx: |
|
Change CYGONCE_LIBC_*_{HXX,INL} to CYGONCE_LIBC_CLIBINCL_*_{HXX,INL} |
|
Mon Jul 27 21:34:05 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Change #define XXXXX 1 to #define XXXXX where applicable as per code |
review |
|
Also remove obsolete CYGIMP_LIBC_THREAD_START_SUSPENDS_SELF |
|
Mon Jul 27 19:42:27 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/fopen.cxx (_fopen): |
Use #ifdef, not #if for config options |
|
Mon Jul 27 15:01:51 BST 1998 Chris Provenzano <proven@cygnus.com> |
|
* src/stdio/common/stream.cxx, src/stdio/common/vsnprintf.cxx |
* src/stdio/common/vsscanf.cxx: |
Fixes to compile with the new Cyg_IORB field names. |
|
Thu Jul 9 03:40:21 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/atoi.c, tests/stdlib/atol.c, |
tests/stdlib/strtol.c, tests/stdlib/strtoul.c: |
Adjust starting of tests to possibly start scheduler since |
strtol/stroul rely on errno, which may be a per-thread variable |
|
Thu Jul 9 03:06:25 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/stream.hxx, src/clibincl/stream.inl, |
src/stdio/common/stream.cxx, src/stdio/common/setvbuf.cxx: |
Consolidate read and write buffers into single buffer, as it should |
have been all along |
|
* src/clibincl/streambuf.hxx, src/clibincl/streambuf.inl: |
Add drain_buffer() method to speed up the case when we want the |
buffer completely emptied |
|
Tue Jul 7 21:26:33 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sprintf1.c: |
Add a couple of new tests that check that very long strings work too |
|
Wed Jul 1 19:52:39 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/stream.hxx, src/clibincl/streambuf.hxx: |
Do not permit copy constructors |
|
* src/clibincl/stream.inl, src/stdio/common/fclose.cxx: |
Make sure we use #ifdef and not #if |
|
* src/clibincl/streambuf.inl: |
Use member initialisation list rather than explicit initialisation to |
reduce warnings |
|
Wed Jul 1 19:17:55 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h and all files using config options: |
Rename configuration defines to make them more standard |
|
Thu Jun 25 20:09:30 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strcat.cxx: |
Add parentheses on check to silence warning |
(Verified by proven) |
|
Thu Jun 25 19:30:01 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/malloc.cxx: |
Make sure that the malloc pool is initialised before other things |
can use it. This is done with the hot new constructor ordering |
feature. |
|
Thu Jun 25 18:27:03 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/input/vfscanf.cxx: |
Remove bogus ifdef if floating point is _not_ wanted |
|
Thu Jun 25 17:31:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strtok.cxx: |
Fix argument checking to allow first argument of NULL |
|
Thu Jun 25 04:18:50 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.inl (get_strtok_last_p): |
Remove bogus assertion |
|
* src/stdlib/malloc.cxx: |
Got sense of alignment check assertion the wrong way round, so negate |
it |
|
Thu Jun 25 03:56:35 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strxfrm.cxx: |
Fix argument checking assertions with legitimate nulls here too |
|
Thu Jun 25 03:46:32 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/strtoul.cxx, src/stdlib/strtol.cxx: |
Fix argument checking assertions to cope with legitimate nulls |
|
Wed Jun 24 09:01:45 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sprintf1.c: |
Remove extraneous info messages |
|
Wed Jun 24 05:59:17 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sprintf1.c, tests/stdio/sprintf2.c, tests/stdio/sscanf.c, |
tests/stdlib/rand1.c, tests/stdlib/rand2.c, tests/stdlib/rand3.c, |
tests/stdlib/srand.c: |
|
Change large automatic arrays to static arrays to prevent overuse |
of a potentially small stack |
|
Wed Jun 24 05:45:28 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sprintf1.c, tests/stdio/sprintf2.c, tests/stdio/sscanf.c, |
tests/stdlib/rand1.c, tests/stdlib/rand2.c, tests/stdlib/rand3.c, |
tests/stdlib/srand.c, tests/string/strtok.c, tests/time/clock.c: |
|
Increase thread stack size from 4K to 32K as in some cases it was |
too small. |
|
|
Tue Jun 23 20:12:31 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sscanf.c: |
Add extra tests, including floating point conversion testing |
|
Tue Jun 23 17:01:06 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strtok.cxx: |
Make sure this is only compiled if CYGFUN_LIBC_strtok is defined |
|
Tue Jun 23 06:10:13 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
add some comments - that's all |
|
* src/stdio/common/stream.cxx: |
fix case in refill_read_buffer() for what to do when there's nothing |
left. Now return EAGAIN |
|
* src/stdio/common/vsscanf.cxx, src/stdio/input/vfscanf.cxx: |
Get sscanf working properly and passing tests. Also make sure it |
ignores FP when its not configured |
|
* src/stdlib/atof.cxx: |
Only compile at all if strtod() is present |
|
|
Mon Jun 22 19:13:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.hxx, src/clibincl/clibdata.inl: |
Conditionalise strtok_last and rand_seed better |
|
Mon Jun 22 14:14:12 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/malloc3.c: |
Add test for checking that mallocing and freeing repeatedly works |
|
* tests/PKGconf.mak: |
Update to reflect addition of the above |
|
Mon Jun 22 13:09:33 BST 1998 Chris Provenzano <proven@cygnus.com> |
|
* src/stdio/common/fopen.cxx |
* src/stdio/common/stream.cxx |
* src/stdio/common/vsnprintf.cxx |
* src/stdio/common/vsscanf.cxx |
Include cyg/devs/common/iorb.h instead of iorb.hxx |
|
* src/stdio/common/stream.cxx |
Use read_blocking and write_blocking instead of just read and |
write when accessing devices through the virtual device table. |
|
Sun Jun 21 18:19:13 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/stdioinlines.cxx: |
Propagate change of return code handling for puts from stdio.inl |
into here |
|
* src/stdio/output/fputc.cxx: |
make sure the right type is used for output - byte not int |
|
* src/support/clibdata.cxx: |
Fix #define config mistook. #endif was in wrong place |
|
Sun Jun 21 16:11:04 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.hxx, src/clibincl/clibdata.inl: |
Allow explicit construction to get around a bug when |
dynamically allocating per-thread structure |
|
Sun Jun 21 16:02:51 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/ctype/ctype.c, tests/setjmp/setjmp.c, tests/stdio/sprintf1.c, |
tests/stdio/sprintf2.c, tests/stdio/sscanf.c, tests/stdlib/abs.c, |
tests/stdlib/atoi.c, tests/stdlib/atol.c, tests/stdlib/bsearch.c, |
tests/stdlib/div.c, tests/stdlib/labs.c, tests/stdlib/ldiv.c, |
tests/stdlib/malloc1.c, tests/stdlib/malloc2.c, tests/stdlib/qsort.c, |
tests/stdlib/rand1.c, tests/stdlib/rand2.c, tests/stdlib/rand3.c, |
tests/stdlib/srand.c, tests/stdlib/strtol.c, tests/stdlib/strtoul.c, |
tests/string/memchr.c, tests/string/memcmp1.c, |
tests/string/memcmp2.c, tests/string/memcpy1.c, |
tests/string/memcpy2.c, tests/string/memmove1.c, |
tests/string/memmove2.c, tests/string/memset.c, |
tests/string/strcat1.c, tests/string/strcat2.c, |
tests/string/strchr.c, tests/string/strcmp1.c, |
tests/string/strcmp2.c, tests/string/strcoll1.c, |
tests/string/strcpy1.c, tests/string/strcpy2.c, |
tests/string/strcspn.c, tests/string/strlen.c, |
tests/string/strncat1.c, tests/string/strncat2.c, |
tests/string/strncpy1.c, tests/string/strncpy2.c, |
tests/string/strpbrk.c, tests/string/strrchr.c, |
tests/string/strspn.c, tests/string/strstr.c, tests/string/strtok.c, |
tests/string/strxfrm1.c, tests/string/strxfrm2.c, tests/time/clock.c: |
|
Update tests to "do the right thing" with all configuration settings |
|
|
Sun Jun 21 04:54:14 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/setjmp/setjmp.c: |
I have to be careful not to use setjmp() in a way not exactly |
defined by the standard, so make sure I do, and add a comment |
documenting these ways. |
|
Also ensure this test does the right thing in all configurations |
|
Sun Jun 21 04:38:15 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Add extra checks for invalid configurations |
Also make default for thread safety OFF |
|
* src/clibincl/clibdata.inl: |
Adjust indentation |
|
* src/stdio/output/vfnprintf.cxx: |
Make printf of -0.0 floating point do the right thing |
|
Sun Jun 21 04:28:00 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/snprintf.cxx, src/stdio/common/sprintf.cxx, |
src/stdio/common/sscanf.cxx, src/stdio/input/fscanf.cxx, |
src/stdio/input/scanf.cxx, src/stdio/output/fnprintf.cxx, |
src/stdio/output/fprintf.cxx, src/stdio/output/printf.cxx: |
|
Had to remove inline functions with varargs. Which means separating |
out each function from stdioinlines.cxx into a separate file, as they |
no longer belong there. So all the above files were created. |
|
* include/stdio.inl, src/PKGconf.mak, |
src/stdio/common/stdioinlines.cxx: |
Changed to take account of the above |
|
|
Sun Jun 21 03:58:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdio/sprintf1.c, tests/stdio/sprintf2.c: |
Update with floating-point tests. Also make sure they DTRT in all |
configurations |
|
Fri Jun 19 19:33:06 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/clibdata.cxx: |
accidentally initialised stdin/out/err twice |
|
Fri Jun 19 19:09:29 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/clibdata.cxx: |
Another typo |
|
Fri Jun 19 18:59:07 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/clibdata.cxx: |
Missing #endif typo |
|
Fri Jun 19 18:51:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/clibdata.cxx: |
Fix initialisation of static data members. Unsure how it worked at |
all before! |
|
Fri Jun 19 18:01:01 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/stdio.inl: |
puts should check whether fputs returns non-negative, rather than |
non-zero |
|
Fri Jun 19 17:22:52 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/clibincl/clibdata.inl: |
Make inclusion of get_errno_p conditional on thread-safety |
|
Wed Jun 17 10:55:32 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/input/vfscanf.cxx: |
Add weak alias of vfscanf() to _vfscanf() |
|
Wed Jun 17 09:10:41 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdio/common/fflush.cxx: |
Initialise err to silence compiler warning |
|
Wed Jun 17 08:59:20 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* Most important is the addition of floating point support in |
src/stdio/output/vfnprintf.cxx and src/stdio/input/vfscanf.cxx. This |
also required the addition of atof() and strtod() in stdlib which is |
definitely no bad thing! Other than that... |
|
* Fix a whole bunch of stuff I messed up first time round. Also the |
sprintf and sscanf tests are included again. |
|
Tue Jun 16 16:38:02 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/PKGconf.mak: |
Typo with not putting comment character at the beginning. Sigh. |
|
Tue Jun 16 14:53:09 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/PKGconf.mak: |
Forgot to (temporarily) remove fputs test for now |
|
Mon Jun 15 20:40:03 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
Everything to do with stdio has almost completely changed, so there's |
not much point documenting individual changes. |
|
Mon Jun 15 18:36:01 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/stdlib/malloc2.c: |
Stop it moaning quite as much when it fails by making it exit sooner |
|
* tests/time/clock.c : |
This isn't a compound testcase |
|
Thu Jun 11 17:59:13 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/assert.h |
Reverse sense of NDEBUG ifdef, that was left in accidentally due |
to testing |
|
Thu Jun 11 04:58:08 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/errno.h, include/string.h, src/clibincl/stringsupp.hxx: |
Modify as I've now added an "error" package which defines the error |
codes and strerror() |
|
* src/errno/strerror.cxx: |
Moved to new error package and thus deleted |
|
Wed Jun 10 18:37:37 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/assert.h: |
create this header and add assert() function |
|
Wed Jun 10 16:23:57 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/stdlib.h, src/clibincl/stdlibsupp.hxx, src/stdlib/malloc.cxx: |
Add malloc(), calloc() and free() functions |
|
* include/pkgconf/libc.h: |
Add malloc memory pool size option |
|
* tests/stdlib/malloc1.c, tests/stdlib/malloc2.c: |
new tests for malloc |
|
* src/PKGconf.mak, tests/PKGconf.mak: |
Update for new files |
|
Wed Jun 10 15:06:16 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/setjmp/setjmp.c: |
Add another test |
|
Tue Jun 9 18:20:31 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/pkgconf/libc.h: |
Add some setjmp config's and a macro for the noreturn attribute |
|
* include/setjmp.h, include/setjmp.inl, src/clibincl/setjmpsupp.hxx, |
src/setjmp/longjmp.cxx, tests/setjmp/setjmp.c: |
Added to implement and test setjmp() and longjmp() |
|
* src/PKGconf.mak, tests/PKGconf.mak: |
Update for newly added files |
|
Thu Jun 4 01:29:18 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/memchr.cxx, src/string/memcmp.cxx, src/string/strcat.cxx, |
src/string/strchr.cxx, src/string/strcmp.cxx, src/string/strcpy.cxx, |
src/string/strlen.cxx, src/string/strncat.cxx, |
src/string/strncmp.cxx, src/string/strncpy.cxx: |
Rename CYGIMP_LIBC_PREFER_SMALL_TO_FAST to |
CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST |
|
Also use slower but smaller version when __OPTIMIZE_SIZE__ is |
defined (which comes from using gcc -Os) |
|
Fri May 29 16:15:04 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/ctype.inl, src/ctype/isxdigit.cxx: |
Fix bug that numerals aren't considered hex digits |
|
* include/time.h: |
Change clock_t and time_t to be signed so that they can accept -1, as |
required by other libc functions |
|
* src/clibincl/clibdata.hxx: |
Fix typo that CYGIMP_LIBC_THREAD_SUPPORT should be ..._SAFETY |
Also fix macro to allocate thread-specific data to not set variables |
in a different stack-frame |
|
* tests/ctype/ctype.c: |
Fix some misunderstandings in tests, and add a few new ones |
|
* tests/stdlib/qsort.c: |
make ctr unsigned to prevent warnings |
|
* tests/stdlib/strtol.c, tests/stdlib/strtoul.c: |
Fix some misunderstandings in tests, and add a few new ones |
|
* tests/string/strrchr.c: |
Fix off by one error |
|
* tests/string/strspn.c: |
Fix case-sensitivity problem, and off-by-one error |
|
* tests/string/strxfrm1.c: |
Remove bogus bit of test that doesn't apply to strxfrm, and fix typo |
|
|
Fri May 22 16:33:04 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/PKGconf.mak |
Remove CXXFLAGS line now that its redundant |
|
* tests/everything! |
Do a blitz change of all tests - break some of them down into |
different files, add new tests, standardize format, fix bugs, |
update for recent header file changes and much more! |
|
Wed May 20 17:50:04 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* tests/PKGconf.mak: |
interim checkin for different dir structure for Bart |
|
Fri May 15 20:30:46 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* Tidy up some loose ends I forgot: rename src/include directory to |
src/clibincl. And add clibdata.inl and timesupp.hxx in there. |
|
Thu May 14 19:56:32 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* Basically everything has changed in the C library. Files have |
been moved, renamed, deleted and reworked. This is a major |
revision, and now starts from this new baseline rather than doing |
incremental changes. |
|
Fri Apr 17 18:43:02 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/ECCconf.mak: |
added for new build system (actually Bart did this, but didn't |
update this ChangeLog) |
|
Fri Apr 17 15:03:25 1998 Hugo Tyson <hmt@cygnus.co.uk> |
|
* src/stdio/device/sim.cxx: |
Make it build with CYG_EMPTY_STATEMENT; the unadorned one is being |
removed. |
|
Thu Apr 16 00:24:24 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* All source files: |
replace ECCIMP_LIBC_* conditional ifdef with CYGIMP_LIBC_* |
|
* include/eccconf/libc.h: |
improve comments and reorder a bit |
|
Wed Apr 8 14:35:20 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* Makefile.am, src/Makefile.am, tests/Makefile.am, configure.in: |
many changes to integrate build structure from release tree |
|
* src/ctype/Makefile.am, src/ctype/Makefile.in, src/errno/Makefile.am, |
src/errno/Makefile.in, src/stdio/Makefile.am, src/stdio/Makefile.in, |
src/stdio/common/Makefile.am, src/stdio/common/Makefile.in, |
src/stdio/device/Makefile.am, src/stdio/device/Makefile.in, |
src/stdio/output/Makefile.am, src/stdio/output/Makefile.in, |
src/stdio/input/Makefile.am, src/stdio/input/Makefile.in, |
src/stdlib/Makefile.am, src/stdlib/Makefile.in, |
src/string/Makefile.am, src/string/Makefile.in, |
src/support/Makefile.am, src/support/Makefile.in, |
src/time/Makefile.am, src/time/Makefile.in: |
Remove as they are now redundant with above changes |
|
* include/Makefile.am: |
Add to support above changes |
|
* include/eccconf/libc.h: |
Change include file for configuration from kernel to system |
|
* src/include/kerndiag.hxx, src/stdio/device/kerndiag.cxx, |
src/time/clockfn.cxx: |
Change kernel include file to eccconf/kernel.h |
|
* src/include/strngdev.h: |
remove unnecessary kernel include |
|
* Makefile.in, aclocal.m4, configure, src/Makefile.in, |
tests/Makefile.in, include/Makefile.in: |
regenerate |
|
Mon Apr 6 20:55:07 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/abs.cxx, src/stdlib/atoi.cxx, src/stdlib/atol.cxx, |
src/stdlib/div.cxx, src/stdlib/labs.cxx, src/stdlib/ldiv.cxx: |
Separated out functions from stdlib.cxx into separate files |
|
* src/stdlib/stdlib.cxx: |
removed to be replaced by above files |
|
* Makefile.am, src/stdlib/Makefile.am: |
modified to support building above and not building stdlib.cxx |
|
* src/support/tsd.cxx: |
Remove unnecessary header file includes |
|
* Makefile.in, src/stdlib/Makefile.in: |
regenerated |
|
Mon Apr 6 19:19:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/tsd.cxx, include/eccconf/libc.h: |
remove lame hack for tx39 compiler now that its fixed |
|
* src/include/sim.hxx: |
define constants as static to placate compiler |
|
Thu Apr 2 21:01:21 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/ctype/ctype.cxx: |
deleted and separated out into below files |
|
* src/ctype/isalnum.cxx, src/ctype/isalpha.cxx, src/ctype/iscntrl.cxx, |
src/ctype/isdigit.cxx, src/ctype/isgraph.cxx, src/ctype/islower.cxx, |
src/ctype/isprint.cxx, src/ctype/ispunct.cxx, src/ctype/isspace.cxx, |
src/ctype/isupper.cxx, src/ctype/isxdigit.cxx, src/ctype/tolower.cxx, |
src/ctype/toupper.cxx: |
Separated out individual ctype functions from ctype.cxx into separate |
files |
|
* Makefile.am, src/ctype/Makefile.am: |
modified to reflect above deletion/additions |
|
* Makefile.in, src/ctype/Makefile.in: |
regenerated |
|
Thu Apr 2 19:08:26 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strxfrm.cxx: optimise using prefix increments |
|
Thu Apr 2 15:18:15 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strchr.cxx: optimise setting of mask a little |
|
Thu Mar 26 14:07:01 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/support/tsd.cxx: fixed some typos |
|
Thu Mar 26 11:58:47 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/eccconf/libc.h, src/support/tsd.cxx: |
Implement workaround for tx39 compiler bug. |
|
* src/include/strsuppt.hxx: |
remove prototypes for _memcpy() and _memset() as they are now in the |
kernel |
|
Wed Mar 25 18:31:53 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* Makefile.am, src/string/Makefile.am: memcpy() and memset() are |
now in the kernel so remove them from build |
* include/string.h: add a comment to say as much |
* Makefile.in, src/string/Makefile.in: regenerate |
|
Wed Mar 25 15:30:42 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/_exit.cxx, src/include/file_if.inl: |
Change _exit workaround to not cause a compiler optimisation |
problem. Now just references _exit rather than calls it. |
|
Wed Mar 25 14:59:49 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strxfrm.cxx: Fix bug causing tests to fail completely |
for this function |
|
Wed Mar 25 12:55:53 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/include/sim.hxx: add types to constants (oops!) |
* Makefile.am: link src/stdio/device/sim.cxx |
* Makefile.in: regenerated |
|
Wed Mar 25 04:14:30 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/include/file_if.hxx, src/include/file_if.inl, |
src/include/kerndiag.hxx, src/include/sim.hxx, |
src/include/stdio_if.hxx, src/include/strngdev.hxx, |
src/include/tsd.hxx, src/stdio/common/clearerr.cxx, |
src/stdio/common/clearerr.cxx, src/stdio/common/feof.cxx, |
src/stdio/common/ferror.cxx, src/stdio/common/file_if.cxx, |
src/stdio/common/vsprintf.cxx, |
src/stdio/device/kerndiag.cxx, src/stdio/device/sim.cxx, |
src/stdio/device/strngdev.cxx, src/stdio/output/fputc.cxx, |
src/stdio/output/fputs.cxx, src/stdio/output/puts.cxx, |
src/stdio/output/vfnprintf.cxx, src/support/tsd.cxx: |
Modified to support buffered reads including renaming |
_EccInternalFileStruct to __EccStdioStream which is what affects |
most of these files |
* src/include/file_if.inl, src/stdio/common/file_if.cxx: added for |
the above reason |
* src/stdio/common/sscanf.cxx, src/stdio/input/vfscanf.cxx, |
src/stdio/input/Makefile.am: added to provide sscanf() functionality |
* include/ctype.h, include/stdio.h, include/stdlib.h, |
include/string.h, include/eccconf/libc.h, src/ctype/ctype.cxx, |
src/stdlib/stdlib.cxx, src/string/strcoll.cxx, |
src/stdio/common/stdio.cxx: |
rename *_INLINES macros with prefix CYG rather than ECC |
* include/errno.h, src/errno/errno.cxx, src/errno/strerror.cxx: |
rename ErrNo to _ErrNo and add EAGAIN and EWOULDBLOCK error codes |
* configure.in, Makefile.am, src/stdio/Makefile.am, |
src/stdio/input/Makefile.am: add support for building |
file_if.cxx sscanf.cxx and vfscanf.cxx |
* src/stdio/Makefile.in, src/stdio/common/Makefile.in, |
src/stdio/input/Makefile.in, configure, Makefile.in: regenerated |
|
Tue Mar 24 19:51:40 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/time/clockfn.cxx, src/time/clock.cxx: |
Renamed clock.cxx to clockfn.cxx (preserving CVS history) |
* Makefile.am, src/time/Makefile.am: updated to reflect name change |
* Makefile.in, src/time/Makefile.in: regenerated |
|
Tue Mar 24 16:28:06 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/ctype.inl: Swap around definitions to get right order so |
inlining works |
|
Tue Mar 24 14:43:05 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/ctype.h, include/stdio.h, include/stdlib.h, include/string.h: |
modify to only conditionally include inlines |
* src/ctype/ctype.cxx, src/stdio/common/stdio.cxx, |
src/stdlib/stdlib.cxx, src/string/strcoll.cxx, |
src/ctype/Makefile.am: Add to provide real linkable alternatives |
to inline functions |
* Makefile.am, configure.in, src/Makefile.am, |
src/stdio/common/Makefile.am, src/stdlib/Makefile.am, |
src/string/Makefile.am: modified to support previous additions |
* include/eccconf/libc.h: redefine inline macro to add extern inline, |
and add conditional defines for inline functions. Also rename |
space vs. speed macro to have CYG instead of ECC prefix |
* include/stdio.inl: fix comment typo |
* src/stdlib/qsort.cxx: fix to define inline functions properly |
* src/string/memchr.cxx, src/string/memcmp.cxx, src/string/memcpy.cxx, |
src/string/memset.cxx, src/string/strcat.cxx, src/string/strchr.cxx, |
src/string/strcmp.cxx, src/string/strcpy.cxx, src/string/strlen.cxx, |
src/string/strncat.cxx, src/string/strncmp.cxx, |
src/string/strncpy.cxx |
* Makefile.in, configure, src/Makefile.in, src/ctype/Makefile.in, |
src/stdio/common/Makefile.in, src/stdlib/Makefile.in, |
src/string/Makefile.in: regenerate |
|
|
Mon Mar 23 19:19:49 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/stdlib/_exit.cxx: added to support temporary _exit |
* include/stdlib.h, include/stdlib.inl: added support for _exit and |
added abs(), labs(), div() and ldiv() functions |
* src/include/file_if.hxx: added support for _exit kludge |
* src/stdlib/qsort.cxx: Added Berkeley copyright message |
* src/time/clock.cxx: Include correct kernel config header as |
CYG_CONFIGURATION rather than <config.h> |
* Makefile.am src/stdlib/Makefile.am: added support for _exit |
* Makefile.in, src/stdlib/Makefile.in: regenerated |
|
Mon Mar 23 14:41:07 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* Replace ECCPKG_ANSI_LIBC with CYGPKG_ANSI_LIBC in all source files |
|
Mon Mar 23 14:28:44 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/string.inl: add file to provide strcoll() |
* include/string.h: include string.inl |
* ctype.h: include ctype.inl (oops!) |
* include/stdlib.h: include stdlib.inl (oops!) |
|
Mon Mar 23 13:30:38 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/ctype.h, include/ctype.inl: added to provide ANSI ctype |
functionality |
* include/stdlib.h, include/stdlib.inl, src/include/stdlibbsp.hxx, |
src/stdlib/Makefile.am, src/stdlib/bsearch.cxx, |
src/stdlib/qsort.cxx, src/stdlib/rand.cxx, src/stdlib/srand.cxx, |
src/stdlib/strtol.cxx, src/stdlib/strtoul.cxx: Added to provide |
many stdlib functions |
* src/include/tsd.hxx: modified to support rand() random number |
seed, and added some comments |
* configure.in, Makefile.am, src/Makefile.am: modified to support |
addition of above new sources |
* include/eccconf/libc.h: Add extra helpful comments, and #include |
kernel config file |
* src/time/clock.cxx: #include clock.inl and fix to call |
get_resolution() properly now |
* Makefile.in, configure, src/Makefile.in, src/errno/Makefile.in, |
src/stdio/Makefile.in, src/stdio/common/Makefile.in, |
src/stdio/device/Makefile.in, src/stdio/output/Makefile.in, |
src/stdlib/Makefile.in, src/strings/Makefile.in, |
src/support/Makefile.in, src/time/Makefile.in, |
tests/Makefile.in: regenerated |
|
|
Sun Mar 22 21:29:25 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* include/time.h, src/include/timesupp.hxx, src/time/clock.cxx, |
src/time/Makefile.am: added to provide clock() function |
* src/Makefile.am: modified to try to build in src/time directory |
* include/eccconf/libc.h: added and is now the main configuration |
file for this package |
* acconfig.h, include/libcconf.h.in, include/stamp-h.in: removed |
due to usage of libc.h above instead |
* Almost all *.h, *.hxx and *.cxx: replaced LIBC_CONFIG_HEADER |
defined include with simple <pkgconf/libc.h> |
* configure.in: remove AM_CONFIG_HEADER of libcconf.h and |
LIBC_CONFIG_HEADER definition. Also remove usage of builtin |
memcpy() etc. from gcc, and generate src/time/Makefile |
* Makefile.am: link in src/time/clock.o |
* src/include/file_if.hxx, src/include/sim.hxx: use config header |
to decide whether C library is to be used |
* Makefile.in, aclocal.m4, configure, src/Makefile.in: regenerated |
|
Fri Mar 20 18:08:10 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* src/string/strxfrm.cxx: Fixed bug with ignoring terminating NULL |
|
1998-03-20 Chris Tarpy <ctarpy@bhaji.cygnus.co.uk> |
|
* configure: - regenerated |
* Makefile.am: - Support added for libc testcases |
* Makefile.in: regenerated |
* configure.in: set c compiler, descend test dir |
* tests/Makefile.in: added |
* tests/Makefile.am: added |
* tests/tcdiag.cxx : added |
|
|
Thu Mar 19 11:41:56 1998 Jonathan Larmour <jlarmour@cygnus.co.uk> |
|
* Initial check-in of everything |
|
//=========================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//=========================================================================== |
/v2_0/cdl/time.cdl
0,0 → 1,335
# ==================================================================== |
# |
# time.cdl |
# |
# C library time related configuration data |
# |
# ==================================================================== |
#####ECOSGPLCOPYRIGHTBEGIN#### |
## ------------------------------------------- |
## This file is part of eCos, the Embedded Configurable Operating System. |
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
## |
## eCos is free software; you can redistribute it and/or modify it under |
## the terms of the GNU General Public License as published by the Free |
## Software Foundation; either version 2 or (at your option) any later version. |
## |
## eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
## WARRANTY; without even the implied warranty of MERCHANTABILITY or |
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
## for more details. |
## |
## You should have received a copy of the GNU General Public License along |
## with eCos; if not, write to the Free Software Foundation, Inc., |
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
## |
## As a special exception, if other files instantiate templates or use macros |
## or inline functions from this file, or you compile this file and link it |
## with other works to produce a work based on this file, this file does not |
## by itself cause the resulting work to be covered by the GNU General Public |
## License. However the source code for this file must still be made available |
## in accordance with section (3) of the GNU General Public License. |
## |
## This exception does not invalidate any other reasons why a work based on |
## this file might be covered by the GNU General Public License. |
## |
## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
## at http://sources.redhat.com/ecos/ecos-license/ |
## ------------------------------------------- |
#####ECOSGPLCOPYRIGHTEND#### |
# ==================================================================== |
######DESCRIPTIONBEGIN#### |
# |
# Author(s): jlarmour |
# Contributors: |
# Date: 2000-04-14 |
# |
#####DESCRIPTIONEND#### |
# |
# ==================================================================== |
|
cdl_package CYGPKG_LIBC_TIME { |
display "ISO C library date and time functions" |
description " |
This package provides time functions specified by the |
ISO C standard - ISO/IEC 9899:1990." |
doc ref/libc.html |
include_dir cyg/libc/time |
parent CYGPKG_LIBC |
implements CYGINT_ISO_C_TIME_TYPES |
implements CYGINT_ISO_C_CLOCK_FUNCS |
requires { CYGBLD_ISO_C_TIME_TYPES_HEADER == "<cyg/libc/time/time.h>" } |
requires { CYGBLD_ISO_C_CLOCK_FUNCS_HEADER == \ |
"<cyg/libc/time/time.h>" } |
requires CYGPKG_ISOINFRA |
requires CYGINT_ISO_DIV |
requires CYGINT_ISO_ABS |
|
compile asctime.cxx clock.cxx \ |
ctime.cxx difftime.cxx \ |
gmtime.cxx localtime.cxx \ |
mktime.cxx settime.cxx \ |
strftime.cxx time.cxx \ |
timeutil.cxx |
|
|
# ==================================================================== |
|
cdl_option CYGSEM_LIBC_TIME_CLOCK_WORKING { |
display "Working clock() function" |
requires CYGFUN_KERNEL_THREADS_TIMER |
requires CYGVAR_KERNEL_COUNTERS_CLOCK |
default_value 1 |
description " |
This option controls whether clock() will |
actually try and determine the process time |
usage. With this option disabled, clock() does |
not disappear, but will permanently return |
(clock_t)-1 as mandated by the ISO C standard." |
} |
|
cdl_option CYGSEM_LIBC_TIME_TIME_WORKING { |
display "Working time() function" |
requires CYGPKG_IO_WALLCLOCK |
default_value 1 |
description " |
This option controls whether time() will |
actually try and determine the current calendar |
time. With this option disabled, time() does |
not disappear, but will permanently return |
(time_t)-1 as mandated by the ISO C standard." |
} |
|
cdl_option CYGSEM_LIBC_TIME_SETTIME_WORKING { |
display "Working cyg_libc_time_settime() function" |
requires CYGPKG_IO_WALLCLOCK |
default_value 1 |
description " |
This option controls whether cyg_libc_time_settime() |
will actually try and set the current calendar |
time. With this option disabled, |
cyg_libc_time_settime() does not disappear, but |
will permanently return an error." |
} |
|
cdl_option CYGFUN_LIBC_TIME_POSIX { |
display "POSIX time functions" |
default_value 1 |
requires CYGFUN_LIBC_STRING_BSD_FUNCS |
compile asctime_r.cxx ctime_r.cxx gmtime_r.cxx \ |
localtime_r.cxx strptime.cxx |
description " |
Enabling this option allows the use of the |
following functions defined in POSIX 1003.1: |
asctime_r(), ctime_r(), gmtime_r(), strptime(), and |
localtime_r()." |
} |
|
cdl_option CYGFUN_LIBC_TIME_SUS_EXTNS { |
display "Single UNIX extensions" |
default_value 0 |
description " |
Enabling this option allows the use of |
certain additional conversion specifiers |
in the strftime function." |
} |
|
cdl_component CYGPKG_LIBC_TIME_ZONES { |
display "Time zone offsets" |
flavor none |
description " |
These options control the default STandarD (STD) |
and Daylight Savings Time (DST) |
time offsets so that dates can be set correctly |
for the local environment." |
|
cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_STATE { |
display "Default Daylight Savings Time state" |
flavor data |
legal_values -- -1 to 1 |
default_value -- -1 |
description " |
This option controls whether the initial |
time environment is set up as STD, DST or |
unknown. Use the value 1 for DST, 0 for STD, |
and (-1) for unknown. This can also be set at |
runtime using the cyg_libc_time_setdst() |
function." |
} |
|
cdl_option CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET { |
display "Default Standard Time offset" |
flavor data |
legal_values -- -90000 to 90000 |
default_value -- 0 |
description " |
This option controls the offset from UTC in |
seconds when in local Standard Time. This |
value can be positive or negative. It |
can also be set at run time using the |
cyg_libc_time_setzoneoffsets() function." |
} |
|
cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET { |
display "Default Daylight Savings Time offset" |
flavor data |
legal_values -- -90000 to 90000 |
default_value -- 3600 |
description " |
This option controls the offset from UTC in |
seconds when in local Daylight Savings Time. This |
value can be positive or negative. It |
can also be set at run time using the |
cyg_libc_time_setzoneoffsets() function." |
} |
} |
|
cdl_component CYGPKG_LIBC_TIME_INLINES { |
display "Inline functions" |
flavor none |
description " |
These options control whether certain functions |
are available in inline form. This may lead to |
faster code at the expense of code space. But for |
some functions, or some functions with constant |
arguments, it may in fact lead to smaller code." |
|
cdl_option CYGIMP_LIBC_TIME_ASCTIME_INLINE { |
display "asctime()" |
default_value 1 |
description " |
Allow the asctime() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_CTIME_INLINE { |
display "ctime()" |
default_value 1 |
description " |
Allow the ctime() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_DIFFTIME_INLINE { |
display "difftime()" |
default_value 1 |
description " |
Allow the difftime() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_GMTIME_INLINE { |
display "gmtime()" |
default_value 1 |
description " |
Allow the gmtime() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_LOCALTIME_INLINE { |
display "localtime()" |
default_value 1 |
description " |
Allow the localtime() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_MKTIME_INLINE { |
display "mktime()" |
default_value 1 |
description " |
Allow the mktime() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_ASCTIME_R_INLINE { |
display "asctime_r()" |
requires CYGFUN_LIBC_TIME_POSIX |
default_value 1 |
description " |
Allow the asctime_r() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_CTIME_R_INLINE { |
display "ctime_r()" |
requires CYGFUN_LIBC_TIME_POSIX |
default_value 1 |
description " |
Allow the ctime_r() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_GMTIME_R_INLINE { |
display "gmtime_r()" |
requires CYGFUN_LIBC_TIME_POSIX |
default_value 1 |
description " |
Allow the gmtime_r() function to be inlined" |
} |
|
cdl_option CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE { |
display "localtime_r()" |
requires CYGFUN_LIBC_TIME_POSIX |
default_value 1 |
description " |
Allow the localtime_r() function to be inlined" |
} |
} |
# FIXME: Also want "inline all" and "don't inline any" options which requires |
# (or not) all the above, but |
# if we do that then we will require the ones that also depend on |
# CYGFUN_LIBC_TIME_POSIX :-( Wait for full CDL to fix this |
|
cdl_option CYGNUM_LIBC_TIME_CLOCK_TRACE_LEVEL { |
display "clock() tracing level" |
flavor data |
legal_values 0 to 1 |
default_value 0 |
description " |
Trace verbosity level for debugging the clock() |
function. Increase this value to get |
additional trace output when tracing is enabled." |
} |
|
cdl_component CYGPKG_LIBC_TIME_OPTIONS { |
display "C library time functions build options" |
flavor none |
no_define |
description " |
Package specific build options including control over |
compiler flags used only in building this package, |
and details of which tests are built." |
|
|
cdl_option CYGPKG_LIBC_TIME_CFLAGS_ADD { |
display "Additional compiler flags" |
flavor data |
no_define |
default_value { "-Wno-format" } |
description " |
This option modifies the set of compiler flags for |
building the C library. These flags are used in addition |
to the set of global flags." |
} |
|
cdl_option CYGPKG_LIBC_TIME_CFLAGS_REMOVE { |
display "Suppressed compiler flags" |
flavor data |
no_define |
default_value { "" } |
description " |
This option modifies the set of compiler flags for |
building the C library. These flags are removed from |
the set of global flags if present." |
} |
|
cdl_option CYGPKG_LIBC_TIME_TESTS { |
display "C library time and date function tests" |
flavor data |
no_define |
calculated { |
"tests/asctime tests/clock tests/ctime tests/gmtime tests/localtime tests/mktime tests/strftime tests/time " |
. (CYGFUN_LIBC_TIME_POSIX ? "tests/strptime" : "") |
} |
description " |
This option specifies the set of tests for the C library |
time and date functions." |
} |
} |
} |
|
# ==================================================================== |
# EOF time.cdl |
/v2_0/tests/time.c
0,0 → 1,123
//================================================================= |
// |
// time.c |
// |
// Testcase for C library time() |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-03-05 |
// Description: Contains testcode for C library time() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // Configuration header |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// CONSTANTS |
|
// This defines how many loops before we decide that |
// time() doesn't work |
#define MAX_TIMEOUT 50000000 |
|
|
// FUNCTIONS |
|
int |
main(int argc, char *argv[]) |
{ |
time_t t1, t2; |
unsigned long ctr; |
|
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"time() function"); |
|
t1 = time(&t2); |
|
CYG_TEST_PASS_FAIL(t1==t2, "time() return value == argument"); |
|
if (t1 == (time_t)-1) // unimplemented is just as valid |
{ |
#ifndef CYGSEM_LIBC_TIME_TIME_WORKING |
CYG_TEST_PASS_FINISH( "time() returns -1, meaning unimplemented"); |
#else |
CYG_TEST_FAIL("time() returned -1 unnecessarily"); |
#endif |
} // if |
|
// First wait for a clock tick |
|
for (ctr = 0; ctr<MAX_TIMEOUT; ctr++) { |
if ((t2=time(NULL)) > t1) |
break; // Hit the next time pulse |
} |
CYG_TEST_PASS_FAIL( ctr< MAX_TIMEOUT, "time()'s state changes"); |
|
#ifdef CYGSEM_LIBC_TIME_SETTIME_WORKING |
CYG_TEST_PASS_FAIL(cyg_libc_time_settime(0)==0, "Set time to 0"); |
|
t1 = time(NULL); |
|
// give it a small amount of tolerance |
CYG_TEST_PASS_FAIL(t1 < 3, "t1 remembered setting"); |
|
CYG_TEST_PASS_FAIL(cyg_libc_time_settime(1000)==0, "Set time to 1000"); |
|
// give it a small amount of tolerance |
CYG_TEST_PASS_FAIL(t1 < 1003, "t1 remembered setting"); |
|
#else // ! CYGSEM_LIBC_TIME_SETTIME_WORKING |
CYG_TEST_PASS_FAIL(cyg_libc_time_settime(0)!=0, |
"Set time expected fail"); |
#endif // CYGSEM_LIBC_TIME_SETTIME_WORKING |
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"time() function"); |
} // main() |
|
// EOF time.c |
/v2_0/tests/ctime.c
0,0 → 1,141
//================================================================= |
// |
// ctime.c |
// |
// Testcase for C library ctime() function |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-03-05 |
// Description: Contains testcode for C library ctime() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// HOW TO START TESTS |
|
# define START_TEST( test ) test(0) |
|
// FUNCTIONS |
|
static int my_strcmp(const char *s1, const char *s2) |
{ |
for ( ; *s1 == *s2 ; s1++,s2++ ) |
{ |
if ( *s1 == '\0' ) |
break; |
} // for |
|
return (*s1 - *s2); |
} // my_strcmp() |
|
|
static void |
test( CYG_ADDRWORD data ) |
{ |
time_t t; |
char *ret; |
|
// make this predictable - independent of the user option |
cyg_libc_time_setzoneoffsets(0, 3600); |
cyg_libc_time_setdst( CYG_LIBC_TIME_DSTOFF ); |
|
t = (time_t)130710184; |
|
ret = ctime(&t); |
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Thu Feb 21 20:23:04 1974\n"), |
"ctime test #1"); |
|
t = (time_t)946689894; |
|
ret = ctime(&t); |
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Sat Jan 01 01:24:54 2000\n"), |
"ctime Y2K test #2"); |
|
cyg_libc_time_setdst( CYG_LIBC_TIME_DSTON ); |
|
t = (time_t)-113186106; |
|
ret = ctime(&t); |
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Tue Jun 01 00:24:54 1966\n"), |
"ctime test #3"); |
|
#ifdef CYGFUN_LIBC_TIME_POSIX |
cyg_libc_time_setdst( CYG_LIBC_TIME_DSTOFF ); |
|
t = (time_t)915510061; |
|
{ |
char ret2[26]; |
|
ret = ctime_r(&t, ret2); |
CYG_TEST_PASS_FAIL(!my_strcmp(ret2, "Tue Jan 05 04:21:01 1999\n"), |
"ctime_r test #1"); |
} |
#endif |
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"ctime() function"); |
} // test() |
|
|
int |
main(int argc, char *argv[]) |
{ |
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"ctime() function"); |
|
START_TEST( test ); |
|
CYG_TEST_NA("Testing is not applicable to this configuration"); |
|
} // main() |
|
// EOF ctime.c |
/v2_0/tests/gmtime.c
0,0 → 1,205
//================================================================= |
// |
// gmtime.c |
// |
// Testcase for C library gmtime() function |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: |
// Date: 1999-03-05 |
// Description: Contains testcode for C library gmtime() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// HOW TO START TESTS |
|
# define START_TEST( test ) test(0) |
|
// FUNCTIONS |
|
static int |
cmp_structtm(struct tm *tm1, struct tm *tm2) |
{ |
if ((tm1->tm_sec != tm2->tm_sec) || |
(tm1->tm_min != tm2->tm_min) || |
(tm1->tm_hour != tm2->tm_hour) || |
(tm1->tm_mday != tm2->tm_mday) || |
(tm1->tm_mon != tm2->tm_mon) || |
(tm1->tm_year != tm2->tm_year) || |
(tm1->tm_wday != tm2->tm_wday) || |
(tm1->tm_yday != tm2->tm_yday) || |
(tm1->tm_isdst != tm2->tm_isdst)) |
return 1; |
else |
return 0; |
} |
|
static void |
test( CYG_ADDRWORD data ) |
{ |
struct tm tm1, *tm2; |
time_t t; |
|
// make this predictable - independent of the user option |
cyg_libc_time_setzoneoffsets(0, 3600); |
cyg_libc_time_setdst( CYG_LIBC_TIME_DSTOFF ); |
|
tm1.tm_sec = 4; |
tm1.tm_min = 23; |
tm1.tm_hour = 20; |
tm1.tm_mday = 21; |
tm1.tm_mon = 1; |
tm1.tm_year = 74; |
tm1.tm_wday = 4; |
tm1.tm_yday = 51; |
tm1.tm_isdst = 0; |
|
t = (time_t)130710184; |
|
tm2 = gmtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "gmtime test #1"); |
|
|
tm1.tm_sec = 1; |
tm1.tm_min = 21; |
tm1.tm_hour = 4; |
tm1.tm_mday = 5; |
tm1.tm_mon = 0; |
tm1.tm_wday = 2; |
tm1.tm_yday = 4; |
tm1.tm_year = 99; |
tm1.tm_isdst = 0; |
|
t = (time_t)915510061; |
|
tm2 = gmtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "gmtime test #2"); |
|
tm1.tm_sec = 54; |
tm1.tm_min = 24; |
tm1.tm_hour = 1; |
tm1.tm_mday = 1; |
tm1.tm_mon = 0; |
tm1.tm_year = 100; |
tm1.tm_wday = 6; |
tm1.tm_yday = 0; |
tm1.tm_isdst = 0; |
|
t = (time_t)946689894; |
|
tm2 = gmtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "gmtime Y2K test #3"); |
|
cyg_libc_time_setdst( CYG_LIBC_TIME_DSTON ); |
|
tm1.tm_sec = 54; |
tm1.tm_min = 24; |
tm1.tm_hour = 23; |
tm1.tm_mday = 31; |
tm1.tm_mon = 4; |
tm1.tm_wday = 2; |
tm1.tm_yday = 150; |
tm1.tm_year = 66; |
tm1.tm_isdst = 0; |
|
t = (time_t)-113186106; |
|
tm2 = gmtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "gmtime test #4"); |
|
tm1.tm_sec = 59; |
tm1.tm_min = 59; |
tm1.tm_hour = 23; |
tm1.tm_mday = 31; |
tm1.tm_mon = 4; |
tm1.tm_wday = 3; |
tm1.tm_yday = 151; |
tm1.tm_year = 100; |
tm1.tm_isdst = 0; |
|
t = (time_t)959817599; |
|
tm2 = gmtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "gmtime test #5"); |
|
tm1.tm_sec = 0; |
tm1.tm_min = 0; |
tm1.tm_hour = 0; |
tm1.tm_mday = 1; |
tm1.tm_mon = 5; |
tm1.tm_wday = 4; |
tm1.tm_yday = 152; |
tm1.tm_year = 100; |
tm1.tm_isdst = 0; |
|
t = (time_t)959817600; |
|
tm2 = gmtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "gmtime test #6"); |
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"gmtime() function"); |
} // test() |
|
|
int |
main(int argc, char *argv[]) |
{ |
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"gmtime() function"); |
|
START_TEST( test ); |
|
CYG_TEST_NA("Testing is not applicable to this configuration"); |
|
} // main() |
|
// EOF gmtime.c |
/v2_0/tests/asctime.c
0,0 → 1,205
//================================================================= |
// |
// asctime.c |
// |
// Testcase for C library asctime() function |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: |
// Date: 1999-03-05 |
// Description: Contains testcode for C library asctime() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// HOW TO START TESTS |
|
# define START_TEST( test ) test(0) |
|
// FUNCTIONS |
|
|
static int my_strcmp(const char *s1, const char *s2) |
{ |
for ( ; *s1 == *s2 ; s1++,s2++ ) |
{ |
if ( *s1 == '\0' ) |
break; |
} // for |
|
return (*s1 - *s2); |
} // my_strcmp() |
|
|
static void |
test( CYG_ADDRWORD data ) |
{ |
struct tm tm1; |
char *ret; |
|
tm1.tm_sec = 4; |
tm1.tm_min = 23; |
tm1.tm_hour = 20; |
tm1.tm_mday = 21; |
tm1.tm_mon = 1; |
tm1.tm_year = 74; |
tm1.tm_wday = 4; |
tm1.tm_yday = 51; |
tm1.tm_isdst = 0; |
|
ret = asctime(&tm1); |
|
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Thu Feb 21 20:23:04 1974\n"), |
"asctime test #1"); |
tm1.tm_sec = 3; |
tm1.tm_min = 51; |
tm1.tm_hour = 5; |
tm1.tm_mday = 2; |
tm1.tm_mon = 11; |
tm1.tm_year = 68; |
tm1.tm_wday = 1; |
tm1.tm_yday = 336; |
tm1.tm_isdst = 0; |
|
ret = asctime(&tm1); |
|
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Mon Dec 02 05:51:03 1968\n"), |
"asctime test #2"); |
|
// make this predictable - independent of the user option |
cyg_libc_time_setzoneoffsets(0, 3600); |
|
tm1.tm_sec = 3; |
tm1.tm_min = 51; |
tm1.tm_hour = 5; |
tm1.tm_mday = 2; |
tm1.tm_mon = 6; |
tm1.tm_year = 68; |
tm1.tm_wday = 2; |
tm1.tm_yday = 183; |
tm1.tm_isdst = 1; |
|
ret = asctime(&tm1); |
|
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Tue Jul 02 05:51:03 1968\n"), |
"asctime test #3"); |
|
tm1.tm_sec = 0; |
tm1.tm_min = 0; |
tm1.tm_hour = 0; |
tm1.tm_mday = 1; |
tm1.tm_mon = 0; |
tm1.tm_year = 0; |
tm1.tm_wday = 1; |
tm1.tm_yday = 0; |
tm1.tm_isdst = 0; |
|
ret = asctime(&tm1); |
|
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Mon Jan 01 00:00:00 1900\n"), |
"asctime test #4"); |
|
tm1.tm_sec = 0; |
tm1.tm_min = 0; |
tm1.tm_hour = 0; |
tm1.tm_mday = 1; |
tm1.tm_mon = 0; |
tm1.tm_year = 100; |
tm1.tm_wday = 6; |
tm1.tm_yday = 0; |
tm1.tm_isdst = 0; |
|
ret = asctime(&tm1); |
|
CYG_TEST_PASS_FAIL(!my_strcmp(ret, "Sat Jan 01 00:00:00 2000\n"), |
"asctime Y2K test #5"); |
|
#ifdef CYGFUN_LIBC_TIME_POSIX |
{ |
char ret2[100]; |
|
tm1.tm_sec = 3; |
tm1.tm_min = 51; |
tm1.tm_hour = 5; |
tm1.tm_mday = 2; |
tm1.tm_mon = 11; |
tm1.tm_year = 68; |
tm1.tm_wday = 1; |
tm1.tm_yday = 336; |
tm1.tm_isdst = 0; |
|
ret = asctime_r(&tm1, ret2); |
|
CYG_TEST_PASS_FAIL((ret==ret2) && |
!my_strcmp(ret, "Mon Dec 02 05:51:03 1968\n"), |
"asctime_r test #1"); |
|
} |
#endif |
|
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"asctime() function"); |
} // test() |
|
|
int |
main(int argc, char *argv[]) |
{ |
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"asctime() function"); |
|
START_TEST( test ); |
|
CYG_TEST_NA("Testing is not applicable to this configuration"); |
|
} // main() |
|
// EOF asctime.c |
/v2_0/tests/mktime.c
0,0 → 1,177
//================================================================= |
// |
// mktime.c |
// |
// Testcase for C library mktime() function |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-03-05 |
// Description: Contains testcode for C library mktime() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// HOW TO START TESTS |
|
# define START_TEST( test ) test(0) |
|
// FUNCTIONS |
|
static int |
cmp_structtm(struct tm *tm1, struct tm *tm2) |
{ |
if ((tm1->tm_sec != tm2->tm_sec) || |
(tm1->tm_min != tm2->tm_min) || |
(tm1->tm_hour != tm2->tm_hour) || |
(tm1->tm_mday != tm2->tm_mday) || |
(tm1->tm_mon != tm2->tm_mon) || |
(tm1->tm_year != tm2->tm_year) || |
(tm1->tm_wday != tm2->tm_wday) || |
(tm1->tm_yday != tm2->tm_yday) || |
(tm1->tm_isdst != tm2->tm_isdst)) |
return 1; |
else |
return 0; |
} |
|
static void |
test( CYG_ADDRWORD data ) |
{ |
struct tm tm1, tm2; |
time_t t; |
|
// make this predictable - independent of the user option |
cyg_libc_time_setzoneoffsets(0, 3600); |
|
tm1.tm_sec = 4; |
tm1.tm_min = 23; |
tm1.tm_hour = 20; |
tm1.tm_mday = 21; |
tm1.tm_mon = 1; |
tm1.tm_year = 74; |
tm1.tm_isdst = 0; |
|
tm2 = tm1; |
tm2.tm_wday = 4; |
tm2.tm_yday = 51; |
|
t = mktime(&tm1); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, &tm2), "mktime test #1"); |
CYG_TEST_PASS_FAIL(t == 130710184, "mktime return test #1"); |
|
tm1.tm_sec = 61; |
tm1.tm_min = 20; |
tm1.tm_hour = 4; |
tm1.tm_mday = 5; |
tm1.tm_mon = 0; |
tm1.tm_year = 99; |
tm1.tm_isdst = 0; |
|
tm2 = tm1; |
tm2.tm_sec=1; |
tm2.tm_min = 21; |
tm2.tm_wday = 2; |
tm2.tm_yday = 4; |
|
t = mktime(&tm1); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, &tm2), "mktime test #2"); |
CYG_TEST_PASS_FAIL(t == 915510061, "mktime return test #2"); |
|
tm1.tm_sec = 54; |
tm1.tm_min = 24; |
tm1.tm_hour = 1; |
tm1.tm_mday = 1; |
tm1.tm_mon = 0; |
tm1.tm_year = 100; |
tm1.tm_isdst = 0; |
|
tm2 = tm1; |
tm2.tm_wday = 6; |
tm2.tm_yday = 0; |
|
t = mktime(&tm1); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, &tm2), "mktime Y2K test #3"); |
CYG_TEST_PASS_FAIL(t == 946689894, "mktime Y2K return test #3"); |
|
tm1.tm_sec = 54; |
tm1.tm_min = 24; |
tm1.tm_hour = 23; |
tm1.tm_mday = 31; |
tm1.tm_mon = 4; |
tm1.tm_year = 66; |
tm1.tm_isdst = 1; |
|
tm2 = tm1; |
tm2.tm_wday = 2; |
tm2.tm_yday = 150; |
|
t = mktime(&tm1); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, &tm2), "mktime test #4"); |
CYG_TEST_PASS_FAIL(t == -113186106, "mktime return test #4"); |
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"mktime() function"); |
} // test() |
|
|
int |
main(int argc, char *argv[]) |
{ |
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"mktime() function"); |
|
START_TEST( test ); |
|
CYG_TEST_NA("Testing is not applicable to this configuration"); |
|
} // main() |
|
// EOF mktime.c |
/v2_0/tests/strptime.c
0,0 → 1,118
//================================================================= |
// |
// strptime.c |
// |
// Testcase for C library strptime() function |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// Copyright (C) 2003 Gary Thomas |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: gthomas |
// Date: 1999-03-05 |
// Description: Contains testcode for C library strptime() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// HOW TO START TESTS |
|
# define START_TEST( test ) test(0) |
|
// FUNCTIONS |
|
static int my_strcmp(const char *s1, const char *s2) |
{ |
for ( ; *s1 == *s2 ; s1++,s2++ ) |
{ |
if ( *s1 == '\0' ) |
break; |
} // for |
|
return (*s1 - *s2); |
} // my_strcmp() |
|
static void |
test( CYG_ADDRWORD data ) |
{ |
struct tm tm1; |
char s[1000], *sp, *dp, *fp; |
size_t size; |
|
dp = "Fri Jan 24 08:33:14 2003"; |
fp = "%a %b %d %H:%M:%S %Y"; |
sp = strptime(dp, fp, &tm1); |
CYG_TEST_PASS_FAIL(((sp!=NULL) && (*sp=='\0')), "strptime test #1"); |
size = strftime(s, sizeof(s), fp, &tm1); |
CYG_TEST_PASS_FAIL(((size==strlen(dp)) && (my_strcmp(s, dp) == 0)), "strptime test #2"); |
|
dp = "Friday January 24 08:33:14 2003"; |
fp = "%A %B %d %H:%M:%S %Y"; |
sp = strptime(dp, fp, &tm1); |
CYG_TEST_PASS_FAIL(((sp!=NULL) && (*sp=='\0')), "strptime test #3"); |
size = strftime(s, sizeof(s), fp, &tm1); |
CYG_TEST_PASS_FAIL(((size==strlen(dp)) && (my_strcmp(s, dp) == 0)), "strptime test #4"); |
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"strptime() function"); |
} // test() |
|
|
int |
main(int argc, char *argv[]) |
{ |
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"strptime() function"); |
|
START_TEST( test ); |
|
CYG_TEST_NA("Testing is not applicable to this configuration"); |
|
} // main() |
|
// EOF strptime.c |
/v2_0/tests/localtime.c
0,0 → 1,175
//================================================================= |
// |
// localtime.c |
// |
// Testcase for C library localtime() function |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-03-05 |
// Description: Contains testcode for C library localtime() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// HOW TO START TESTS |
|
# define START_TEST( test ) test(0) |
|
// FUNCTIONS |
|
static int |
cmp_structtm(struct tm *tm1, struct tm *tm2) |
{ |
if ((tm1->tm_sec != tm2->tm_sec) || |
(tm1->tm_min != tm2->tm_min) || |
(tm1->tm_hour != tm2->tm_hour) || |
(tm1->tm_mday != tm2->tm_mday) || |
(tm1->tm_mon != tm2->tm_mon) || |
(tm1->tm_year != tm2->tm_year) || |
(tm1->tm_wday != tm2->tm_wday) || |
(tm1->tm_yday != tm2->tm_yday) || |
(tm1->tm_isdst != tm2->tm_isdst)) |
return 1; |
else |
return 0; |
} |
|
static void |
test( CYG_ADDRWORD data ) |
{ |
struct tm tm1, *tm2; |
time_t t; |
|
// make this predictable - independent of the user option |
cyg_libc_time_setzoneoffsets(0, 3600); |
cyg_libc_time_setdst( CYG_LIBC_TIME_DSTOFF ); |
|
tm1.tm_sec = 4; |
tm1.tm_min = 23; |
tm1.tm_hour = 20; |
tm1.tm_mday = 21; |
tm1.tm_mon = 1; |
tm1.tm_year = 74; |
tm1.tm_wday = 4; |
tm1.tm_yday = 51; |
tm1.tm_isdst = 0; |
|
t = (time_t)130710184; |
|
tm2 = localtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "localtime test #1"); |
|
|
tm1.tm_sec = 1; |
tm1.tm_min = 21; |
tm1.tm_hour = 4; |
tm1.tm_mday = 5; |
tm1.tm_mon = 0; |
tm1.tm_wday = 2; |
tm1.tm_yday = 4; |
tm1.tm_year = 99; |
tm1.tm_isdst = 0; |
|
t = (time_t)915510061; |
|
tm2 = localtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "localtime test #2"); |
|
tm1.tm_sec = 54; |
tm1.tm_min = 24; |
tm1.tm_hour = 1; |
tm1.tm_mday = 1; |
tm1.tm_mon = 0; |
tm1.tm_year = 100; |
tm1.tm_wday = 6; |
tm1.tm_yday = 0; |
tm1.tm_isdst = 0; |
|
t = (time_t)946689894; |
|
tm2 = localtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "localtime Y2K test #3"); |
|
cyg_libc_time_setdst( CYG_LIBC_TIME_DSTON ); |
|
tm1.tm_sec = 54; |
tm1.tm_min = 24; |
tm1.tm_hour = 0; |
tm1.tm_mday = 1; |
tm1.tm_mon = 5; |
tm1.tm_wday = 2; |
tm1.tm_yday = 150; |
tm1.tm_year = 66; |
tm1.tm_isdst = 1; |
|
t = (time_t)-113186106; |
|
tm2 = localtime(&t); |
CYG_TEST_PASS_FAIL(!cmp_structtm(&tm1, tm2), "localtime test #4"); |
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"localtime() function"); |
} // test() |
|
|
int |
main(int argc, char *argv[]) |
{ |
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"localtime() function"); |
|
START_TEST( test ); |
|
CYG_TEST_NA("Testing is not applicable to this configuration"); |
|
} // main() |
|
// EOF localtime.c |
/v2_0/tests/clock.c
0,0 → 1,241
//================================================================= |
// |
// clock.c |
// |
// Testcase for C library clock() |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): ctarpy, jlarmour |
// Contributors: |
// Date: 1999-03-05 |
// Description: Contains testcode for C library clock() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // Configuration header |
#include <pkgconf/system.h> |
#include <pkgconf/isoinfra.h> |
#include <pkgconf/infra.h> |
|
#include <cyg/infra/testcase.h> |
|
// This test is bound to fail often on the synthetic target -- we |
// don't have exclusive access to the CPU. |
|
#if defined(CYGPKG_HAL_SYNTH) |
# define NA_MSG "Timing accuracy not guaranteed on synthetic target" |
#elif !defined(CYGINT_ISO_MAIN_STARTUP) |
# define NA_MSG "Requires main() startup" |
#elif defined(CYGDBG_USE_TRACING) |
# define NA_MSG "Cannot give an accurate test when tracing is enabled" |
#endif |
|
#ifdef NA_MSG |
void |
cyg_start(void) |
{ |
CYG_TEST_INIT(); |
CYG_TEST_NA( NA_MSG ); |
} |
|
#else |
|
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/diag.h> |
#include <cyg/hal/hal_cache.h> |
#include <cyg/hal/hal_intr.h> |
|
|
// CONSTANTS |
|
// This defines how many loops before we decide that |
// the clock doesnt work |
#define MAX_TIMEOUT 100000 |
|
// Percentage error before we declare fail: range 0 - 100 |
#define TOLERANCE 40 |
|
// Number of samples to take |
#define SAMPLES 30 |
|
// We ignore ctrs[0] because it's always 0 |
// We ignore ctrs[1] because it will always be odd since it was |
// the first measurement taken at the start of the looping, and |
// the initial clock measurement (in clocks[0]) was not treated as |
// part of the loop and therefore can't be considered to take the same |
// time. |
// We ignore ctrs[2] because it always seems to be substantially faster |
// that the other samples. Probably due to cache/timing effect after the |
// previous loop. |
// Finally, ctrs[3] is skipped because it's also very fast on ARM targets. |
|
#define SKIPPED_SAMPLES 6 |
|
|
// FUNCTIONS |
|
static int |
my_abs(int i) |
{ |
return (i < 0) ? -i : i; |
} // my_abs() |
|
|
// Clock measurement is done in a separate function so that alignment |
// constraints are deterministic - some processors may perform better |
// in loops that are better aligned, so by making it always the same |
// function, this is prevented. |
// FIXME: how do we guarantee the compiler won't inline this on -O3? |
static unsigned long |
clock_loop( const int timeout, clock_t prevclock, clock_t *newclock ) |
{ |
clock_t c=0; |
long i; |
|
for (i=0; i<timeout; i++) { |
c = clock(); |
if ( c != prevclock ) |
break; // Hit the next clock pulse |
} |
|
if (i==timeout) |
CYG_TEST_FAIL_FINISH("No change in clock state!"); |
|
// it should not overflow in the lifetime of this test |
if (c < prevclock) |
CYG_TEST_FAIL_FINISH("Clock decremented!"); |
|
*newclock = c; |
|
return i; |
} // clock_loop() |
|
// both of these get zeroed out |
static unsigned long ctrs[SAMPLES]; |
static clock_t clocks[SAMPLES]; |
|
int |
main(int argc, char *argv[]) |
{ |
unsigned long mean=0, sum=0, maxerr=0; |
int i; |
|
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"clock() function"); |
|
// First disable the caches - they may affect the timing loops |
// below - causing the elapsed time during the clock() call to vary. |
{ |
register CYG_INTERRUPT_STATE oldints; |
|
HAL_DISABLE_INTERRUPTS(oldints); |
HAL_DCACHE_SYNC(); |
HAL_ICACHE_DISABLE(); |
HAL_DCACHE_DISABLE(); |
HAL_DCACHE_SYNC(); |
HAL_ICACHE_INVALIDATE_ALL(); |
HAL_DCACHE_INVALIDATE_ALL(); |
HAL_RESTORE_INTERRUPTS(oldints); |
} |
|
// This waits for a clock tick, to ensure that we are at the |
// start of a clock period. Then sit in a tight loop to get |
// the clock period. Repeat this, and make sure that it the |
// two timed periods are acceptably close. |
|
clocks[0] = clock(); |
|
if (clocks[0] == (clock_t)-1) // unimplemented is potentially valid. |
{ |
#ifdef CYGSEM_LIBC_TIME_CLOCK_WORKING |
CYG_TEST_FAIL_FINISH( "clock() returns -1, meaning unimplemented"); |
#else |
CYG_TEST_PASS_FINISH( "clock() returns -1, meaning unimplemented"); |
#endif |
} // if |
|
// record clocks in a tight consistent loop to avoid random variations |
for (i=1; i<SAMPLES; i++) { |
ctrs[i] = clock_loop( MAX_TIMEOUT, clocks[i-1], &clocks[i] ); |
} |
|
for (i=0;i<SAMPLES;i++) { |
// output what we got - useful for diagnostics of occasional |
// test failures |
diag_printf("clocks[%d] = %d, ctrs[%d] = %d\n", i, clocks[i], |
i, ctrs[i]); |
|
// Now we work out the error etc. |
if (i>=SKIPPED_SAMPLES) { |
sum += ctrs[i]; |
} |
} |
|
// deduce out the average |
mean = sum / (SAMPLES-SKIPPED_SAMPLES); |
|
// now go through valid results and compare against average |
for (i=SKIPPED_SAMPLES;i<SAMPLES;i++) { |
unsigned long err; |
|
err = (100 * my_abs(ctrs[i]-mean)) / mean; |
if (err > TOLERANCE) { |
diag_printf("mean=%d, ctrs[%d]=%d, err=%d\n", mean, i, ctrs[i], |
err); |
CYG_TEST_FAIL_FINISH("clock() within tolerance"); |
} |
if (err > maxerr) |
maxerr=err; |
} |
|
diag_printf("mean=%d, maxerr=%d\n", mean, maxerr); |
CYG_TEST_PASS_FINISH("clock() stable"); |
|
} // main() |
|
#endif // ifndef NA_MSG |
|
// EOF clock.c |
/v2_0/tests/strftime.c
0,0 → 1,195
//================================================================= |
// |
// strftime.c |
// |
// Testcase for C library strftime() function |
// |
//================================================================= |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//================================================================= |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: |
// Date: 1999-03-05 |
// Description: Contains testcode for C library strftime() function |
// |
// |
//####DESCRIPTIONEND#### |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <time.h> |
#include <cyg/infra/testcase.h> |
|
// HOW TO START TESTS |
|
# define START_TEST( test ) test(0) |
|
// FUNCTIONS |
|
static int my_strcmp(const char *s1, const char *s2) |
{ |
for ( ; *s1 == *s2 ; s1++,s2++ ) |
{ |
if ( *s1 == '\0' ) |
break; |
} // for |
|
return (*s1 - *s2); |
} // my_strcmp() |
|
static void |
test( CYG_ADDRWORD data ) |
{ |
struct tm tm1; |
char s[1000]; |
size_t size; |
|
tm1.tm_sec = 4; |
tm1.tm_min = 23; |
tm1.tm_hour = 20; |
tm1.tm_mday = 21; |
tm1.tm_mon = 1; |
tm1.tm_year = 74; |
tm1.tm_wday = 4; |
tm1.tm_yday = 51; |
tm1.tm_isdst = 0; |
|
size = strftime(s, 1000, "", &tm1); |
CYG_TEST_PASS_FAIL((size==0) && (*s=='\0'), "strftime test #1"); |
|
size = strftime(s, 1000, "%a", &tm1); |
CYG_TEST_PASS_FAIL((size==3) && !my_strcmp(s, "Thu"), "strftime test #2"); |
|
size = strftime(s, 1000, "%A", &tm1); |
CYG_TEST_PASS_FAIL((size==8) && !my_strcmp(s, "Thursday"), |
"strftime test #3"); |
|
size = strftime(s, 1000, "%b", &tm1); |
CYG_TEST_PASS_FAIL((size==3) && !my_strcmp(s, "Feb"), |
"strftime test #4"); |
|
size = strftime(s, 1000, "%B", &tm1); |
CYG_TEST_PASS_FAIL((size==8) && !my_strcmp(s, "February"), |
"strftime test #5"); |
|
size = strftime(s, 1000, "%d", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "21"), |
"strftime test #6"); |
|
size = strftime(s, 1000, "%H", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "20"), |
"strftime test #7"); |
|
size = strftime(s, 1000, "%I", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "09"), |
"strftime test #8"); |
|
size = strftime(s, 1000, "%j", &tm1); |
CYG_TEST_PASS_FAIL((size==3) && !my_strcmp(s, "051"), |
"strftime test #9"); |
|
size = strftime(s, 1000, "%m", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "02"), |
"strftime test #10"); |
|
size = strftime(s, 1000, "%M", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "23"), |
"strftime test #11"); |
|
size = strftime(s, 1000, "%p", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "pm"), |
"strftime test #12"); |
|
size = strftime(s, 1000, "%S", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "04"), |
"strftime test #13"); |
|
size = strftime(s, 1000, "%U", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "07"), |
"strftime test #14"); |
|
size = strftime(s, 1000, "%w", &tm1); |
CYG_TEST_PASS_FAIL((size==1) && !my_strcmp(s, "4"), |
"strftime test #15"); |
|
size = strftime(s, 1000, "%W", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "07"), |
"strftime test #16"); |
|
size = strftime(s, 1000, "%y", &tm1); |
CYG_TEST_PASS_FAIL((size==2) && !my_strcmp(s, "74"), |
"strftime test #17"); |
|
size = strftime(s, 1000, "%Y", &tm1); |
CYG_TEST_PASS_FAIL((size==4) && !my_strcmp(s, "1974"), |
"strftime test #18"); |
|
size = strftime(s, 1000, "%%", &tm1); |
CYG_TEST_PASS_FAIL((size==1) && !my_strcmp(s, "%"), |
"strftime test #19"); |
|
size = strftime(s, 5, "%Y", &tm1); |
CYG_TEST_PASS_FAIL((size==4) && !my_strcmp(s, "1974"), |
"strftime test #20"); |
|
size = strftime(s, 4, "%Y", &tm1); |
CYG_TEST_PASS_FAIL((size==0), "strftime test #21"); |
|
|
CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C library " |
"strftime() function"); |
} // test() |
|
|
int |
main(int argc, char *argv[]) |
{ |
CYG_TEST_INIT(); |
|
CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library " |
"strftime() function"); |
|
START_TEST( test ); |
|
CYG_TEST_NA("Testing is not applicable to this configuration"); |
|
} // main() |
|
// EOF strftime.c |
/v2_0/include/time.inl
0,0 → 1,820
#ifndef CYGONCE_LIBC_TIME_INL |
#define CYGONCE_LIBC_TIME_INL |
//=========================================================================== |
// |
// time.inl |
// |
// Inline implementations of date and time routines from <time.h> |
// |
//=========================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//=========================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: |
// Date: 1999-02-25 |
// Purpose: Provide inline implementations for some of the date and time |
// routines declared in <time.h> for ISO C section 7.12 and |
// POSIX 1003.1 8.3.4-8.3.7 |
// Description: |
// Usage: Do not include this file directly. Instead include <time.h> |
// |
//####DESCRIPTIONEND#### |
// |
//=========================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
#include <time.h> // Header for this file |
#include <cyg/infra/cyg_ass.h> // Assertion infrastructure |
#include <cyg/infra/cyg_trac.h> // Tracing infrastructure |
|
// DEFINES |
|
// The following are overriden by the libc implementation to get a non-inline |
// version to prevent duplication of code |
|
#ifndef CYGPRI_LIBC_TIME_ASCTIME_R_INLINE |
# define CYGPRI_LIBC_TIME_ASCTIME_R_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_CTIME_R_INLINE |
# define CYGPRI_LIBC_TIME_CTIME_R_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_GMTIME_R_INLINE |
# define CYGPRI_LIBC_TIME_GMTIME_R_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_LOCALTIME_R_INLINE |
# define CYGPRI_LIBC_TIME_LOCALTIME_R_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_DIFFTIME_INLINE |
# define CYGPRI_LIBC_TIME_DIFFTIME_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_MKTIME_INLINE |
# define CYGPRI_LIBC_TIME_MKTIME_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_ASCTIME_INLINE |
# define CYGPRI_LIBC_TIME_ASCTIME_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_CTIME_INLINE |
# define CYGPRI_LIBC_TIME_CTIME_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_GMTIME_INLINE |
# define CYGPRI_LIBC_TIME_GMTIME_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_LOCALTIME_INLINE |
# define CYGPRI_LIBC_TIME_LOCALTIME_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_GETZONEOFFSETS_INLINE |
# define CYGPRI_LIBC_TIME_GETZONEOFFSETS_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_SETZONEOFFSETS_INLINE |
# define CYGPRI_LIBC_TIME_SETZONEOFFSETS_INLINE extern __inline__ |
#endif |
|
#ifndef CYGPRI_LIBC_TIME_SETDST_INLINE |
# define CYGPRI_LIBC_TIME_SETDST_INLINE extern __inline__ |
#endif |
|
#define CYGNUM_LIBC_TIME_EPOCH_WDAY 4 // Jan 1st 1970 was a Thursday |
|
#ifdef __cplusplus |
extern "C" { |
#endif |
|
// EXTERNS |
|
// These are used in the dst access functions below. Do not access these |
// directly - use the functions declared in time.h instead |
|
extern Cyg_libc_time_dst cyg_libc_time_current_dst_stat; |
extern time_t cyg_libc_time_current_std_offset; |
extern time_t cyg_libc_time_current_dst_offset; |
|
// INLINE FUNCTIONS |
|
//=========================================================================== |
// |
// Utility functions |
|
////////////////////////////////// |
// cyg_libc_time_year_is_leap() // |
////////////////////////////////// |
// |
// This returns true if the year is a leap year. |
// The argument is of type int in line with struct tm |
// |
|
static __inline__ cyg_bool |
cyg_libc_time_year_is_leap( int __year ) |
{ |
cyg_bool _leap=false; |
|
if (!(__year % 400)) |
_leap = true; |
else if (!(__year % 4) && (__year % 100)) |
_leap = true; |
return _leap; |
} // cyg_libc_time_year_is_leap() |
|
|
//////////////////////////////////// |
// cyg_libc_time_getzoneoffsets() // |
//////////////////////////////////// |
// |
// This function retrieves the current state of the Daylight Savings Time |
// and the offsets of both STD and DST |
// The offsets are both in time_t's i.e. seconds |
// |
|
CYGPRI_LIBC_TIME_GETZONEOFFSETS_INLINE Cyg_libc_time_dst |
cyg_libc_time_getzoneoffsets( time_t *__stdoffset, time_t *__dstoffset ) |
{ |
CYG_REPORT_FUNCNAMETYPE("cyg_libc_time_getzoneoffsets", |
"returning DST state %d"); |
CYG_REPORT_FUNCARG2("__stdoffset is at address %08x, " |
"__dstoffset is at %08x", __stdoffset, __dstoffset); |
|
CYG_CHECK_DATA_PTR(__stdoffset, "__stdoffset is not a valid pointer!"); |
CYG_CHECK_DATA_PTR(__dstoffset, "__dstoffset is not a valid pointer!"); |
|
*__stdoffset = cyg_libc_time_current_std_offset; |
*__dstoffset = cyg_libc_time_current_dst_offset; |
|
CYG_REPORT_RETVAL(cyg_libc_time_current_dst_stat); |
|
return cyg_libc_time_current_dst_stat; |
} // cyg_libc_time_getzoneoffsets() |
|
|
//////////////////////////////////// |
// cyg_libc_time_setzoneoffsets() // |
//////////////////////////////////// |
// |
// This function sets the offsets used when Daylight Savings Time is enabled |
// or disabled. The offsets are in time_t's i.e. seconds |
// |
|
CYGPRI_LIBC_TIME_SETZONEOFFSETS_INLINE void |
cyg_libc_time_setzoneoffsets( time_t __stdoffset, time_t __dstoffset ) |
{ |
CYG_REPORT_FUNCNAME("cyg_libc_time_setzoneoffsets"); |
CYG_REPORT_FUNCARG2DV(__stdoffset, __dstoffset); |
|
cyg_libc_time_current_std_offset = __stdoffset; |
cyg_libc_time_current_dst_offset = __dstoffset; |
|
CYG_REPORT_RETURN(); |
} // cyg_libc_time_setzoneoffsets() |
|
|
//////////////////////////// |
// cyg_libc_time_setdst() // |
//////////////////////////// |
// |
// This function sets the state of Daylight Savings Time: on, off, or unknown |
// |
|
CYGPRI_LIBC_TIME_SETDST_INLINE void |
cyg_libc_time_setdst( Cyg_libc_time_dst __state ) |
{ |
CYG_REPORT_FUNCNAME("cyg_libc_time_setdst"); |
CYG_REPORT_FUNCARG1("__state=%d", __state); |
|
cyg_libc_time_current_dst_stat = __state; |
|
CYG_REPORT_RETURN(); |
} // cyg_libc_time_setdst() |
|
|
|
//=========================================================================== |
// |
// POSIX 1003.1 functions |
|
///////////////////////////////// |
// asctime_r() - POSIX.1 8.3.4 // |
///////////////////////////////// |
// |
// This returns a textual representation of a struct tm, and writes |
// the string to return into __buf |
// |
|
#ifdef CYGFUN_LIBC_TIME_POSIX |
# define __asctime_r asctime_r |
#else |
// prototype internal function |
__externC char * |
__asctime_r( const struct tm *__timeptr, char *__buf ); |
#endif |
|
#ifdef CYGIMP_LIBC_TIME_ASCTIME_R_INLINE |
|
#include <cyg/libc/time/timeutil.h> // for cyg_libc_time_{day,month}_name |
// and cyg_libc_time_itoa() |
#include <string.h> // for memcpy() |
|
CYGPRI_LIBC_TIME_ASCTIME_R_INLINE char * |
__asctime_r( const struct tm *__timeptr, char *__buf ) |
{ |
cyg_uint8 __i; |
|
// These initializers are [4] since C++ dictates you _must_ leave space |
// for the trailing '\0', even though ISO C says you don't need to! |
|
CYG_REPORT_FUNCNAMETYPE("asctime_r", "returning \"%s\""); |
CYG_REPORT_FUNCARG2("__timeptr = %08x, __buf = %08x", __timeptr, __buf); |
|
// paranoia - most of these aren't required but could be helpful to |
// a programmer debugging their own app. |
CYG_CHECK_DATA_PTR(__timeptr, "__timeptr is not a valid pointer!"); |
CYG_CHECK_DATA_PTR(__buf, "__buf is not a valid pointer!"); |
|
CYG_PRECONDITION((__timeptr->tm_sec >= 0) && (__timeptr->tm_sec < 62), |
"__timeptr->tm_sec out of range!"); |
CYG_PRECONDITION((__timeptr->tm_min >= 0) && (__timeptr->tm_min < 60), |
"__timeptr->tm_min out of range!"); |
CYG_PRECONDITION((__timeptr->tm_hour >= 0) && (__timeptr->tm_hour < 24), |
"__timeptr->tm_hour out of range!"); |
// Currently I don't check _actual_ numbers of days in each month here |
// FIXME: No reason why not though |
CYG_PRECONDITION((__timeptr->tm_mday >= 1) && (__timeptr->tm_mday < 32), |
"__timeptr->tm_mday out of range!"); |
CYG_PRECONDITION((__timeptr->tm_mon >= 0) && (__timeptr->tm_mon < 12), |
"__timeptr->tm_mon out of range!"); |
CYG_PRECONDITION((__timeptr->tm_wday >= 0) && (__timeptr->tm_wday < 7), |
"__timeptr->tm_wday out of range!"); |
CYG_PRECONDITION((__timeptr->tm_yday >= 0) && (__timeptr->tm_yday < 366), |
"__timeptr->tm_yday out of range!"); |
CYG_PRECONDITION((__timeptr->tm_year > -1900) && |
(__timeptr->tm_year < 8100), |
"__timeptr->tm_year out of range!"); |
|
// we can't use strftime because ISO C is stupid enough not to allow |
// the strings in asctime() to be localized. Duh. |
|
// day of the week |
memcpy(&__buf[0], cyg_libc_time_day_name[__timeptr->tm_wday], 3); |
__buf[3] = ' '; |
|
// month |
memcpy(&__buf[4], cyg_libc_time_month_name[__timeptr->tm_mon], 3); |
__buf[7] = ' '; |
|
__i = 8; |
|
// day of the month |
__i += cyg_libc_time_itoa( (cyg_uint8 *)&__buf[__i], __timeptr->tm_mday, 2, |
true); |
__buf[__i++] = ' '; |
|
// hour |
__i += cyg_libc_time_itoa( (cyg_uint8 *)&__buf[__i], __timeptr->tm_hour, 2, |
true); |
__buf[__i++] = ':'; |
|
// minute |
__i += cyg_libc_time_itoa( (cyg_uint8 *)&__buf[__i], __timeptr->tm_min, 2, |
true); |
__buf[__i++] = ':'; |
|
// second |
__i += cyg_libc_time_itoa((cyg_uint8 *) &__buf[__i], __timeptr->tm_sec, 2, |
true); |
__buf[__i++] = ' '; |
|
// year |
__i += cyg_libc_time_itoa( (cyg_uint8 *)&__buf[__i], |
1900+__timeptr->tm_year, 0, true); |
|
__buf[__i++] = '\n'; |
__buf[__i++] = '\0'; |
|
CYG_REPORT_RETVAL(__buf); |
return __buf; |
} // asctime_r() |
|
#endif // ifdef CYGIMP_LIBC_TIME_ASCTIME_R_INLINE |
|
//////////////////////////////// |
// gmtime_r() - POSIX.1 8.3.6 // |
//////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in UTC, and stores |
// the result in the space occupied by __result |
// |
|
#ifdef CYGFUN_LIBC_TIME_POSIX |
# define __gmtime_r gmtime_r |
#else |
// prototype internal function |
__externC struct tm * |
__gmtime_r( const time_t *__timer, struct tm *__result ); |
#endif |
|
#ifdef CYGIMP_LIBC_TIME_GMTIME_R_INLINE |
|
#include <cyg/libc/time/timeutil.h> // for cyg_libc_time_month_lengths |
|
CYGPRI_LIBC_TIME_GMTIME_R_INLINE struct tm * |
__gmtime_r( const time_t *__timer, struct tm *__result ) |
{ |
time_t _tim; |
const cyg_uint8 *_months_p; |
|
CYG_REPORT_FUNCNAMETYPE("gmtime_r", "returning %08x"); |
CYG_CHECK_DATA_PTR(__timer, "__timer is not a valid pointer!"); |
CYG_CHECK_DATA_PTR(__result, "__result is not a valid pointer!"); |
CYG_REPORT_FUNCARG2("*__timer=%d, __result is at %08x", |
*__timer, __result); |
|
#define CYGNUM_LIBC_TIME_SECSPERDAY (60*60*24) |
#define CYGNUM_LIBC_TIME_SECSPERYEAR (CYGNUM_LIBC_TIME_SECSPERDAY * 365) |
#define CYGNUM_LIBC_TIME_SECSPERLEAPYEAR (CYGNUM_LIBC_TIME_SECSPERDAY * 366) |
|
_tim = *__timer; |
|
// First, work out year. Start off with 1970 and work forwards or backwards |
// depending on the sign of _tim |
__result->tm_year = 70; |
|
// we also work out the day of the week of the start of the year as we |
// go along |
__result->tm_wday = CYGNUM_LIBC_TIME_EPOCH_WDAY; |
|
while (_tim < 0) { |
// Work backwards |
|
--__result->tm_year; |
|
// Check for a leap year. |
if (cyg_libc_time_year_is_leap(1900 + __result->tm_year)) { |
_tim += CYGNUM_LIBC_TIME_SECSPERLEAPYEAR; |
__result->tm_wday -= 366; |
} // if |
else { |
_tim += CYGNUM_LIBC_TIME_SECSPERYEAR; |
__result->tm_wday -= 365; |
} // else |
|
} // while |
|
while (_tim >= CYGNUM_LIBC_TIME_SECSPERYEAR) { |
// Work forwards |
|
if (cyg_libc_time_year_is_leap(1900 + __result->tm_year)) { |
|
// But if this is a leap year, its possible that we are in the |
// middle of the last "extra" day |
if (_tim < CYGNUM_LIBC_TIME_SECSPERLEAPYEAR) |
break; |
|
_tim -= CYGNUM_LIBC_TIME_SECSPERLEAPYEAR; |
__result->tm_wday += 366; |
} // if |
else { |
_tim -= CYGNUM_LIBC_TIME_SECSPERYEAR; |
__result->tm_wday += 365; |
} |
++__result->tm_year; |
} // while |
|
// Day of the year. We know _tim is +ve now |
CYG_ASSERT(_tim >= 0, |
"Number of seconds since start of year is negative!"); |
__result->tm_yday = _tim / CYGNUM_LIBC_TIME_SECSPERDAY; |
|
// Day of the week. Normalize to be 0..6, and note that it might |
// be negative, so we have to deal with the modulus being |
// implementation-defined for -ve numbers (ISO C 6.3.5) |
__result->tm_wday = (((__result->tm_wday + __result->tm_yday)%7)+7)%7; |
|
// Month and Day of the month |
|
_months_p = cyg_libc_time_month_lengths[ |
cyg_libc_time_year_is_leap(1900 + __result->tm_year) ? 1 : 0 ]; |
|
__result->tm_mday = __result->tm_yday+1; |
|
for (__result->tm_mon = 0; |
__result->tm_mday > _months_p[__result->tm_mon]; |
++__result->tm_mon) { |
|
__result->tm_mday -= _months_p[__result->tm_mon]; |
|
} // for |
|
_tim -= __result->tm_yday*CYGNUM_LIBC_TIME_SECSPERDAY; |
|
// hours, mins secs |
__result->tm_hour = (int) (_tim / 3600); |
_tim %= 3600; |
__result->tm_min = (int) (_tim / 60); |
__result->tm_sec = (int) (_tim % 60); |
|
__result->tm_isdst = 0; // gmtime always returns non-DST |
|
CYG_REPORT_RETVAL(__result); |
|
return __result; |
} // gmtime_r() |
|
#endif // ifdef CYGIMP_LIBC_TIME_GMTIME_R_INLINE |
|
/////////////////////////////////// |
// localtime_r() - POSIX.1 8.3.7 // |
/////////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in local time, and |
// stores the result in the space occupied by __result |
// |
|
#ifdef CYGFUN_LIBC_TIME_POSIX |
# define __localtime_r localtime_r |
#else |
// prototype internal function |
__externC struct tm * |
__localtime_r( const time_t *__timer, struct tm *__result ); |
#endif |
|
#ifdef CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE |
|
#include <cyg/libc/time/timeutil.h> // for cyg_libc_time_normalize_structtm() |
|
CYGPRI_LIBC_TIME_LOCALTIME_R_INLINE struct tm * |
__localtime_r( const time_t *__timer, struct tm *__result ) |
{ |
time_t __stdoffset, __dstoffset; |
CYG_REPORT_FUNCNAMETYPE("localtime_r", "returning %08x"); |
CYG_CHECK_DATA_PTR(__timer, "__timer is not a valid pointer!"); |
CYG_CHECK_DATA_PTR(__result, "__result is not a valid pointer!"); |
CYG_REPORT_FUNCARG2("*__timer=%d, __result is at %08x", |
*__timer, __result); |
|
__gmtime_r(__timer, __result); |
|
// Adjust for STD/DST |
__result->tm_isdst = cyg_libc_time_getzoneoffsets(&__stdoffset, |
&__dstoffset); |
|
if (__result->tm_isdst == 0) { // STD |
__result->tm_sec += __stdoffset; |
cyg_libc_time_normalize_structtm( __result ); |
} // if |
else if (__result->tm_isdst > 0) { // DST |
__result->tm_sec += __dstoffset; |
cyg_libc_time_normalize_structtm( __result ); |
} // if |
// Don't do anything for tm_isdst == -1 |
|
CYG_REPORT_RETVAL(__result); |
|
return __result; |
} // localtime_r() |
|
#endif // ifdef CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE |
|
|
/////////////////////////////// |
// ctime_r() - POSIX.1 8.3.5 // |
/////////////////////////////// |
// |
// This returns the equivalent of ctime() but writes to __buf |
// to store the returned string |
// |
|
#ifdef CYGFUN_LIBC_TIME_POSIX |
# define __ctime_r ctime_r |
#else |
// prototype internal function |
__externC char * |
__ctime_r( const time_t *__timer, char *__buf ); |
#endif |
|
#ifdef CYGIMP_LIBC_TIME_CTIME_R_INLINE |
|
CYGPRI_LIBC_TIME_CTIME_R_INLINE char * |
__ctime_r( const time_t *__timer, char *__buf ) |
{ |
struct tm _mytm; |
|
CYG_REPORT_FUNCNAMETYPE("ctime_r", "returning \"%s\""); |
|
CYG_CHECK_DATA_PTR(__timer, "__timer is not a valid pointer!"); |
CYG_CHECK_DATA_PTR(__buf, "__buf is not a valid pointer!"); |
|
CYG_REPORT_FUNCARG2("*__timer = %d, __buf=%08x", *__timer, __buf); |
|
__localtime_r( __timer, &_mytm ); |
|
__asctime_r(&_mytm, __buf); |
|
CYG_REPORT_RETVAL(__buf); |
|
return __buf; |
} // ctime_r() |
|
#endif // ifdef CYGIMP_LIBC_TIME_CTIME_R_INLINE |
|
|
//=========================================================================== |
// |
// ISO C functions |
|
// Time manipulation functions - ISO C 7.12.2 |
|
///////////////////////////////// |
// difftime() - ISO C 7.12.2.2 // |
///////////////////////////////// |
// |
// This returns (__time1 - __time0) in seconds |
// |
|
#ifdef CYGIMP_LIBC_TIME_DIFFTIME_INLINE |
|
CYGPRI_LIBC_TIME_DIFFTIME_INLINE double |
difftime( time_t __time1, time_t __time0 ) |
{ |
double _ret; |
|
CYG_REPORT_FUNCNAMETYPE("difftime", "returning %f"); |
CYG_REPORT_FUNCARG2("__time1=%d, __time0=%d", __time1, __time0); |
|
_ret = (double)(__time1 - __time0); |
|
CYG_REPORT_RETVAL(_ret); |
|
return _ret; |
} // difftime() |
|
#endif // ifdef CYGIMP_LIBC_TIME_DIFFTIME_INLINE |
|
/////////////////////////////// |
// mktime() - ISO C 7.12.2.3 // |
/////////////////////////////// |
// |
// This converts a "struct tm" to a "time_t" |
// |
|
#ifdef CYGIMP_LIBC_TIME_MKTIME_INLINE |
|
#include <cyg/libc/time/timeutil.h> // for cyg_libc_time_normalize_structtm() |
// and cyg_libc_time_month_lengths |
|
CYGPRI_LIBC_TIME_MKTIME_INLINE time_t |
mktime( struct tm *__timeptr ) |
{ |
time_t _ret; |
cyg_count16 _i; |
cyg_count32 _daycount; |
cyg_bool _leap; |
|
CYG_REPORT_FUNCNAMETYPE("mktime", "returning %d"); |
CYG_REPORT_FUNCARG1( "__timeptr is at address %08x", __timeptr); |
|
CYG_CHECK_DATA_PTR(__timeptr, "__timeptr is not a valid pointer!"); |
|
// First deal with STD/DST. If tm_isdst==-1 (the "autodetect" value) |
// we assume its already in UTC. FIXME: is this correct behaviour? Hmm.... |
|
#if 0 |
// FIXME: This doesn't seem to be the way to go |
if (__timeptr->tm_isdst == 0) { // STD |
// take _off_ the std offset to get us back to UTC from localtime |
__timeptr->tm_sec -= (int)cyg_libc_time_current_std_offset; |
} // if |
else if (__timeptr->tm_isdst > 0) { // DST |
// take _off_ the dst offset to get us back to UTC from localtime |
__timeptr->tm_sec -= (int)cyg_libc_time_current_dst_offset; |
} // if |
#endif |
|
cyg_libc_time_normalize_structtm(__timeptr); |
|
// check if a time_t can hold the year. FIXME: we assume it is |
// 32 bits which gives the year range 1902 - 2038 |
if ( (__timeptr->tm_year <= 2) || (__timeptr->tm_year >= 138) ) { |
CYG_REPORT_RETVAL(-1); |
return (time_t)-1; |
} |
|
// fill in the rest of the struct tm i.e. tm_wday and tm_yday |
|
_leap = cyg_libc_time_year_is_leap(1900 + __timeptr->tm_year); |
|
for (_i=0, _daycount=0; _i<12; ++_i) { |
if (_i == __timeptr->tm_mon) { |
_daycount += __timeptr->tm_mday - 1; |
break; |
} // if |
else { |
_daycount += cyg_libc_time_month_lengths[_leap][_i]; |
} // else |
} // for |
|
CYG_ASSERT(_i<12, "Reached end of year. __timeptr->tm_mon must be bad"); |
|
__timeptr->tm_yday = _daycount; |
|
// now tm_wday |
|
if (__timeptr->tm_year > 70) { |
for (_i=70; _i < __timeptr->tm_year; ++_i) |
_daycount += (cyg_libc_time_year_is_leap(1900 + _i) ? 366 : 365); |
} // if |
else if (__timeptr->tm_year < 70) { |
for (_i=70; _i > __timeptr->tm_year; --_i) |
_daycount -= (cyg_libc_time_year_is_leap(1900 + _i-1) ? 366 : 365); |
} // else if |
|
__timeptr->tm_wday = (_daycount + CYGNUM_LIBC_TIME_EPOCH_WDAY) % 7; |
|
// if _daycount was negative, on some targets the modulo operator will |
// return negative, so we adjust for that |
|
if (__timeptr->tm_wday < 0) |
__timeptr->tm_wday += 7; |
|
// now finally work out return value |
|
_ret = __timeptr->tm_sec + 60*__timeptr->tm_min + 60*60*__timeptr->tm_hour; |
_ret += _daycount*24*60*60; |
|
CYG_REPORT_RETVAL(_ret); |
|
return _ret; |
} // mktime() |
|
#endif // ifdef CYGIMP_LIBC_TIME_MKTIME_INLINE |
|
|
// Time conversion functions - ISO C 7.12.3 |
|
//////////////////////////////// |
// asctime() - ISO C 7.12.3.1 // |
//////////////////////////////// |
// |
// This returns a textual representation of a struct tm |
// |
|
#ifdef CYGIMP_LIBC_TIME_ASCTIME_INLINE |
|
extern char cyg_libc_time_asctime_buf[]; |
|
CYGPRI_LIBC_TIME_ASCTIME_INLINE char * |
asctime( const struct tm *__timeptr ) |
{ |
CYG_REPORT_FUNCNAMETYPE("__asctime", "returning \"%s\""); |
CYG_REPORT_FUNCARG1("__timeptr = %08x", __timeptr); |
|
// paranoia |
CYG_CHECK_DATA_PTR(__timeptr, "__timeptr is not a valid pointer!"); |
|
(void)__asctime_r( __timeptr, cyg_libc_time_asctime_buf ); |
|
CYG_REPORT_RETVAL(cyg_libc_time_asctime_buf); |
|
return cyg_libc_time_asctime_buf; |
} // asctime() |
|
#endif // ifdef CYGIMP_LIBC_TIME_ASCTIME_INLINE |
|
|
/////////////////////////////// |
// gmtime() - ISO C 7.12.3.3 // |
/////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in UTC |
// |
|
#ifdef CYGIMP_LIBC_TIME_GMTIME_INLINE |
|
extern struct tm cyg_libc_time_gmtime_buf; |
|
CYGPRI_LIBC_TIME_GMTIME_INLINE struct tm * |
gmtime( const time_t *__timer ) |
{ |
CYG_REPORT_FUNCNAMETYPE("gmtime", "returning %08x"); |
CYG_CHECK_DATA_PTR(__timer, "__timer is not a valid pointer!"); |
CYG_REPORT_FUNCARG1("*__timer=%d", *__timer); |
|
__gmtime_r(__timer, &cyg_libc_time_gmtime_buf); |
|
CYG_REPORT_RETVAL(&cyg_libc_time_gmtime_buf); |
|
return &cyg_libc_time_gmtime_buf; |
} // gmtime() |
|
#endif // ifdef CYGIMP_LIBC_TIME_GMTIME_INLINE |
|
|
////////////////////////////////// |
// localtime() - ISO C 7.12.3.4 // |
////////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in local time |
// |
|
#ifdef CYGIMP_LIBC_TIME_LOCALTIME_INLINE |
|
extern struct tm cyg_libc_time_localtime_buf; |
|
CYGPRI_LIBC_TIME_LOCALTIME_INLINE struct tm * |
localtime( const time_t *__timer ) |
{ |
CYG_REPORT_FUNCNAMETYPE("localtime", "returning %08x"); |
CYG_CHECK_DATA_PTR(__timer, "__timer is not a valid pointer!"); |
CYG_REPORT_FUNCARG1("*__timer=%d", *__timer); |
|
__localtime_r(__timer, &cyg_libc_time_localtime_buf); |
|
CYG_REPORT_RETVAL(&cyg_libc_time_localtime_buf); |
|
return &cyg_libc_time_localtime_buf; |
} // localtime() |
|
#endif // ifdef CYGIMP_LIBC_TIME_LOCALTIME_INLINE |
|
|
////////////////////////////// |
// ctime() - ISO C 7.12.3.2 // |
////////////////////////////// |
// |
// This returns asctime(localtime(__timeptr)) |
// |
|
#ifdef CYGIMP_LIBC_TIME_CTIME_INLINE |
|
CYGPRI_LIBC_TIME_CTIME_INLINE char * |
ctime( const time_t *__timer ) |
{ |
char *_str; |
|
CYG_REPORT_FUNCNAMETYPE("ctime", "returning \"%s\""); |
CYG_CHECK_DATA_PTR( __timer, "__timer is not a valid pointer!"); |
CYG_REPORT_FUNCARG1("*__timer = %d", *__timer); |
|
_str = asctime(localtime(__timer)); |
|
CYG_REPORT_RETVAL(_str); |
|
return _str; |
} // ctime() |
|
#endif // ifdef CYGIMP_LIBC_TIME_CTIME_INLINE |
|
|
#ifdef __cplusplus |
} // extern "C" |
#endif |
|
#endif // CYGONCE_LIBC_TIME_INL multiple inclusion protection |
|
// EOF time.inl |
/v2_0/include/timeutil.h
0,0 → 1,111
#ifndef CYGONCE_LIBC_TIME_TIMEUTIL_H |
#define CYGONCE_LIBC_TIME_TIMEUTIL_H |
//======================================================================== |
// |
// timeutil.h |
// |
// ISO C date and time implementation support functions |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-03-03 |
// Purpose: Provide declarations for support functions used by the |
// ISO C date and time implementation |
// Description: |
// Usage: #include <cyg/libc/time/timeutil.h> |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
|
#ifdef __cplusplus |
extern "C" { |
#endif |
|
// GLOBALS |
|
// Strings of the days and month names |
// FIXME: should comment out "const" in multi-dimensional arrays until |
// PR 19440 is fixed |
extern const char cyg_libc_time_day_name[7][10]; |
extern const cyg_uint8 cyg_libc_time_day_name_len[7]; |
extern const char cyg_libc_time_month_name[12][10]; |
extern const cyg_uint8 cyg_libc_time_month_name_len[12]; |
|
// number of days in each month, defined for normal and leap years |
extern const cyg_uint8 cyg_libc_time_month_lengths[2][12]; |
|
|
// FUNCTION PROTOTYPES |
|
//////////////////////////////////////// |
// cyg_libc_time_normalize_structtm() // |
//////////////////////////////////////// |
// |
// cyg_libc_time_normalize_structtm() will adjust the fields of a struct tm |
// so that they are within the normal ranges expected. |
// tm_wday, tm_yday, and tm_isdst are ignored |
|
extern void |
cyg_libc_time_normalize_structtm( struct tm *__timeptr ); |
|
////////////////////////// |
// cyg_libc_time_itoa() // |
////////////////////////// |
// |
// This converts num to a string and puts it into s padding with |
// "0"'s if padzero is set, or spaces otherwise if necessary. |
// The number of chars written to s is returned |
// |
|
extern cyg_uint8 |
cyg_libc_time_itoa( cyg_uint8 *__s, cyg_int32 __num, cyg_uint8 __width, |
cyg_bool __padzero ); |
|
#ifdef __cplusplus |
} // extern "C" |
#endif |
|
#endif // CYGONCE_LIBC_TIME_TIMEUTIL_H multiple inclusion protection |
|
// EOF timeutil.h |
/v2_0/include/time.h
0,0 → 1,321
#ifndef CYGONCE_LIBC_TIME_TIME_H |
#define CYGONCE_LIBC_TIME_TIME_H |
/*=========================================================================== |
// |
// time.h |
// |
// Date and time routines from ISO C section 7.12 and POSIX 1003.1 |
// |
//=========================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// Copyright (C) 2003 Gary Thomas |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//=========================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: |
// Date: 2000-04-14 |
// Purpose: Provide definitions required by ISO C section 7.12 and |
// POSIX 1003.1 8.3.4-8.3.7 |
// Description: |
// Usage: Do not include this file directly - use #include <time.h> |
// |
//####DESCRIPTIONEND#### |
// |
//=========================================================================*/ |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
|
// TYPE DEFINITIONS |
|
// Define struct tm as per ISO C para 7.12.1 |
struct tm { |
int tm_sec; // seconds after the minute - [0..61] |
// (note 61 allows for two leap seconds) |
int tm_min; // minutes after the hour - [0..59] |
int tm_hour; // hours since midnight - [0..23] |
int tm_mday; // days of the month - [1..31] |
int tm_mon; // months since January - [0..11] |
int tm_year; // years since 1900 |
int tm_wday; // days since Sunday - [0..6] |
int tm_yday; // days since January 1 - [0..365] |
int tm_isdst; // Daylight Saving Time flag - positive if DST is in |
// effect, 0 if not in effect, and negative if the info |
// is not available |
}; |
|
// The following struct is used by the implementation-defined functions |
// to manipulate the Daylight Savings Time state |
typedef enum { |
CYG_LIBC_TIME_DSTNA = -1, |
CYG_LIBC_TIME_DSTOFF = 0, |
CYG_LIBC_TIME_DSTON = 1 |
} Cyg_libc_time_dst; |
|
// FUNCTION PROTOTYPES |
|
#ifdef __cplusplus |
extern "C" { |
#endif |
|
//=========================================================================== |
// |
// POSIX 1003.1 functions |
|
#ifdef CYGFUN_LIBC_TIME_POSIX |
|
///////////////////////////////// |
// asctime_r() - POSIX.1 8.3.4 // |
///////////////////////////////// |
// |
// This returns a textual representation of a struct tm, and writes |
// the string to return into __buf |
// |
|
extern char * |
asctime_r( const struct tm *__timeptr, char *__buf ); |
|
/////////////////////////////// |
// ctime_r() - POSIX.1 8.3.5 // |
/////////////////////////////// |
// |
// This returns the equivalent of ctime() but writes to __buf |
// to store the returned string |
// |
|
extern char * |
ctime_r( const time_t *__timer, char *__buf ); |
|
//////////////////////////////// |
// gmtime_r() - POSIX.1 8.3.6 // |
//////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in UTC, and stores |
// the result in the space occupied by __result |
// |
|
extern struct tm * |
gmtime_r( const time_t *__timer, struct tm *__result ); |
|
/////////////////////////////////// |
// localtime_r() - POSIX.1 8.3.7 // |
/////////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in local time, and |
// stores the result in the space occupied by __result |
// |
|
extern struct tm * |
localtime_r( const time_t *__timer, struct tm *__result ); |
|
///////////////////////////////////////////////////////// |
// strptime() - |
///////////////////////////////////////////////////////// |
// |
// Parse a time string into a struct tm |
// |
|
extern char * |
strptime( const char *__s, const char *__format, |
struct tm *__timeptr); //__attribute__ ((format (strftime, 2))); |
|
|
#endif // ifdef CYGFUN_LIBC_TIME_POSIX |
|
//=========================================================================== |
|
// ISO C functions |
|
// Time manipulation functions - ISO C 7.12.2 |
|
////////////////////////////// |
// clock() - ISO C 7.12.2.1 // |
////////////////////////////// |
// |
// Returns processor time used in "clock"s. For a single process, |
// multi-threaded system this will just be the time since booting |
// |
|
extern clock_t |
clock( void ); |
|
///////////////////////////////// |
// difftime() - ISO C 7.12.2.2 // |
///////////////////////////////// |
// |
// This returns (__time1 - __time0) in seconds |
// |
|
extern double |
difftime( time_t __time1, time_t __time0 ); |
|
/////////////////////////////// |
// mktime() - ISO C 7.12.2.3 // |
/////////////////////////////// |
// |
// This converts a "struct tm" to a "time_t" |
// |
|
extern time_t |
mktime( struct tm *__timeptr ); |
|
///////////////////////////// |
// time() - ISO C 7.12.2.4 // |
///////////////////////////// |
// |
// This returns calendar time as a time_t |
// |
|
extern time_t |
time( time_t *__timer ); |
|
// Time conversion functions - ISO C 7.12.3 |
|
//////////////////////////////// |
// asctime() - ISO C 7.12.3.1 // |
//////////////////////////////// |
// |
// This returns a textual representation of a struct tm |
// |
|
extern char * |
asctime( const struct tm *__timeptr ); |
|
////////////////////////////// |
// ctime() - ISO C 7.12.3.2 // |
////////////////////////////// |
// |
// This returns asctime(localtime(__timeptr)) |
// |
|
extern char * |
ctime( const time_t *__timer ); |
|
/////////////////////////////// |
// gmtime() - ISO C 7.12.3.3 // |
/////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in UTC |
// |
|
extern struct tm * |
gmtime( const time_t *__timer ); |
|
////////////////////////////////// |
// localtime() - ISO C 7.12.3.4 // |
////////////////////////////////// |
// |
// This converts a time_t into a struct tm expressed in local time |
// |
|
extern struct tm * |
localtime( const time_t *__timer ); |
|
///////////////////////////////// |
// strftime() - ISO C 7.12.3.5 // |
///////////////////////////////// |
// |
// This converts a string using format specifiers that signify various |
// time-related quantities |
// |
|
extern size_t |
strftime( char *__s, size_t __maxsize, const char *__format, |
const struct tm *__timeptr); //__attribute__ ((format (strftime, 3))); |
|
//=========================================================================== |
|
// Implementation-specific functions |
|
//////////////////////////////////// |
// cyg_libc_time_setzoneoffsets() // |
//////////////////////////////////// |
// |
// This function sets the offsets used when Daylight Savings Time is enabled |
// or disabled. The offsets are in time_t's |
// |
|
extern void |
cyg_libc_time_setzoneoffsets( time_t __stdoffset, time_t __dstoffset ); |
|
//////////////////////////// |
// cyg_libc_time_setdst() // |
//////////////////////////// |
// |
// This function sets the state of Daylight Savings Time: on, off, or unknown |
// |
|
extern void |
cyg_libc_time_setdst( Cyg_libc_time_dst __state ); |
|
|
//////////////////////////////////// |
// cyg_libc_time_getzoneoffsets() // |
//////////////////////////////////// |
// |
// This function retrieves the current state of the Daylight Savings Time |
// and the offsets of both STD and DST |
// The offsets are both in time_t's |
// |
|
extern Cyg_libc_time_dst |
cyg_libc_time_getzoneoffsets( time_t *__stdoffset, time_t *__dstoffset ); |
|
///////////////////////////// |
// cyg_libc_time_settime() // |
///////////////////////////// |
// |
// This function sets the current time for the system. The time is |
// specified as a time_t in UTC. It returns non-zero on error. |
// |
|
extern cyg_bool |
cyg_libc_time_settime( time_t __utctime ); |
|
|
#ifdef __cplusplus |
} // extern "C" |
#endif |
|
#include <cyg/libc/time/time.inl> |
|
#endif // CYGONCE_LIBC_TIME_TIME_H multiple inclusion protection |
|
// EOF time.h |
/v2_0/ChangeLog
0,0 → 1,147
2003-02-24 Jonathan Larmour <jifl@eCosCentric.com> |
|
* cdl/time.cdl: Fix doc link. |
|
2003-01-28 Jonathan Larmour <jifl@eCosCentric.com> |
|
* cdl/time.cdl: Correct reference to |
CYGSEM_LIBC_TIME_POSIX_TIME_ROUTINES in CYGPKG_LIBC_TIME_TESTS to |
CYGFUN_LIBC_TIME_POSIX. |
|
2003-01-27 Gary Thomas <gary@mlbassoc.com> |
|
* tests/strptime.c: |
* src/strptime.cxx: |
* include/time.h: |
* cdl/time.cdl: Add support for strptime(). |
|
2002-05-14 Jesper Skov <jskov@redhat.com> |
|
* cdl/time.cdl: Added -Wno-format to the compiler flags. This is |
to avoid warnings about Y2K problems with the format specifiers |
used in the strftime test. |
|
2002-01-09 Nick Garnett <nickg@redhat.com> |
|
* tests/clock.c (cyg_start): Added CYG_TEST_INIT() to |
NOTAPPLICABLE version of cyg_start() so that the breakpoints are |
correctly sequenced in the testfarm and it does not think that |
this is a failure. |
|
2001-06-22 Jesper Skov <jskov@redhat.com> |
|
* cdl/time.cdl (CYGFUN_LIBC_TIME_SUS_EXTNS): Added. |
* src/strftime.cxx (do_format): Added some Single UNIX |
extensions. |
|
2001-04-25 Bart Veer <bartv@redhat.com> |
|
* tests/time.c (MAX_TIMEOUT): |
Increase timeout to cope with fast architectures such as the |
synthetic target. |
|
2001-04-17 Bart Veer <bartv@redhat.com> |
|
* tests/clock.c: |
Cope with synthetic target reorg |
|
2000-11-29 Jonathan Larmour <jlarmour@redhat.com> |
|
* tests/clock.c: Some targets are quite inconsistent, so skip |
6 samples now, and increase the tolerance to 40%. |
Also NA if tracing enabled. |
Also output the mean and maximum error reached, even when passing. |
|
2000-11-27 Jesper Skov <jskov@redhat.com> |
|
* tests/clock.c: Skip fourth sample too. |
|
2000-11-14 Jesper Skov <jskov@redhat.com> |
|
* tests/clock.c: Skip first three samples. |
|
2000-10-30 Jonathan Larmour <jlarmour@redhat.com> |
|
* include/time.inl: Ensure POSIX *_r functions can be accessed by |
non-POSIX implementation even when CYGFUN_LIBC_TIME_POSIX is off. |
|
* src/asctime_r.cxx: No need to make conditional on posix CDL option - |
we may want to define an internal-only function. |
* src/ctime_r.cxx: Ditto |
* src/gmtime_r.cxx: Ditto |
* src/localtime_r.cxx: Ditto |
|
* cdl/time.cdl: abs() is also a requirement |
|
* src/clock.cxx (clock): Always use unsigned long longs for temp |
variables (and make sure it's used), rather than making |
assumptions about clock_t. |
|
* tests/clock.c: Rewrite |
|
2000-07-26 Jonathan Larmour <jlarmour@redhat.co.uk> |
|
* cdl/time.cdl: Add CYGINT_ISO_DIV dependency |
|
2000-07-24 Jonathan Larmour <jlarmour@redhat.co.uk> |
|
* src/time.cxx: |
* src/settime.cxx: |
Wallclock moved to io/ |
|
2000-06-20 Jonathan Larmour <jlarmour@redhat.co.uk> |
|
* include/time.inl (__gmtime_r): Don't save leap year status when |
calculating tm_wday |
|
2000-06-17 Jonathan Larmour <jlarmour@redhat.co.uk> |
|
* include/time.inl (gmtime_r): Deal with boundary case correctly |
|
* tests/gmtime.c (test): Add a couple more test cases |
|
2000-05-02 Jonathan Larmour <jlarmour@redhat.co.uk> |
|
* include/time.h: Just use the defaults for time_t, clock_t and |
CLOCKS_PER_SEC in isoinfra |
|
* New package |
Separated original libc out into separate packages on functional |
boundaries. |
Header files are now managed by isoinfra package |
Plenty of cleanups done, but no major functionality changes |
|
//=========================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//=========================================================================== |
/v2_0/src/ctime_r.cxx
0,0 → 1,67
//======================================================================== |
// |
// ctime_r.cxx |
// |
// POSIX 1003.1 date and time implementation for ctime_r() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of POSIX 1003.1 ctime() |
// Description: This file provides the linkable symbol version of ctime_r() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// The following lines allow ctime_r() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_CTIME_R_INLINE |
#ifndef CYGIMP_LIBC_TIME_CTIME_R_INLINE |
# define CYGIMP_LIBC_TIME_CTIME_R_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// EOF ctime_r.cxx |
/v2_0/src/gmtime.cxx
0,0 → 1,75
//======================================================================== |
// |
// gmtime.cxx |
// |
// ISO C date and time implementation for gmtime() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of ISO C gmtime() |
// Description: This file provides the linkable symbol version of gmtime() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
|
// The following lines allow gmtime() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_GMTIME_INLINE |
#ifndef CYGIMP_LIBC_TIME_GMTIME_INLINE |
# define CYGIMP_LIBC_TIME_GMTIME_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// GLOBALS |
|
struct tm cyg_libc_time_gmtime_buf; |
|
// EOF gmtime.cxx |
/v2_0/src/asctime.cxx
0,0 → 1,77
//======================================================================== |
// |
// asctime.cxx |
// |
// ISO C date and time implementation for asctime() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of ISO C asctime() |
// Description: This file provides the linkable symbol version of asctime() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
|
// The following lines allow asctime() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_ASCTIME_INLINE |
#ifndef CYGIMP_LIBC_TIME_ASCTIME_INLINE |
# define CYGIMP_LIBC_TIME_ASCTIME_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// GLOBALS |
|
// 26 isn't such a magic value if you work out what asctime is returning |
// It should do until 23:59:59 31st Dec 9999 anyway :-) |
char cyg_libc_time_asctime_buf[26]; |
|
// EOF asctime.cxx |
/v2_0/src/mktime.cxx
0,0 → 1,67
//======================================================================== |
// |
// mktime.cxx |
// |
// ISO C date and time implementation for mktime() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of ISO C mktime() |
// Description: This file provides the linkable symbol version of mktime() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// The following lines allow mktime() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_MKTIME_INLINE |
#ifndef CYGIMP_LIBC_TIME_MKTIME_INLINE |
# define CYGIMP_LIBC_TIME_MKTIME_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// EOF mktime.cxx |
/v2_0/src/difftime.cxx
0,0 → 1,67
//======================================================================== |
// |
// difftime.cxx |
// |
// ISO C date and time implementation for difftime() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of ISO C difftime() |
// Description: This file provides the linkable symbol version of difftime() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// The following lines allow difftime() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_DIFFTIME_INLINE |
#ifndef CYGIMP_LIBC_TIME_DIFFTIME_INLINE |
# define CYGIMP_LIBC_TIME_DIFFTIME_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// EOF difftime.cxx |
/v2_0/src/localtime_r.cxx
0,0 → 1,68
//======================================================================== |
// |
// localtime_r.cxx |
// |
// POSIX 1003.1 date and time implementation for localtime_r() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of POSIX 1003.1 localtime() |
// Description: This file provides the linkable symbol version of |
// localtime_r() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// The following lines allow localtime_r() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_LOCALTIME_R_INLINE |
#ifndef CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE |
# define CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// EOF localtime_r.cxx |
/v2_0/src/clock.cxx
0,0 → 1,135
//=========================================================================== |
// |
// clock.cxx |
// |
// ISO C date and time implementation for clock() |
// |
//=========================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//=========================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-03-05 |
// Purpose: Provides an implementation of the ISO C function clock() |
// from ISO C section 7.12.2.1 |
// Description: This file uses the kernel real time clock to determine |
// the complete running time of the system - since we only |
// have one task, even though there are perhaps multiple threads |
// that is still the running time of the "program" |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//=========================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // Configuration header |
|
#ifdef CYGSEM_LIBC_TIME_CLOCK_WORKING |
# include <pkgconf/kernel.h> // Kernel config header |
#endif |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
#include <cyg/infra/cyg_ass.h> // Assertion infrastructure |
#include <cyg/infra/cyg_trac.h> // Tracing infrastructure |
|
#include <time.h> // Header for all time-related functions |
|
#ifdef CYGSEM_LIBC_TIME_CLOCK_WORKING |
# include <cyg/kernel/clock.hxx> // Kernel clock definitions |
# include <cyg/kernel/clock.inl> // Kernel clock inline functions |
#endif |
|
|
// TRACE |
|
# if defined(CYGDBG_USE_TRACING) && defined(CYGNUM_LIBC_TIME_CLOCK_TRACE_LEVEL) |
static int clock_trace = CYGNUM_LIBC_TIME_CLOCK_TRACE_LEVEL; |
# define TL1 (0 < clock_trace) |
# else |
# define TL1 (0) |
# endif |
|
// FUNCTIONS |
|
externC clock_t |
clock( void ) |
{ |
CYG_REPORT_FUNCNAMETYPE( "clock", "returning clock tick %d" ); |
CYG_REPORT_FUNCARGVOID(); |
|
#ifdef CYGSEM_LIBC_TIME_CLOCK_WORKING |
cyg_tick_count curr_clock; // kernel clock value |
Cyg_Clock::cyg_resolution resolution; // kernel clock resolution |
clock_t clocks; |
unsigned long long temp; |
|
CYG_TRACE0( TL1, "getting clock resolution" ); |
|
// get the resolution |
resolution = Cyg_Clock::real_time_clock->get_resolution(); |
|
CYG_TRACE2( TL1, "got resolution dividend %d divisor %d. Getting " |
"clock value", resolution.dividend, resolution.divisor ); |
|
// get the value |
curr_clock = Cyg_Clock::real_time_clock->current_value(); |
|
CYG_TRACE1( TL1, "got clock value %d", curr_clock ); |
|
// scale the value so that clock()/CLOCKS_PER_SEC works |
// We use an unsigned long long to avoid overflow as the dividend |
// and divisors tend to be huge |
temp = (1000000000 / CLOCKS_PER_SEC); |
temp *= resolution.divisor; |
temp = (unsigned long long)curr_clock * resolution.dividend / temp; |
clocks = (clock_t)temp; |
|
CYG_REPORT_RETVAL( clocks ); |
return clocks; |
|
#else // i.e. ifndef CYGSEM_LIBC_TIME_CLOCK_WORKING |
CYG_REPORT_RETVAL( -1 ); |
return (clock_t) -1; |
#endif |
|
} // clock() |
|
|
// EOF clock.cxx |
/v2_0/src/timeutil.cxx
0,0 → 1,295
//======================================================================== |
// |
// timeutil.cxx |
// |
// ISO C date and time implementation support functions |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: |
// Date: 2000-04-28 |
// Purpose: Provide support functions used by the ISO C date and time |
// implementation |
// Description: This file provides the functions: |
// cyg_libc_time_normalize_structtm() |
// cyg_libc_time_getzoneoffsets() |
// cyg_libc_time_setzoneoffsets() |
// cyg_libc_time_setdst() |
// cyg_libc_time_itoa() |
// and the globals: |
// cyg_libc_time_day_name |
// cyg_libc_time_day_name_len |
// cyg_libc_time_month_name |
// cyg_libc_time_month_name_len |
// cyg_libc_time_month_lengths |
// cyg_libc_time_current_dst_stat |
// cyg_libc_time_current_std_offset |
// cyg_libc_time_current_dst_offset |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
// define these functions as outline, not inline, functions in this file |
#define CYGPRI_LIBC_TIME_GETZONEOFFSETS_INLINE extern "C" |
#define CYGPRI_LIBC_TIME_SETZONEOFFSETS_INLINE extern "C" |
#define CYGPRI_LIBC_TIME_SETDST_INLINE extern "C" |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
#include <cyg/libc/time/timeutil.h>// Header for this file |
#include <time.h> // Main date and time definitions |
#include <stdlib.h> // for div() and abs() |
|
|
// GLOBALS |
|
// FIXME: PR19440 - const char & -fwritable-strings don't mix |
const char cyg_libc_time_day_name[7][10] = { |
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", |
"Saturday" |
}; |
const cyg_uint8 cyg_libc_time_day_name_len[7] = { 6, 6, 7, 9, 8, 6, 8 }; |
|
// FIXME: PR19440 - const char & -fwritable-strings don't mix |
const char cyg_libc_time_month_name[12][10] = { |
"January", "February", "March", "April", "May", "June", |
"July", "August", "September", "October", "November", "December" |
}; |
const cyg_uint8 cyg_libc_time_month_name_len[12] = { 7, 8, 5, 5, 3, 4, |
4, 6, 9, 7, 8, 8 }; |
|
const cyg_uint8 cyg_libc_time_month_lengths[2][12] = { |
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, |
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} |
}; |
|
Cyg_libc_time_dst cyg_libc_time_current_dst_stat = |
(Cyg_libc_time_dst)CYGNUM_LIBC_TIME_DST_DEFAULT_STATE; |
time_t cyg_libc_time_current_std_offset = |
(time_t)CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET; |
time_t cyg_libc_time_current_dst_offset = |
(time_t)CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET; |
|
|
// FUNCTIONS |
|
//////////////////////////////////////// |
// cyg_libc_time_normalize_structtm() // |
//////////////////////////////////////// |
// |
// cyg_libc_time_normalize_structtm() will adjust the fields of a struct tm |
// so that they are within the normal ranges expected. |
// tm_wday, tm_yday and tm_isdst are ignored |
|
externC void |
cyg_libc_time_normalize_structtm( struct tm *timeptr ) |
{ |
div_t t; |
|
CYG_REPORT_FUNCNAME("cyg_libc_time_normalize_structtm"); |
CYG_REPORT_FUNCARG1("timeptr is at address %08x", timeptr); |
|
// normalize seconds to 0..59 |
if ((timeptr->tm_sec < 0) || (timeptr->tm_sec > 59)) { |
t = div(timeptr->tm_sec, 60); |
while (t.rem < 0) { |
t.rem += 60; |
--t.quot; |
} |
timeptr->tm_min += t.quot; |
timeptr->tm_sec = t.rem; |
} // if |
|
// normalize minutes to 0..59 |
if ((timeptr->tm_min < 0) || (timeptr->tm_min > 59)) { |
t = div(timeptr->tm_min, 60); |
while (t.rem < 0) { |
t.rem += 60; |
--t.quot; |
} |
timeptr->tm_hour += t.quot; |
timeptr->tm_min = t.rem; |
} // if |
|
// normalize hours to 0..23 |
if ((timeptr->tm_hour < 0) || (timeptr->tm_hour > 23)) { |
t = div(timeptr->tm_hour, 24); |
while (t.rem < 0) { |
t.rem += 24; |
--t.quot; |
} |
timeptr->tm_mday += t.quot; |
timeptr->tm_hour = t.rem; |
} // if |
|
// we wait before normalizing tm_mday as per ISO C 7.12.2.3 (although |
// actually it only makes sense if you think about it |
|
// normalize months to 0..11 |
if ((timeptr->tm_mon < 0) || (timeptr->tm_mon > 11)) { |
t = div(timeptr->tm_mon, 12); |
while (t.rem < 0) { |
t.rem += 12; |
--t.quot; |
} |
timeptr->tm_year += t.quot; |
timeptr->tm_mon = t.rem; |
} // if |
|
// now tm_mday which needs to go to 1..31 |
cyg_bool leap = cyg_libc_time_year_is_leap(timeptr->tm_year); |
|
while (timeptr->tm_mday < 1) { |
// move back a month |
|
if (--timeptr->tm_mon < 0) { |
--timeptr->tm_year; |
timeptr->tm_mon = 11; |
leap = cyg_libc_time_year_is_leap(timeptr->tm_year); |
} // if |
|
// we move backward the number of days in the _new_ current month |
timeptr->tm_mday += cyg_libc_time_month_lengths[leap][timeptr->tm_mon]; |
|
} // while |
|
while (timeptr->tm_mday > |
cyg_libc_time_month_lengths[leap][timeptr->tm_mon]) { |
|
// move forward a month |
|
// we move forward the number of days in the _old_ current month |
timeptr->tm_mday -= cyg_libc_time_month_lengths[leap][timeptr->tm_mon]; |
|
if (++timeptr->tm_mon > 11) { |
++timeptr->tm_year; |
timeptr->tm_mon = 0; |
leap = cyg_libc_time_year_is_leap(timeptr->tm_year); |
} // if |
|
} // while |
|
CYG_REPORT_RETURN(); |
|
} // cyg_libc_time_normalize_structtm() |
|
|
////////////////////////// |
// cyg_libc_time_itoa() // |
////////////////////////// |
// |
// This converts num to a string and puts it into s padding with |
// "0"'s if padzero is set, or spaces otherwise if necessary. |
// The number of chars written to s is returned |
// |
|
// This implementation is probably suboptimal in terms of performance |
// but there wouldn't be much in it with only 11 chars max to convert :-/. |
// Actually FIXME: what if someone passes a width >11 |
|
externC cyg_uint8 |
cyg_libc_time_itoa( cyg_uint8 *s, cyg_int32 num, cyg_uint8 width, |
cyg_bool padzero ) |
{ |
CYG_REPORT_FUNCNAMETYPE("cyg_libc_time_itoa", "returning %d"); |
CYG_REPORT_FUNCARG4( "s=%08x, num=%d, width=%d, padzero=%d", |
s, num, width, padzero ); |
|
CYG_CHECK_DATA_PTR(s, "input string not a valid pointer"); |
|
// special case for zero otherwise we'd have to treat it specially later |
// on anyway |
|
if (num==0) { |
cyg_ucount8 i; |
|
for (i=0; i<width; ++i) |
s[i] = padzero ? '0' : ' '; |
CYG_REPORT_RETVAL(i); |
return i; |
} |
|
// return value |
cyg_uint8 ret=0; |
|
// Pre-fiddle for negative numbers |
if ((num < 0) && (width > 0)) { |
*s++ = '-'; |
--width; |
num = abs(num); |
++ret; |
} |
|
cyg_ucount32 i; |
cyg_bool reachednum = false; |
cyg_uint8 c, j; |
|
// i starts off with factor of 10 digits - which is the string length |
// of a positive 32-bit number |
for (i=1000000000, j=10; i>0; i/=10, --j) { |
c = (num / i); |
|
if (!reachednum && c==0) { |
if (j <= width) { |
*s++ = padzero ? '0' : ' '; |
++ret; |
} |
} // if |
else { |
*s++ = c + '0'; |
++ret; |
reachednum = true; |
} |
num %= i; |
} // for |
|
CYG_POSTCONDITION(ret >= width, "Didn't output enough chars!"); |
|
CYG_REPORT_RETVAL(ret); |
return ret; |
} // cyg_libc_time_itoa() |
|
|
// EOF timeutil.cxx |
/v2_0/src/strftime.cxx
0,0 → 1,334
//======================================================================== |
// |
// strftime.cxx |
// |
// ISO C date and time implementation for strftime() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of the ISO C function strftime() |
// from ISO C section 7.12.3.5 |
// Description: This file provides the implementation of strftime() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
#include <cyg/infra/cyg_ass.h> // Assertion infrastructure |
#include <cyg/infra/cyg_trac.h> // Tracing infrastructure |
#include <time.h> // Main date and time definitions |
#include <cyg/libc/time/timeutil.h>// For cyg_libc_time_{day,month}_name{,_len} |
|
// FUNCTION PROTOTYPES |
|
// FIXME: This all needs to be internationalized and localized, both in |
// terms of reading and writing multibyte characters, and that it should |
// refer to the settings of LC_TIME |
|
// FUNCTIONS |
|
// This helper function actually processes the format. Which format to insert |
// is indicated by fmtchar, sizeleft is the maximum space allowed to be used |
// in buf. The number of bytes written is returned, or -1 if there was no |
// space |
|
static cyg_int8 |
do_format(cyg_uint8 fmtchar, cyg_ucount32 sizeleft, char *buf, |
const struct tm *timeptr) |
{ |
cyg_count8 i; |
|
switch (fmtchar) { |
case 'a': |
if (sizeleft<3) |
return -1; |
buf[0] = cyg_libc_time_day_name[timeptr->tm_wday][0]; |
buf[1] = cyg_libc_time_day_name[timeptr->tm_wday][1]; |
buf[2] = cyg_libc_time_day_name[timeptr->tm_wday][2]; |
return 3; |
case 'A': |
if (sizeleft < cyg_libc_time_day_name_len[timeptr->tm_wday]) |
return -1; |
for (i=0; i<cyg_libc_time_day_name_len[timeptr->tm_wday]; ++i) |
buf[i] = cyg_libc_time_day_name[timeptr->tm_wday][i]; |
return i; |
#ifdef CYGFUN_LIBC_TIME_SUS_EXTNS |
case 'h': |
// ** fall through ** |
#endif |
case 'b': |
if (sizeleft<3) |
return -1; |
buf[0] = cyg_libc_time_month_name[timeptr->tm_mon][0]; |
buf[1] = cyg_libc_time_month_name[timeptr->tm_mon][1]; |
buf[2] = cyg_libc_time_month_name[timeptr->tm_mon][2]; |
return 3; |
case 'B': |
if (sizeleft < cyg_libc_time_month_name_len[timeptr->tm_mon]) |
return -1; |
for (i=0; i<cyg_libc_time_month_name_len[timeptr->tm_mon]; ++i) |
buf[i] = cyg_libc_time_month_name[timeptr->tm_mon][i]; |
return i; |
case 'c': |
if (sizeleft < 26) |
return -1; |
|
// Recurse! Note that we know that we will have left room for the |
// trailing NULL in the strftime body |
|
i = strftime( buf, sizeleft+1, "%a %b %d %I:%M:%S%p %Y", timeptr); |
|
return ((0==i) ? -1 : i); |
case 'd': |
if (sizeleft < 2) |
return -1; |
buf[0] = (timeptr->tm_mday / 10) + '0'; |
buf[1] = (timeptr->tm_mday % 10) + '0'; |
return 2; |
#ifdef CYGFUN_LIBC_TIME_SUS_EXTNS |
case 'e': |
if (sizeleft < 2) |
return -1; |
i = (timeptr->tm_mday / 10); |
buf[0] = (0 == i) ? ' ' : i + '0'; |
buf[1] = (timeptr->tm_mday % 10) + '0'; |
return 2; |
#endif |
case 'H': |
if (sizeleft < 2) |
return -1; |
buf[0] = (timeptr->tm_hour / 10) + '0'; |
buf[1] = (timeptr->tm_hour % 10) + '0'; |
return 2; |
case 'I': |
if (sizeleft < 2) |
return -1; |
buf[0] = ((timeptr->tm_hour%12 + 1) / 10) + '0'; |
buf[1] = ((timeptr->tm_hour%12 + 1) % 10) + '0'; |
return 2; |
case 'j': |
if (sizeleft < 3) |
return -1; |
buf[0] = (timeptr->tm_yday / 100) + '0'; |
buf[1] = ((timeptr->tm_yday % 100) / 10) + '0'; |
buf[2] = (timeptr->tm_yday % 10) + '0'; |
return 3; |
case 'm': |
if (sizeleft < 2) |
return -1; |
buf[0] = ((timeptr->tm_mon+1) / 10) + '0'; |
buf[1] = ((timeptr->tm_mon+1) % 10) + '0'; |
return 2; |
case 'M': |
if (sizeleft < 2) |
return -1; |
buf[0] = (timeptr->tm_min / 10) + '0'; |
buf[1] = (timeptr->tm_min % 10) + '0'; |
return 2; |
case 'p': |
if (sizeleft < 2) |
return -1; |
buf[0] = (timeptr->tm_hour > 11) ? 'p' : 'a'; |
buf[1] = 'm'; |
return 2; |
case 'S': |
if (sizeleft < 2) |
return -1; |
buf[0] = (timeptr->tm_sec / 10) + '0'; |
buf[1] = (timeptr->tm_sec % 10) + '0'; |
return 2; |
#ifdef CYGFUN_LIBC_TIME_SUS_EXTNS |
case 'T': |
if (sizeleft < 8) |
return -1; |
|
// Recurse! Note that we know that we will have left room for the |
// trailing NULL in the strftime body |
|
i = strftime( buf, sizeleft+1, "%H:%M:%S", timeptr); |
|
return ((0==i) ? -1 : i); |
#endif |
case 'U': |
if (sizeleft < 2) |
return -1; |
i = (timeptr->tm_yday - timeptr->tm_wday + 7) / 7; |
buf[0] = (i / 10) + '0'; |
buf[1] = (i % 10) + '0'; |
return 2; |
case 'w': |
// Don't need to check size - we'll always be called with sizeleft > 0 |
buf[0] = timeptr->tm_wday + '0'; |
return 1; |
case 'W': |
if (sizeleft < 2) |
return -1; |
i = (timeptr->tm_yday + ((8-timeptr->tm_wday) % 7)) / 7; |
buf[0] = (i / 10) + '0'; |
buf[1] = (i % 10) + '0'; |
return 2; |
case 'x': |
if (sizeleft < 15) |
return -1; |
|
// Recurse! Note that we know that we will have left room for the |
// trailing NULL in the strftime body |
|
i = strftime( buf, sizeleft+1, "%a %b %d %Y", timeptr); |
|
return (0==i) ? -1 : i; |
case 'X': |
if (sizeleft < 10) |
return -1; |
|
// Recurse! Note that we know that we will have left room for the |
// trailing NULL in the strftime body |
|
i = strftime( buf, sizeleft+1, "%I:%M:%S%p", timeptr); |
|
return (0==i) ? -1 : i; |
case 'y': |
if (sizeleft < 2) |
return -1; |
buf[0] = ((timeptr->tm_year % 100) / 10) + '0'; |
buf[1] = ((timeptr->tm_year % 100) % 10) + '0'; |
return 2; |
case 'Y': |
if (sizeleft < 4) |
return -1; |
buf[0] = ((1900+timeptr->tm_year) / 1000) + '0'; |
buf[1] = (((1900+timeptr->tm_year) % 1000) / 100) + '0'; |
buf[2] = ((timeptr->tm_year % 100) / 10) + '0'; |
buf[3] = (timeptr->tm_year % 10) + '0'; |
return 4; |
case 'Z': |
// FIXME: Should store zone in timeptr->tm_zone, or failing that |
// read TZ env variable using tzset() |
return 0; |
case '%': |
// Don't need to check size - we'll always be called with sizeleft > 0 |
buf[0] = '%'; |
return 1; |
default: |
CYG_FAIL("invalid format character!"); |
return -1; |
} // switch |
|
} // do_format() |
|
externC size_t |
strftime( char *s, size_t maxsize, const char *format, |
const struct tm *timeptr) |
{ |
CYG_REPORT_FUNCNAMETYPE("strftime", "returning string length %d"); |
CYG_CHECK_DATA_PTR(s, "string s is not a valid address!"); |
CYG_CHECK_DATA_PTR(format, "format string is not at a valid address!"); |
CYG_CHECK_DATA_PTR(timeptr, |
"struct tm argument is not at a valid address!"); |
CYG_REPORT_FUNCARG4("s is at address %08x, maxsize=%d, format=\"%s\", " |
"timeptr is at address %08x", |
s, maxsize, format, timeptr); |
|
CYG_PRECONDITION((timeptr->tm_sec >= 0) && (timeptr->tm_sec < 62), |
"timeptr->tm_sec out of range!"); |
CYG_PRECONDITION((timeptr->tm_min >= 0) && (timeptr->tm_min < 60), |
"timeptr->tm_min out of range!"); |
CYG_PRECONDITION((timeptr->tm_hour >= 0) && (timeptr->tm_hour < 24), |
"timeptr->tm_hour out of range!"); |
// Currently I don't check _actual_ numbers of days in each month here |
// FIXME: No reason why not though |
CYG_PRECONDITION((timeptr->tm_mday >= 1) && (timeptr->tm_mday < 32), |
"timeptr->tm_mday out of range!"); |
CYG_PRECONDITION((timeptr->tm_mon >= 0) && (timeptr->tm_mon < 12), |
"timeptr->tm_mon out of range!"); |
CYG_PRECONDITION((timeptr->tm_wday >= 0) && (timeptr->tm_wday < 7), |
"timeptr->tm_wday out of range!"); |
CYG_PRECONDITION((timeptr->tm_yday >= 0) && (timeptr->tm_yday < 366), |
"timeptr->tm_yday out of range!"); |
CYG_PRECONDITION((timeptr->tm_year > -1900) && |
(timeptr->tm_year < 8100), |
"timeptr->tm_year out of range!"); |
|
if (!maxsize) { |
CYG_REPORT_RETVAL(0); |
return 0; |
} // if |
|
// lets leave the room for the trailing null up front |
--maxsize; |
|
cyg_ucount32 i, spos; |
cyg_int8 dof_ret; |
|
for (i=0, spos=0; (spos<maxsize) && (format[i] != '\0'); ++i) { |
if (format[i] == '%') { |
if (format[++i] == '\0') |
break; |
dof_ret = do_format(format[i], maxsize - spos, &s[spos], timeptr); |
// was there room to write _anything_? |
if (dof_ret < 0) { |
spos=0; // ISO says we must return 0 and the contents of s |
// are indeterminate |
break; |
} |
spos += dof_ret; |
} |
else { |
s[spos++] = format[i]; |
} // else |
} // for |
|
s[spos] = '\0'; |
|
CYG_REPORT_RETVAL(spos); |
return spos; |
|
} // strftime() |
|
|
// EOF strftime.cxx |
/v2_0/src/time.cxx
0,0 → 1,105
//======================================================================== |
// |
// time.cxx |
// |
// ISO C date and time implementation for time() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-03-04 |
// Purpose: Provide implementation of ISO C time() as defined in |
// ISO C section 7.12.2.4 |
// Description: This file provides an implementation of time() using |
// the "wallclock" device |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
#include <cyg/infra/cyg_ass.h> // Assertion infrastructure |
#include <cyg/infra/cyg_trac.h> // Tracing infrastructure |
#include <time.h> // Main date and time definitions |
|
#ifdef CYGSEM_LIBC_TIME_TIME_WORKING |
# include <cyg/io/wallclock.hxx> // Wallclock class definitions |
#endif |
|
// FUNCTIONS |
|
externC time_t |
time( time_t *timer ) |
{ |
CYG_REPORT_FUNCNAMETYPE("time", "returning %d"); |
if (timer) // its allowed to be NULL |
CYG_CHECK_DATA_PTR( timer, "timer is not a valid pointer!"); |
CYG_REPORT_FUNCARG1("timer = %08x", timer); |
|
#ifdef CYGSEM_LIBC_TIME_TIME_WORKING |
time_t ret; |
|
ret = (time_t) Cyg_WallClock::wallclock->get_current_time(); |
|
if (timer) |
*timer = ret; |
|
CYG_REPORT_RETVAL(ret); |
|
return ret; |
|
#else // i.e. ifndef CYGSEM_LIBC_TIME_TIME_WORKING |
|
if (timer) |
*timer = (time_t)-1; |
CYG_REPORT_RETVAL(-1); |
return (time_t)-1; |
|
#endif |
|
} // time() |
|
|
// EOF time.cxx |
/v2_0/src/ctime.cxx
0,0 → 1,67
//======================================================================== |
// |
// ctime.cxx |
// |
// ISO C date and time implementation for ctime() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of ISO C ctime() |
// Description: This file provides the linkable symbol version of ctime() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// The following lines allow ctime() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_CTIME_INLINE |
#ifndef CYGIMP_LIBC_TIME_CTIME_INLINE |
# define CYGIMP_LIBC_TIME_CTIME_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// EOF ctime.cxx |
/v2_0/src/gmtime_r.cxx
0,0 → 1,67
//======================================================================== |
// |
// gmtime_r.cxx |
// |
// POSIX 1003.1 date and time implementation for gmtime_r() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of POSIX 1003.1 gmtime() |
// Description: This file provides the linkable symbol version of gmtime_r() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// The following lines allow gmtime_r() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_GMTIME_R_INLINE |
#ifndef CYGIMP_LIBC_TIME_GMTIME_R_INLINE |
# define CYGIMP_LIBC_TIME_GMTIME_R_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// EOF gmtime_r.cxx |
/v2_0/src/asctime_r.cxx
0,0 → 1,71
//======================================================================== |
// |
// asctime_r.cxx |
// |
// POSIX 1003.1 date and time implementation for asctime_r() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of POSIX 1003.1 asctime() |
// Description: This file provides the linkable symbol version of asctime_r() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
|
// The following lines allow asctime_r() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_ASCTIME_R_INLINE |
#ifndef CYGIMP_LIBC_TIME_ASCTIME_R_INLINE |
# define CYGIMP_LIBC_TIME_ASCTIME_R_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// EOF asctime_r.cxx |
/v2_0/src/strptime.cxx
0,0 → 1,427
// |
// Adapted for use in eCos by Gary Thomas |
// Copyright (C) 2003 Gary Thomas |
// |
|
/* |
|
* (Royal Institute of Technology, Stockholm, Sweden). |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* |
* 3. Neither the name of KTH nor the names of its contributors may be |
* used to endorse or promote products derived from this software without |
* specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY |
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE |
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ |
|
#include <stddef.h> |
#include <stdlib.h> |
#include <ctype.h> |
#include <time.h> |
|
static const char *weekdays[] = { |
"Sunday", |
"Monday", |
"Tuesday", |
"Wednesday", |
"Thursday", |
"Friday", |
"Saturday", |
NULL |
}; |
|
static const char *month[] = { |
"January", |
"February", |
"Mars", |
"April", |
"May", |
"June", |
"July", |
"August", |
"September", |
"October", |
"November", |
"December", |
NULL, |
}; |
|
static const char *ampm[] = { |
"am", |
"pm", |
NULL |
}; |
|
/* |
* Try to match `*buf' to one of the strings in `strs'. Return the |
* index of the matching string (or -1 if none). Also advance buf. |
*/ |
|
static int |
match_string (const char **buf, const char **strs, int ablen) |
{ |
int i = 0; |
|
for (i = 0; strs[i] != NULL; ++i) { |
int len = ablen > 0 ? ablen : strlen (strs[i]); |
|
if (strncasecmp (*buf, strs[i], len) == 0) { |
*buf += len; |
return i; |
} |
} |
return -1; |
} |
|
/* |
* tm_year is relative this year |
*/ |
|
const int tm_year_base = 1900; |
|
/* |
* Return TRUE iff `year' was a leap year. |
*/ |
|
static int |
is_leap_year (int year) |
{ |
return (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0); |
} |
|
/* |
* Return the weekday [0,6] (0 = Sunday) of the first day of `year' |
*/ |
|
static int |
first_day (int year) |
{ |
int ret = 4; // Jan 1, 1970 was on Thursday |
|
for (; year > 1970; --year) |
ret = (ret + 365 + is_leap_year (year) ? 1 : 0) % 7; |
return ret; |
} |
|
/* |
* Set `timeptr' given `wnum' (week number [0, 53]) |
*/ |
|
static void |
set_week_number_sun (struct tm *timeptr, int wnum) |
{ |
int fday = first_day (timeptr->tm_year + tm_year_base); |
|
timeptr->tm_yday = wnum * 7 + timeptr->tm_wday - fday; |
if (timeptr->tm_yday < 0) { |
timeptr->tm_wday = fday; |
timeptr->tm_yday = 0; |
} |
} |
|
/* |
* Set `timeptr' given `wnum' (week number [0, 53]) |
*/ |
|
static void |
set_week_number_mon (struct tm *timeptr, int wnum) |
{ |
int fday = (first_day (timeptr->tm_year + tm_year_base) + 6) % 7; |
|
timeptr->tm_yday = wnum * 7 + (timeptr->tm_wday + 6) % 7 - fday; |
if (timeptr->tm_yday < 0) { |
timeptr->tm_wday = (fday + 1) % 7; |
timeptr->tm_yday = 0; |
} |
} |
|
/* |
* Set `timeptr' given `wnum' (week number [0, 53]) |
*/ |
|
static void |
set_week_number_mon4 (struct tm *timeptr, int wnum) |
{ |
int fday = (first_day (timeptr->tm_year + tm_year_base) + 6) % 7; |
int offset = 0; |
|
if (fday < 4) |
offset += 7; |
|
timeptr->tm_yday = offset + (wnum - 1) * 7 + timeptr->tm_wday - fday; |
if (timeptr->tm_yday < 0) { |
timeptr->tm_wday = fday; |
timeptr->tm_yday = 0; |
} |
} |
|
/* |
* |
*/ |
|
char * |
strptime (const char *buf, const char *format, struct tm *timeptr) |
{ |
char c; |
|
timeptr->tm_yday = 1; // So it's always valid |
timeptr->tm_isdst = 0; |
|
for (; (c = *format) != '\0'; ++format) { |
char *s; |
int ret; |
|
if (isspace (c)) { |
while (isspace (*buf)) |
++buf; |
} else if (c == '%' && format[1] != '\0') { |
c = *++format; |
if (c == 'E' || c == 'O') |
c = *++format; |
switch (c) { |
case 'A' : |
ret = match_string (&buf, weekdays, 0); |
if (ret < 0) |
return NULL; |
timeptr->tm_wday = ret; |
break; |
case 'a' : |
ret = match_string (&buf, weekdays, 3); |
if (ret < 0) |
return NULL; |
timeptr->tm_wday = ret; |
break; |
case 'B' : |
ret = match_string (&buf, month, 0); |
if (ret < 0) |
return NULL; |
timeptr->tm_mon = ret; |
break; |
case 'b' : |
case 'h' : |
ret = match_string (&buf, month, 3); |
if (ret < 0) |
return NULL; |
timeptr->tm_mon = ret; |
break; |
case 'C' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_year = (ret * 100) - tm_year_base; |
buf = s; |
break; |
case 'c' : |
// Date and Time in the current locale - unsupported |
return NULL; |
case 'D' : /* %m/%d/%y */ |
s = strptime (buf, "%m/%d/%y", timeptr); |
if (s == NULL) |
return NULL; |
buf = s; |
break; |
case 'd' : |
case 'e' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_mday = ret; |
buf = s; |
break; |
case 'H' : |
case 'k' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_hour = ret; |
buf = s; |
break; |
case 'I' : |
case 'l' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
if (ret == 12) |
timeptr->tm_hour = 0; |
else |
timeptr->tm_hour = ret; |
buf = s; |
break; |
case 'j' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_yday = ret - 1; |
buf = s; |
break; |
case 'm' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_mon = ret - 1; |
buf = s; |
break; |
case 'M' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_min = ret; |
buf = s; |
break; |
case 'n' : |
if (*buf == '\n') |
++buf; |
else |
return NULL; |
break; |
case 'p' : |
ret = match_string (&buf, ampm, 0); |
if (ret < 0) |
return NULL; |
if (timeptr->tm_hour == 0) { |
if (ret == 1) |
timeptr->tm_hour = 12; |
} else |
timeptr->tm_hour += 12; |
break; |
case 'r' : /* %I:%M:%S %p */ |
s = strptime (buf, "%I:%M:%S %p", timeptr); |
if (s == NULL) |
return NULL; |
buf = s; |
break; |
case 'R' : /* %H:%M */ |
s = strptime (buf, "%H:%M", timeptr); |
if (s == NULL) |
return NULL; |
buf = s; |
break; |
case 'S' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_sec = ret; |
buf = s; |
break; |
case 't' : |
if (*buf == '\t') |
++buf; |
else |
return NULL; |
break; |
case 'T' : /* %H:%M:%S */ |
case 'X' : |
s = strptime (buf, "%H:%M:%S", timeptr); |
if (s == NULL) |
return NULL; |
buf = s; |
break; |
case 'u' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_wday = ret - 1; |
buf = s; |
break; |
case 'w' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_wday = ret; |
buf = s; |
break; |
case 'U' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
set_week_number_sun (timeptr, ret); |
buf = s; |
break; |
case 'V' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
set_week_number_mon4 (timeptr, ret); |
buf = s; |
break; |
case 'W' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
set_week_number_mon (timeptr, ret); |
buf = s; |
break; |
case 'x' : |
s = strptime (buf, "%Y:%m:%d", timeptr); |
if (s == NULL) |
return NULL; |
buf = s; |
break; |
case 'y' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
if (ret < 70) |
timeptr->tm_year = 100 + ret; |
else |
timeptr->tm_year = ret; |
buf = s; |
break; |
case 'Y' : |
ret = strtol (buf, &s, 10); |
if (s == buf) |
return NULL; |
timeptr->tm_year = ret - tm_year_base; |
buf = s; |
break; |
case 'Z' : |
// Timezone spec not handled |
return NULL; |
case '\0' : |
--format; |
/* FALLTHROUGH */ |
case '%' : |
if (*buf == '%') |
++buf; |
else |
return NULL; |
break; |
default : |
if (*buf == '%' || *++buf == c) |
++buf; |
else |
return NULL; |
break; |
} |
} else { |
if (*buf == c) |
++buf; |
else |
return NULL; |
} |
} |
return (char *)buf; |
} |
|
// strptime.cxx |
/v2_0/src/localtime.cxx
0,0 → 1,71
//======================================================================== |
// |
// localtime.cxx |
// |
// ISO C date and time implementation for localtime() |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide implementation of ISO C localtime() |
// Description: This file provides the linkable symbol version of localtime() |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// The following lines allow localtime() to be included non-inline which |
// actually defines it as a function here |
#define CYGPRI_LIBC_TIME_LOCALTIME_INLINE |
#ifndef CYGIMP_LIBC_TIME_LOCALTIME_INLINE |
# define CYGIMP_LIBC_TIME_LOCALTIME_INLINE |
#endif |
|
#include <time.h> // Main date and time definitions |
|
// GLOBALS |
|
struct tm cyg_libc_time_localtime_buf; |
|
// EOF localtime.cxx |
/v2_0/src/settime.cxx
0,0 → 1,97
//======================================================================== |
// |
// settime.cxx |
// |
// Date and time support function to set time |
// |
//======================================================================== |
//####ECOSGPLCOPYRIGHTBEGIN#### |
// ------------------------------------------- |
// This file is part of eCos, the Embedded Configurable Operating System. |
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
// |
// eCos is free software; you can redistribute it and/or modify it under |
// the terms of the GNU General Public License as published by the Free |
// Software Foundation; either version 2 or (at your option) any later version. |
// |
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
// WARRANTY; without even the implied warranty of MERCHANTABILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with eCos; if not, write to the Free Software Foundation, Inc., |
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
// |
// As a special exception, if other files instantiate templates or use macros |
// or inline functions from this file, or you compile this file and link it |
// with other works to produce a work based on this file, this file does not |
// by itself cause the resulting work to be covered by the GNU General Public |
// License. However the source code for this file must still be made available |
// in accordance with section (3) of the GNU General Public License. |
// |
// This exception does not invalidate any other reasons why a work based on |
// this file might be covered by the GNU General Public License. |
// |
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
// at http://sources.redhat.com/ecos/ecos-license/ |
// ------------------------------------------- |
//####ECOSGPLCOPYRIGHTEND#### |
//======================================================================== |
//#####DESCRIPTIONBEGIN#### |
// |
// Author(s): jlarmour |
// Contributors: jlarmour |
// Date: 1999-02-26 |
// Purpose: Provide support function to set the time |
// Description: The wallclock device is used to store the time in UTC |
// Usage: |
// |
//####DESCRIPTIONEND#### |
// |
//======================================================================== |
|
// CONFIGURATION |
|
#include <pkgconf/libc_time.h> // C library configuration |
|
// INCLUDES |
|
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
#include <time.h> // Main date and time definitions |
#include <cyg/infra/cyg_ass.h> // Assertion infrastructure |
#include <cyg/infra/cyg_trac.h> // Tracing infrastructure |
#ifdef CYGSEM_LIBC_TIME_SETTIME_WORKING |
# include <cyg/io/wallclock.hxx> // Wallclock class definitions |
#endif |
|
// FUNCTIONS |
|
///////////////////////////// |
// cyg_libc_time_settime() // |
///////////////////////////// |
// |
// This function sets the current time for the system. The time is |
// specified as a time_t in UTC. It returns non-zero on error. |
// |
|
externC cyg_bool |
cyg_libc_time_settime( time_t utctime ) |
{ |
CYG_REPORT_FUNCNAMETYPE("cyg_libc_time_settime", "returning status %d"); |
CYG_REPORT_FUNCARG1DV(utctime); |
|
#ifdef CYGSEM_LIBC_TIME_SETTIME_WORKING |
|
Cyg_WallClock::wallclock->set_current_time((cyg_uint32) utctime); |
|
CYG_REPORT_RETVAL(false); |
return false; |
#else |
CYG_REPORT_RETVAL(true); |
return true; |
#endif |
|
} // cyg_libc_time_settime() |
|
// EOF settime.cxx |