|
|
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);
}