From: Bruno Haible Date: Tue, 7 Nov 2006 14:46:36 +0000 (+0000) Subject: New module 'file-ostream': Output stream referring to an stdio FILE. X-Git-Tag: v0.17~668 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b04048ef27e639cb14160f281e6142f97b527f4e;p=thirdparty%2Fgettext.git New module 'file-ostream': Output stream referring to an stdio FILE. --- diff --git a/gnulib-local/lib/file-ostream.oo.c b/gnulib-local/lib/file-ostream.oo.c new file mode 100644 index 000000000..6b2508930 --- /dev/null +++ b/gnulib-local/lib/file-ostream.oo.c @@ -0,0 +1,67 @@ +/* Output stream referring to an stdio FILE. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include + +/* Specification. */ +#include "file-ostream.h" + +#include + +#include "xalloc.h" + +struct file_ostream : struct ostream +{ +fields: + FILE *fp; +}; + +/* Implementation of ostream_t methods. */ + +static void +file_ostream::write_mem (file_ostream_t stream, const void *data, size_t len) +{ + if (len > 0) + fwrite (data, 1, len, stream->fp); +} + +static void +file_ostream::flush (file_ostream_t stream) +{ + /* This ostream has no internal buffer. No need to fflush (stream->fp), + since it's external to this ostream. */ +} + +static void +file_ostream::free (file_ostream_t stream) +{ + free (stream); +} + +/* Constructor. */ + +file_ostream_t +file_ostream_create (FILE *fp) +{ + file_ostream_t stream = XMALLOC (struct file_ostream_representation); + + stream->base.vtable = &file_ostream_vtable; + stream->fp = fp; + + return stream; +} diff --git a/gnulib-local/lib/file-ostream.oo.h b/gnulib-local/lib/file-ostream.oo.h new file mode 100644 index 000000000..9cfa60110 --- /dev/null +++ b/gnulib-local/lib/file-ostream.oo.h @@ -0,0 +1,47 @@ +/* Output stream referring to an stdio FILE. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _FILE_OSTREAM_H +#define _FILE_OSTREAM_H + +#include + +#include "ostream.h" + + +struct file_ostream : struct ostream +{ +methods: +}; + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream referring to FP. + Note that the resulting stream must be closed before FP can be closed. */ +extern file_ostream_t file_ostream_create (FILE *fp); + + +#ifdef __cplusplus +} +#endif + +#endif /* _FILE_OSTREAM_H */ diff --git a/gnulib-local/modules/file-ostream b/gnulib-local/modules/file-ostream new file mode 100644 index 000000000..e943b61a8 --- /dev/null +++ b/gnulib-local/modules/file-ostream @@ -0,0 +1,29 @@ +Description: +Output stream referring to an stdio FILE. + +Files: +lib/file-ostream.oo.h +lib/file-ostream.oo.c + +Depends-on: +ostream +xalloc + +configure.ac: + +Makefile.am: +lib_SOURCES += file-ostream.c +file-ostream.h file-ostream.c : $(top_srcdir)/build-aux/moopp file-ostream.oo.h file-ostream.oo.c ostream.oo.h + $(top_srcdir)/build-aux/moopp $(srcdir)/file-ostream.oo.c $(srcdir)/file-ostream.oo.h $(srcdir)/ostream.oo.h +BUILT_SOURCES += file-ostream.h file-ostream.c file_ostream.priv.h file_ostream.vt.h +CLEANFILES += file-ostream.h file-ostream.c file_ostream.priv.h file_ostream.vt.h + +Include: +"file-ostream.h" + +License: +GPL + +Maintainer: +Bruno Haible +