Move INI/CFG/MAP files to config dir.

This commit is contained in:
sorgelig
2017-06-16 16:40:34 +08:00
parent 40b323d4aa
commit 6a5d4b142d
9 changed files with 72 additions and 43 deletions

View File

@@ -107,7 +107,7 @@ char *archie_get_floppy_name(char i)
void archie_save_config(void)
{
FileSave(CONFIG_FILENAME, &config, sizeof(config));
FileSaveConfig(CONFIG_FILENAME, &config, sizeof(config));
}
void archie_send_file(unsigned char id, char *name)
@@ -252,7 +252,6 @@ static void archie_kbd_reset(void)
void archie_init(void)
{
fileTYPE file;
char i;
archie_debugf("init");
@@ -262,15 +261,15 @@ void archie_init(void)
strcpy(config.rom_img, "RISCOS.ROM");
// try to load config from card
if (FileOpen(&file, CONFIG_FILENAME))
int size = FileLoadConfig(CONFIG_FILENAME, 0, 0);
if (size>0)
{
if (file.size == sizeof(archie_config_t))
if (size == sizeof(archie_config_t))
{
FileReadAdv(&file, &config, sizeof(archie_config_t));
FileLoadConfig(CONFIG_FILENAME, &config, sizeof(archie_config_t));
}
else
archie_debugf("Unexpected config size %d != %d", file.size, sizeof(archie_config_t));
FileClose(&file);
archie_debugf("Unexpected config size %d != %d", size, sizeof(archie_config_t));
}
else
archie_debugf("No %s config found", CONFIG_FILENAME);

View File

@@ -260,15 +260,15 @@ unsigned char LoadConfiguration(char *filename)
filename = configfilename;
}
fileTYPE file;
// load configuration data
if (FileOpen(&file, filename)) {
FileClose(&file);
int size = FileLoadConfig(filename, 0, 0);
if(size>0)
{
BootPrint("Opened configuration file\n");
printf("Configuration file size: %s, %lu\n", file.name, file.size);
if (file.size == sizeof(config))
printf("Configuration file size: %s, %lu\n", filename, size);
if (size == sizeof(config))
{
if (FileLoad(filename, &tmpconf, sizeof(tmpconf)))
if (FileLoadConfig(filename, &tmpconf, sizeof(tmpconf)))
{
// check file id and version
if (strncmp(tmpconf.id, config_id, sizeof(config.id)) == 0) {
@@ -288,7 +288,7 @@ unsigned char LoadConfiguration(char *filename)
}
else printf("Cannot load configuration file\n");
}
else printf("Wrong configuration file size: %lu (expected: %lu)\n", file.size, sizeof(config));
else printf("Wrong configuration file size: %lu (expected: %lu)\n", size, sizeof(config));
}
if (!result) {
BootPrint("Can not open configuration file!\n");
@@ -489,5 +489,5 @@ unsigned char SaveConfiguration(char *filename)
// use slot-based filename if none provided
filename = configfilename;
}
return FileSave(filename, &config, sizeof(config));
return FileSaveConfig(filename, &config, sizeof(config));
}

View File

@@ -14,6 +14,7 @@
#include "osd.h"
#include "fpga_io.h"
#include "menu.h"
#include "errno.h"
int nDirEntries = 0;
struct dirent DirItem[1000];
@@ -203,8 +204,7 @@ unsigned long FileWriteSec(fileTYPE *file, void *pBuffer)
return FileWriteAdv(file, pBuffer, 512);
}
unsigned char FileSave(char *name, void *pBuffer, int size)
int FileSave(char *name, void *pBuffer, int size)
{
sprintf(full_path, "%s/%s", getRootDir(), name);
int fd = open(full_path, O_WRONLY | O_CREAT | O_TRUNC | O_SYNC, S_IRWXU | S_IRWXG | S_IRWXO);
@@ -215,14 +215,22 @@ unsigned char FileSave(char *name, void *pBuffer, int size)
}
int ret = write(fd, pBuffer, size);
close(fd);
if (ret < 0)
{
printf("FileSave(write) File:%s, error: %d.\n", full_path, ret);
return 0;
}
close(fd);
return 1;
return ret;
}
int FileSaveConfig(char *name, void *pBuffer, int size)
{
char path[256] = { CONFIG_DIR"/" };
strcat(path, name);
return FileSave(path, pBuffer, size);
}
int FileLoad(char *name, void *pBuffer, int size)
@@ -240,20 +248,35 @@ int FileLoad(char *name, void *pBuffer, int size)
if (ret < 0)
{
printf("FileLoad(fstat) File:%s, error: %d.\n", full_path, ret);
return -1;
}
ret = read(fd, pBuffer, size ? size : st.st_size);
if (ret < 0)
{
printf("FileLoad(write) File:%s, error: %d.\n", full_path, ret);
close(fd);
return 0;
}
if (!pBuffer)
{
close(fd);
return (int)st.st_size;
}
ret = read(fd, pBuffer, size ? size : st.st_size);
close(fd);
if (ret < 0)
{
printf("FileLoad(read) File:%s, error: %d.\n", full_path, ret);
return 0;
}
return ret;
}
int FileLoadConfig(char *name, void *pBuffer, int size)
{
char path[256] = { CONFIG_DIR"/" };
strcat(path, name);
return FileLoad(path, pBuffer, size);
}
int FileCanWrite(char *name)
{
sprintf(full_path, "%s/%s", getRootDir(), name);
@@ -437,6 +460,11 @@ void FindStorage(void)
{
printf("Using SD card as a root device\n");
}
sprintf(full_path, "%s/"CONFIG_DIR, getRootDir());
DIR* dir = opendir(full_path);
if (dir) closedir(dir);
else if (ENOENT == errno) mkdir(full_path, S_IRWXU | S_IRWXG | S_IRWXO);
}
int de_cmp(const void *e1, const void *e2)

