|
|
1.1 ! root 1: /* time2str.c - time string to string */ ! 2: ! 3: #ifndef lint ! 4: static char *rcsid = "$Header: /f/osi/psap/RCS/time2str.c,v 7.0 89/11/23 22:13:53 mrose Rel $"; ! 5: #endif ! 6: ! 7: /* ! 8: * $Header: /f/osi/psap/RCS/time2str.c,v 7.0 89/11/23 22:13:53 mrose Rel $ ! 9: * ! 10: * ! 11: * $Log: time2str.c,v $ ! 12: * Revision 7.0 89/11/23 22:13:53 mrose ! 13: * Release 6.0 ! 14: * ! 15: */ ! 16: ! 17: /* ! 18: * NOTICE ! 19: * ! 20: * Acquisition, use, and distribution of this module and related ! 21: * materials are subject to the restrictions of a license agreement. ! 22: * Consult the Preface in the User's Manual for the full terms of ! 23: * this agreement. ! 24: * ! 25: */ ! 26: ! 27: ! 28: /* LINTLIBRARY */ ! 29: ! 30: #include <stdio.h> ! 31: #include "psap.h" ! 32: ! 33: ! 34: #define YEAR(y) ((y) >= 100 ? (y) : (y) + 1900) ! 35: #define UNYEAR(y) ((y) < 1900 || (y) > 1999 ? (y) : (y) - 1900) ! 36: ! 37: /* */ ! 38: ! 39: char *time2str (u, generalized) ! 40: register UTC u; ! 41: int generalized; ! 42: { ! 43: register int hours, ! 44: mins, ! 45: zone; ! 46: register char *bp; ! 47: static char buffer[BUFSIZ]; ! 48: ! 49: if (u == NULLUTC) ! 50: return NULLCP; ! 51: ! 52: bp = buffer; ! 53: ! 54: if (generalized) ! 55: (void) sprintf (bp, "%04d", YEAR (u -> ut_year)); ! 56: else ! 57: (void) sprintf (bp, "%02d", UNYEAR (u -> ut_year)); ! 58: bp += strlen (bp); ! 59: ! 60: (void) sprintf (bp, "%02d%02d%02d%02d", u -> ut_mon, u -> ut_mday, ! 61: u -> ut_hour, u -> ut_min); ! 62: bp += strlen (bp); ! 63: ! 64: if (u -> ut_flags & UT_SEC ! 65: || (generalized && (u -> ut_flags & UT_USEC))) { ! 66: (void) sprintf (bp, "%02d", u -> ut_sec); ! 67: bp += strlen (bp); ! 68: } ! 69: if (generalized && (u -> ut_flags & UT_USEC)) { ! 70: (void) sprintf (bp, ".%06d", u -> ut_usec); ! 71: bp += strlen (bp); ! 72: } ! 73: ! 74: if (u -> ut_flags & UT_ZONE) ! 75: if ((zone = u -> ut_zone) == 0) ! 76: *bp++ = 'Z'; ! 77: else { ! 78: if (zone < 0) ! 79: mins = (-zone) % 60, hours = (-zone) / 60; ! 80: else ! 81: mins = zone % 60, hours = zone / 60; ! 82: (void) sprintf (bp, "%c%02d%02d", zone < 0 ? '-' : '+', ! 83: hours, mins); ! 84: bp += strlen (bp); ! 85: } ! 86: ! 87: *bp = NULL; ! 88: ! 89: return buffer; ! 90: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.