use fgets() rather than getline()

This commit is contained in:
Robert Poor 2014-12-29 06:22:19 -08:00
parent 48e0488f07
commit 220dcb7be3

View File

@ -59,16 +59,16 @@ void print_json_aux(json_t *element, int indent) {
print_json_integer(element, indent);
break;
case JSON_REAL:
print_json_real(element, indent);;
print_json_real(element, indent);
break;
case JSON_TRUE:
print_json_true(element, indent);;
print_json_true(element, indent);
break;
case JSON_FALSE:
print_json_false(element, indent);;
print_json_false(element, indent);
break;
case JSON_NULL:
print_json_null(element, indent);;
print_json_null(element, indent);
break;
default:
fprintf(stderr, "unrecognized JSON type %d\n", json_typeof(element));
@ -158,35 +158,29 @@ json_t *load_json(const char *text) {
/*
* Print a prompt and return (by reference) a null-terminated line of
* text. Returns the number of characters read, including the line
* termination char but excluding the null.
* text. Returns NULL on eof or some error.
*/
int read_line(char **line) {
size_t len = 0; /* ignored */
if (*line != NULL) {
free(*line);
*line = NULL;
}
char *read_line(char *line, int max_chars) {
printf("Type some JSON > ");
fflush(stdout);
return getline(line, &len, stdin);
return fgets(line, max_chars, stdin);
}
/* ================================================================
* main
*/
#define MAX_CHARS 4096
int main(int argc, char *argv[]) {
char *line = NULL;
char line[MAX_CHARS];
if (argc != 1) {
fprintf(stderr, "Usage: %s\n", argv[0]);
exit(-1);
}
while (read_line(&line) > 1) {
while (read_line(line, MAX_CHARS) != (char *)NULL) {
/* parse text into JSON structure */
json_t *root = load_json(line);