Use linenoise to get the save file name.

This commit is contained in:
Jason S. Ninneman 2017-06-08 00:09:11 -07:00
parent 955032bd24
commit 7e1ef875fc

7
misc.c
View file

@ -6,6 +6,7 @@
#include "advent.h" #include "advent.h"
#include "funcs.h" #include "funcs.h"
#include "database.h" #include "database.h"
#include "linenoise/linenoise.h"
/* hack to ignore GCC Unused Result */ /* hack to ignore GCC Unused Result */
#define IGNORE(r) do{if (r){}}while(0) #define IGNORE(r) do{if (r){}}while(0)
@ -820,7 +821,7 @@ void fSAVEIO(long op, long in, long arr[])
* SAVEIO(0,false,X) will still work.) */ * SAVEIO(0,false,X) will still work.) */
{ {
static FILE *fp = NULL; static FILE *fp = NULL;
char name[50]; char* name;
switch (op < 0 ? -1 : (op > 0 ? 1 : 0)) switch (op < 0 ? -1 : (op > 0 ? 1 : 0))
{ {
@ -829,12 +830,12 @@ void fSAVEIO(long op, long in, long arr[])
break; break;
case 0: case 0:
while (fp == NULL) { while (fp == NULL) {
printf("\nFile name: "); name = linenoise("File name: ");
IGNORE(fgets(name, sizeof(name), stdin));
fp = fopen(name,(in ? READ_MODE : WRITE_MODE)); fp = fopen(name,(in ? READ_MODE : WRITE_MODE));
if (fp == NULL) if (fp == NULL)
printf("Can't open file %s, try again.\n", name); printf("Can't open file %s, try again.\n", name);
} }
linenoiseFree(name);
break; break;
case 1: case 1:
if (in) if (in)