/*
 * freadln.h
 *
 * Author: Intel A80486DX2-66
 * License: Creative Commons Zero 1.0 Universal
 */

#ifndef _FREADLN_H
#define _FREADLN_H

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

typedef size_t freadln_length_type;

enum freadln_status {
	freadln_OK,
	freadln_ERROR
};

#define freadln_success_epilogue do {                                         \
    (*output)[length] = '\0';                                                 \
    if (length_out != NULL)                                                   \
        *length_out = length;                                                 \
    return freadln_OK;                                                        \
} while (0)

int freadln(FILE* f, char** output, size_t* length_out);
#define finreadln(output, length_out) freadln(stdin, output, length_out)

#endif /* _FREADLN_H */