|
|
1.1 ! root 1: #include "uucp.h" ! 2: ! 3: ! 4: /******* ! 5: * gename(pre, sys, grade, file) generate file name ! 6: * char grade, *sys, pre, *file; ! 7: * ! 8: * return codes: none ! 9: */ ! 10: ! 11: gename(pre, sys, grade, file) ! 12: char pre, *sys, grade, *file; ! 13: { ! 14: char sqnum[5]; ! 15: ! 16: getseq(sqnum); ! 17: sprintf(file, "%c.%.7s%c%.4s", pre, sys, grade, sqnum); ! 18: DEBUG(4, "file - %s\n", file); ! 19: return; ! 20: } ! 21: ! 22: ! 23: #define SLOCKTIME 10L ! 24: #define SLOCKTRIES 5 ! 25: #define SEQLEN 4 ! 26: ! 27: /******* ! 28: * getseq(snum) get next sequence number ! 29: * char *snum; ! 30: * ! 31: * return codes: none ! 32: */ ! 33: ! 34: getseq(snum) ! 35: char *snum; ! 36: { ! 37: FILE *fp; ! 38: int n; ! 39: ! 40: for (n = 0; n < SLOCKTRIES; n++) { ! 41: if (!ulockf( SEQLOCK, SLOCKTIME)) ! 42: break; ! 43: sleep(5); ! 44: } ! 45: ! 46: ASSERT(n < SLOCKTRIES, "CAN NOT GET %s", SEQLOCK); ! 47: ! 48: if ((fp = fopen(SEQFILE, "r")) != NULL) { ! 49: /* read sequence number file */ ! 50: fscanf(fp, "%4d", &n); ! 51: fp = freopen(SEQFILE, "w", fp); ! 52: ASSERT(fp != NULL, "CAN NOT OPEN %s", SEQFILE); ! 53: chmod(SEQFILE, 0666); ! 54: } ! 55: else { ! 56: /* can not read file - create a new one */ ! 57: if ((fp = fopen(SEQFILE, "w")) == NULL) ! 58: /* can not write new seqeunce file */ ! 59: return(FAIL); ! 60: chmod(SEQFILE, 0666); ! 61: n = 0; ! 62: } ! 63: ! 64: fprintf(fp, "%s", sprintf(snum, "%04d", ++n)); ! 65: fclose(fp); ! 66: rmlock(SEQLOCK); ! 67: return(0); ! 68: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.