diff options
Diffstat (limited to 'sqmail-4.3.07/src/predate.c')
-rw-r--r-- | sqmail-4.3.07/src/predate.c | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/sqmail-4.3.07/src/predate.c b/sqmail-4.3.07/src/predate.c deleted file mode 100644 index f6007b3..0000000 --- a/sqmail-4.3.07/src/predate.c +++ /dev/null @@ -1,113 +0,0 @@ -#include <sys/types.h> -#include <time.h> -#include <unistd.h> -#include "datetime.h" -#include "wait.h" -#include "fd.h" -#include "fmt.h" -#include "logmsg.h" -#include "buffer.h" -#include "exit.h" -#include "sig.h" - -#define WHO "predate" - -static char *montab[12] = { -"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" -}; - -char num[FMT_ULONG]; -char outbuf[1024]; - -int main(int argc, char **argv) -{ - time_t now; - struct tm *tm; - struct datetime dt; - datetime_sec utc; - datetime_sec local; - int minutes; - int pi[2]; - buffer bo; - int wstat; - int pid; - - sig_pipeignore(); - - if (!argv[1]) - logmsg(WHO,100,USAGE,"predate child"); - - if (pipe(pi) == -1) - logmsg(WHO,111,FATAL,"unable to create pipe"); - - switch (pid = fork()) { - case -1: - logmsg(WHO,111,FATAL,"unable to fork"); - case 0: - close(pi[1]); - if (fd_move(0,pi[0]) == -1) - logmsg(WHO,111,FATAL,"unable to set up fds"); - sig_pipedefault(); - execvp(argv[1],argv + 1); - logmsg(WHO,111,FATAL,B("unable to run: ",argv[1])); - } - close(pi[0]); - buffer_init(&bo,write,pi[1],outbuf,sizeof(outbuf)); - - time(&now); - - tm = gmtime(&now); - dt.year = tm->tm_year; - dt.mon = tm->tm_mon; - dt.mday = tm->tm_mday; - dt.hour = tm->tm_hour; - dt.min = tm->tm_min; - dt.sec = tm->tm_sec; - utc = datetime_untai(&dt); /* utc == now, if gmtime ignores leap seconds */ - - tm = localtime(&now); - dt.year = tm->tm_year; - dt.mon = tm->tm_mon; - dt.mday = tm->tm_mday; - dt.hour = tm->tm_hour; - dt.min = tm->tm_min; - dt.sec = tm->tm_sec; - local = datetime_untai(&dt); - - buffer_puts(&bo,"Date: "); - buffer_put(&bo,num,fmt_uint(num,dt.mday)); - buffer_puts(&bo," "); - buffer_puts(&bo,montab[dt.mon]); - buffer_puts(&bo," "); - buffer_put(&bo,num,fmt_uint(num,dt.year + 1900)); - buffer_puts(&bo," "); - buffer_put(&bo,num,fmt_uint0(num,dt.hour,2)); - buffer_puts(&bo,":"); - buffer_put(&bo,num,fmt_uint0(num,dt.min,2)); - buffer_puts(&bo,":"); - buffer_put(&bo,num,fmt_uint0(num,dt.sec,2)); - - if (local < utc) { - minutes = (utc - local + 30) / 60; - buffer_puts(&bo," -"); - buffer_put(&bo,num,fmt_uint0(num,minutes / 60,2)); - buffer_put(&bo,num,fmt_uint0(num,minutes % 60,2)); - } - else { - minutes = (local - utc + 30) / 60; - buffer_puts(&bo," +"); - buffer_put(&bo,num,fmt_uint0(num,minutes / 60,2)); - buffer_put(&bo,num,fmt_uint0(num,minutes % 60,2)); - } - - buffer_puts(&bo,"\n"); - buffer_copy(&bo,buffer_0); - buffer_flush(&bo); - close(pi[1]); - - if (wait_pid(&wstat,pid) == -1) - logmsg(WHO,111,FATAL,"wait failed"); - if (wait_crashed(wstat)) - logmsg(WHO,111,FATAL,"child crashed"); - _exit(wait_exitcode(wstat)); -} |