aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/config.c63
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;