projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BSD 4_3_Reno release
[unix-history]
/
usr
/
src
/
usr.bin
/
uucp
/
uux.c
diff --git
a/usr/src/usr.bin/uucp/uux.c
b/usr/src/usr.bin/uucp/uux.c
index
375fe56
..
f3f1eac
100644
(file)
--- a/
usr/src/usr.bin/uucp/uux.c
+++ b/
usr/src/usr.bin/uucp/uux.c
@@
-1,8
+1,10
@@
#ifndef lint
#ifndef lint
-static char sccsid[] = "@(#)uux.c 5.
6 (Berkeley) 1/24/86
";
+static char sccsid[] = "@(#)uux.c 5.
14 (Berkeley) 10/27/88
";
#endif
#include "uucp.h"
#endif
#include "uucp.h"
+#include <sys/stat.h>
+#include <sysexits.h>
#define NOSYSPART 0
#define HASSYSPART 1
#define NOSYSPART 0
#define HASSYSPART 1
@@
-27,7
+29,8
@@
register char *p; for (p = d; *p != '\0';)\
struct timeb Now;
main(argc, argv)
struct timeb Now;
main(argc, argv)
-char *argv[];
+int argc;
+char **argv;
{
char cfile[NAMESIZE]; /* send commands for files from here */
char dfile[NAMESIZE]; /* used for all data files from here */
{
char cfile[NAMESIZE]; /* send commands for files from here */
char dfile[NAMESIZE]; /* used for all data files from here */
@@
-48,6
+51,8
@@
char *argv[];
int pipein = 0;
int startjob = 1;
char Grade = 'A';
int pipein = 0;
int startjob = 1;
char Grade = 'A';
+ long Gradedelta = 100000000L; /* "huge number" */
+ long size = 0L;
char path[MAXFULLNAME];
char cmd[2*BUFSIZ];
char *ap, *cmdp;
char path[MAXFULLNAME];
char cmd[2*BUFSIZ];
char *ap, *cmdp;
@@
-58,13
+63,15
@@
char *argv[];
FILE *fprx, *fpc, *fpd, *fp;
extern char *getprm(), *lastpart();
extern FILE *ufopen();
FILE *fprx, *fpc, *fpd, *fp;
extern char *getprm(), *lastpart();
extern FILE *ufopen();
- int uid, ret;
+ int uid, ret
, c
;
char redir = '\0';
int nonoti = 0;
int nonzero = 0;
int link_failed;
char *ReturnTo = NULL;
extern int LocalOnly;
char redir = '\0';
int nonoti = 0;
int nonzero = 0;
int link_failed;
char *ReturnTo = NULL;
extern int LocalOnly;
+ extern char *optarg;
+ extern int optind;
strcpy(Progname, "uux");
uucpname(Myname);
strcpy(Progname, "uux");
uucpname(Myname);
@@
-74,10
+81,12
@@
char *argv[];
#ifdef VMS
arg_fix(argc, argv);
#endif
#ifdef VMS
arg_fix(argc, argv);
#endif
- while (argc>1 && argv[1][0] == '-') {
- switch(argv[1][1]){
+ while (((c = getopt(argc, argv, "-prclCg:x:nzLa:")) != EOF) ||
+ (optind < argc && (c = *argv[optind]) == '-' && ++optind))
+ switch (c) {
+ case '-':
+ /* FALLTHROUGH */
case 'p':
case 'p':
- case '\0':
pipein = 1;
break;
case 'r':
pipein = 1;
break;
case 'r':
@@
-96,11
+105,12
@@
char *argv[];
Linkit = 0;
break;
case 'g':
Linkit = 0;
break;
case 'g':
- Grade = argv[1][2];
+ Grade = *optarg;
+ Gradedelta = atol(optarg+1);
break;
case 'x':
chkdebug();
break;
case 'x':
chkdebug();
- Debug = atoi(
&argv[1][2]
);
+ Debug = atoi(
optarg
);
if (Debug <= 0)
Debug = 1;
break;
if (Debug <= 0)
Debug = 1;
break;
@@
-114,16
+124,15
@@
char *argv[];
LocalOnly++;
break;
case 'a':
LocalOnly++;
break;
case 'a':
- ReturnTo =
&argv[1][2]
;
+ ReturnTo =
optarg
;
if (prefix(Myname, ReturnTo) && ReturnTo[strlen(Myname)] == '!')
ReturnTo = index(ReturnTo, '!') + 1;
break;
if (prefix(Myname, ReturnTo) && ReturnTo[strlen(Myname)] == '!')
ReturnTo = index(ReturnTo, '!') + 1;
break;
+ case '?':
default:
default:
- fprintf(stderr, "unknown flag %s\n", argv[1]);
- break;
+ break;
}
}
- --argc; argv++;
- }
+
ap = getwd(Wrkdir);
if (ap == 0) {
fprintf(stderr, "can't get working directory; will try to continue\n");
ap = getwd(Wrkdir);
if (ap == 0) {
fprintf(stderr, "can't get working directory; will try to continue\n");
@@
-133,26
+142,38
@@
char *argv[];
DEBUG(4, "\n\n** %s **\n", "START");
inargs[0] = '\0';
DEBUG(4, "\n\n** %s **\n", "START");
inargs[0] = '\0';
-
for (argv++; argc > 1; argc--
) {
- DEBUG(4, "arg - %s:",
*argv
);
+
while (optind < argc
) {
+ DEBUG(4, "arg - %s:",
argv[optind]
);
strcat(inargs, " ");
strcat(inargs, " ");
- strcat(inargs,
*argv++
);
+ strcat(inargs,
argv[optind++]
);
}
DEBUG(4, "arg - %s\n", inargs);
}
DEBUG(4, "arg - %s\n", inargs);
- ret = subchdir(Spool);
- ASSERT(ret >= 0, "CHDIR FAILED", Spool, ret);
+ if (subchdir(Spool) < 0) {
+ syslog(LOG_WARNING, "chdir(%s) failed: %m", Spool);
+ cleanup(1);
+ }
uid = getuid();
uid = getuid();
- guinfo(uid, User, path);
+ if (guinfo(uid, User, path) != SUCCESS) {
+ syslog(LOG_WARNING, "Can't find username for uid %d", uid);
+ DEBUG(1, "Using username", "uucp");
+ strcpy(User, "uucp");
+ }
strncpy(local, Myname, MAXBASENAME);
cmdp = cmd;
*cmdp = '\0';
gename(DATAPRE, local, 'X', rxfile);
fprx = ufopen(rxfile, "w");
strncpy(local, Myname, MAXBASENAME);
cmdp = cmd;
*cmdp = '\0';
gename(DATAPRE, local, 'X', rxfile);
fprx = ufopen(rxfile, "w");
- ASSERT(fprx != NULL, "CAN'T OPEN", rxfile, 0);
+ if (fprx == NULL) {
+ syslog(LOG_WARNING, "fopen(%s) failed: %m", rxfile);
+ cleanup(1);
+ }
gename(DATAPRE, local, 'T', tcfile);
fpc = ufopen(tcfile, "w");
gename(DATAPRE, local, 'T', tcfile);
fpc = ufopen(tcfile, "w");
- ASSERT(fpc != NULL, "CAN'T OPEN", tcfile, 0);
+ if (fpc == NULL) {
+ syslog(LOG_WARNING, "fopen(%s) failed: %m", tcfile);
+ cleanup(1);
+ }
fprintf(fprx, "%c %s %s\n", X_USER, User, local);
if (nonoti)
fprintf(fprx, "%c\n", X_NONOTI);
fprintf(fprx, "%c %s %s\n", X_USER, User, local);
if (nonoti)
fprintf(fprx, "%c\n", X_NONOTI);
@@
-190,7
+211,10
@@
char *argv[];
if (pipein) {
gename(DATAPRE, local, 'B', dfile);
fpd = ufopen(dfile, "w");
if (pipein) {
gename(DATAPRE, local, 'B', dfile);
fpd = ufopen(dfile, "w");
- ASSERT(fpd != NULL, "CAN'T OPEN", dfile, 0);
+ if (fpd == NULL) {
+ syslog(LOG_WARNING, "fopen(%s) failed: %m", dfile);
+ cleanup(1);
+ }
while (!feof(stdin)) {
ret = fread(buf, 1, BUFSIZ, stdin);
fwrite(buf, 1, ret, fpd);
while (!feof(stdin)) {
ret = fread(buf, 1, BUFSIZ, stdin);
fwrite(buf, 1, ret, fpd);
@@
-202,6
+226,7
@@
char *argv[];
perror(dfile);
cleanup(EX_IOERR);
}
perror(dfile);
cleanup(EX_IOERR);
}
+ size += ret;
}
fclose(fpd);
strcpy(tfile, dfile);
}
fclose(fpd);
strcpy(tfile, dfile);
@@
-270,6
+295,15
@@
char *argv[];
continue;
}
continue;
}
+ if (rest[0] != '\0') {
+ struct stat stbuf;
+ if (stat(rest, &stbuf) < 0)
+ DEBUG(4, "Can't stat %s\n", rest);
+ else
+ size += stbuf.st_size;
+ DEBUG(4, "size = %ld\n", size);
+ }
+
if (strcmp(xsys, local) == SAME
&& strcmp(xsys, syspart) == SAME) {
if (ckexpf(rest))
if (strcmp(xsys, local) == SAME
&& strcmp(xsys, syspart) == SAME) {
if (ckexpf(rest))
@@
-328,7
+362,11
@@
char *argv[];
strcpy(dfile, tfile);
dfile[0] = DATAPRE;
fp = ufopen(tfile, "w");
strcpy(dfile, tfile);
dfile[0] = DATAPRE;
fp = ufopen(tfile, "w");
- ASSERT(fp != NULL, "CAN'T OPEN", tfile, 0);
+ if (fp == NULL) {
+ syslog(LOG_WARNING, "fopen(%s) failed: %m",
+ tfile);
+ cleanup(1);
+ }
if (ckexpf(rest))
cleanup(EX_CANTCREAT);
GENRCV(fp, rest, dfile, User);
if (ckexpf(rest))
cleanup(EX_CANTCREAT);
GENRCV(fp, rest, dfile, User);
@@
-356,7
+394,11
@@
char *argv[];
strcpy(tfile, dfile);
tfile[0] = CMDPRE;
fpd = ufopen(dfile, "w");
strcpy(tfile, dfile);
tfile[0] = CMDPRE;
fpd = ufopen(dfile, "w");
- ASSERT(fpd != NULL, "CAN'T OPEN", dfile, 0);
+ if (fpd == NULL) {
+ syslog(LOG_WARNING, "fopen(%s) failed: %m",
+ dfile);
+ cleanup(1);
+ }
gename(DATAPRE, local, 'T', t2file);
GENRCV(fpd, rest, t2file, User);
fclose(fpd);
gename(DATAPRE, local, 'T', t2file);
GENRCV(fpd, rest, t2file, User);
fclose(fpd);
@@
-407,6
+449,13
@@
char *argv[];
logent(cmd, "XQT QUE'D");
fclose(fprx);
logent(cmd, "XQT QUE'D");
fclose(fprx);
+ if (size > 0 && Gradedelta > 0) {
+ DEBUG (4, "Grade changed from %c ", Grade);
+ Grade += size/Gradedelta;
+ if (Grade > 'z')
+ Grade = 'z';
+ DEBUG(4, "to %c\n", Grade);
+ }
gename(XQTPRE, local, Grade, tfile);
if (strcmp(xsys, local) == SAME) {
/* rti!trt: xmv() works across filesystems, link(II) doesnt */
gename(XQTPRE, local, Grade, tfile);
if (strcmp(xsys, local) == SAME) {
/* rti!trt: xmv() works across filesystems, link(II) doesnt */
@@
-519,7
+568,6
@@
register char *name, *rest;
char *sys;
{
register char *c;
char *sys;
{
register char *c;
- register int i;
if (*name == LQUOTE) {
if ((c = index(name + 1, RQUOTE)) != NULL) {
if (*name == LQUOTE) {
if ((c = index(name + 1, RQUOTE)) != NULL) {