Back to index

courier  0.68.2
comtmpfile.c
Go to the documentation of this file.
00001 /*
00002 ** Copyright 1998 - 1999 Double Precision, Inc.
00003 ** See COPYING for distribution information.
00004 */
00005 
00006 #include      "courier.h"
00007 #include      "maxlongsize.h"
00008 #if    HAVE_SYS_TYPES_H
00009 #include      <sys/types.h>
00010 #endif
00011 #if    HAVE_UNISTD_H
00012 #include      <unistd.h>
00013 #endif
00014 #include      <time.h>
00015 
00016 
00017 static char tbuf[MAXLONGSIZE], pbuf[MAXLONGSIZE];
00018 static const char *hostnameptr=0;
00019 static char *timeptr=0, *pidptr=0;
00020 
00021 void   gettmpfilenameargs(const char **time_buf,
00022        const char **pid_buf, const char **hostname_buf)
00023 {
00024        if (!hostnameptr)
00025        {
00026        time_t t;
00027        pid_t  p;
00028 
00029               time(&t);
00030               timeptr=tbuf+sizeof(tbuf)-1;
00031               *timeptr=0;
00032               do
00033               {
00034                      *--timeptr= '0' + (t % 10);
00035                      t /= 10;
00036               } while (t);
00037 
00038               p=getpid();
00039               pidptr=pbuf+sizeof(pbuf)-1;
00040               *pidptr=0;
00041               do
00042               {
00043                      *--pidptr= '0' + (p % 10);
00044                      p /= 10;
00045               } while (p);
00046               hostnameptr=config_me();
00047        }
00048        *time_buf=timeptr;
00049        *pid_buf=pidptr;
00050        *hostname_buf=hostnameptr;
00051 }
00052 
00053 void   getnewtmpfilenameargs(const char **time_buf,
00054        const char **pid_buf, const char **hostname_buf)
00055 {
00056        hostnameptr=0;
00057        gettmpfilenameargs(time_buf, pid_buf, hostname_buf);
00058 }