aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2026-03-19 08:19:14 -0400
committerB. Watson <urchlay@slackware.uk>2026-03-19 08:19:14 -0400
commit1a1b7d9de6ce73493dc5fdbc91bf0f51de1e864b (patch)
treebeb9837e065801feb6480a207e09c27ff80808cc /config
parent685c14f1f9673842ab92ec00c3542e61c4be9cd2 (diff)
downloadfujinet-chat-1a1b7d9de6ce73493dc5fdbc91bf0f51de1e864b.tar.gz
Rearrange config a bit.
Diffstat (limited to 'config')
-rw-r--r--config/config.c55
1 files changed, 39 insertions, 16 deletions
diff --git a/config/config.c b/config/config.c
index d48f54a..64924f0 100644
--- a/config/config.c
+++ b/config/config.c
@@ -45,6 +45,24 @@ char numbuf[4];
char server[101];
char port[6];
+char lcgetc(void) {
+ char c;
+
+ c = cgetc();
+ if(c == 0x03) exit(0);
+ return c;
+}
+
+char *lgets(char *buf) {
+ while(OS.ch == 0xff)
+ /* NOP */;
+
+ if(OS.ch == 0x92)
+ lcgetc();
+
+ return gets(buf);
+}
+
void detect_dos(void) {
char i, j, h, d;
@@ -70,7 +88,7 @@ void prompt(const char *text, char *p, char limit) {
print(" [");
print(p);
print("]? ");
- gets(buf);
+ lgets(buf);
if(buf[0]) strncpy(p, buf, limit);
}
@@ -86,7 +104,7 @@ char yn(const char *text, char dflt) {
do {
bad = 1;
- c = tolower(cgetc());
+ c = tolower(lcgetc());
if(c == '\n')
c = dflt ? 'y' : 'n';
if(c == 'y' || c == 'n')
@@ -150,7 +168,7 @@ void prompt_alert_type(void) {
putchar(d);
print("]? ");
- c = cgetc();
+ c = lcgetc();
if(c == '\n') c = d;
putchar(c);
@@ -312,8 +330,8 @@ char prompt_main(void) {
print("[L]oad [S]ave [1-9H]Directory\n");
print("[E]dit [C]onnect [C]? ");
- c = tolower(cgetc());
- if(c == 0x03) {
+ c = tolower(lcgetc());
+ if(c == 0x15) {
/* super-secret Urchlay mode... */
strcpy(conf->nick, "Urch600XL");
c = 'c';
@@ -352,7 +370,7 @@ char prompt_main(void) {
void keyclick(void) {
OS.ch = 0;
- cgetc();
+ lcgetc();
}
void list_chans(void) {
@@ -387,7 +405,7 @@ void prompt_channels(void) {
print("3-7=change C=clear L=list Return=done\n");
do {
ok = 1;
- c = cgetc();
+ c = lcgetc();
if(c == '\n')
return;
if(c == 'l')
@@ -420,7 +438,7 @@ void prompt_channels(void) {
print(" unchanged.\n");
keyclick();
} else {
- gets(buf);
+ lgets(buf);
if(*buf)
strncpy(conf->channels[c], buf, 25);
}
@@ -443,7 +461,7 @@ void prompt_extra_channels(void) {
putchar(CH_CURS_RIGHT);
putchar(CH_CURS_LEFT);
- gets(buf);
+ lgets(buf);
strncpy(conf->extra_channels, buf, 128);
done = yn("OK", 1);
@@ -465,7 +483,7 @@ void prompt_server_list(void) {
print("Server [1]? ");
do {
- c = cgetc();
+ c = lcgetc();
if(c == '\n') c = '1';
} while(!(c > '0' && c < count));
c -= '1';
@@ -475,7 +493,7 @@ void prompt_server_list(void) {
}
void prompt_server() {
- print("\nPress Escape for server list.\n");
+ print("** Press Escape for server list.\n");
print("Server [");
print(server);
print("]? ");
@@ -486,7 +504,7 @@ void prompt_server() {
keyclick();
prompt_server_list();
} else {
- gets(buf);
+ lgets(buf);
if(*buf) strncpy(server, buf, 100);
}
}
@@ -518,11 +536,17 @@ void main(void) {
if(prompt_main())
break;
- if(yn("\nUse defaults", 0))
- set_default_config();
+ print("\nAt any time, press Ctrl-C to skip the\n");
+ print("remaining questions.\n\n");
+
+ if(memcmp(&defaults, conf, sizeof(defaults)) != 0)
+ if(yn("\nReset to defaults", 0))
+ set_default_config();
parse_url();
+ prompt("Nick", conf->nick, 25);
+
prompt_server();
do {
@@ -534,7 +558,6 @@ void main(void) {
}
} while(bad);
- prompt("Nick ", conf->nick, 25);
prompt("Name ", conf->real_name, 25);
prompt_colors();
prompt_alert_type();
@@ -553,7 +576,7 @@ void main(void) {
}
/* GRR! When the client loads, somehow, wherever the cursor is according
- to the E: device, gets a 0 byte written to its screen address.
+ to the E: device, lgets a 0 byte written to its screen address.
Clearing the screen here band-aids it: a byte of the client's screen
memory is getting zeroed out, but it's a byte that was already zero... */
print("\x7d");