diff options
-rw-r--r-- | usr.sbin/lpr/common_source/common.c | 9 | ||||
-rw-r--r-- | usr.sbin/lpr/common_source/lp.h | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/usr.sbin/lpr/common_source/common.c b/usr.sbin/lpr/common_source/common.c index 257a740..e382e69 100644 --- a/usr.sbin/lpr/common_source/common.c +++ b/usr.sbin/lpr/common_source/common.c @@ -111,7 +111,7 @@ getq(const struct printer *pp, struct jobqueue *(*namelist[])) { register struct dirent *d; register struct jobqueue *q, **queue; - size_t arraysz, nitems; + size_t arraysz, entrysz, nitems; struct stat stbuf; DIR *dirp; int statres; @@ -143,10 +143,13 @@ getq(const struct printer *pp, struct jobqueue *(*namelist[])) seteuid(uid); if (statres < 0) continue; /* Doesn't exist */ - q = (struct jobqueue *)malloc(sizeof(time_t) + strlen(d->d_name) - + 1); + entrysz = sizeof(struct jobqueue) - sizeof(q->job_cfname) + + strlen(d->d_name) + 1; + q = (struct jobqueue *)malloc(entrysz); if (q == NULL) goto errdone; + q->job_matched = 0; + q->job_processed = 0; q->job_time = stbuf.st_mtime; strcpy(q->job_cfname, d->d_name); /* diff --git a/usr.sbin/lpr/common_source/lp.h b/usr.sbin/lpr/common_source/lp.h index 81ac7ae..e155b4d 100644 --- a/usr.sbin/lpr/common_source/lp.h +++ b/usr.sbin/lpr/common_source/lp.h @@ -183,9 +183,13 @@ extern u_char family; /* address family */ /* * Structure used for building a sorted list of control files. + * The job_processed value can be used by callers of getq(), to keep + * track of whatever processing they are doing. */ struct jobqueue { time_t job_time; /* last-mod time of cf-file */ + int job_matched; /* used by match_jobspec() */ + int job_processed; /* set to zero by getq() */ char job_cfname[MAXNAMLEN+1]; /* control file name */ }; |