From 8a0ba119cbfe62ec27172fc669ca306002162cde Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Sat, 14 Mar 2026 00:43:54 -0400 Subject: Fix save in config, add directories. --- config/config.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 4 deletions(-) (limited to 'config/config.c') diff --git a/config/config.c b/config/config.c index dc556c8..d8cb260 100644 --- a/config/config.c +++ b/config/config.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "../src/config.h" @@ -88,6 +89,15 @@ void prompt_config_file(void) { OS.shflok = 0x40; prompt("Config File", filename, 100); OS.shflok = 0x00; + + if(filename[1] != ':' && filename[2] != ':') { + memmove(filename + 2, filename, 98); + filename[0] = 'D'; + filename[1] = ':'; + } + + if(!strchr(filename, '.')) + strcat(filename, ".CFG"); } void prompt_color(const char *text, char which) { @@ -148,11 +158,11 @@ char want_overwrite() { int fh; if((fh = open(filename, O_RDONLY)) < 0) - return 0; + return 1; close(fh); - return yn("File exists, overwrite [y/N]? ", 0); + return yn("File exists, overwrite", 0); } void save(void) { @@ -219,6 +229,43 @@ char load(char prompt) { return loaded; } +void dir(char drive) { + DIR *d; + struct dirent *e; + static char spec[10] = "D1:*.CFG"; + char found = 0; + + if(drive == 'h') { + spec[0] = 'H'; + spec[1] = '1'; + } else { + spec[0] = 'D'; + spec[1] = drive + '0'; + } + // print(spec); putchar('\n'); + + d = opendir(spec); + if(!d) return; /* TODO: err msg */ + + while( (e = readdir(d)) ) { + found++; + print(e->d_name); + /* + if(OS.colcrs < 20) + OS.colcrs = 20; + else + */ + putchar(' '); + } + + if(found) + putchar('\n'); + else + print("No *.CFG files found\n"); + + closedir(d); +} + void make_url(void) { conf->url[8] = '\0'; strcat(conf->url, server); @@ -247,7 +294,8 @@ char prompt_main(void) { do { bad = 0; putchar('\n'); - if(have_dos) print("[L]oad [S]ave "); + if(have_dos) + print("[L]oad [S]ave [1-9H]Directory\n"); print("[E]dit [C]onnect [C]? "); c = tolower(cgetc()); @@ -255,7 +303,10 @@ char prompt_main(void) { putchar(c); putchar('\n'); - switch(c) { + if(c >= '1' && c <= '9') { + dir(c - '0'); + bad = 1; + } else switch(c) { case 'c': return 1; case 'l': @@ -268,6 +319,10 @@ char prompt_main(void) { break; case 'e': return 0; + case 'h': + dir(c); + bad = 1; + break; default: bad = 1; break; -- cgit v1.2.3