diff options
| author | B. Watson <urchlay@slackware.uk> | 2026-03-14 00:43:54 -0400 |
|---|---|---|
| committer | B. Watson <urchlay@slackware.uk> | 2026-03-14 00:43:54 -0400 |
| commit | 8a0ba119cbfe62ec27172fc669ca306002162cde (patch) | |
| tree | 1ffbd96707097d3d3618c8e3a0f1814d15eb5f37 | |
| parent | 080bac18c9bbca1029081745967b69766de7575e (diff) | |
| download | fujinet-chat-8a0ba119cbfe62ec27172fc669ca306002162cde.tar.gz | |
Fix save in config, add directories.
| -rw-r--r-- | config/config.c | 63 |
1 files changed, 59 insertions, 4 deletions
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 <atari.h> #include <conio.h> #include <ctype.h> +#include <dirent.h> #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; |
