xref: /csrg-svn/usr.bin/uucp/uupoll/uupoll.c (revision 48617)
1*48617Sbostic /*-
2*48617Sbostic  * Copyright (c) 1986, 1991 The Regents of the University of California.
3*48617Sbostic  * All rights reserved.
4*48617Sbostic  *
5*48617Sbostic  * %sccs.include.redist.c%
6*48617Sbostic  */
7*48617Sbostic 
813689Ssam #ifndef lint
9*48617Sbostic char copyright[] =
10*48617Sbostic "@(#) Copyright (c) 1986, 1991 The Regents of the University of California.\n\
11*48617Sbostic  All rights reserved.\n";
12*48617Sbostic #endif /* not lint */
1313689Ssam 
14*48617Sbostic #ifndef lint
15*48617Sbostic static char sccsid[] = "@(#)uupoll.c	5.7 (Berkeley) 04/24/91";
16*48617Sbostic #endif /* not lint */
17*48617Sbostic 
1813689Ssam /*
1913689Ssam  * Poll named system(s).
2013689Ssam  *
2113689Ssam  * The poll occurs even if recent attempts have failed,
2213689Ssam  * but not if L.sys prohibits the call (e.g. wrong time of day).
2313689Ssam  *
2433963Srick  * Original Author: Tom Truscott (rti!trt)
2513689Ssam  */
2613689Ssam 
2713689Ssam #include "uucp.h"
2813689Ssam 
2918625Sralph int TransferSucceeded = 1;
3025144Sbloom struct timeb Now;
3118625Sralph 
3213689Ssam main(argc, argv)
3333963Srick int argc;
3433963Srick char **argv;
3513689Ssam {
3617844Sralph 	char wrkpre[MAXFULLNAME];
3717844Sralph 	char file[MAXFULLNAME];
3823688Sbloom 	char grade = 'A';
3918625Sralph 	int nocall = 0;
4033963Srick 	int c;
4133963Srick 	char *sysname;
4233963Srick 	extern char *optarg;
4333963Srick 	extern int optind;
4417844Sralph 
4513689Ssam 	if (argc < 2) {
4618625Sralph 		fprintf(stderr, "usage: uupoll [-gX] [-n] system ...\n");
4713689Ssam 		cleanup(1);
4813689Ssam 	}
4913689Ssam 
5033963Srick 	if (chdir(Spool) < 0) {
5133963Srick 		syslog(LOG_WARNING, "chdir(%s) failed: %m", Spool);
5233963Srick 		cleanup(1);
5333963Srick 	}
5413689Ssam 	strcpy(Progname, "uupoll");
5513689Ssam 	uucpname(Myname);
5613689Ssam 
5733963Srick 	while ((c = getopt(argc, argv, "g:n")) != EOF)
5833963Srick 		switch(c) {
5933963Srick 			case 'g':
6033963Srick 				grade = *optarg;
6133963Srick 				break;
6233963Srick 			case 'n':
6333963Srick 				nocall++;
6433963Srick 				break;
6533963Srick 			case '?':
6633963Srick 			default:
6733963Srick 				fprintf(stderr, "unknown option %s\n",
6833963Srick 					argv[optind-1]);
6933963Srick 		}
7033963Srick 
7133963Srick 	while(optind < argc) {
7233963Srick 		sysname = argv[optind++];
7333963Srick 		if (strcmp(sysname, Myname) == SAME) {
7413689Ssam 			fprintf(stderr, "This *is* %s!\n", Myname);
7513689Ssam 			continue;
7613689Ssam 		}
7713689Ssam 
7833963Srick 		if (versys(&sysname)) {
7933963Srick 			fprintf(stderr, "%s: unknown system.\n", sysname);
8013689Ssam 			continue;
8113689Ssam 		}
8213689Ssam 		/* Remove any STST file that might stop the poll */
8333963Srick 		sprintf(wrkpre, "%s/LCK..%.*s", LOCKDIR, MAXBASENAME, sysname);
8417844Sralph 		if (access(wrkpre, 0) < 0)
8533963Srick 			rmstat(sysname);
8633963Srick 		sprintf(wrkpre, "%c.%.*s", CMDPRE, SYSNSIZE, sysname);
8717844Sralph 		if (!iswrk(file, "chk", Spool, wrkpre)) {
8823688Sbloom 			sprintf(file, "%s/%c.%.*s%cPOLL", subdir(Spool, CMDPRE),
8933963Srick 				CMDPRE, SYSNSIZE, sysname, grade);
9017844Sralph 			close(creat(file, 0666));
9117844Sralph 		}
9213689Ssam 		/* Attempt the call */
9318625Sralph 		if (!nocall)
9433963Srick 			xuucico(sysname);
9513689Ssam 	}
9613689Ssam 	cleanup(0);
9713689Ssam }
9813689Ssam 
9913689Ssam cleanup(code)
10013689Ssam int code;
10113689Ssam {
10213689Ssam 	exit(code);
10313689Ssam }
104