aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2026-03-17 23:06:13 -0400
committerB. Watson <urchlay@slackware.uk>2026-03-17 23:06:13 -0400
commit82198d4952da648047eddb8f5959e90eb0582f1b (patch)
tree29624a95b74605c89dacf16be024bbed774905a6
parent5eb5ae197b8663cf49e7e1984ba5a32df1303676 (diff)
downloadfujinet-chat-82198d4952da648047eddb8f5959e90eb0582f1b.tar.gz
Add server menu to config, and "clear all channels".
-rw-r--r--config/config.c65
-rw-r--r--doc/ui_keys.txt1
2 files changed, 64 insertions, 2 deletions
diff --git a/config/config.c b/config/config.c
index 695a430..b1f85c4 100644
--- a/config/config.c
+++ b/config/config.c
@@ -29,6 +29,15 @@ conf_t defaults = {
0, /* disable_keyclick, default = N */
};
+char *servers[] = {
+ "irc.libera.chat",
+ "irc.undernet.org",
+ "irc.efnet.org",
+ "irc.newnet.net",
+ "irc.oftc.net",
+ 0
+};
+
char have_dos = 0;
char filename[101] = "D:FNCHAT.CFG";
char buf[128];
@@ -359,6 +368,13 @@ void list_chans(void) {
}
}
+void clear_chans(void) {
+ char i;
+
+ for(i = 0; i < 5; i++)
+ conf->channels[i][0] = 0;
+}
+
void prompt_channels(void) {
char c, d, ok;
@@ -368,7 +384,7 @@ void prompt_channels(void) {
putchar('\n');
while(1) {
- print("# to change, L = list, Return = done.\n");
+ print("3-7=change C=clear L=list Return=done\n");
do {
ok = 1;
c = cgetc();
@@ -376,6 +392,10 @@ void prompt_channels(void) {
return;
if(c == 'l')
list_chans();
+ if(c == 'c') {
+ clear_chans();
+ print("All channels cleared\n");
+ }
if(c < '3' || c > '7')
ok = 0;
} while(!ok);
@@ -430,6 +450,47 @@ void prompt_extra_channels(void) {
} while(!done);
}
+void prompt_server_list(void) {
+ char **p = servers;
+ int c, count = '1';
+
+ do {
+ putchar(count | 0x80);
+ putchar(':');
+ print(*p);
+ putchar('\n');
+ count++;
+ p++;
+ } while(*p);
+
+ print("Server [1]? ");
+ do {
+ c = cgetc();
+ if(c == '\n') c = '1';
+ } while(!(c > '0' && c < count));
+ c -= '1';
+ strncpy(server, servers[c], 100);
+ print(server);
+ putchar('\n');
+}
+
+void prompt_server() {
+ print("\nPress Escape for server list.\n");
+ print("Server [");
+ print(server);
+ print("]? ");
+ while(OS.ch == KEY_NONE)
+ /* NOP */;
+ if(OS.ch == KEY_ESC) {
+ putchar('\n');
+ keyclick();
+ prompt_server_list();
+ } else {
+ gets(buf);
+ if(*buf) strncpy(server, buf, 100);
+ }
+}
+
void set_default_config(void) {
memcpy(conf, &defaults, sizeof(conf_t));
}
@@ -462,7 +523,7 @@ void main(void) {
parse_url();
- prompt("\nServer", server, 100);
+ prompt_server();
do {
bad = 0;
diff --git a/doc/ui_keys.txt b/doc/ui_keys.txt
index 7944531..9d50173 100644
--- a/doc/ui_keys.txt
+++ b/doc/ui_keys.txt
@@ -23,5 +23,6 @@ Ctrl-X - in a channel screen, /part the channel and close the
Future plans:
+Ctrl-D - disconnect from server (without sending a /quit).
J - join last channel you were invited to.
? - Show help (also the Help key by itself will do this).