home *** CD-ROM | disk | FTP | other *** search
/ CD Shareware Magazine 1996 December / CD_shareware_12-96.iso / DOS / Programa / CCDL122.ZIP / CLIBS / IO / TMPFIL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-27  |  1.2 KB  |  61 lines

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. char *tmpnam(char *buf)
  7. {
  8.     char pbuf[STACKPAD];
  9.     char ibuf[256];
  10.     time_t time1;
  11.     struct tm *ltime;
  12.     int i,q=0;
  13.     FILE *fil;
  14.     time(&time1);
  15.     ltime = localtime(&time1);
  16.     while (1) {
  17.         ibuf[0] = (char)(ltime->tm_year/26);
  18.         ibuf[1] = (char)ltime->tm_mon;
  19.         ibuf[2] = (char)ltime->tm_mday;
  20.         ibuf[3] = (char)ltime->tm_hour;
  21.         ibuf[4] = (char)(ltime->tm_min/36);
  22.         ibuf[5] = (char)(ltime->tm_min%36);
  23.         ibuf[6] = (char)(ltime->tm_sec/36);
  24.         ibuf[7] = (char)(ltime->tm_sec%36);
  25.         ibuf[8] = '.';
  26.         ibuf[9] = 'T';
  27.         ibuf[10] = 'M';
  28.         ibuf[11] = 'P';
  29.         ibuf[12] = 0;
  30.         for (i=0; i < 8; i++) {
  31.             ibuf[i] += 'A';
  32.             if (ibuf[i] > 'Z')
  33.                 ibuf[i]+= '0' - 'A';
  34.         }
  35.         fil = fopen(ibuf,"rb");
  36.         if (!fil)
  37.           break;
  38.         fclose(fil);
  39.         if (q % 26 == 0) {
  40.             ltime->tm_mon++;
  41.             if (ltime->tm_mon > 11)
  42.                 ltime->tm_mon = 0;
  43.         }
  44.         q++;
  45.         ltime->tm_year++;
  46.     }
  47.     if (buf) {
  48.         strcpy(buf,ibuf);
  49.         return buf;
  50.     }
  51.     else
  52.         return &ibuf;
  53. }
  54. FILE *tmpfile(void)
  55. {
  56.     char buf[20];
  57.     FILE *stream = fopen(tmpnam(buf),"wb+");
  58.     if (stream)
  59.         stream->istemp = 1;
  60.     return stream;
  61. }