/*
 * Copyright (c) 2009 Petri Lehtinen <petri@digip.org>
 *
 * Jansson is free software; you can redistribute it and/or modify
 * it under the terms of the MIT license. See LICENSE for details.
 */

#include <stdio.h>
#include <stdlib.h>
#include <jansson.h>

#define BUFFER_SIZE (256 * 1024)

int main(int argc, char *argv[])
{
    json_t *json;
    json_error_t error;
    int count;
    char buffer[BUFFER_SIZE];
    char *result;

    if(argc != 1) {
        fprintf(stderr, "usage: %s\n", argv[0]);
        return 2;
    }

    count = fread(buffer, 1, BUFFER_SIZE, stdin);
    if(count < 0 || count >= BUFFER_SIZE) {
        fprintf(stderr, "unable to read input\n");
        return 1;
    }
    buffer[count] = '\0';

    json = json_loads(buffer, &error);
    if(!json) {
        fprintf(stderr, "%d\n%s\n", error.line, error.text);
        return 1;
    }

    result = json_dumps(json, 0);
    json_decref(json);

    puts(result);
    free(result);

    return 0;
}
