summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/lpr/common_source/common.c9
-rw-r--r--usr.sbin/lpr/common_source/lp.h4
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 */
};
OpenPOWER on IntegriCloud