aboutsummaryrefslogtreecommitdiff
path: root/src/save.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/save.c')
-rw-r--r--src/save.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/save.c b/src/save.c
index 386c666..fdc366a 100644
--- a/src/save.c
+++ b/src/save.c
@@ -63,21 +63,11 @@ size_t ck_write(const char *buf, size_t sz, size_t nmemb, FILE *f)
return nmemb;
}
-void save_handler(struct player_t *player)
+void save_portfolio(struct player_t *player, const char *filename)
{
- if(restricted)
- {
- output("Saving forbidden in restricted mode.\n");
- return;
- }
- output("Enter the file to save your portfolio in: ");
-
- char *filename = read_string();
-
output("Writing data...\n");
- FILE *f = fopen(filename, "wb");
- free(filename);
+ FILE *f = fopen(filename, "wb");
cksum = 0;
@@ -120,5 +110,24 @@ void save_handler(struct player_t *player)
fclose(f);
+ if(player->filename && player->filename != filename)
+ free(player->filename);
+
+ player->filename = (char*)filename;
+
output("Done saving.\n");
}
+
+void save_handler(struct player_t *player)
+{
+ if(restricted)
+ {
+ output("Saving forbidden in restricted mode.\n");
+ return;
+ }
+ output("Enter the file to save your portfolio in: ");
+
+ char *filename = read_string();
+
+ save_portfolio(player, filename);
+}