|
|
1.1 ! root 1: /* $Header$ */ ! 2: ! 3: /* ! 4: * Author: Peter J. Nicklin ! 5: */ ! 6: #include <stdio.h> ! 7: #include "path.h" ! 8: #include "pld.h" ! 9: #include "system.h" ! 10: ! 11: #define PMODE 0644 /* file access mode */ ! 12: ! 13: extern int FORCE; /* brute force approach */ ! 14: static char *tpld = "/tmp/...XXXXXX"; /* temporary project link directory */ ! 15: ! 16: /* ! 17: * restorpld() moves a project link directory from /tmp to pathname. ! 18: */ ! 19: void ! 20: restorpld(pathname) ! 21: char *pathname; /* project link directory pathname */ ! 22: { ! 23: char *pathcat(); /* pathname concatenation */ ! 24: char pldpathname[PATHSIZE]; /* project link directory pathname */ ! 25: int fastcopy(); /* fast file copy */ ! 26: ! 27: pathcat(pldpathname, pathname, PLDNAME); ! 28: fastcopy(tpld, pldpathname); ! 29: unlink(tpld); ! 30: } ! 31: ! 32: ! 33: ! 34: /* ! 35: * savepld() copies a project link directory from pathname to /tmp. ! 36: * Returns 0 if successful, otherwise -1. ! 37: */ ! 38: savepld(pathname) ! 39: char *pathname; /* project link directory pathname */ ! 40: { ! 41: char *mktemp(); /* make temporary file name */ ! 42: char *pathcat(); /* pathname concatenation */ ! 43: char pldpathname[PATHSIZE]; /* project link directory pathname */ ! 44: ! 45: pathcat(pldpathname, pathname, PLDNAME); ! 46: return(fastcopy(pldpathname, mktemp(tpld))); ! 47: } ! 48: ! 49: ! 50: ! 51: /* ! 52: * unsavepld() removes the saved project link directory from /tmp. ! 53: */ ! 54: void ! 55: unsavepld() ! 56: { ! 57: unlink(tpld); ! 58: } ! 59: ! 60: ! 61: ! 62: /* ! 63: * fastcopy() copies f1 to f2. Returns 0 if successful, otherwise -1. ! 64: */ ! 65: fastcopy(f1, f2) ! 66: char *f1; /* from file */ ! 67: char *f2; /* to file */ ! 68: { ! 69: register int ifd; /* input file descriptor */ ! 70: register int ofd; /* output file descriptor */ ! 71: register int n; /* byte count */ ! 72: char buf[BUFSIZ]; /* I/O buffer */ ! 73: ! 74: if ((ifd = OPEN(f1, O_RDONLY, PMODE)) == -1) ! 75: if (FORCE) ! 76: return(0); ! 77: else { ! 78: pperror(f1); ! 79: return(-1); ! 80: } ! 81: if ((ofd = CREATE(f2, O_WRONLY, PMODE)) == -1) ! 82: if (FORCE) ! 83: return(0); ! 84: else { ! 85: pperror(f2); ! 86: return(-1); ! 87: } ! 88: while ((n = read(ifd, buf, BUFSIZ)) > 0) ! 89: if (write(ofd, buf, n) != n) ! 90: if (FORCE) ! 91: return(0); ! 92: else { ! 93: pperror(""); ! 94: return(-1); ! 95: } ! 96: close(ifd); ! 97: close(ofd); ! 98: return(0); ! 99: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.