X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/b272e93d0daf161459475539491ba83ef84fcd90..9925d282e43a0171cc824352717a4c16559651a9:/gen/util.c diff --git a/gen/util.c b/gen/util.c index 8bbe2390..d56ea3b2 100644 --- a/gen/util.c +++ b/gen/util.c @@ -1,75 +1,105 @@ -/* $Header$ +/* $Id$ * * Utility routines used by the MOIRA extraction programs. * - * (c) Copyright 1988 by the Massachusetts Institute of Technology. - * For copying and distribution information, please see the file - * . + * Copyright (C) 1988-1998 by the Massachusetts Institute of Technology. + * For copying and distribution information, please see the file + * . */ - #include -#include -#include #include #include +#include +#include + +#include "util.h" -fix_file(targetfile) -char *targetfile; +RCSID("$Header$"); + +/* Julian day of the UNIX epoch (January 1, 1970) */ +#define UNIX_EPOCH 2440588 + +extern void sqlglm(char buf[], int *, int *); + +void fix_file(char *targetfile) { - char oldfile[64], filename[64]; - - sprintf(oldfile, "%s.old", targetfile); - sprintf(filename, "%s~", targetfile); - if (rename(targetfile, oldfile) == 0) { - if (rename(filename, targetfile) < 0) { - rename(oldfile, targetfile); - perror("Unable to install new file (rename failed)\n"); - fprintf(stderr, "Filename = %s\n", targetfile); - exit(MR_CCONFIG); + char oldfile[64], filename[64]; + + sprintf(oldfile, "%s.old", targetfile); + sprintf(filename, "%s~", targetfile); + if (rename(targetfile, oldfile) == 0) + { + if (rename(filename, targetfile) < 0) + { + rename(oldfile, targetfile); + perror("Unable to install new file (rename failed)\n"); + fprintf(stderr, "Filename = %s\n", targetfile); + exit(MR_CCONFIG); } - } else { - if (rename(filename, targetfile) < 0) { - perror("Unable to rename old file\n"); - fprintf(stderr, "Filename = %s\n", targetfile); - exit(MR_CCONFIG); + } + else + { + if (rename(filename, targetfile) < 0) + { + perror("Unable to rename old file\n"); + fprintf(stderr, "Filename = %s\n", targetfile); + exit(MR_CCONFIG); } } - unlink(oldfile); + unlink(oldfile); } -char *dequote(s) -register char *s; +char *dequote(char *s) { - char *last = s; - - while (*s) { - if (*s == '"') - *s = '\''; - else if (*s != ' ') - last = s; - s++; + char *last = s; + + while (*s) + { + if (*s == '"') + *s = '\''; + else if (*s != ' ') + last = s; + s++; } - if (*last == ' ') - *last = '\0'; - else - *(++last) = '\0'; - return(s); + if (*last == ' ') + *last = '\0'; + else + *(++last) = '\0'; + return s; } +time_t unixtime(char *timestring) +{ + time_t t; + + t = strtol(timestring, ×tring, 10) - UNIX_EPOCH; + t = t * 24 + strtol(timestring, ×tring, 10); + t = t * 60 + strtol(timestring, ×tring, 10); + t = t * 60 + strtol(timestring, ×tring, 10); + return t; +} -db_error(code) -int code; +void db_error(int code) { - extern char *whoami; - - com_err(whoami, MR_INGRES_ERR, " code %d\n", code); - if (code == -49900 || code == -37000 || code == 17700) - exit(MR_DEADLOCK); - critical_alert("DCM", "%s build encountered DATABASE ERROR %d", - whoami, code); - exit(MR_INGRES_ERR); + extern char *whoami; + char buf[256]; + int bufsize = 256, len = 0; + + if (code == -1013) + { + com_err(whoami, 0, "build cancelled by user"); + exit(MR_ABORT); + } + + com_err(whoami, MR_DBMS_ERR, " code %d\n", code); + sqlglm(buf, &bufsize, &len); + buf[len] = 0; + com_err(whoami, 0, "SQL error text = %s", buf); + critical_alert("DCM", "%s build encountered DATABASE ERROR %d\n%s", + whoami, code, buf); + exit(MR_DBMS_ERR); }