3571e53040
patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
146 lines
4.3 KiB
Diff
146 lines
4.3 KiB
Diff
Index: job.c
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/usr.bin/make/job.c,v
|
|
retrieving revision 1.16
|
|
diff -u -r1.16 job.c
|
|
--- job.c 1999/09/11 13:08:01 1.16
|
|
+++ job.c 2000/01/17 01:42:57
|
|
@@ -163,14 +163,6 @@
|
|
#define JOB_STOPPED 3 /* The job is stopped */
|
|
|
|
/*
|
|
- * tfile is the name of a file into which all shell commands are put. It is
|
|
- * used over by removing it before the child shell is executed. The XXXXXXXXXX
|
|
- * in the string are replaced by mkstemp(3).
|
|
- */
|
|
-static char tfile[sizeof(TMPPAT)];
|
|
-
|
|
-
|
|
-/*
|
|
* Descriptions for various shells.
|
|
*/
|
|
static Shell shells[] = {
|
|
@@ -993,7 +985,7 @@
|
|
/*
|
|
* If we are aborting and the job table is now empty, we finish.
|
|
*/
|
|
- (void) eunlink(tfile);
|
|
+ (void) eunlink(job->tfile);
|
|
Finish(errors);
|
|
}
|
|
}
|
|
@@ -1668,6 +1660,7 @@
|
|
Boolean cmdsOK; /* true if the nodes commands were all right */
|
|
Boolean local; /* Set true if the job was run locally */
|
|
Boolean noExec; /* Set true if we decide not to run the job */
|
|
+ int tfd; /* File descriptor for temp file */
|
|
|
|
if (previous != NULL) {
|
|
previous->flags &= ~(JOB_FIRST|JOB_IGNERR|JOB_SILENT|JOB_REMOTE);
|
|
@@ -1697,6 +1690,12 @@
|
|
}
|
|
job->flags |= flags;
|
|
|
|
+ (void) strcpy(job->tfile, TMPPAT);
|
|
+ if ((tfd = mkstemp(job->tfile)) == -1)
|
|
+ Punt("cannot create temp file: %s", strerror(errno));
|
|
+ else
|
|
+ (void) close(tfd);
|
|
+
|
|
/*
|
|
* Check the commands now so any attributes from .DEFAULT have a chance
|
|
* to migrate to the node
|
|
@@ -1722,9 +1721,9 @@
|
|
DieHorribly();
|
|
}
|
|
|
|
- job->cmdFILE = fopen(tfile, "w+");
|
|
+ job->cmdFILE = fopen(job->tfile, "w+");
|
|
if (job->cmdFILE == NULL) {
|
|
- Punt("Could not open %s", tfile);
|
|
+ Punt("Could not open %s", job->tfile);
|
|
}
|
|
(void) fcntl(FILENO(job->cmdFILE), F_SETFD, 1);
|
|
/*
|
|
@@ -1830,7 +1829,7 @@
|
|
* Unlink and close the command file if we opened one
|
|
*/
|
|
if (job->cmdFILE != stdout) {
|
|
- (void) eunlink(tfile);
|
|
+ (void) eunlink(job->tfile);
|
|
if (job->cmdFILE != NULL)
|
|
(void) fclose(job->cmdFILE);
|
|
} else {
|
|
@@ -1859,7 +1858,7 @@
|
|
}
|
|
} else {
|
|
(void) fflush(job->cmdFILE);
|
|
- (void) eunlink(tfile);
|
|
+ (void) eunlink(job->tfile);
|
|
}
|
|
|
|
/*
|
|
@@ -2403,13 +2402,6 @@
|
|
* be running at once. */
|
|
{
|
|
GNode *begin; /* node for commands to do at the very start */
|
|
- int tfd;
|
|
-
|
|
- (void) strcpy(tfile, TMPPAT);
|
|
- if ((tfd = mkstemp(tfile)) == -1)
|
|
- Punt("cannot create temp file: %s", strerror(errno));
|
|
- else
|
|
- (void) close(tfd);
|
|
|
|
jobs = Lst_Init(FALSE);
|
|
stoppedJobs = Lst_Init(FALSE);
|
|
@@ -2914,7 +2906,7 @@
|
|
}
|
|
}
|
|
}
|
|
- (void) eunlink(tfile);
|
|
+ (void) eunlink(job->tfile);
|
|
}
|
|
|
|
/*
|
|
@@ -2948,7 +2940,6 @@
|
|
}
|
|
}
|
|
}
|
|
- (void) eunlink(tfile);
|
|
return(errors);
|
|
}
|
|
|
|
@@ -3024,6 +3015,7 @@
|
|
KILL(job->pid, SIGINT);
|
|
KILL(job->pid, SIGKILL);
|
|
#endif /* RMT_WANTS_SIGNALS */
|
|
+ (void) eunlink(job->tfile);
|
|
}
|
|
}
|
|
|
|
@@ -3032,7 +3024,6 @@
|
|
*/
|
|
while (waitpid((pid_t) -1, &foo, WNOHANG) > 0)
|
|
continue;
|
|
- (void) eunlink(tfile);
|
|
}
|
|
|
|
#ifdef REMOTE
|
|
Index: job.h
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/usr.bin/make/job.h,v
|
|
retrieving revision 1.10
|
|
diff -u -r1.10 job.h
|
|
--- job.h 1999/08/28 01:03:31 1.10
|
|
+++ job.h 2000/01/17 01:42:31
|
|
@@ -93,6 +93,8 @@
|
|
#define JOB_BUFSIZE 1024
|
|
typedef struct Job {
|
|
int pid; /* The child's process ID */
|
|
+ char tfile[sizeof(TMPPAT)];
|
|
+ /* Temporary file to use for job */
|
|
GNode *node; /* The target the child is making */
|
|
LstNode tailCmds; /* The node of the first command to be
|
|
* saved when the job has been run */
|
|
|