From 5c0abf7f0266f9f08a9c0e711dc0c2d70840421b Mon Sep 17 00:00:00 2001 From: Ralph Campbell Date: Fri, 11 Mar 1983 23:31:18 -0800 Subject: [PATCH] fixes q order problems and temporary file names when inchar > 'z'. SCCS-vsn: usr.sbin/lpr/lpr/lpr.c 4.11 --- usr/src/usr.sbin/lpr/lpr/lpr.c | 35 +++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/usr/src/usr.sbin/lpr/lpr/lpr.c b/usr/src/usr.sbin/lpr/lpr/lpr.c index 4af05cff0d..a6e471e289 100644 --- a/usr/src/usr.sbin/lpr/lpr/lpr.c +++ b/usr/src/usr.sbin/lpr/lpr/lpr.c @@ -55,7 +55,7 @@ char lpr_id[] = "~|^`lpr.c:\t4.2\t1 May 1981\n"; -/* lpr.c 4.10 83/03/09 */ +/* lpr.c 4.11 83/03/11 */ /* * lpr -- off line print * @@ -313,7 +313,22 @@ main(argc, argv) } if (nact) { + (void) close(tfd); tfname[inchar]--; + /* + * Touch the control file to fix position in the queue. + */ + if ((tfd = open(tfname, 2)) >= 0) { + char c; + + if (read(tfd, &c, 1) == 1 && lseek(tfd, 0L, 0) == 0 && + write(tfd, &c, 1) != 1) { + printf("%s: cannot touch %s\n", name, tfname); + tfname[inchar]++; + out(); + } + (void) close(tfd); + } if (link(tfname, cfname) < 0) { printf("%s: cannot rename %s\n", name, cfname); tfname[inchar]++; @@ -450,7 +465,14 @@ nfile(n) printf("%s: cannot chown %s\n", name, n); out(); } - n[inchar]++; + if (++n[inchar] > 'z') { + if (++n[inchar-2] == 't') { + printf("too many files - break up the job\n"); + out(); + } + n[inchar] = 'A'; + } else if (n[inchar] == '[') + n[inchar] = 'a'; return(f); } @@ -477,9 +499,12 @@ out() unlink(cfname); } if (dfname) - while (dfname[i] != 'A') { - dfname[i]--; - unlink(dfname); + while (dfname[i-2] >= 'd') { + while (dfname[i] != 'A') { + dfname[i]--; + unlink(dfname); + } + dfname[i-2]--; } exit(); } -- 2.20.1