/* Miscellaneous functions. */ #include #include #include #include #include #include "global.h" /*************************************************************************/ /* Convert a signal name or number to an integer. */ int sigtoi(const char *sig) { if (isdigit(*sig)) return atoi(sig); else if (strcasecmp(sig, "HUP") == 0) return SIGHUP; else if (strcasecmp(sig, "INT") == 0) return SIGINT; else if (strcasecmp(sig, "QUIT") == 0) return SIGQUIT; else if (strcasecmp(sig, "ILL") == 0) return SIGILL; else if (strcasecmp(sig, "TRAP") == 0) return SIGTRAP; else if (strcasecmp(sig, "ABRT") == 0) return SIGABRT; else if (strcasecmp(sig, "IOT") == 0) return SIGIOT; else if (strcasecmp(sig, "BUS") == 0) return SIGBUS; else if (strcasecmp(sig, "FPE") == 0) return SIGFPE; else if (strcasecmp(sig, "KILL") == 0) return SIGKILL; else if (strcasecmp(sig, "USR1") == 0) return SIGUSR1; else if (strcasecmp(sig, "SEGV") == 0) return SIGSEGV; else if (strcasecmp(sig, "USR2") == 0) return SIGUSR2; else if (strcasecmp(sig, "PIPE") == 0) return SIGPIPE; else if (strcasecmp(sig, "ALRM") == 0) return SIGALRM; else if (strcasecmp(sig, "TERM") == 0) return SIGTERM; else if (strcasecmp(sig, "STKFLT") == 0) return SIGSTKFLT; else if (strcasecmp(sig, "CHLD") == 0) return SIGCHLD; else if (strcasecmp(sig, "CONT") == 0) return SIGCONT; else if (strcasecmp(sig, "STOP") == 0) return SIGSTOP; else if (strcasecmp(sig, "TSTP") == 0) return SIGTSTP; else if (strcasecmp(sig, "TTIN") == 0) return SIGTTIN; else if (strcasecmp(sig, "TTOU") == 0) return SIGTTOU; else if (strcasecmp(sig, "URG") == 0) return SIGURG; else if (strcasecmp(sig, "XCPU") == 0) return SIGXCPU; else if (strcasecmp(sig, "XFSZ") == 0) return SIGXFSZ; else if (strcasecmp(sig, "VTALRM") == 0) return SIGVTALRM; else if (strcasecmp(sig, "PROF") == 0) return SIGPROF; else if (strcasecmp(sig, "WINCH") == 0) return SIGWINCH; else if (strcasecmp(sig, "IO") == 0) return SIGIO; else if (strcasecmp(sig, "POLL") == 0) return SIGPOLL; else if (strcasecmp(sig, "PWR") == 0) return SIGPWR; else return 0; } /*************************************************************************/ /* Compute the difference time1-time2 and return it in milliseconds. If * either parameter is NULL, the current time is used. This function never * overflows. */ int tv_diff_milli(struct timeval *time1, struct timeval *time2) { struct timeval now; gettimeofday(&now, NULL); if (!time1) time1 = &now; if (!time2) time2 = &now; if (time1->tv_sec - time2->tv_sec >= 2147483) return 2147483000; else if (time1->tv_sec - time2->tv_sec <= -2147483) return -2147483000; else return (time1->tv_sec - time2->tv_sec) * 1000 + (time1->tv_usec-time2->tv_usec) / 1000; } /*************************************************************************/