1
<refentry id="camel-camel-file-utils">
3
<refentrytitle role="top_of_page" id="camel-camel-file-utils.top_of_page">camel-file-utils</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>CAMEL Library</refmiscinfo>
9
<refname>camel-file-utils</refname>
10
<refpurpose></refpurpose>
13
<refsynopsisdiv id="camel-camel-file-utils.synopsis" role="synopsis">
14
<title role="synopsis.title">Synopsis</title>
17
#define <link linkend="O-BINARY--CAPS">O_BINARY</link>
18
<link linkend="gint">gint</link> <link linkend="camel-file-util-encode-fixed-int32">camel_file_util_encode_fixed_int32</link> (<link linkend="FILE--CAPS">FILE</link> *out,
19
<link linkend="gint32">gint32</link> value);
20
<link linkend="gint">gint</link> <link linkend="camel-file-util-decode-fixed-int32">camel_file_util_decode_fixed_int32</link> (<link linkend="FILE--CAPS">FILE</link> *in,
21
<link linkend="gint32">gint32</link> *dest);
22
<link linkend="gint">gint</link> <link linkend="camel-file-util-encode-uint32">camel_file_util_encode_uint32</link> (<link linkend="FILE--CAPS">FILE</link> *out,
23
<link linkend="guint32">guint32</link> value);
24
<link linkend="gint">gint</link> <link linkend="camel-file-util-decode-uint32">camel_file_util_decode_uint32</link> (<link linkend="FILE--CAPS">FILE</link> *in,
25
<link linkend="guint32">guint32</link> *dest);
26
<link linkend="gint">gint</link> <link linkend="camel-file-util-encode-time-t">camel_file_util_encode_time_t</link> (<link linkend="FILE--CAPS">FILE</link> *out,
27
<link linkend="time-t">time_t</link> value);
28
<link linkend="gint">gint</link> <link linkend="camel-file-util-decode-time-t">camel_file_util_decode_time_t</link> (<link linkend="FILE--CAPS">FILE</link> *in,
29
<link linkend="time-t">time_t</link> *dest);
30
<link linkend="gint">gint</link> <link linkend="camel-file-util-encode-off-t">camel_file_util_encode_off_t</link> (<link linkend="FILE--CAPS">FILE</link> *out,
31
<link linkend="off-t">off_t</link> value);
32
<link linkend="gint">gint</link> <link linkend="camel-file-util-decode-off-t">camel_file_util_decode_off_t</link> (<link linkend="FILE--CAPS">FILE</link> *in,
33
<link linkend="off-t">off_t</link> *dest);
34
<link linkend="gint">gint</link> <link linkend="camel-file-util-encode-gsize">camel_file_util_encode_gsize</link> (<link linkend="FILE--CAPS">FILE</link> *out,
35
<link linkend="gsize">gsize</link> value);
36
<link linkend="gint">gint</link> <link linkend="camel-file-util-decode-gsize">camel_file_util_decode_gsize</link> (<link linkend="FILE--CAPS">FILE</link> *in,
37
<link linkend="gsize">gsize</link> *dest);
38
<link linkend="gint">gint</link> <link linkend="camel-file-util-encode-string">camel_file_util_encode_string</link> (<link linkend="FILE--CAPS">FILE</link> *out,
39
const <link linkend="gchar">gchar</link> *str);
40
<link linkend="gint">gint</link> <link linkend="camel-file-util-decode-string">camel_file_util_decode_string</link> (<link linkend="FILE--CAPS">FILE</link> *in,
41
<link linkend="gchar">gchar</link> **str);
42
<link linkend="gint">gint</link> <link linkend="camel-file-util-encode-fixed-string">camel_file_util_encode_fixed_string</link> (<link linkend="FILE--CAPS">FILE</link> *out,
43
const <link linkend="gchar">gchar</link> *str,
44
<link linkend="gsize">gsize</link> len);
45
<link linkend="gint">gint</link> <link linkend="camel-file-util-decode-fixed-string">camel_file_util_decode_fixed_string</link> (<link linkend="FILE--CAPS">FILE</link> *in,
46
<link linkend="gchar">gchar</link> **str,
47
<link linkend="gsize">gsize</link> len);
48
<link linkend="gchar">gchar</link> * <link linkend="camel-file-util-safe-filename">camel_file_util_safe_filename</link> (const <link linkend="gchar">gchar</link> *name);
49
<link linkend="gssize">gssize</link> <link linkend="camel-read">camel_read</link> (<link linkend="gint">gint</link> fd,
50
<link linkend="gchar">gchar</link> *buf,
51
<link linkend="gsize">gsize</link> n);
52
<link linkend="gssize">gssize</link> <link linkend="camel-write">camel_write</link> (<link linkend="gint">gint</link> fd,
53
const <link linkend="gchar">gchar</link> *buf,
54
<link linkend="gsize">gsize</link> n);
55
<link linkend="gssize">gssize</link> <link linkend="camel-read-socket">camel_read_socket</link> (<link linkend="gint">gint</link> fd,
56
<link linkend="gchar">gchar</link> *buf,
57
<link linkend="gsize">gsize</link> n);
58
<link linkend="gssize">gssize</link> <link linkend="camel-write-socket">camel_write_socket</link> (<link linkend="gint">gint</link> fd,
59
const <link linkend="gchar">gchar</link> *buf,
60
<link linkend="gsize">gsize</link> n);
61
<link linkend="gchar">gchar</link> * <link linkend="camel-file-util-savename">camel_file_util_savename</link> (const <link linkend="gchar">gchar</link> *filename);
73
<refsect1 id="camel-camel-file-utils.description" role="desc">
74
<title role="desc.title">Description</title>
79
<refsect1 id="camel-camel-file-utils.details" role="details">
80
<title role="details.title">Details</title>
81
<refsect2 id="O-BINARY--CAPS" role="macro">
82
<title>O_BINARY</title>
83
<indexterm zone="O-BINARY--CAPS"><primary sortas="O_BINARY">O_BINARY</primary></indexterm><programlisting>#define O_BINARY 0
87
<refsect2 id="camel-file-util-encode-fixed-int32" role="function">
88
<title>camel_file_util_encode_fixed_int32 ()</title>
89
<indexterm zone="camel-file-util-encode-fixed-int32"><primary sortas="camel_file_util_encode_fixed_int32">camel_file_util_encode_fixed_int32</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_encode_fixed_int32 (<link linkend="FILE--CAPS">FILE</link> *out,
90
<link linkend="gint32">gint32</link> value);</programlisting>
92
Encode a gint32, performing no compression, but converting
93
to network order.</para>
95
</para><variablelist role="params">
96
<varlistentry><term><parameter>out</parameter> :</term>
97
<listitem><simpara> file to output to
98
</simpara></listitem></varlistentry>
99
<varlistentry><term><parameter>value</parameter> :</term>
100
<listitem><simpara> value to output
101
</simpara></listitem></varlistentry>
102
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
103
</simpara></listitem></varlistentry>
104
</variablelist></refsect2>
105
<refsect2 id="camel-file-util-decode-fixed-int32" role="function">
106
<title>camel_file_util_decode_fixed_int32 ()</title>
107
<indexterm zone="camel-file-util-decode-fixed-int32"><primary sortas="camel_file_util_decode_fixed_int32">camel_file_util_decode_fixed_int32</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_decode_fixed_int32 (<link linkend="FILE--CAPS">FILE</link> *in,
108
<link linkend="gint32">gint32</link> *dest);</programlisting>
110
Retrieve a gint32.</para>
112
</para><variablelist role="params">
113
<varlistentry><term><parameter>in</parameter> :</term>
114
<listitem><simpara> file to read from
115
</simpara></listitem></varlistentry>
116
<varlistentry><term><parameter>dest</parameter> :</term>
117
<listitem><simpara> pointer to a variable to store the value in
118
</simpara></listitem></varlistentry>
119
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
120
</simpara></listitem></varlistentry>
121
</variablelist></refsect2>
122
<refsect2 id="camel-file-util-encode-uint32" role="function">
123
<title>camel_file_util_encode_uint32 ()</title>
124
<indexterm zone="camel-file-util-encode-uint32"><primary sortas="camel_file_util_encode_uint32">camel_file_util_encode_uint32</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_encode_uint32 (<link linkend="FILE--CAPS">FILE</link> *out,
125
<link linkend="guint32">guint32</link> value);</programlisting>
127
Utility function to save an uint32 to a file.</para>
129
</para><variablelist role="params">
130
<varlistentry><term><parameter>out</parameter> :</term>
131
<listitem><simpara> file to output to
132
</simpara></listitem></varlistentry>
133
<varlistentry><term><parameter>value</parameter> :</term>
134
<listitem><simpara> value to output
135
</simpara></listitem></varlistentry>
136
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
137
</simpara></listitem></varlistentry>
138
</variablelist></refsect2>
139
<refsect2 id="camel-file-util-decode-uint32" role="function">
140
<title>camel_file_util_decode_uint32 ()</title>
141
<indexterm zone="camel-file-util-decode-uint32"><primary sortas="camel_file_util_decode_uint32">camel_file_util_decode_uint32</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_decode_uint32 (<link linkend="FILE--CAPS">FILE</link> *in,
142
<link linkend="guint32">guint32</link> *dest);</programlisting>
144
Retrieve an encoded uint32 from a file.</para>
146
</para><variablelist role="params">
147
<varlistentry><term><parameter>in</parameter> :</term>
148
<listitem><simpara> file to read from
149
</simpara></listitem></varlistentry>
150
<varlistentry><term><parameter>dest</parameter> :</term>
151
<listitem><simpara> pointer to a variable to store the value in
152
</simpara></listitem></varlistentry>
153
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error. @*dest will contain the
155
</simpara></listitem></varlistentry>
156
</variablelist></refsect2>
157
<refsect2 id="camel-file-util-encode-time-t" role="function">
158
<title>camel_file_util_encode_time_t ()</title>
159
<indexterm zone="camel-file-util-encode-time-t"><primary sortas="camel_file_util_encode_time_t">camel_file_util_encode_time_t</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_encode_time_t (<link linkend="FILE--CAPS">FILE</link> *out,
160
<link linkend="time-t">time_t</link> value);</programlisting>
162
Encode a time_t value to the file.</para>
164
</para><variablelist role="params">
165
<varlistentry><term><parameter>out</parameter> :</term>
166
<listitem><simpara> file to output to
167
</simpara></listitem></varlistentry>
168
<varlistentry><term><parameter>value</parameter> :</term>
169
<listitem><simpara> value to output
170
</simpara></listitem></varlistentry>
171
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
172
</simpara></listitem></varlistentry>
173
</variablelist></refsect2>
174
<refsect2 id="camel-file-util-decode-time-t" role="function">
175
<title>camel_file_util_decode_time_t ()</title>
176
<indexterm zone="camel-file-util-decode-time-t"><primary sortas="camel_file_util_decode_time_t">camel_file_util_decode_time_t</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_decode_time_t (<link linkend="FILE--CAPS">FILE</link> *in,
177
<link linkend="time-t">time_t</link> *dest);</programlisting>
179
Decode a time_t value.</para>
181
</para><variablelist role="params">
182
<varlistentry><term><parameter>in</parameter> :</term>
183
<listitem><simpara> file to read from
184
</simpara></listitem></varlistentry>
185
<varlistentry><term><parameter>dest</parameter> :</term>
186
<listitem><simpara> pointer to a variable to store the value in
187
</simpara></listitem></varlistentry>
188
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
189
</simpara></listitem></varlistentry>
190
</variablelist></refsect2>
191
<refsect2 id="camel-file-util-encode-off-t" role="function">
192
<title>camel_file_util_encode_off_t ()</title>
193
<indexterm zone="camel-file-util-encode-off-t"><primary sortas="camel_file_util_encode_off_t">camel_file_util_encode_off_t</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_encode_off_t (<link linkend="FILE--CAPS">FILE</link> *out,
194
<link linkend="off-t">off_t</link> value);</programlisting>
196
Encode an off_t type.</para>
198
</para><variablelist role="params">
199
<varlistentry><term><parameter>out</parameter> :</term>
200
<listitem><simpara> file to output to
201
</simpara></listitem></varlistentry>
202
<varlistentry><term><parameter>value</parameter> :</term>
203
<listitem><simpara> value to output
204
</simpara></listitem></varlistentry>
205
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
206
</simpara></listitem></varlistentry>
207
</variablelist></refsect2>
208
<refsect2 id="camel-file-util-decode-off-t" role="function">
209
<title>camel_file_util_decode_off_t ()</title>
210
<indexterm zone="camel-file-util-decode-off-t"><primary sortas="camel_file_util_decode_off_t">camel_file_util_decode_off_t</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_decode_off_t (<link linkend="FILE--CAPS">FILE</link> *in,
211
<link linkend="off-t">off_t</link> *dest);</programlisting>
213
Decode an off_t type.</para>
215
</para><variablelist role="params">
216
<varlistentry><term><parameter>in</parameter> :</term>
217
<listitem><simpara> file to read from
218
</simpara></listitem></varlistentry>
219
<varlistentry><term><parameter>dest</parameter> :</term>
220
<listitem><simpara> pointer to a variable to put the value in
221
</simpara></listitem></varlistentry>
222
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on failure.
223
</simpara></listitem></varlistentry>
224
</variablelist></refsect2>
225
<refsect2 id="camel-file-util-encode-gsize" role="function">
226
<title>camel_file_util_encode_gsize ()</title>
227
<indexterm zone="camel-file-util-encode-gsize"><primary sortas="camel_file_util_encode_gsize">camel_file_util_encode_gsize</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_encode_gsize (<link linkend="FILE--CAPS">FILE</link> *out,
228
<link linkend="gsize">gsize</link> value);</programlisting>
230
Encode an gsize type.</para>
232
</para><variablelist role="params">
233
<varlistentry><term><parameter>out</parameter> :</term>
234
<listitem><simpara> file to output to
235
</simpara></listitem></varlistentry>
236
<varlistentry><term><parameter>value</parameter> :</term>
237
<listitem><simpara> value to output
238
</simpara></listitem></varlistentry>
239
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
240
</simpara></listitem></varlistentry>
241
</variablelist></refsect2>
242
<refsect2 id="camel-file-util-decode-gsize" role="function">
243
<title>camel_file_util_decode_gsize ()</title>
244
<indexterm zone="camel-file-util-decode-gsize"><primary sortas="camel_file_util_decode_gsize">camel_file_util_decode_gsize</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_decode_gsize (<link linkend="FILE--CAPS">FILE</link> *in,
245
<link linkend="gsize">gsize</link> *dest);</programlisting>
247
Decode an gsize type.</para>
249
</para><variablelist role="params">
250
<varlistentry><term><parameter>in</parameter> :</term>
251
<listitem><simpara> file to read from
252
</simpara></listitem></varlistentry>
253
<varlistentry><term><parameter>dest</parameter> :</term>
254
<listitem><simpara> pointer to a variable to put the value in
255
</simpara></listitem></varlistentry>
256
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on failure.
257
</simpara></listitem></varlistentry>
258
</variablelist></refsect2>
259
<refsect2 id="camel-file-util-encode-string" role="function">
260
<title>camel_file_util_encode_string ()</title>
261
<indexterm zone="camel-file-util-encode-string"><primary sortas="camel_file_util_encode_string">camel_file_util_encode_string</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_encode_string (<link linkend="FILE--CAPS">FILE</link> *out,
262
const <link linkend="gchar">gchar</link> *str);</programlisting>
264
Encode a normal string and save it in the output file.</para>
266
</para><variablelist role="params">
267
<varlistentry><term><parameter>out</parameter> :</term>
268
<listitem><simpara> file to output to
269
</simpara></listitem></varlistentry>
270
<varlistentry><term><parameter>str</parameter> :</term>
271
<listitem><simpara> value to output
272
</simpara></listitem></varlistentry>
273
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
274
</simpara></listitem></varlistentry>
275
</variablelist></refsect2>
276
<refsect2 id="camel-file-util-decode-string" role="function">
277
<title>camel_file_util_decode_string ()</title>
278
<indexterm zone="camel-file-util-decode-string"><primary sortas="camel_file_util_decode_string">camel_file_util_decode_string</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_decode_string (<link linkend="FILE--CAPS">FILE</link> *in,
279
<link linkend="gchar">gchar</link> **str);</programlisting>
281
Decode a normal string from the input file.</para>
283
</para><variablelist role="params">
284
<varlistentry><term><parameter>in</parameter> :</term>
285
<listitem><simpara> file to read from
286
</simpara></listitem></varlistentry>
287
<varlistentry><term><parameter>str</parameter> :</term>
288
<listitem><simpara> pointer to a variable to store the value in
289
</simpara></listitem></varlistentry>
290
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
291
</simpara></listitem></varlistentry>
292
</variablelist></refsect2>
293
<refsect2 id="camel-file-util-encode-fixed-string" role="function">
294
<title>camel_file_util_encode_fixed_string ()</title>
295
<indexterm zone="camel-file-util-encode-fixed-string"><primary sortas="camel_file_util_encode_fixed_string">camel_file_util_encode_fixed_string</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_encode_fixed_string (<link linkend="FILE--CAPS">FILE</link> *out,
296
const <link linkend="gchar">gchar</link> *str,
297
<link linkend="gsize">gsize</link> len);</programlisting>
299
Encode a normal string and save it in the output file.
300
Unlike <parameter>camel_file_util_encode_string</parameter>, it pads the
301
<parameter>str</parameter> with "NULL" bytes, if <parameter>len</parameter> is > strlen(str)</para>
303
</para><variablelist role="params">
304
<varlistentry><term><parameter>out</parameter> :</term>
305
<listitem><simpara> file to output to
306
</simpara></listitem></varlistentry>
307
<varlistentry><term><parameter>str</parameter> :</term>
308
<listitem><simpara> value to output
309
</simpara></listitem></varlistentry>
310
<varlistentry><term><parameter>len</parameter> :</term>
311
<listitem><simpara> total-len of str to store
312
</simpara></listitem></varlistentry>
313
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
314
</simpara></listitem></varlistentry>
315
</variablelist></refsect2>
316
<refsect2 id="camel-file-util-decode-fixed-string" role="function">
317
<title>camel_file_util_decode_fixed_string ()</title>
318
<indexterm zone="camel-file-util-decode-fixed-string"><primary sortas="camel_file_util_decode_fixed_string">camel_file_util_decode_fixed_string</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_file_util_decode_fixed_string (<link linkend="FILE--CAPS">FILE</link> *in,
319
<link linkend="gchar">gchar</link> **str,
320
<link linkend="gsize">gsize</link> len);</programlisting>
322
Decode a normal string from the input file.</para>
324
</para><variablelist role="params">
325
<varlistentry><term><parameter>in</parameter> :</term>
326
<listitem><simpara> file to read from
327
</simpara></listitem></varlistentry>
328
<varlistentry><term><parameter>str</parameter> :</term>
329
<listitem><simpara> pointer to a variable to store the value in
330
</simpara></listitem></varlistentry>
331
<varlistentry><term><parameter>len</parameter> :</term>
332
<listitem><simpara> total-len to decode.
333
</simpara></listitem></varlistentry>
334
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success, <link linkend="1--CAPS"><literal>-1</literal></link> on error.
335
</simpara></listitem></varlistentry>
336
</variablelist></refsect2>
337
<refsect2 id="camel-file-util-safe-filename" role="function">
338
<title>camel_file_util_safe_filename ()</title>
339
<indexterm zone="camel-file-util-safe-filename"><primary sortas="camel_file_util_safe_filename">camel_file_util_safe_filename</primary></indexterm><programlisting><link linkend="gchar">gchar</link> * camel_file_util_safe_filename (const <link linkend="gchar">gchar</link> *name);</programlisting>
341
'Flattens' <parameter>name</parameter> into a safe filename string by hex encoding any
342
chars that may cause problems on the filesystem.</para>
344
</para><variablelist role="params">
345
<varlistentry><term><parameter>name</parameter> :</term>
346
<listitem><simpara> string to 'flattened' into a safe filename
347
</simpara></listitem></varlistentry>
348
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a safe filename string.
349
</simpara></listitem></varlistentry>
350
</variablelist></refsect2>
351
<refsect2 id="camel-read" role="function">
352
<title>camel_read ()</title>
353
<indexterm zone="camel-read"><primary sortas="camel_read">camel_read</primary></indexterm><programlisting><link linkend="gssize">gssize</link> camel_read (<link linkend="gint">gint</link> fd,
354
<link linkend="gchar">gchar</link> *buf,
355
<link linkend="gsize">gsize</link> n);</programlisting>
357
Cancellable libc <link linkend="read"><function>read()</function></link> replacement.
360
Code that intends to be portable to Win32 should call this function
361
only on file descriptors returned from <link linkend="open"><function>open()</function></link>, not on sockets.</para>
363
</para><variablelist role="params">
364
<varlistentry><term><parameter>fd</parameter> :</term>
365
<listitem><simpara> file descriptor
366
</simpara></listitem></varlistentry>
367
<varlistentry><term><parameter>buf</parameter> :</term>
368
<listitem><simpara> buffer to fill
369
</simpara></listitem></varlistentry>
370
<varlistentry><term><parameter>n</parameter> :</term>
371
<listitem><simpara> number of bytes to read into <parameter>buf</parameter>
372
</simpara></listitem></varlistentry>
373
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> number of bytes read or -1 on fail. On failure, errno will
374
be set appropriately.
375
</simpara></listitem></varlistentry>
376
</variablelist></refsect2>
377
<refsect2 id="camel-write" role="function">
378
<title>camel_write ()</title>
379
<indexterm zone="camel-write"><primary sortas="camel_write">camel_write</primary></indexterm><programlisting><link linkend="gssize">gssize</link> camel_write (<link linkend="gint">gint</link> fd,
380
const <link linkend="gchar">gchar</link> *buf,
381
<link linkend="gsize">gsize</link> n);</programlisting>
383
Cancellable libc <link linkend="write"><function>write()</function></link> replacement.
386
Code that intends to be portable to Win32 should call this function
387
only on file descriptors returned from <link linkend="open"><function>open()</function></link>, not on sockets.</para>
389
</para><variablelist role="params">
390
<varlistentry><term><parameter>fd</parameter> :</term>
391
<listitem><simpara> file descriptor
392
</simpara></listitem></varlistentry>
393
<varlistentry><term><parameter>buf</parameter> :</term>
394
<listitem><simpara> buffer to write
395
</simpara></listitem></varlistentry>
396
<varlistentry><term><parameter>n</parameter> :</term>
397
<listitem><simpara> number of bytes of <parameter>buf</parameter> to write
398
</simpara></listitem></varlistentry>
399
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> number of bytes written or -1 on fail. On failure, errno will
400
be set appropriately.
401
</simpara></listitem></varlistentry>
402
</variablelist></refsect2>
403
<refsect2 id="camel-read-socket" role="function">
404
<title>camel_read_socket ()</title>
405
<indexterm zone="camel-read-socket"><primary sortas="camel_read_socket">camel_read_socket</primary></indexterm><programlisting><link linkend="gssize">gssize</link> camel_read_socket (<link linkend="gint">gint</link> fd,
406
<link linkend="gchar">gchar</link> *buf,
407
<link linkend="gsize">gsize</link> n);</programlisting>
409
Cancellable <link linkend="read"><function>read()</function></link> replacement for sockets. Code that intends to be
410
portable to Win32 should call this function only on sockets
411
returned from <link linkend="socket"><function>socket()</function></link>, or <link linkend="accept"><function>accept()</function></link>.</para>
413
</para><variablelist role="params">
414
<varlistentry><term><parameter>fd</parameter> :</term>
415
<listitem><simpara> a socket
416
</simpara></listitem></varlistentry>
417
<varlistentry><term><parameter>buf</parameter> :</term>
418
<listitem><simpara> buffer to fill
419
</simpara></listitem></varlistentry>
420
<varlistentry><term><parameter>n</parameter> :</term>
421
<listitem><simpara> number of bytes to read into <parameter>buf</parameter>
422
</simpara></listitem></varlistentry>
423
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> number of bytes read or -1 on fail. On failure, errno will
424
be set appropriately. If the socket is nonblocking
425
<link linkend="camel-read-socket"><function>camel_read_socket()</function></link> will retry the read until it gets something.
426
</simpara></listitem></varlistentry>
427
</variablelist></refsect2>
428
<refsect2 id="camel-write-socket" role="function">
429
<title>camel_write_socket ()</title>
430
<indexterm zone="camel-write-socket"><primary sortas="camel_write_socket">camel_write_socket</primary></indexterm><programlisting><link linkend="gssize">gssize</link> camel_write_socket (<link linkend="gint">gint</link> fd,
431
const <link linkend="gchar">gchar</link> *buf,
432
<link linkend="gsize">gsize</link> n);</programlisting>
434
Cancellable <link linkend="write"><function>write()</function></link> replacement for sockets. Code that intends to
435
be portable to Win32 should call this function only on sockets
436
returned from <link linkend="socket"><function>socket()</function></link> or <link linkend="accept"><function>accept()</function></link>.</para>
438
</para><variablelist role="params">
439
<varlistentry><term><parameter>fd</parameter> :</term>
440
<listitem><simpara> file descriptor
441
</simpara></listitem></varlistentry>
442
<varlistentry><term><parameter>buf</parameter> :</term>
443
<listitem><simpara> buffer to write
444
</simpara></listitem></varlistentry>
445
<varlistentry><term><parameter>n</parameter> :</term>
446
<listitem><simpara> number of bytes of <parameter>buf</parameter> to write
447
</simpara></listitem></varlistentry>
448
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> number of bytes written or -1 on fail. On failure, errno will
449
be set appropriately.
450
</simpara></listitem></varlistentry>
451
</variablelist></refsect2>
452
<refsect2 id="camel-file-util-savename" role="function">
453
<title>camel_file_util_savename ()</title>
454
<indexterm zone="camel-file-util-savename"><primary sortas="camel_file_util_savename">camel_file_util_savename</primary></indexterm><programlisting><link linkend="gchar">gchar</link> * camel_file_util_savename (const <link linkend="gchar">gchar</link> *filename);</programlisting>
456
Builds a pathname where the basename is of the form ".#" + the
457
basename of <parameter>filename</parameter>, for instance used in a two-stage commit file
460
</para><variablelist role="params">
461
<varlistentry><term><parameter>filename</parameter> :</term>
462
<listitem><simpara> a pathname
463
</simpara></listitem></varlistentry>
464
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The new pathname. It must be free'd with <link linkend="g-free"><function>g_free()</function></link>.
465
</simpara></listitem></varlistentry>
466
</variablelist></refsect2>