/* Copyright 1989, 1990 by James Aspnes, David Applegate, and Bennet Yee */
/* See the file COPYING for distribution information */
#include "os.h"
#include "db.h"
/* note: it's ok if from == to */
void strip_whitespace (const char *from, char *to)
{
while (*from) {
/* scan over word */
while (*from && !isspace (*from))
*to++ = *from++;
/* smash spaces */
while (*from && isspace (*from))
from++;
if (*from)
*to++ = ' '; /* add a space to separate next word */
}
/* terminate */
*to = '\0';
}
const char *time_string (datum t)
{
char *time_string;
time_string = ctime (&t);
/* kludge to get around high-octane ctime brain-damage */
time_string[24] = '\0';
return time_string;
}
const char *alloc_string (const char *string)
{
char *s;
/* NULL->NULL */
if (string == 0)
return 0;
if ((s = (char *) malloc (strlen (string) + 1)) == 0) {
abort ();
}
strcpy (s, string);
return s;
}
datum concat (datum s1, datum s2)
{
char buf[MAX_STRLEN];
const char *c1;
const char *c2;
if ((c1 = string (s1)) == NOTHING) {
return s2;
} else if ((c2 = string (s2)) == NOTHING) {
return s1;
} else if (strlen (c1) + strlen (c2) + 1 > MAX_STRLEN) {
/* too big, you lose */
return NOTHING;
} else {
strcpy (buf, c1);
strcat (buf, c2);
return intern (buf);
}
}
datum num_to_string (datum x)
{
char buf[MAX_STRLEN];
sprintf (buf, "%ld", x);
return intern (buf);
}