cepheid

An Aurora 4X clone
Log | Files | Refs | README

commit c1be82fa586bbd0eccbb0228947e4758d72e751e
parent 48cd1a87e21fb42be14bcb521725c6776432096f
Author: hhvn <dev@hhvn.uk>
Date:   Sun, 27 Nov 2022 23:52:58 +0000

Don't leave anything on disk when creating a new save

Diffstat:
Msrc/save.c | 20+++++++++-----------
Msrc/views/smenu.c | 5+++--
2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/save.c b/src/save.c @@ -41,6 +41,8 @@ save_read(char *name) { if ((str = dbget(save->db.dir, "index", "homesystem"))) save->homesys = sys_get(str); + else + save->homesys = NULL; for (i = 0; i < VIEW_LAST; i++) if (view_init[i]) @@ -84,24 +86,20 @@ save_exists(char *name) { int save_create(char *name) { char path[PATH_MAX]; - FILE *f; - - snprintf(path, sizeof(path), "%s/%s", SAVEDIR, name); - if (mkdir(path, 0755) == -1) - return -1; snprintf(path, sizeof(path), "%s/%s/Systems", SAVEDIR, name); - if (mkdir(path, 0755) == -1) + if (mkdirp(path) == -1) return -1; snprintf(path, sizeof(path), "%s/%s/Systems/Sol", SAVEDIR, name); if (dirs_write("sol", path) == -1) return -1; - snprintf(path, sizeof(path), "%s/%s/index", SAVEDIR, name); - if (!(f = fopen(path, "w"))) - return -1; - fprintf(f, "selsystem\tSol\n"); - fclose(f); + /* Ideally this data should be set, so that it is in memory, not on + * disk, but for now, write->read->delete->maybe save */ + save_read(name); + save_delete(name); + dbset(save->db.dir, "index", "homesystem", "Sol"); + return 0; } diff --git a/src/views/smenu.c b/src/views/smenu.c @@ -149,8 +149,9 @@ newhandler(void) { static int newhandler_actual(int type, void *elem) { - save_create(v->new.name.str); - save_read(v->new.name.str); + if (save_create(v->new.name.str) == -1) + error(1, "failed to create new save\n"); + /* TODO: error handling that doesn't just cause an exit? */ loadadd(v->new.name.str, time(NULL)); view_tabs.sel = VIEW_MAIN; v->new.disp = 0;