Files
qse/qse/include/qse/cmn/stdio.h
hyung-hwan eb28009952 improved error number handling.
handled a broken pipe condition from an anonymous pipe in awk
2012-12-27 14:40:58 +00:00

104 lines
2.7 KiB
C

/*
* $Id$
*
Copyright 2006-2012 Chung, Hyung-Hwan.
This file is part of QSE.
QSE is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
QSE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with QSE. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _QSE_CMN_STDIO_H_
#define _QSE_CMN_STDIO_H_
/** @file
* This file defines stdio wrapper functions for #qse_char_t.
*/
#include <qse/types.h>
#include <qse/macros.h>
#include <stdarg.h>
typedef struct QSE_FILE QSE_FILE;
#define QSE_STDIN ((QSE_FILE*)1)
#define QSE_STDOUT ((QSE_FILE*)2)
#define QSE_STDERR ((QSE_FILE*)3)
typedef int (*qse_getdelim_t) (const qse_char_t* ptr,qse_size_t len,void* arg);
#ifdef __cplusplus
extern "C" {
#endif
QSE_EXPORT int qse_vsprintf (
qse_char_t* buf,
qse_size_t size,
const qse_char_t* fmt,
va_list ap
);
QSE_EXPORT int qse_sprintf (
qse_char_t* buf,
qse_size_t size,
const qse_char_t* fmt,
...
);
QSE_EXPORT int qse_vfprintf (
QSE_FILE *stream, const qse_char_t* fmt, va_list ap);
QSE_EXPORT int qse_vprintf (
const qse_char_t* fmt, va_list ap);
QSE_EXPORT int qse_fprintf (
QSE_FILE* file, const qse_char_t* fmt, ...);
QSE_EXPORT int qse_printf (
const qse_char_t* fmt, ...);
QSE_EXPORT int qse_dprintf (
const qse_char_t* fmt, ...);
QSE_EXPORT QSE_FILE* qse_fopen (
const qse_char_t* path, const qse_char_t* mode);
QSE_EXPORT void qse_fclose (QSE_FILE* stream);
QSE_EXPORT int qse_fflush (QSE_FILE* stream);
QSE_EXPORT void qse_clearerr (QSE_FILE* stream);
QSE_EXPORT int qse_feof (QSE_FILE* stream);
QSE_EXPORT int qse_ferror (QSE_FILE* stream);
/**
* The qse_getline() function read a line from a file pointer @a fp
* until a new line character is met.
*
* @return -2 on error, -1 on eof, length of data read on success
*/
QSE_EXPORT qse_ssize_t qse_getline (
qse_char_t **buf, qse_size_t *n, QSE_FILE *stream);
/**
* The qse_getdelim() function reads characters from a file pointer @a fp
* until a certain condition is met as defined by @a fn and @a fnarg.
*
* @return -3 on line breaker error, -2 on error, -1 on eof,
* length of data read on success
*/
QSE_EXPORT qse_ssize_t qse_getdelim (
qse_char_t **buf, qse_size_t *n,
qse_getdelim_t fn, void* fnarg, QSE_FILE* stream);
#ifdef __cplusplus
}
#endif
#endif