unsigned short ypixels; /* pixels */
} xwinsz;
- if (scr_set_windowsize())
- return;
-
if (have_xterm) { /* dynamically size screen if on an xterm */
if (ioctl(0, TIOCGWINSZ, &xwinsz) == 0) {
if (xwinsz.height)
- screenheight = (int) xwinsz.height;
+ screenheight = is_curses_enabled() ? (int)xwinsz.height - 1 : (int) xwinsz.height;
if (xwinsz.width)
screenwidth = (int) xwinsz.width;
}
time_t timenow = 0;
time_t idletime, idlehours, idlemins, idlesecs;
int last_session = (-1);
+ int skipidle = 0;
+
+ if (longlist == 2)
+ {
+ longlist = 0;
+ skipidle = 1;
+ }
serv_puts("TIME");
serv_gets(tbuf);
serv_gets(buf);
if (buf[0] == '1') {
while (serv_gets(buf), strcmp(buf, "000")) {
+ int isidle = 0;
extract(username, buf, 1);
extract(roomname, buf, 2);
extract(fromhost, buf, 3);
strcat(roomname, " ");
}
strcpy(&roomname[14], "[idle]");
+ if (skipidle)
+ isidle = 1;
}
if (longlist) {
pprintf("\n");
} else {
- if (extract_int(buf, 0) == last_session) {
- pprintf(" ");
- } else {
- color(BRIGHT_MAGENTA);
- pprintf("%-3s ", flags);
- color(DIM_WHITE);
- pprintf("%-3d ", extract_int(buf, 0));
- }
- last_session = extract_int(buf, 0);
- color(BRIGHT_CYAN);
- pprintf("%-25s ", username);
- color(BRIGHT_MAGENTA);
- roomname[20] = 0;
- pprintf("%-20s ", roomname);
- color(BRIGHT_CYAN);
- fromhost[24] = '\0';
- pprintf("%-24s\n", fromhost);
- color(DIM_WHITE);
+ if (isidle == 0) {
+ if (extract_int(buf, 0) == last_session) {
+ pprintf(" ");
+ } else {
+ color(BRIGHT_MAGENTA);
+ pprintf("%-3s ", flags);
+ color(DIM_WHITE);
+ pprintf("%-3d ", extract_int(buf, 0));
+ }
+ last_session = extract_int(buf, 0);
+ color(BRIGHT_CYAN);
+ pprintf("%-25s ", username);
+ color(BRIGHT_MAGENTA);
+ roomname[20] = 0;
+ pprintf("%-20s ", roomname);
+ color(BRIGHT_CYAN);
+ fromhost[24] = '\0';
+ pprintf("%-24s\n", fromhost);
+ color(DIM_WHITE);
+ }
}
}
}
return argc;
}
+static void statusHook(char *s) {
+ sln_printf(s);
+ sln_flush();
+}
+
/*
* main
*/
char hexstring[MD5_HEXSTRING_SIZE];
int stored_password = 0;
char password[SIZ];
+
+ setIPCDeathHook(screen_delete);
+ setIPCErrorPrintf(err_printf);
+ setCryptoStatusHook(statusHook);
/* Permissions sanity check - don't run citadel setuid/setgid */
if (getuid() != geteuid()) {
sttybbs(SB_NO_INTR); /* Install the new ones */
signal(SIGHUP, dropcarr); /* Cleanup gracefully if carrier is dropped */
signal(SIGTERM, dropcarr); /* Cleanup gracefully if terminated */
- signal(SIGCONT, catch_sigcont); /* Catch SIGCONT so we can reset terminal */
+ signal(SIGCONT, catch_sigcont); /* Catch SIGCONT so we can reset terminal */
+#ifdef SIGWINCH
+ signal(SIGWINCH, scr_winch); /* Window resize signal */
+#endif
+#ifdef HAVE_OPENSSL
arg_encrypt = RC_DEFAULT;
+#endif
#ifdef HAVE_CURSES_H
arg_screen = RC_DEFAULT;
#endif
argc = shift(argc, argv, a, 2);
}
if (!strcmp(argv[a], "-x")) {
+#ifdef HAVE_OPENSSL
arg_encrypt = RC_NO;
+#endif
argc = shift(argc, argv, a, 1);
}
if (!strcmp(argv[a], "-X")) {
+#ifdef HAVE_OPENSSL
arg_encrypt = RC_YES;
- argc = shift(argc, argv, a, 1);
+ argc = shift(argc, argv, a, 1);
+#else
+ fprintf(stderr, "Not compiled with encryption support");
+ return 1;
+#endif
}
if (!strcmp(argv[a], "-s")) {
#ifdef HAVE_CURSES_H
serv_gets(aaa);
if (nonce[0])
{
- sprintf(aaa, "PAS2 %s", make_apop_string(password, nonce, hexstring));
+ snprintf(aaa, sizeof aaa, "PAS2 %s", make_apop_string(password, nonce, hexstring, sizeof hexstring));
}
else /* Else no APOP */
{
if (nonce[0])
{
- sprintf(aaa, "PAS2 %s", make_apop_string(password, nonce, hexstring));
+ snprintf(aaa, sizeof aaa, "PAS2 %s", make_apop_string(password, nonce, hexstring, sizeof hexstring));
}
else /* Else no APOP */
{
- snprintf(aaa, sizeof(aaa)-1, "PASS %s", password);
+ snprintf(aaa, sizeof aaa, "PASS %s", password);
}
serv_puts(aaa);
do_ignet_configuration();
break;
+ case 92:
+ do_filterlist_configuration();
+ break;
+
case 6:
if (rc_alt_semantics)
updatelsa();
who_is_online(1);
break;
+ case 91:
+ who_is_online(2);
+ break;
+
case 80:
do_system_configuration();
break;