static char sccsid
[] = "@(#)uusnap.c 5.2 (Berkeley) %G%";
* Uusnap - displays a snapshot of the uucp system.
* RJKing WECo-MG6565 May 83
#define NSYSTEM 100 /* max # of systems queued */
#define SPOOLDR "/usr/spool/uucp" /* Where STST files are */
#define CMDSDIR "/usr/spool/uucp/C." /* Name of commands dir */
#define DATADIR "/usr/spool/uucp/D." /* Name of data directory */
#define XEQTDIR "/usr/spool/uucp/X." /* Name of execute dir */
#define CMDSDIR "/usr/spool/uucp" /* Name of commands dir */
#define DATADIR "/usr/spool/uucp" /* Name of data directory */
#define XEQTDIR "/usr/spool/uucp" /* Name of execute dir */
#define CMDSLEN 5 /* Length of trailer */
#define DATALEN 5 /* Length of trailer */
/* rti!trt: XEQTLEN was 0, for reverse search, but that did not work. */
#define XEQTLEN 5 /* Length of trailer */
#define NUMCTRS 3 /* # file types to count */
#define CMDTYPE 0 /* Index into scnt.cntr */
#define DATTYPE 1 /* Index into scnt.cntr */
#define XEQTYPE 2 /* Index into scnt.cntr */
void scandir(), getstst();
extern char *index(), *rindex(), *strcpy(), *strncpy();;
struct scnt
{ /* System count structure */
char name
[16]; /* Name of system */
short cntr
[NUMCTRS
]; /* Count */
char stst
[32]; /* STST Message */
short locked
; /* If LCK..sys present */
int st_type
; /* STST Type */
int st_count
; /* STST Count */
time_t st_lastime
; /* STST Last time tried */
time_t st_retry
; /* STST Secs to retry */
int sndx
; /* Number of systems */
struct scnt sys
[NSYSTEM
]; /* Systems queued */
{ register int i
, j
, nlen
= 0;
scandir(CMDSDIR
, "C.", CMDSLEN
, NULL
, CMDTYPE
);
scandir(DATADIR
, "D.", DATALEN
, NULL
, DATTYPE
);
scandir(XEQTDIR
, "X.", XEQTLEN
, 'X', XEQTYPE
);
if((j
= strlen(sys
[i
].name
)) > nlen
)
{ printf("%-*.*s ", nlen
, nlen
, sys
[i
].name
);
printf("%3.d Cmd%s ", sys
[i
].cntr
[CMDTYPE
],
sys
[i
].cntr
[CMDTYPE
]>1?"s":" ");
printf("%3.d Data ", sys
[i
].cntr
[DATTYPE
]);
printf("%3.d Xqt%s ", sys
[i
].cntr
[XEQTYPE
],
sys
[i
].cntr
[XEQTYPE
]>1?"s":" ");
printf("%s ", sys
[i
].stst
);
if(sys
[i
].st_type
== SS_INPROGRESS
)
t
= (sys
[i
].st_lastime
+sys
[i
].st_retry
) - curtime
;
printf("Retry time reached ");
printf("Retry time %ld sec%s ", (long)(t
%60),
else printf("Retry time %ld min%s ", (long)(t
/60),
printf("Count: %d\n", sys
[i
].st_count
);
void scandir(dnam
, prfx
, flen
, fchr
, type
)
register struct direct
*dentp
;
if ((dirp
= opendir(".", "r")) == NULL
)
while((dentp
= readdir(dirp
)) != NULL
)
{ if(*dentp
->d_name
== '.' || dentp
->d_ino
== 0)
if(strncmp(dentp
->d_name
, prfx
, plen
) != SAME
) {
fprintf(stderr
, "strange file (%s) in %s\n",
strcpy(fnam
, &dentp
->d_name
[plen
]);
{ if(strcmp(fnam
, sys
[i
].name
) == SAME
)
{ strcpy(sys
[i
].name
, fnam
);
char fnam
[MAXNAMLEN
+1], buff
[128];
register struct direct
*dentp
;
if((dirp
= opendir(".", "r")) == NULL
)
while((dentp
= readdir(dirp
)) != NULL
)
if(strncmp(dentp
->d_name
, "LCK..", 5) == SAME
)
{ if(strncmp(&dentp
->d_name
[5], "tty", 3) == SAME
||
strncmp(&dentp
->d_name
[5], "cul", 3) == SAME
)
strcpy(fnam
, dentp
->d_name
);
for(csys
=0; csys
<sndx
; ++csys
)
{ if(strcmp(&fnam
[5], sys
[csys
].name
) == SAME
)
{ strcpy(sys
[csys
].name
, &fnam
[5]);
if(strncmp(dentp
->d_name
, "STST.", 5) == SAME
)
{ strcpy(fnam
, dentp
->d_name
);
for(csys
=0; csys
<sndx
; ++csys
)
{ if(strcmp(&fnam
[5], sys
[csys
].name
) == SAME
)
{ strcpy(sys
[csys
].name
, &fnam
[5]);
if((st
= fopen(fnam
, "r")) == NULL
)
{ strncpy(sys
[csys
].stst
, "",
strncpy(buff
, "", sizeof(buff
));
fgets(buff
, sizeof(buff
), st
);
if(tp
= rindex(buff
, ' '))
*tp
= NULL
; /* drop system name */
for(i
=0, tp
=buff
; i
<4; ++i
, ++tp
)
if((tp
= index(tp
, ' ')) == NULL
)
strncpy(sys
[csys
].stst
, tp
, sizeof(sys
[csys
].stst
));
sys
[csys
].st_type
= atoi(tp
);
sys
[csys
].st_count
= atoi(tp
+1);
sys
[csys
].st_lastime
= (time_t)atol(tp
+1);
sys
[csys
].st_retry
= (time_t)atol(tp
+1);
/* @(#)index.c 4.1 (Berkeley) 12/21/80 */
* Return the ptr in sp at which the character c appears;
/* @(#)rindex.c 4.1 (Berkeley) 12/21/80 */
* Return the ptr in sp at which the character c last
* appears; NULL if not found