43 getdelim (
char **lineptr,
size_t *n,
int delimiter, FILE *stream)
45 int initial_buffer_size = 1024;
51 if (lineptr == NULL || stream == NULL || n == NULL) {
61 if (*lineptr == NULL) {
62 *lineptr = (
char *) malloc (initial_buffer_size);
63 if (*lineptr == NULL) {
66 *n = initial_buffer_size;
72 new_size = *n + (*n >> 2);
73 if (new_size < initial_buffer_size) {
74 new_size = initial_buffer_size;
76 new_ptr = (
char *) realloc (*lineptr, new_size);
77 if (new_ptr == NULL) {
84 ((
unsigned char *) (*lineptr))[pos++] = c;
92 (*lineptr)[pos] =
'\0';
106 getline (
char **lineptr,
size_t *n, FILE *stream)
108 return getdelim (lineptr, n,
'\n', stream);
116 strsep (
char **stringp,
const char *delim)
119 char *original = *stringp;
121 if (*stringp == NULL) {
128 if (*current ==
'\0') {
134 if (*current == *delim) {
136 *stringp = current + 1;