15 void escapize(char buf[]) {
22 for (i=0; i<strlen(hold); ++i) {
24 sprintf(&buf[strlen(buf)], "<");
25 else if (hold[i]=='>')
26 sprintf(&buf[strlen(buf)], ">");
28 sprintf(&buf[strlen(buf)], """);
30 sprintf(&buf[strlen(buf)], "%c", hold[i]);
37 int main(int argc, char **argv)
50 /* If this environment variable is set, we assume that the program
51 * is being called as a cgi-bin from a webserver and will output
54 if (getenv("REQUEST_METHOD") != NULL) www = 1;
56 attach_to_server(argc,argv);
58 if ((buf[0]!='2')&&(strncmp(buf,"551",3))) {
59 fprintf(stderr,"%s: %s\n",argv[0],&buf[4]);
62 strcpy(nodetitle, "this BBS");
67 while (serv_gets(buf), strcmp(buf,"000")) {
68 if (a==0) my_pid = atoi(buf);
69 if (a==2) strcpy(nodetitle, buf);
75 printf( "Content-type: text/html\n"
78 "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"60\">\n"
80 printf("%s: who is online", nodetitle);
81 printf( "</TITLE></HEAD><BODY><H1>");
87 printf("<CENTER><H1>");
90 printf("Users currently logged on to %s\n", nodetitle);
99 fprintf(stderr,"%s: %s\n",argv[0],&buf[4]);
104 printf( "<TABLE BORDER=1 WIDTH=100%%>"
105 "<TR><TH>Session</TH><TH>User name</TH>"
106 "<TH>Room</TH><TH>From host</TH>"
107 "<TH>Client software</TH></TR>\n");
110 printf( "Session User name "
112 printf( "------- ------------------------- "
113 "-------------------- ------------------------\n");
117 while (serv_gets(buf), strcmp(buf,"000")) {
119 /* Escape some stuff if we're using www mode */
120 if (www) escapize(buf);
122 s_pid = extract_int(buf,0);
123 extract(s_user,buf,1);
124 extract(s_room,buf,2);
125 extract(s_host,buf,3);
126 extract(s_client,buf,4);
127 if (s_pid != my_pid) {
129 if (www) printf("<TR><TD>");
130 printf("%-7d", s_pid);
132 ((s_pid == my_pid) ? '*' : ' '));
133 if (www) printf("</TD><TD>");
134 printf("%-25s", s_user);
135 if (www) printf("</TD><TD>");
136 printf("%-20s ", s_room);
137 if (www) printf("</TD><TD>");
138 printf("%-24s\n", s_host);
139 if (www) printf("</TD><TD>%s</TD></TR>\n", s_client);
143 if (www) printf("</TABLE></CENTER>\n"
145 "(This display will automatically refresh "
146 "once per minute)</FONT>\n"
155 #ifndef HAVE_STRERROR
157 * replacement strerror() for systems that don't have it
159 char *strerror(int e)
163 sprintf(buf,"errno = %d",e);