View File

@@ -55,11 +55,15 @@ unsigned long FileReadSec(fileTYPE *file, void *pBuffer);
unsigned long FileWriteAdv(fileTYPE *file, void *pBuffer, unsigned long length);
unsigned long FileWriteSec(fileTYPE *file, void *pBuffer);
int FileCanWrite(char *name);
unsigned char FileSave(char *name, void *pBuffer, int size);
int FileLoad(char *name, void *pBuffer, int size);
int FileSave(char *name, void *pBuffer, int size);
int FileLoad(char *name, void *pBuffer, int size); // supply pBuffer = 0 to get the file size without loading
//save/load from config dir
#define CONFIG_DIR "config"
int FileSaveConfig(char *name, void *pBuffer, int size);
int FileLoadConfig(char *name, void *pBuffer, int size); // supply pBuffer = 0 to get the file size without loading
void AdjustDirectory(char *path);
int ScanDirectory(char* path, unsigned long mode, char *extension, unsigned char options);

View File

@@ -461,7 +461,7 @@ void finish_map_setting()
char name[32];
sprintf(name, "input_%04x_%04x.map", input[mapping_dev].vid, input[mapping_dev].pid);
FileSave(name, &input[mapping_dev].map, sizeof(input[mapping_dev].map));
FileSaveConfig(name, &input[mapping_dev].map, sizeof(input[mapping_dev].map));
}
uint16_t get_map_vid()
@@ -640,7 +640,7 @@ static void input_cb(struct input_event *ev, int dev)
{
char name[32];
sprintf(name, "input_%04x_%04x.map", input[dev].vid, input[dev].pid);
if (!FileLoad(name, &input[dev].map, sizeof(input[dev].map)))
if (!FileLoadConfig(name, &input[dev].map, sizeof(input[dev].map)))
{
memset(&input[dev].map, 0, sizeof(input[dev].map));
}

4
menu.c
View File

@@ -1116,7 +1116,7 @@ void HandleUI(void)
char *filename = user_io_create_config_name();
unsigned long status = user_io_8bit_set_status(0, 0);
iprintf("Saving config to %s\n", filename);
FileSave(filename, &status, 4);
FileSaveConfig(filename, &status, 4);
menustate = MENU_8BIT_MAIN1;
menusub = 0;
}
@@ -2390,7 +2390,7 @@ void HandleUI(void)
char *filename = user_io_create_config_name();
unsigned long status = user_io_8bit_set_status(0, 0xffffffff);
iprintf("Saving config to %s\n", filename);
FileSave(filename, &status, 4);
FileSaveConfig(filename, &status, 4);
menustate = MENU_8BIT_MAIN1;
menusub = 0;
}

View File

@@ -36,7 +36,7 @@ const ini_var_t mist_ini_vars[] = {
// mist ini config
const ini_cfg_t mist_ini_cfg = {
"MiSTer.ini",
CONFIG_DIR"/MiSTer.ini",
mist_ini_sections,
mist_ini_vars,
(int)(sizeof(mist_ini_sections) / sizeof(ini_section_t)),

14
tos.c
View File

@@ -1121,8 +1121,6 @@ unsigned long tos_system_ctrl(void)
void tos_config_init(void)
{
fileTYPE file;
// set default values
config.system_ctrl = TOS_MEMCONFIG_4M | TOS_CONTROL_BLITTER;
memcpy(config.tos_img, "TOS.IMG", 12);
@@ -1132,14 +1130,14 @@ void tos_config_init(void)
config.video_adjust[0] = config.video_adjust[1] = 0;
// try to load config
if (FileOpen(&file, CONFIG_FILENAME))
int size = FileLoadConfig(CONFIG_FILENAME, 0, 0);
if (size>0)
{
tos_debugf("Configuration file size: %lu (should be %lu)", file.size, sizeof(tos_config_t));
if (file.size == sizeof(tos_config_t))
tos_debugf("Configuration file size: %lu (should be %lu)", size, sizeof(tos_config_t));
if (size == sizeof(tos_config_t))
{
FileReadAdv(&file, &config, file.size);
FileLoadConfig(CONFIG_FILENAME, &config, size);
}
FileClose(&file);
}
// ethernet is auto detected later
@@ -1149,5 +1147,5 @@ void tos_config_init(void)
// save configuration
void tos_config_save(void)
{
FileSave(CONFIG_FILENAME, &config, sizeof(tos_config_t));
FileSaveConfig(CONFIG_FILENAME, &config, sizeof(tos_config_t));
}

View File

@@ -211,7 +211,7 @@ void user_io_detect_core_type()
{
iprintf("Loading config %s\n", name);
unsigned long status = 0;
if (FileLoad(name, &status, 4))
if (FileLoadConfig(name, &status, 4))
{
iprintf("Found config\n");
user_io_8bit_set_status(status, 0xffffffff);