Date: Fri, 9 May 1997 10:00:07 +0200 (CEST) From: lbnstn@lili.uni-bielefeld.de To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/3556: Bug with -i option in /usr/bin/lpr Message-ID: <199705090800.KAA00378@lili23.lili.uni-bielefeld.de> Resent-Message-ID: <199705090810.BAA19799@hub.freebsd.org>
index | next in thread | raw e-mail
>Number: 3556
>Category: bin
>Synopsis: Bug with -i option in /usr/bin/lpr
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri May 9 01:10:01 PDT 1997
>Last-Modified:
>Originator: Uwe Laubenstein
>Organization:
Universitaet Bielefeld, Germany
>Release: FreeBSD 2.2.1-RELEASE i386
>Environment:
>Description:
There seems to be a bug in /usr/bin/lpr:
If lpr is invoked with -i but no argument to -i is supplied, then
then getopt eats up the argument following -i.
The bug is present in "FreeBSD 2.2-970422-RELENG" and "FreeBSD 2.2.1-RELEASE"
>How-To-Repeat:
lpr -i /etc/motd # hangs
lpr -i -p /etc/motd # ignores -p
>Fix:
*** /usr/src/usr.sbin/lpr/lpr/lpr.c.orig Wed Feb 26 03:31:53 1997
--- /usr/src/usr.sbin/lpr/lpr/lpr.c Thu May 8 12:08:12 1997
***************
*** 74,79 ****
--- 74,81 ----
#include "lp.local.h"
#include "pathnames.h"
+ extern int optreset;
+
static char *cfname; /* daemon control files, linked from tf's */
static char *class = host; /* class title on header page */
static char *dfname; /* data files */
***************
*** 121,127 ****
struct passwd *pw;
struct group *gptr;
register char *arg, *cp;
! char buf[BUFSIZ];
int c, i, f, errs;
struct stat stb;
--- 123,129 ----
struct passwd *pw;
struct group *gptr;
register char *arg, *cp;
! char *p, buf[BUFSIZ];
int c, i, f, errs;
struct stat stb;
***************
*** 198,204 ****
case 'i': /* indent output */
iflag++;
! indent = atoi(optarg);
break;
case 'm': /* send mail when done */
--- 200,214 ----
case 'i': /* indent output */
iflag++;
! indent = strtol (optarg, &p, 10);
! /* if optarg is not a valid number we assume */
! /* it is another option or a filename */
! if (*p != '\0')
! {
! indent = 8;
! optreset = 1;
! optind--;
! }
break;
case 'm': /* send mail when done */
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199705090800.KAA00378>
