summaryrefslogtreecommitdiffstats
path: root/usr.sbin/lpr
diff options
context:
space:
mode:
authorgad <gad@FreeBSD.org>2002-07-12 01:22:57 +0000
committergad <gad@FreeBSD.org>2002-07-12 01:22:57 +0000
commit43e8f8124109a4953ca4db73d7794e8f6728baf6 (patch)
tree143a5b2bbc08d3378980f343e392de32e3e1e08f /usr.sbin/lpr
parent49c474773829e98377d39c547720b0db447f38a5 (diff)
downloadFreeBSD-src-43e8f8124109a4953ca4db73d7794e8f6728baf6.zip
FreeBSD-src-43e8f8124109a4953ca4db73d7794e8f6728baf6.tar.gz
Add two variables to struct jobqueue, and change the way that getq()
calculates how much space to get for that struct, so it will get the right amount when new variables are added. MFC after: 3 days
Diffstat (limited to 'usr.sbin/lpr')
-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