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 u

⟦8a533b433⟧ TextFile

    Length: 2328 (0x918)
    Types: TextFile
    Names: »util.c.orig«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Scrabble/util.c.orig« 

TextFile


/* RCS Info: $Revision: 1.1 $ on $Date: 89/03/10 10:11:10 $
 *           $Source: /yew3/faustus/src/scrabble/RCS/util.c,v $
 * Copyright (c) 1988 Wayne A. Christopher, U. C. Berkeley CAD Group 
 *	 faustus@cad.berkeley.edu, ucbvax!faustus
 * Permission is granted to modify and re-distribute this code in any manner
 * as long as this notice is preserved.  All standard disclaimers apply.
 *
 */

#include "util.h"
#include <pwd.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>

extern char *malloc();
extern char *realloc();

char *
strsav(str)
	char *str;
{
	char *p;
	
	p = malloc(strlen(str) + 1);
	if (p)
		strcpy(p, str);
	return (p);
}

char *
strstr(str, sub)
	char *str, *sub;
{
	char *s, *t;

	while (*str) {
		if (*str == *sub) {
			for (s = sub, t = str; *s && *t; s++, t++)
				if (*s != *t)
					break;
			if (!*s)
				return (str);
		}
		str++;
	}
	return (NULL);
}

char *
util_datestring()
{
	register char *tzn;
	struct tm *tp;
	static char tbuf[40];
	char *ap;
	struct timeval tv;
	struct timezone tz;
	char *timezone(), *asctime();
	int i;
	struct tm *localtime();

	(void) gettimeofday(&tv, &tz);
	tp = localtime((time_t *) &tv.tv_sec);
	ap = asctime(tp);
	tzn = timezone(tz.tz_minuteswest, tp->tm_isdst);
	sprintf(tbuf, "%.20s", ap);
	if (tzn)
		strcat(tbuf, tzn);
	strcat(tbuf, ap + 19);
	i = strlen(tbuf);
	tbuf[i - 1] = '\0';
	return (tbuf);
}

int
util_seconds()
{
	struct rusage ruse;

	getrusage(RUSAGE_SELF, &ruse);
	return (ruse.ru_utime.tv_sec);
}

char *
util_tildexpand(s)
	char *s;
{
	struct passwd *pw;
	char *n, buf[64];
	int i;

	if (*s != '~') {
		n = malloc(strlen(s) + 1);
		strcpy(n, s);
		return (n);
	}

	for (s++, i = 0; *s != '/'; s++, i++)
		buf[i] = *s;
	buf[i] = '\0';
	if (!i)
		pw = getpwuid(getuid());
	else
		pw = getpwnam(buf);
	if (!pw)
		return (s);
	n = malloc(strlen(s) + strlen(pw->pw_dir) + 1);
	strcpy(n, pw->pw_dir);
	strcat(n, s);
	return (n);
}

char *
util_malloc(num)
	int num;
{
	char *s;

	s = malloc((unsigned) num);
	if (!s) {
		fprintf(stderr, "malloc: can't allocate %d bytes", num);
		exit(1);
	}
	bzero(s, num);
	return (s);
}

char *
util_realloc(ptr, num)
	char *ptr;
	int num;
{
	char *s;

	s = realloc(ptr, (unsigned) num);
	if (!s) {
		fprintf(stderr, "realloc: can't allocate %d bytes", num);
		exit(1);
	}
	return (s);
}