SameBoy Windows getline() compilation fix.

This commit is contained in:
byuu 2019-07-25 22:41:16 +09:00
parent 73f0b7bb41
commit ea75d1bc7c
3 changed files with 58 additions and 1 deletions
bsnes/gb

View File

@ -2,6 +2,9 @@
#include <string.h>
#include <stdlib.h>
#include "gb.h"
#ifdef _WIN32
#include "../Windows/getline.h"
#endif
typedef struct {
bool has_bank;

View File

@ -12,7 +12,9 @@
#endif
#include "random.h"
#include "gb.h"
#ifdef _WIN32
#include "../Windows/getline.h"
#endif
#ifdef DISABLE_REWIND
#define GB_rewind_free(...)

View File

@ -0,0 +1,52 @@
/* This code is public domain -- Will Hartung 4/9/09 */
static inline size_t getline(char **lineptr, size_t *n, FILE *stream) {
char *bufptr = NULL;
char *p = bufptr;
size_t size;
int c;
if (lineptr == NULL) {
return -1;
}
if (stream == NULL) {
return -1;
}
if (n == NULL) {
return -1;
}
bufptr = *lineptr;
size = *n;
c = fgetc(stream);
if (c == EOF) {
return -1;
}
if (bufptr == NULL) {
bufptr = malloc(128);
if (bufptr == NULL) {
return -1;
}
size = 128;
}
p = bufptr;
while (c != EOF) {
if ((p - bufptr) > (size - 1)) {
size = size + 128;
bufptr = realloc(bufptr, size);
if (bufptr == NULL) {
return -1;
}
}
*p++ = c;
if (c == '\n') {
break;
}
c = fgetc(stream);
}
*p++ = '\0';
*lineptr = bufptr;
*n = size;
return p - bufptr - 1;
}