Mercurial > audlegacy
diff src/audacious/vfs_common.c @ 2313:3149d4b1a9a9 trunk
[svn] - objective-make autodepend fixes
- move all sourcecode into src/ and adjust Makefiles accordingly
author | nenolod |
---|---|
date | Fri, 12 Jan 2007 11:43:40 -0800 |
parents | |
children | 3e3d34173207 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/audacious/vfs_common.c Fri Jan 12 11:43:40 2007 -0800 @@ -0,0 +1,132 @@ +/* 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 of the License, 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 "vfs.h" +#include <string.h> +#include <stdlib.h> +#include <glib/gprintf.h> + +/** + * vfs_fputc: + * @c: A character to write to the stream. + * @stream: A #VFSFile object representing the stream. + * + * Writes a character to a stream. + * + * Return value: The character on success, or EOF. + **/ +gint vfs_fputc(gint c, VFSFile *stream) +{ + guchar uc = (guchar) c; + + if (! vfs_fwrite(&uc, 1, 1, stream)) { + return EOF; + } + + return uc; +} + +/** + * vfs_fgets: + * @s: A buffer to put the string in. + * @n: The amount of characters to read. + * @stream: A #VFSFile object representing the stream. + * + * Reads a set of characters from a stream. + * + * Return value: The string on success, or NULL. + **/ +gchar *vfs_fgets(gchar *s, gint n, VFSFile *stream) +{ + gint c; + register gchar *p; + + if(n<=0) return NULL; + + p = s; + + while (--n) { + if ((c = vfs_getc(stream))== EOF) { + break; + } + if ((*p++ = c) == '\n') { + break; + } + } + if (p > s) { + *p = 0; + return s; + } + + return NULL; +} + +/** + * vfs_fputc: + * @s: A string to write to the stream. + * @stream: A #VFSFile object representing the stream. + * + * Writes a string to a VFS stream. + * + * Return value: The amount of bytes written. + **/ +int vfs_fputs(const gchar *s, VFSFile *stream) +{ + size_t n = strlen(s); + + return ((vfs_fwrite(s, 1, n, stream) == n) ? n : EOF); +} + +/** + * vfs_vfprintf: + * @stream: A #VFSFile object representing the stream. + * @format: A printf-style format string. + * @args: A va_list of args to use. + * + * Writes a formatted string to a VFS stream via a va_list of args. + * + * Return value: The amount of bytes written. + **/ +int vfs_vfprintf(VFSFile *stream, gchar const *format, va_list args) +{ + gchar *string; + gint rv = g_vasprintf(&string, format, args); + if (rv<0) return rv; + rv = vfs_fputs(string, stream); + free (string); + return rv; +} + +/** + * vfs_fprintf: + * @stream: A #VFSFile object representing the stream. + * @format: A printf-style format string. + * @...: A list of args to use. + * + * Writes a formatted string to a VFS stream. + * + * Return value: The amount of bytes written. + **/ +int vfs_fprintf(VFSFile *stream, gchar const *format, ...) +{ + va_list arg; + gint rv; + + va_start(arg, format); + rv = vfs_vfprintf(stream, format, arg); + va_end(arg); + + return rv; +}