comparison src/gio/gio.c @ 3098:cdf79f7b0d9e

gio: fread()/fwrite(): return size / nmemb, not total bytes read/written.
author William Pitcock <nenolod@atheme.org>
date Thu, 30 Apr 2009 09:06:55 -0500
parents 1e39f795348c
children bc642b05827b
comparison
equal deleted inserted replaced
3097:1e48d5a52760 3098:cdf79f7b0d9e
108 VFSFile * file) 108 VFSFile * file)
109 { 109 {
110 VFSGIOHandle *handle; 110 VFSGIOHandle *handle;
111 goffset count = 0; 111 goffset count = 0;
112 gsize realsize = (size * nmemb); 112 gsize realsize = (size * nmemb);
113 gsize ret;
113 114
114 g_return_val_if_fail(file != NULL, EOF); 115 g_return_val_if_fail(file != NULL, EOF);
115 g_return_val_if_fail(file->handle != NULL, EOF); 116 g_return_val_if_fail(file->handle != NULL, EOF);
116 117
117 handle = (VFSGIOHandle *) file->handle; 118 handle = (VFSGIOHandle *) file->handle;
127 memcpy(ptr + count, &uc, 1); 128 memcpy(ptr + count, &uc, 1);
128 count++; 129 count++;
129 } 130 }
130 } 131 }
131 132
132 return (g_input_stream_read(G_INPUT_STREAM(handle->istream), (ptr + count), (realsize - count), NULL, NULL) + count); 133 ret = (g_input_stream_read(G_INPUT_STREAM(handle->istream), (ptr + count), (realsize - count), NULL, NULL) + count);
134 return (ret / size);
133 } 135 }
134 136
135 size_t 137 size_t
136 gio_aud_vfs_fwrite_impl(gconstpointer ptr, 138 gio_aud_vfs_fwrite_impl(gconstpointer ptr,
137 size_t size, 139 size_t size,
138 size_t nmemb, 140 size_t nmemb,
139 VFSFile * file) 141 VFSFile * file)
140 { 142 {
141 VFSGIOHandle *handle; 143 VFSGIOHandle *handle;
144 gsize ret;
142 145
143 g_return_val_if_fail(file != NULL, EOF); 146 g_return_val_if_fail(file != NULL, EOF);
144 g_return_val_if_fail(file->handle != NULL, EOF); 147 g_return_val_if_fail(file->handle != NULL, EOF);
145 148
146 handle = (VFSGIOHandle *) file->handle; 149 handle = (VFSGIOHandle *) file->handle;
147 150
148 return g_output_stream_write(G_OUTPUT_STREAM(handle->ostream), ptr, size * nmemb, NULL, NULL); 151 ret = g_output_stream_write(G_OUTPUT_STREAM(handle->ostream), ptr, size * nmemb, NULL, NULL);
152 return (ret / size);
149 } 153 }
150 154
151 gint 155 gint
152 gio_aud_vfs_getc_impl(VFSFile *file) 156 gio_aud_vfs_getc_impl(VFSFile *file)
153 { 157 {