From f897dd9a4be8dd80e43185edf0240b1566bd6e8d Mon Sep 17 00:00:00 2001 From: gad Date: Mon, 30 Apr 2012 01:10:13 +0000 Subject: Print out a warning message if a `lpc setstatus' is done when the queue is not 'lpc stop'-ed. In that situation `lpq' will not display the status message to the user, and the operator may think the queue is already stopped when it is not. MFC after: 3 weeks --- usr.sbin/lpr/lpc/cmds.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'usr.sbin') diff --git a/usr.sbin/lpr/lpc/cmds.c b/usr.sbin/lpr/lpc/cmds.c index e9cd994..44516d8 100644 --- a/usr.sbin/lpr/lpc/cmds.c +++ b/usr.sbin/lpr/lpc/cmds.c @@ -1009,12 +1009,30 @@ setstatus_gi(int argc __unused, char *argv[] __unused) void setstatus_q(struct printer *pp) { + struct stat stbuf; + int not_shown; char lf[MAXPATHLEN]; lock_file_name(pp, lf, sizeof lf); printf("%s:\n", pp->printer); upstat(pp, generic_msg, 1); + + /* + * Warn the user if 'lpq' will not display this new status-message. + * Note that if lock file does not exist, then the queue is enabled + * for both queuing and printing. + */ + not_shown = 1; + if (stat(lf, &stbuf) >= 0) { + if (stbuf.st_mode & LFM_PRINT_DIS) + not_shown = 0; + } + if (not_shown) { + printf("\tnote: This queue currently has printing enabled,\n"); + printf("\t so this -msg will only be shown by 'lpq' if\n"); + printf("\t a job is actively printing on it.\n"); + } } /* -- cgit v1.1