localtime.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* localtime.c - localtime routine for the ANSI time library */
  2. /* Copyright 1992-1996 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,17nov97,dgp  doc: fix SPR 9415: localtime returns a static structure
  7. 01d,20jun96,dbt  corrected localtime_r (SPR #2521).
  8.  timeBuffer must be initialized before a call of __getDstInfo.
  9.  Updated copyright.
  10. 01c,05feb93,jdi  documentation cleanup for 5.1.
  11. 01b,20sep92,smb  documentation additions
  12. 01a,25jul92,smb  written.
  13. */
  14. /*  
  15. DESCRIPTION  
  16.   
  17. INCLUDE FILE: time.h, stdlib.h
  18.    
  19. SEE ALSO: American National Standard X3.159-1989 
  20. NOMANUAL
  21. */
  22. #include "vxWorks.h"
  23. #include "time.h"
  24. #include "stdlib.h"
  25. #include "private/timeP.h"
  26. extern TIMELOCALE *__loctime; /* time locale information */
  27. /****************************************************************************
  28. *
  29. * localtime - convert calendar time into broken-down time (ANSI)
  30. *
  31. * This routine converts the calendar time pointed to by <timer> into
  32. * broken-down time, expressed as local time.
  33. *
  34. * INCLUDE FILES: time.h
  35. *
  36. * RETURNS: 
  37. * A pointer to the static structure `tm' containing the local broken-down time.
  38. */
  39. struct tm *localtime
  40.     (
  41.     const time_t * timer  /* calendar time in seconds */
  42.     )
  43.     {
  44.     static struct tm timeBuffer;
  45.     localtime_r (timer, &timeBuffer);
  46.     return (&timeBuffer);
  47.     }
  48. /****************************************************************************
  49. *
  50. * localtime_r - convert calendar time into broken-down time (POSIX)
  51. *
  52. * This routine converts the calendar time pointed to by <timer> into
  53. * broken-down time, expressed as local time.  The broken-down time is
  54. * stored in <timeBuffer>.
  55. *
  56. * This routine is the POSIX re-entrant version of localtime().
  57. *
  58. * INCLUDE FILES: time.h
  59. *
  60. * RETURNS: OK.
  61. */
  62. int localtime_r
  63.     (
  64.     const time_t * timer,  /* calendar time in seconds */
  65.     struct tm *    timeBuffer /* buffer for the broken-down time */
  66.     )
  67.     {
  68.     char zoneBuf [sizeof (ZONEBUFFER)];
  69.     int  dstOffset;
  70.     /* First get the zone info */
  71.     __getZoneInfo(zoneBuf, TIMEOFFSET, __loctime);
  72.     /* Generate a broken-down time structure */
  73.     __getTime (*timer - ((atoi (zoneBuf)) * SECSPERMIN), timeBuffer);
  74.     /* is Daylight Saving Time in effect ? */
  75.     dstOffset  = __getDstInfo (timeBuffer,__loctime);
  76.     timeBuffer->tm_isdst = dstOffset;
  77.     /* Correct the broken-down time structure if necessary */
  78.     if (dstOffset)
  79. __getTime ((*timer - ((atoi (zoneBuf)) * SECSPERMIN))
  80. + (dstOffset * SECSPERHOUR), timeBuffer);
  81.     return (OK);                 /* __getTime always returns OK */
  82.     }