1 #ifndef GETLINE_WIN32_H_ 2 #define GETLINE_WIN32_H_ 6 #define SSIZE_MAX _I64_MAX 8 #define SSIZE_MAX LONG_MAX 22 int getline(
char** lineptr,
size_t* n, FILE* stream) {
27 char* prev = *lineptr + nread;
28 if (fgets(prev, (
int)(*n) - nread, stream) != prev)
30 nread = (int)strlen(*lineptr);
33 if ((nread < (*n - 1)) || ((*lineptr)[nread - 1] ==
'\n'))
42 if ((*n >> (
sizeof(
size_t) * 8 - 1)) == 1)
48 char* new_lineptr = (
char*)realloc(*lineptr, new_n);
49 if (new_lineptr == NULL)
54 *lineptr = new_lineptr;