comparison libaudacious/vfs_common.c @ 1669:07143b97314d trunk

[svn] fprintf implementation in the VFS common layer by Luca Barbato. Use it in the Container plugins.
author chainsaw
date Mon, 11 Sep 2006 15:24:52 -0700
parents 3de4bd38fe4f
children e9c24e35bd76
comparison
equal deleted inserted replaced
1668:778f078cda5a 1669:07143b97314d
12 * along with this program; if not, write to the Free Software Foundation, 12 * along with this program; if not, write to the Free Software Foundation,
13 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 13 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
14 */ 14 */
15 15
16 #include "vfs.h" 16 #include "vfs.h"
17 #include <string.h>
18 #include <stdlib.h>
19 #include <glib/gprintf.h>
17 20
18 /* FIXME low performance vfs_getc */ 21 /* FIXME low performance vfs_getc */
19 gint vfs_getc(VFSFile *stream) 22 gint vfs_getc(VFSFile *stream)
20 { 23 {
21 guchar uc; 24 guchar uc;
22 if (vfs_fread(&uc, 1, 1, stream)) 25 if (vfs_fread(&uc, 1, 1, stream))
23 return uc; 26 return uc;
24 return EOF; 27 return EOF;
25 } 28 }
26 29
30
31 gint vfs_fputc(gint c, VFSFile *stream)
32 {
33 guchar uc = (guchar) c;
34
35 if (! vfs_fwrite(&uc, 1, 1, stream)) {
36 return EOF;
37 }
38
39 return uc;
40 }
27 41
28 gchar *vfs_fgets(gchar *s, gint n, VFSFile *stream) 42 gchar *vfs_fgets(gchar *s, gint n, VFSFile *stream)
29 { 43 {
30 gint c; 44 gint c;
31 register gchar *p; 45 register gchar *p;
47 return s; 61 return s;
48 } 62 }
49 63
50 return NULL; 64 return NULL;
51 } 65 }
66
67 int vfs_fputs(const gchar *s, VFSFile *stream)
68 {
69 size_t n = strlen(s);
70
71 return ((vfs_fwrite(s, 1, n, stream) == n) ? n : EOF);
72 }
73
74 int vfs_vfprintf(VFSFile *stream, gchar const *format, va_list args)
75 {
76 gchar *string;
77 gint rv = g_vasprintf(&string, format, args);
78 if (rv<0) return rv;
79 rv = vfs_fputs(string, stream);
80 free (string);
81 return rv;
82 }
83
84 int vfs_fprintf(VFSFile *stream, gchar const *format, ...)
85 {
86 va_list arg;
87 gint rv;
88
89 va_start(arg, format);
90 rv = vfs_vfprintf(stream, format, arg);
91 va_end(arg);
92
93 return rv;
94 }