mcgrath%tully.Berkeley.EDU@GINGER.BERKELEY.EDU (Roland McGrath) (05/14/89)
The following input produces bad code; the `fintrz' insn is not emitted at all. It produces different, but equally bad, code with -O and without. If the sequence `"f" "intrz" "%.x %1, %0"' is amalgomated into one string `"fintrz%.x %1, %0"', or if `foo' is made non-`static', the problem goes away. static inline double foo(double value, double *iptr) { double ipart; asm("f" "intrz" "%.x %1, %0" : "=f" (ipart) : "f" (value)); *iptr = ipart; return(value - ipart); } double bar(double value, double *iptr) { return foo(value, iptr); }
mcgrath%paris.Berkeley.EDU@GINGER.BERKELEY.EDU (Roland McGrath) (05/25/89)
GCC 1.35, Sun 3 (68020), Sun Unix 3.5. % cc1 -O strftime.i isalnum isalpha iscntrl isdigit islower isgraph isprint ispunct isspace isupper isxdigit tolower toupper isascii isascii ../ctype.h:42: redefinition of `isascii' ../ctype.h:39: here is the previous declaration of `isascii' __huge_val strftimeSegmentation fault (core dumped) strftime.i: # 1 "strftime.c" # 1 "../ansidecl.h" # 90 "../ansidecl.h" # 18 "strftime.c" # 1 "../localeinfo.h" # 1 "../stddef.h" typedef long int ptrdiff_t; typedef unsigned int size_t; typedef unsigned char wchar_t; # 25 "../localeinfo.h" # 1 "../limits.h" # 1 "../__posix_limits.h" # 29 "../limits.h" # 28 "../localeinfo.h" typedef struct { const char * const string; const size_t len; const int shift; } mb_char; struct ctype_info { const unsigned char * const ctype_b; const unsigned char * const ctype_tolower; const unsigned char * const ctype_toupper; const mb_char * const mb_chars; const size_t maxlen; }; extern size_t __mb_max; extern const unsigned char *__ctype_b; extern const unsigned char *__ctype_tolower; extern const unsigned char *__ctype_toupper; struct collate_info { const unsigned char * const table; }; struct numeric_info { const char * const decimal_point; const char * const thousands_sep; const char * const grouping; }; struct monetary_info { const char * const int_curr_symbol; const char * const currency_symbol; const char * const mon_decimal_point; const char * const mon_thousands_sep; const char * const mon_grouping; const char * const positive_sign; const char * const negative_sign; const char int_frac_digits; const char frac_digits; const char p_cs_precedes; const char p_sep_by_space; const char n_cs_precedes; const char n_sep_by_space; const char p_sign_posn; const char n_sign_posn; }; struct time_info { const char * const abbrev_wkday[7]; const char * const full_wkday[7]; const char * const abbrev_month[12]; const char * const full_month[12]; const char * const ampm[2]; const char * const ut0; const char * const tz; }; typedef struct { const char *name; int categories; const struct ctype_info *ctype; const struct time_info *time; const struct collate_info *collate; const struct numeric_info *numeric; const struct monetary_info *monetary; } locale; extern locale _current; extern const locale * const _locales[]; # 19 "strftime.c" # 1 "../ctype.h" enum { _ISupper = 1 << 0, _ISlower = 1 << 1, _IScntrl = 1 << 2, _ISdigit = 1 << 3, _ISspace = 1 << 4, _IShex = 1 << 5, _ISpunct = 1 << 6, _NOgraph = 1 << 7, _ISalpha = _ISupper | _ISlower, _ISalnum = _ISalpha | _ISdigit, _ISxdigit = _ISdigit | _IShex, _ISgraph = _ISalnum | _ISpunct, _ISprint = _ISgraph | _NOgraph }; extern const unsigned char *__ctype_b; extern const unsigned char *__ctype_tolower; extern const unsigned char *__ctype_toupper; static __inline int isalnum( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISalnum)) ) ; } ; static __inline int isalpha( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISalpha)) ) ; } ; static __inline int iscntrl( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _IScntrl)) ) ; } ; static __inline int isdigit( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISdigit)) ) ; } ; static __inline int islower( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISlower)) ) ; } ; static __inline int isgraph( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISgraph)) ) ; } ; static __inline int isprint( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISprint)) ) ; } ; static __inline int ispunct( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISpunct)) ) ; } ; static __inline int isspace( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISspace)) ) ; } ; static __inline int isupper( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISupper)) ) ; } ; static __inline int isxdigit( int __c) { return (__ctype_b[ ((unsigned char) (__c)) ] & ((unsigned char) ( _ISxdigit)) ) ; } ; static __inline int tolower( int __c) { return __ctype_tolower[ ((unsigned char) (__c)) ]; } static __inline int toupper( int __c) { return __ctype_toupper[ ((unsigned char) (__c)) ]; } static __inline int isascii( int __c) { return ( ((unsigned char) (__c)) & (1 << 7)) == 0; } static __inline int isascii( int __c) { return( ((unsigned char) (__c)) & 0x7f); } # 151 "../ctype.h" # 20 "strftime.c" # 1 "../limits.h" # 80 "../limits.h" # 21 "strftime.c" # 1 "../stddef.h" # 101 "../stddef.h" # 22 "strftime.c" # 1 "../stdio.h" # 1 "../stddef.h" # 101 "../stddef.h" # 28 "../stdio.h" # 1 "../stdarg.h" # 49 "../stdarg.h" typedef char *__va_list; # 80 "../stdarg.h" # 31 "../stdio.h" typedef struct __stdio_file FILE; typedef enum { __READING, __WRITING, __CHANGING } __io_direction; typedef struct { unsigned int __read:1; unsigned int __write:1; unsigned int __append:1; unsigned int __binary:1; unsigned int __create:1; unsigned int __exclusive:1; unsigned int __truncate:1; } __io_mode; typedef int __io_read ( void * __cookie, char *__buf, size_t __nbytes) ; typedef int __io_write ( void * __cookie, const char *__buf, size_t __n) ; typedef long int __io_seek ( void * __cookie, long int __off, int __w) ; typedef int __io_close ( void * __cookie) ; typedef struct { __io_read *__read; __io_write *__write; __io_seek *__seek; __io_close *__close; } __io_functions; typedef struct { int (*__input) (FILE *stream) ; void (*__output) (FILE *stream, int flush_only, int c) ; } __room_functions; extern const __io_functions __default_io_functions; extern const __room_functions __default_room_functions; extern __io_close __stdio_close; extern void * __stdio_open ( const char *__file, __io_mode __m, int *__dp) ; extern void __stdio_linebf ( void * __cookie, int *__buffering, size_t *__bufsize, __io_functions *__iof, __room_functions *__rf) ; extern void __stdio_errmsg ( const char *__msg, size_t __len) ; extern char * __stdio_gen_tempname ( const char *__dir, const char *__pfx, int __dir_search, size_t *__lenptr) ; extern volatile void __libc_fatal ( const char *__message) ; struct __stdio_file { FILE *__next; char *__buf; char *__bufp; char *__endp; size_t __bufsz; void * __cookie; int __fd; unsigned char __magic; char __pb_buf[3]; size_t __pb_count; __io_mode __mode; unsigned int __eof:1; unsigned int __error:1; unsigned int __userbuf:1; unsigned int __linebuf:1; unsigned int __seen:1; unsigned int __didnl:1; unsigned int __ispipe:1; __io_direction __direction; __io_functions __io_funcs; __room_functions __room_funcs; }; extern volatile void __stdio_ill_dirch (__io_direction __dir) ; # 170 "../stdio.h" extern void __invalidate (FILE *__stream) ; typedef long int fpos_t; extern FILE *__stdio_head; extern FILE *__stdio_tail; extern FILE __stdio_files[3]; extern FILE * const stdin, * const stdout, * const stderr; extern int remove ( const char *__filename) ; extern int rename ( const char *__old, const char *__new) ; extern FILE * tmpfile ( void ) ; extern char * tmpnam (char *__s) ; extern char * tempnam ( const char *__dir, const char *__pfx) ; extern int __flshfp (FILE *__stream, unsigned char __c, int __flush_only) ; extern int fclose (FILE *__stream) ; extern int fflush (FILE *__stream) ; extern FILE * fopen ( const char *__filename, const char *__mode) ; extern FILE* freopen ( const char *__filename, const char *__mode, FILE *__stream) ; extern FILE * __fopencookie ( void * __cookie, __io_mode mode, __io_functions __io_functions) ; extern FILE * fdopen (int __fd, const char *__mode) ; extern FILE * fopencookie ( void * __cookie, const char *__mode, __io_functions __io_functions) ; extern FILE * fopenstring (char *__s, size_t __len, const char *__mode) ; extern FILE * freplace (FILE *__replace, FILE *__with) ; extern void setbuf (FILE *__stream, char *__buf) ; extern int setvbuf (FILE *__stream, char *__buf, int __mode, size_t __n) ; extern void setbuffer (FILE *__stream, char *__buf, size_t __size) ; extern void setlinebuf (FILE *__stream) ; extern int fprintf (FILE *__stream, const char *__format, ...) ; extern int printf ( const char *__format, ...) ; extern int sprintf (char *__s, const char *__format, ...) ; extern int vfprintf (FILE *__s, const char *__format, __va_list __arg) ; extern int vprintf ( const char *__format, __va_list __arg) ; extern int vsprintf (char *__s, const char *__format, __va_list __arg) ; extern int __vflprintf (FILE *__s, const char *__format, __va_list __arg, int __limit, size_t __max) ; extern int snprintf (char *__s, size_t __maxlen, const char *__format, ...) ; extern int vsnprintf (char *__s, size_t __maxlen, const char *__format, __va_list __arg) ; extern int vflprintf (FILE *__s, size_t __n, const char *__format, __va_list __arg) ; extern int vslprintf (char *__s, size_t __n, const char *__format, __va_list __arg) ; extern int vslnprintf (char *__s, size_t __n, size_t __maxlen, const char *__format, __va_list __arg) ; extern int fscanf (FILE *__stream, const char *__format, ...) ; extern int scanf ( const char *__format, ...) ; extern int sscanf ( const char *__s, const char *__format, ...) ; extern int __vfscanf (FILE *__s, const char *__format, __va_list __arg, int __allocate) ; extern int vfscanf (FILE *__s, const char *__format, __va_list __arg) ; extern int vscanf ( const char *__format, __va_list __arg) ; extern int __vsscanf ( const char *__s, const char *__format, __va_list __arg) ; extern int vsscanf ( const char *__s, const char *__format, __va_list __arg) ; extern int vfscanf_malloc (FILE *__s, const char *__format, __va_list __arg) ; extern int fscanf_malloc (FILE *__stream, const char *__format, ...) ; extern int __fillbf (FILE *__stream) ; extern int fgetc (FILE *__stream) ; extern int getc (FILE *__stream) ; extern int getchar ( void ) ; extern int fputc (int __c, FILE *__stream) ; extern int putc (int __c, FILE *__stream) ; extern int putchar (int __c) ; extern int getw (FILE *__stream) ; extern int putw (int __w, FILE *__stream) ; extern char * fgets (char *__s, size_t __n, FILE *__stream) ; extern char * gets (char *__s) ; extern int fputs ( const char *__s, FILE *__stream) ; extern int puts ( const char *__s) ; extern int ungetc (int __c, FILE *__stream) ; extern size_t fread ( void * __ptr, size_t __size, size_t __n, FILE *__stream) ; extern size_t fwrite ( const void * __ptr, size_t __size, size_t __n, FILE *__s) ; extern int fgetpos (FILE *__stream, fpos_t *__pos) ; extern int fsetpos (FILE *__stream, const fpos_t *__pos) ; extern int fseek (FILE *__stream, long int __offset, int __whence) ; extern long int ftell (FILE *__stream) ; extern void rewind (FILE *__stream) ; extern void clearerr (FILE *__stream) ; extern int feof (FILE *__stream) ; extern int ferror (FILE *__stream) ; extern void perror ( const char *__s) ; extern void psignal ( const char *__s, int __sig) ; extern int fileno (FILE *__stream) ; extern FILE * popen ( const char *__command, const char *__mode) ; extern int pclose (FILE *__stream) ; extern char * ctermid (char *__s) ; extern char * cuserid (char *__s) ; # 23 "strftime.c" # 1 "../stdlib.h" # 1 "../stddef.h" # 101 "../stddef.h" # 31 "../stdlib.h" # 1 "../errno.h" # 1 "/usr/include/errno.h" # 1 "/usr/include/sys/errno.h" # 7 "/usr/include/errno.h" extern int errno; # 28 "../errno.h" extern volatile int errno; # 34 "../stdlib.h" # 1 "../float.h" # 1 "../__fl_68881.h" # 88 "../__fl_68881.h" static __inline const double __huge_val( void ) { register double __val; __asm("fmove%.d #0x7ff0000000000000, %0" : "=f" (__val)); return(__val); } # 63 "../float.h" # 38 "../stdlib.h" typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; extern size_t __mb_max; extern double atof ( const char *__nptr) ; extern int atoi ( const char *__nptr) ; extern long int atol ( const char *__nptr) ; extern double strtod ( const char *__nptr, char **__endptr) ; extern long int strtol ( const char *__nptr, char **__endptr, int __base) ; extern unsigned long int strtoul ( const char *__nptr, char **__endptr, int __base) ; extern int rand ( void ) ; extern void srand (unsigned int __seed) ; extern long int __random ( void ) ; extern void __srandom (unsigned int __seed) ; extern void * __initstate (unsigned int __seed, void * __statebuf, size_t __statelen) ; extern void * __setstate ( void * __statebuf) ; extern long int random ( void ) ; extern void srandom (unsigned int __seed) ; extern void * initstate (unsigned int __seed, void * __statebuf, size_t __statelen) ; extern void * setstate ( void * __statebuf) ; extern void * malloc (size_t __size) ; extern void * realloc ( void * __ptr, size_t __size) ; extern void * calloc (size_t __nmemb, size_t __size) ; extern void free ( void * __ptr) ; extern void cfree ( void * __ptr) ; extern void * __alloca (size_t __size) ; extern void * alloca (size_t __size) ; # 170 "../stdlib.h" extern void * memalign (size_t __alignment, size_t __size) ; extern void * valloc (size_t __size) ; extern volatile void abort ( void ) ; extern int atexit (void (*__func)( void )) ; extern int on_exit (void (*__func)(int __status, void * __arg), void * __arg) ; extern volatile void exit (int __status) ; extern char * getenv ( const char *__name) ; extern int putenv ( const char *__string) ; extern int system ( const char *__command) ; extern void * bsearch ( const void * __key, const void * __base, size_t __nmemb, size_t __size, int (*__compar)( const void * , const void * )) ; extern void qsort ( void * __base, size_t __nmemb, size_t __size, int (*__compar)( const void * , const void * )) ; extern const int abs (int __x) ; extern const long int labs (long int __x) ; extern const div_t div (int __numer, int __denom) ; extern const ldiv_t ldiv (long int __numer, long int __denom) ; extern int mblen ( const char *__s, size_t __n) ; extern int mbtowc (wchar_t *__pwc, const char *__s, size_t __n) ; extern int wctomb (char *__s, wchar_t __wchar) ; extern size_t mbstowcs (wchar_t *__pwcs, const char *__s, size_t __n) ; extern size_t wcstombs (char *__s, const wchar_t *__pwcs, size_t __n) ; extern int getopt (int __argc, const char **__argv, const char *__opts) ; extern int opterr; extern int optind; extern char *optarg; # 24 "strftime.c" # 1 "../string.h" # 1 "../stddef.h" # 101 "../stddef.h" # 29 "../string.h" extern void * memcpy ( void * __dest, const void * __src, size_t __n) ; extern void * memmove ( void * __dest, const void * __src, size_t __n) ; extern void * memccpy ( void * __dest, const void * __src, int __c, size_t __n) ; extern void * memset ( void * __s, int __c, size_t __n) ; extern int memcmp ( const void * __s1, const void * __s2, size_t __n) ; extern void * memchr ( const void * __s, int __c, size_t __n) ; extern char * strcpy (char *__dest, const char *__src) ; extern char * strncpy (char *__dest, const char *__src, size_t __n) ; extern char * strcat (char *__src, const char *__dest) ; extern char * strncat (char *__dest, const char *__src, size_t __n) ; extern int strcmp ( const char *__s1, const char *__s2) ; extern int strncmp ( const char *__s1, const char *__s2, size_t __n) ; extern int strcoll ( const char *__s1, const char *__s2) ; extern size_t strxfrm (char *__dest, const char *__src, size_t __n) ; extern char * strdup ( const char *__s) ; extern char * strchr ( const char *__s, int __c) ; extern char * strrchr ( const char *__s, int __c) ; extern size_t strcspn ( const char *__s, const char *__reject) ; extern size_t strspn ( const char *__s, const char *__accept) ; extern char * strpbrk ( const char *__s, const char *__accept) ; extern char * strstr ( const char *__needle, const char *__haystack) ; extern char * strtok (char *__s, const char *__delim) ; extern size_t strlen ( const char *__s) ; extern char * strerror (int __errnum) ; extern char * strsignal (int __sig) ; # 25 "strftime.c" # 1 "./time.h" # 1 "../stddef.h" # 101 "../stddef.h" # 32 "./time.h" typedef long int clock_t; typedef long int time_t; struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; extern clock_t clock ( void ) ; extern time_t time (time_t *__timer) ; extern const double difftime (time_t __time1, time_t __time0) ; extern time_t mktime (struct tm *__tp) ; extern size_t strftime (char *__s, size_t __maxsize, const char *__format, const struct tm *__tp) ; extern struct tm * gmtime ( const time_t *__timer) ; extern struct tm * localtime ( const time_t *__timer) ; extern struct tm * __offtime ( const time_t *__timer, long int __offset) ; # 131 "./time.h" extern char * asctime ( const struct tm *__tp) ; extern char * ctime ( const time_t *__timer) ; # 151 "./time.h" extern char *__tzname[2]; extern int __daylight; extern long int __timezone; extern void __tzset ( void ) ; extern char *tzname[2]; extern int daylight; extern long int timezone; extern void tzset ( void ) ; # 26 "strftime.c" # 41 "strftime.c" size_t strftime( char *s , size_t maxsize , const char *format , register const struct tm *tp) { const char * const a_wkday = _current.time ->abbrev_wkday[tp->tm_wday]; const char * const f_wkday = _current.time ->full_wkday[tp->tm_wday]; const char * const a_month = _current.time ->abbrev_month[tp->tm_mon]; const char * const f_month = _current.time ->full_month[tp->tm_mon]; size_t aw_len = strlen(a_wkday); size_t am_len = strlen(a_month); size_t wkday_len = strlen(f_wkday); size_t month_len = strlen(f_month); int hour12 = tp->tm_hour; const char * const ampm = _current.time ->ampm[hour12 > 12]; size_t ap_len = strlen(ampm); unsigned int y_week0, y_week1; const char *zone; size_t zonelen; register size_t i = 0; register char *p = s; register const char *f; __tzset(); if (tp->tm_isdst < 0) { zone = ""; zonelen = 0; } else { zone = __tzname[tp->tm_isdst > 0]; zonelen = strlen(zone); } if (hour12 > 12) hour12 -= 12; else if (hour12 == 0) hour12 = 12; y_week0 = y_week1 = 0; for (f = format; *f != '\0'; ++f) { if (!isascii(*f)) { int len = mblen(f, strlen(f)); if (len > 0) { do { i += ((len)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { memcpy(( void * ) p, ( void * ) ( f), (len)); p += ((len)); } } while (0) ; continue; } } if (*f != '%') { do { i += (1); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { *p = *f; p += (1); } } while (0) ; continue; } ++f; switch (*f) { case '%': do { i += (1); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { *p = *f; p += (1); } } while (0) ; break; case 'a': do { i += ((aw_len)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { memcpy(( void * ) p, ( void * ) ( a_wkday), (aw_len)); p += ((aw_len)); } } while (0) ; break; case 'A': do { i += ((wkday_len)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { memcpy(( void * ) p, ( void * ) ( f_wkday), (wkday_len)); p += ((wkday_len)); } } while (0) ; break; case 'b': do { i += ((am_len)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { memcpy(( void * ) p, ( void * ) ( a_month), (am_len)); p += ((am_len)); } } while (0) ; break; case 'B': do { i += ((month_len)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { memcpy(( void * ) p, ( void * ) ( f_month), (month_len)); p += ((month_len)); } } while (0) ; break; case 'c': do { i += ((25)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.3s %.3s %2d %.2d:%.2d:%.2d %d", a_wkday, a_month, tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec, 1900 + tp->tm_year) != (25)) return(0); p += ((25)); } } while (0) ; break; case 'd': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", tp->tm_mday) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'H': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", tp->tm_hour) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'I': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", hour12) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'j': do { i += ((3)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.3d", tp->tm_yday) != (3)) return(0); p += ((3)); } } while (0) ; break; case 'm': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", tp->tm_mon + 1) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'M': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", tp->tm_min) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'p': do { i += ((ap_len)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { memcpy(( void * ) p, ( void * ) ( ampm), (ap_len)); p += ((ap_len)); } } while (0) ; break; case 'S': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", tp->tm_sec) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'U': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2u", y_week0) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'w': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", tp->tm_wday) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'W': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2u", y_week1) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'x': do { i += ((15)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.3s %.3s %2d %d", a_wkday, a_month, tp->tm_mday, 1900 + tp->tm_sec) != (15)) return(0); p += ((15)); } } while (0) ; break; case 'X': do { i += ((8)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d:%.2d:%.2d", tp->tm_hour, tp->tm_min, tp->tm_sec) != (8)) return(0); p += ((8)); } } while (0) ; break; case 'y': do { i += ((2)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.2d", tp->tm_year) != (2)) return(0); p += ((2)); } } while (0) ; break; case 'Y': do { i += ((4)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { if (sprintf (p, "%.4d", 1900 + tp->tm_year) != (4)) return(0); p += ((4)); } } while (0) ; break; case 'Z': do { i += ((zonelen)); if (i >= maxsize) return(0); else if (p != ((void *) 0) ) { memcpy(( void * ) p, ( void * ) ( zone), (zonelen)); p += ((zonelen)); } } while (0) ; break; default: break; } } if (p != ((void *) 0) ) *p = '\0'; return(i); }