Home | History | Annotate | Download | only in common
      1 /*
      2  * Copyright 1987 Sun Microsystems, Inc.  All rights reserved.
      3  * Use is subject to license terms.
      4  */
      5 
      6 /*
      7  * Copyright (c) 1980 Regents of the University of California.
      8  * All rights reserved. The Berkeley software License Agreement
      9  * specifies the terms and conditions for redistribution.
     10  */
     11 
     12 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     13 
     14 /*LINTLIBRARY*/
     15 
     16 #include <time.h>
     17 #include <tzfile.h>
     18 
     19 static	char	cbuf[26];
     20 
     21 static char	*ct_numb(char *, int);
     22 
     23 char *
     24 asctime(struct tm *t)
     25 {
     26 	char *cp, *ncp;
     27 	int *tp;
     28 
     29 	cp = cbuf;
     30 	for (ncp = "Day Mon 00 00:00:00 1900\n"; *cp++ = *ncp++;);
     31 	ncp = &"SunMonTueWedThuFriSat"[3*t->tm_wday];
     32 	cp = cbuf;
     33 	*cp++ = *ncp++;
     34 	*cp++ = *ncp++;
     35 	*cp++ = *ncp++;
     36 	cp++;
     37 	tp = &t->tm_mon;
     38 	ncp = &"JanFebMarAprMayJunJulAugSepOctNovDec"[(*tp)*3];
     39 	*cp++ = *ncp++;
     40 	*cp++ = *ncp++;
     41 	*cp++ = *ncp++;
     42 	cp = ct_numb(cp, *--tp);
     43 	cp = ct_numb(cp, *--tp+100);
     44 	cp = ct_numb(cp, *--tp+100);
     45 	cp = ct_numb(cp, *--tp+100);
     46 	cp = ct_numb(cp, (t->tm_year + TM_YEAR_BASE)/100);
     47 	cp--;
     48 	cp = ct_numb(cp, t->tm_year+100);
     49 	return (cbuf);
     50 }
     51 
     52 static char *
     53 ct_numb(char *cp, int n)
     54 {
     55 	cp++;
     56 	if (n>=10)
     57 		*cp++ = (n/10)%10 + '0';
     58 	else
     59 		*cp++ = ' ';
     60 	*cp++ = n%10 + '0';
     61 	return (cp);
     62 }
     63