|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 3036 (0xbdc) Types: TextFile Names: »parse.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Src/MTAconsole/parse.c«
/* parse.c: various parsing routines */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Src/MTAconsole/RCS/parse.c,v 5.0 90/09/20 16:20:05 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Src/MTAconsole/RCS/parse.c,v 5.0 90/09/20 16:20:05 pp Exp Locker: pp $ * * $Log: parse.c,v $ * Revision 5.0 90/09/20 16:20:05 pp * rcsforce : 5.0 public release * */ #include "console.h" /* convert a given string to time */ char *unparsetime(mytime) unsigned long mytime; { char buf[BUFSIZ]; unsigned long result; buf[0] = '\0'; if ((result = mytime / (60 * 60 * 24)) != 0) { sprintf(buf, "%d d",result); mytime = mytime % (60 * 60 *24); } if ((result = mytime / (60 * 60)) != 0) { sprintf(buf, (buf[0] == '\0') ? "%s%d h" : "%s %d h", buf, result); mytime = mytime % (60 * 60); } if ((result = mytime / 60 ) != 0) { sprintf(buf, (buf[0] == '\0') ? "%s%d m" : "%s %d m", buf, result); mytime = mytime % (60); } if (mytime != 0) sprintf(buf, (buf[0] == '\0') ? "%s%d s" : "%s %d s", buf, mytime); return strdup(buf); } time_t parsetime(s) char *s; { int n; if (*s == NULL) return 0; while(*s != NULL && isspace(*s)) s++; n = 0; while (*s != NULL && isdigit(*s)) { n = n * 10 + *s - '0'; s++; } while (*s != NULL && isspace(*s)) s++; if (*s != NULL && isalpha(*s)) { switch (*s) { case 's': case 'S': break; case 'm': case 'M': n *= 60; break; case 'h': case 'H': n *= 3600; break; case 'd': case 'D': n *= 86400; break; case 'w': case 'W': n *= 604800; break; default: break; } return n + parsetime(s+1); } else return n + parsetime(s); } extern time_t time(); char *mystrtotime(str) char *str; { UTC utc; time_t newsecs; time_t current; char *retval; newsecs = parsetime(str); time(¤t); current += newsecs; utc = time_t2utc(current); retval = utct2str(utc); free((char *) utc); return strdup(retval); } #define MaxCharPerInt 16 /* convert integer to string */ char *itoa(i) int i; { char buf[MaxCharPerInt]; sprintf(buf,"%d",i); return strdup(buf); } /* convert number to volume */ char *vol2str(vol) int vol; { char buf[BUFSIZ]; if (vol < 1024) sprintf(buf, "%d bytes", vol); else if (vol < 1048576) sprintf(buf, "%d Kbytes", (vol/1024)); else sprintf(buf, "%d Mbytes", (vol/1048576)); return strdup(buf); } time_t convert_time(qb) struct type_UNIV_UTCTime *qb; { char *str; time_t temp; if (qb == NULL) return 0; str = qb2str(qb); temp = utc2time_t(str2utct(str, strlen(str))); free(str); return temp; } char *time_t2RFC(in) time_t in; { char buf[BUFSIZ]; struct tm *tm; struct UTCtime uts; struct timeval dummy; struct timezone time_zone; tm = localtime (&in); tm2ut (tm, &uts); uts.ut_flags |= UT_ZONE; gettimeofday(&dummy, &time_zone); uts.ut_zone = time_zone.tz_minuteswest/60; UTC2rfc(&uts, buf); return strdup(buf); }