DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T p

⟦92b663b43⟧ TextFile

    Length: 3036 (0xbdc)
    Types: TextFile
    Names: »parse.c«

Derivation

└─⟦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« 

TextFile

/* 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(&current);
	
	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);
}