diff options
| -rw-r--r-- | config/config.c | 77 | ||||
| -rw-r--r-- | src/config.h | 2 | ||||
| -rw-r--r-- | src/main.c | 5 |
3 files changed, 41 insertions, 43 deletions
diff --git a/config/config.c b/config/config.c index 0fb2fab..f2993bc 100644 --- a/config/config.c +++ b/config/config.c @@ -40,8 +40,6 @@ char *servers[] = { 0 }; -conf_t *conf = (conf_t *)0x0400; - char have_dos = 0; char filename[101] = "D:FNCHAT.CFG"; char buf[128]; @@ -57,6 +55,13 @@ void setup_timers_and_exit(void) { timers.one_tenth_sec = timers.hz / 10; timers.one_sec = timers.hz * 60; timers.net_ind_time = (timers.hz / 10) * 37; + + OS.color2 = config.colors[0]; /* text BG, user-selected */ + OS.color1 = config.colors[1]; + OS.color0 = 0x06; /* grey for inactive */ + OS.color3 = 0x46; /* red for highlight */ + OS.noclik = config.disable_keyclick; + exit(0); } @@ -148,10 +153,10 @@ void prompt_config_file(void) { } void prompt_color(const char *text, char which) { - itoa(conf->colors[which], numbuf, 10); + itoa(config.colors[which], numbuf, 10); print(text); prompt(" color", numbuf, 3); - conf->colors[which] = atoi(numbuf); + config.colors[which] = atoi(numbuf); } void prompt_colors(void) { @@ -161,21 +166,21 @@ void prompt_colors(void) { bad = 0; prompt_color("Text BG", 0); prompt_color("Text FG", 1); - if((conf->colors[0] & 0x0e) == (conf->colors[1] & 0x0e)) { + if((config.colors[0] & 0x0e) == (config.colors[1] & 0x0e)) { print("!! Unreadable, try again.\n"); bad = 1; } } while(bad); - OS.color2 = conf->colors[0]; - OS.color1 = conf->colors[1]; + OS.color2 = config.colors[0]; + OS.color1 = config.colors[1]; } void prompt_alert_type(void) { char c, d, bad; print(" 0:None, 1:Beep, 2:Flash, 3:Both\n"); - d = conf->alert_type + '0'; + d = config.alert_type + '0'; do { bad = 0; @@ -194,7 +199,7 @@ void prompt_alert_type(void) { } } while(bad); - conf->alert_type = c - '0'; + config.alert_type = c - '0'; } void no_dos(void) { @@ -238,7 +243,7 @@ void save(void) { if((fh = open(filename, O_WRONLY | O_CREAT)) < 0) { print("!! I/O error (open)\n"); bad = 1; - } else if((write(fh, conf, sizeof(conf_t))) != sizeof(conf_t)) { + } else if((write(fh, &config, sizeof(conf_t))) != sizeof(conf_t)) { print("!! I/O error (write)\n"); bad = 1; } @@ -273,7 +278,7 @@ char load(char prompt) { if((fh = open(filename, O_RDONLY)) < 0) { print("Not found\n"); loaded = 0; - } else if((read(fh, conf, sizeof(conf_t))) != sizeof(conf_t)) { + } else if((read(fh, &config, sizeof(conf_t))) != sizeof(conf_t)) { print("Invalid\n"); loaded = 0; } @@ -321,16 +326,16 @@ void dir(char drive) { } void make_url(void) { - conf->url[8] = '\0'; - strcat(conf->url, server); - strcat(conf->url, ":"); - strcat(conf->url, port); + config.url[8] = '\0'; + strcat(config.url, server); + strcat(config.url, ":"); + strcat(config.url, port); } void parse_url(void) { char *p, *q; q = server; - p = conf->url + 8; /* skip N:TCP:// */ + p = config.url + 8; /* skip N:TCP:// */ while(*p) { if(*p == ':') break; *q++ = *p++; @@ -354,12 +359,12 @@ char prompt_main(void) { c = tolower(lcgetc()); if(c == 0x14) { - strcpy(conf->nick, "Urch600XL"); - conf->channels[1][0] = conf->channels[2][0] = 0; + strcpy(config.nick, "Urch800XL"); + config.channels[1][0] = config.channels[2][0] = 0; c = 'c'; } else if(c == 0x15) { /* super-secret Urchlay mode... */ - strcpy(conf->nick, "Urch600XL"); + strcpy(config.nick, "Urch800XL"); c = 'c'; } if(c == '\n') c = 'c'; @@ -403,7 +408,7 @@ void list_chans(void) { char i, *p; for(i = 0; i < 5; i++) { - p = conf->channels[i]; + p = config.channels[i]; print(" Screen #"); putchar(i + '3'); print(": "); @@ -416,7 +421,7 @@ void clear_chans(void) { char i; for(i = 0; i < 5; i++) - conf->channels[i][0] = 0; + config.channels[i][0] = 0; } void prompt_channels(void) { @@ -453,7 +458,7 @@ void prompt_channels(void) { /* NOP */; if(OS.ch == KEY_ESC) { - conf->channels[c][0] = 0; + config.channels[c][0] = 0; print("Channel "); putchar(d); print(" cleared.\n"); @@ -466,7 +471,7 @@ void prompt_channels(void) { } else { lgets(buf); if(*buf) - strncpy(conf->channels[c], buf, 25); + strncpy(config.channels[c], buf, 25); } } } @@ -481,14 +486,14 @@ void prompt_extra_channels(void) { do { print("Channels: \n\n\n\n\x1c\x1c\x1c"); r = OS.rowcrs; - print(conf->extra_channels); + print(config.extra_channels); OS.rowcrs = r; OS.colcrs = 0; putchar(CH_CURS_RIGHT); putchar(CH_CURS_LEFT); lgets(buf); - strncpy(conf->extra_channels, buf, 128); + strncpy(config.extra_channels, buf, 128); done = yn("OK", 1); } while(!done); @@ -550,7 +555,7 @@ void detect_xl(void) { void set_default_config(void) { - memcpy(conf, &defaults, sizeof(conf_t)); + memcpy(&config, &defaults, sizeof(conf_t)); } void main(void) { @@ -568,8 +573,8 @@ void main(void) { set_default_config(); - OS.color2 = conf->colors[0]; - OS.color1 = conf->colors[1]; + OS.color2 = config.colors[0]; + OS.color1 = config.colors[1]; cursor(1); print("\x7d" "FujiNetChat Config\n"); @@ -588,13 +593,13 @@ void main(void) { print("\nAt any time, press Ctrl-C to skip the\n"); print("remaining questions.\n\n"); - if(memcmp(&defaults, conf, sizeof(defaults)) != 0) + if(memcmp(&defaults, &config, sizeof(defaults)) != 0) if(yn("Reset to defaults", 0)) set_default_config(); parse_url(); - prompt("Nick", conf->nick, 25); + prompt("Nick", config.nick, 25); prompt_server(); make_url(); @@ -608,18 +613,18 @@ void main(void) { } } while(bad); - prompt("Name ", conf->real_name, 25); + prompt("Name ", config.real_name, 25); prompt_colors(); prompt_alert_type(); - // conf->show_ping = yn("Show PING/PONG", conf->show_ping); - conf->atract_away = yn("Set AWAY on ATRACT", conf->atract_away); - conf->hide_motd = yn("Hide MOTD", conf->hide_motd); - conf->disable_keyclick = yn("Disable keyclick", conf->disable_keyclick); + // config.show_ping = yn("Show PING/PONG", config.show_ping); + config.atract_away = yn("Set AWAY on ATRACT", config.atract_away); + config.hide_motd = yn("Hide MOTD", config.hide_motd); + config.disable_keyclick = yn("Disable keyclick", config.disable_keyclick); prompt_channels(); prompt_extra_channels(); print("\nURL: "); - print(conf->url); + print(config.url); putchar('\n'); } diff --git a/src/config.h b/src/config.h index ff25ea1..8470cc2 100644 --- a/src/config.h +++ b/src/config.h @@ -13,6 +13,4 @@ typedef struct { char disable_keyclick; } conf_t; -extern conf_t *conf; - #define config (*(conf_t *)0x0400) @@ -133,11 +133,6 @@ void reconnect(void) { void main(void) { bell_type = config.alert_type; /* TODO: have bell.s read staight from the struct */ OS.soundr = 0; // Turn off SIO beeping sound - OS.color2 = config.colors[0]; /* text BG, user-selected */ - OS.color1 = config.colors[1]; - OS.color0 = 0x06; /* grey for inactive */ - OS.color3 = 0x46; /* red for highlight */ - OS.noclik = config.disable_keyclick; edbox_clear(); scr_init(); |
