/*
 * 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 = -2,
	freadln_ERROR
};

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

ssize_t freadln(char** output, size_t* length_out);

#endif /* _FREADLN_H */