-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathbbfinger.c
78 lines (63 loc) · 1.51 KB
/
bbfinger.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "server.h"
extern char *optarg;
extern int optind;
extern USERDATA user_params;
extern SERVERDATA server;
extern char *ModeToString __P((SHORT));
usage(prog)
char *prog;
{
fprintf(stderr,
"Usage: %s [-d bbs-dir]\n", prog);
}
/*ARGSUSED*/
one_line_display(indx, urec, count)
int indx;
USEREC *urec;
int *count;
{
printf("%-12s %-25s %-25s %s\n", urec->userid,
urec->username, urec->fromhost,
ModeToString(urec->mode));
(*count)++;
return S_OK;
}
main(argc, argv)
int argc;
char *argv[];
{
char *bbshome = NULL;
int c, count = 0;
while ((c = getopt(argc, argv, "d:?")) != -1)
{
switch (c)
{
case 'd':
bbshome = optarg;
break;
case '?':
usage(argv[0]);
return 2;
}
}
if (home_bbs(bbshome) == -1) {
fprintf(stderr, "%s: Cannot chdir to %s\n", argv[0], bbshome);
return 1;
}
if (local_bbs_initialize(NULL) != S_OK) {
fprintf(stderr, "%s: local_bbs_initialize failed\n", argv[0]);
return 1;
}
/* Identify ourself for the log file, just in case */
strcpy(user_params.u.userid, "[bbfinger]");
/* assume lowest possible priviliges */
user_params.perms = 0;
/* Do it! */
printf("[%s]\n\n", server.name);
printf("%-12s %-25s %-25s %s\n",
"User Id", "User Name", "From", "Mode");
local_bbs_enum_users(50, 0, NULL, one_line_display, &count);
printf("\n%d %s displayed\n\n", count, count==1?"user":"users");
local_bbs_disconnect();
return 0;
}