On Mon, Jan 20, 2014 at 10:11:53AM +1300, Philip Guenther wrote:
> On Sun, Jan 19, 2014 at 10:48 AM, Todd C. Miller
> <todd.mil...@courtesan.com> wrote:
> > Perhaps something like this?  Only compile-tested.
> 
> Looks good.  We also need to fix the 'S' line parsing code in sendit()
> and printit() in lpd/printjob.c to use unsigned long long when parsing
> the ino_t instead of trying to store it in an int.  Perhaps change it
> to use strtoull() too?

I'll investigate into that further, too.

To keep tech@ updated, the fdev = fino = -1 part has to be put up
one more level, because the same code exists in sendit() that has
to be fixed, too.  Will send a fully updated diff soon.

Index: lpd/printjob.c
===================================================================
RCS file: /var/www/cvs/src/usr.sbin/lpr/lpd/printjob.c,v
retrieving revision 1.49
diff -u -p -r1.49 printjob.c
--- lpd/printjob.c      10 Dec 2013 16:38:04 -0000      1.49
+++ lpd/printjob.c      18 Jan 2014 22:09:53 -0000
@@ -226,7 +226,9 @@ again:
                        continue;
                errcnt = 0;
        restart:
-               (void)lseek(lfd, pidoff, 0);
+               fdev = (dev_t)-1;
+               fino = (ino_t)-1;
+               (void)lseek(lfd, pidoff, SEEK_SET);
                if ((i = snprintf(line, sizeof(line), "%s\n", q->q_name)) >=
                    sizeof(line) || i == -1)
                        i = sizeof(line) - 1;   /* can't happen */

Reply via email to