Tizen 2.1 base
[platform/upstream/glib2.0.git] / docs / reference / glib / html / glib-Base64-Encoding.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>Base64 Encoding</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GLib Reference Manual">
8 <link rel="up" href="glib-utilities.html" title="GLib Utilities">
9 <link rel="prev" href="glib-Unicode-Manipulation.html" title="Unicode Manipulation">
10 <link rel="next" href="glib-Data-Checksums.html" title="Data Checksums">
11 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
16 <tr valign="middle">
17 <td><a accesskey="p" href="glib-Unicode-Manipulation.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="glib-utilities.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GLib Reference Manual</th>
21 <td><a accesskey="n" href="glib-Data-Checksums.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
22 </tr>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#glib-Base64-Encoding.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#glib-Base64-Encoding.description" class="shortcut">Description</a>
27 </td></tr>
28 </table>
29 <div class="refentry">
30 <a name="glib-Base64-Encoding"></a><div class="titlepage"></div>
31 <div class="refnamediv"><table width="100%"><tr>
32 <td valign="top">
33 <h2><span class="refentrytitle"><a name="glib-Base64-Encoding.top_of_page"></a>Base64 Encoding</span></h2>
34 <p>Base64 Encoding — encodes and decodes data in Base64 format</p>
35 </td>
36 <td valign="top" align="right"></td>
37 </tr></table></div>
38 <div class="refsynopsisdiv">
39 <a name="glib-Base64-Encoding.synopsis"></a><h2>Synopsis</h2>
40 <pre class="synopsis">
41 #include &lt;glib.h&gt;
42
43 <a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a>               <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-step" title="g_base64_encode_step ()">g_base64_encode_step</a>                (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="type">guchar</span></a> *in</code></em>,
44                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> len</code></em>,
45                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> break_lines</code></em>,
46                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *out</code></em>,
47                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *state</code></em>,
48                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *save</code></em>);
49 <a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a>               <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-close" title="g_base64_encode_close ()">g_base64_encode_close</a>               (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> break_lines</code></em>,
50                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *out</code></em>,
51                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *state</code></em>,
52                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *save</code></em>);
53 <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *             <a class="link" href="glib-Base64-Encoding.html#g-base64-encode" title="g_base64_encode ()">g_base64_encode</a>                     (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="type">guchar</span></a> *data</code></em>,
54                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> len</code></em>);
55 <a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a>               <a class="link" href="glib-Base64-Encoding.html#g-base64-decode-step" title="g_base64_decode_step ()">g_base64_decode_step</a>                (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *in</code></em>,
56                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> len</code></em>,
57                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="type">guchar</span></a> *out</code></em>,
58                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *state</code></em>,
59                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> *save</code></em>);
60 <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *            <a class="link" href="glib-Base64-Encoding.html#g-base64-decode" title="g_base64_decode ()">g_base64_decode</a>                     (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *text</code></em>,
61                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *out_len</code></em>);
62 <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *            <a class="link" href="glib-Base64-Encoding.html#g-base64-decode-inplace" title="g_base64_decode_inplace ()">g_base64_decode_inplace</a>             (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *text</code></em>,
63                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *out_len</code></em>);
64 </pre>
65 </div>
66 <div class="refsect1">
67 <a name="glib-Base64-Encoding.description"></a><h2>Description</h2>
68 <p>
69 Base64 is an encoding that allows a sequence of arbitrary bytes to be
70 encoded as a sequence of printable ASCII characters. For the definition
71 of Base64, see <a class="ulink" href="http://www.ietf.org/rfc/rfc1421.txt" target="_top">RFC
72 1421</a> or <a class="ulink" href="http://www.ietf.org/rfc/rfc2045.txt" target="_top">RFC
73 2045</a>. Base64 is most commonly used as a MIME transfer encoding
74 for email.
75 </p>
76 <p>
77 GLib supports incremental encoding using <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-step" title="g_base64_encode_step ()"><code class="function">g_base64_encode_step()</code></a> and
78 <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-close" title="g_base64_encode_close ()"><code class="function">g_base64_encode_close()</code></a>. Incremental decoding can be done with
79 <a class="link" href="glib-Base64-Encoding.html#g-base64-decode-step" title="g_base64_decode_step ()"><code class="function">g_base64_decode_step()</code></a>. To encode or decode data in one go, use
80 <a class="link" href="glib-Base64-Encoding.html#g-base64-encode" title="g_base64_encode ()"><code class="function">g_base64_encode()</code></a> or <a class="link" href="glib-Base64-Encoding.html#g-base64-decode" title="g_base64_decode ()"><code class="function">g_base64_decode()</code></a>. To avoid memory allocation when
81 decoding, you can use <a class="link" href="glib-Base64-Encoding.html#g-base64-decode-inplace" title="g_base64_decode_inplace ()"><code class="function">g_base64_decode_inplace()</code></a>.
82 </p>
83 <p>
84 Support for Base64 encoding has been added in GLib 2.12.
85 </p>
86 </div>
87 <div class="refsect1">
88 <a name="glib-Base64-Encoding.details"></a><h2>Details</h2>
89 <div class="refsect2">
90 <a name="g-base64-encode-step"></a><h3>g_base64_encode_step ()</h3>
91 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a>               g_base64_encode_step                (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="type">guchar</span></a> *in</code></em>,
92                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> len</code></em>,
93                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> break_lines</code></em>,
94                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *out</code></em>,
95                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *state</code></em>,
96                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *save</code></em>);</pre>
97 <p>
98 Incrementally encode a sequence of binary data into its Base-64 stringified
99 representation. By calling this function multiple times you can convert
100 data in chunks to avoid having to have the full encoded data in memory.
101 </p>
102 <p>
103 When all of the data has been converted you must call
104 <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-close" title="g_base64_encode_close ()"><code class="function">g_base64_encode_close()</code></a> to flush the saved state.
105 </p>
106 <p>
107 The output buffer must be large enough to fit all the data that will
108 be written to it. Due to the way base64 encodes you will need
109 at least: (<em class="parameter"><code>len</code></em> / 3 + 1) * 4 + 4 bytes (+ 4 may be needed in case of
110 non-zero state). If you enable line-breaking you will need at least:
111 ((<em class="parameter"><code>len</code></em> / 3 + 1) * 4 + 4) / 72 + 1 bytes of extra space.
112 </p>
113 <p>
114 <em class="parameter"><code>break_lines</code></em> is typically used when putting base64-encoded data in emails.
115 It breaks the lines at 72 columns instead of putting all of the text on
116 the same line. This avoids problems with long lines in the email system.
117 Note however that it breaks the lines with <code class="literal">LF</code>
118 characters, not <code class="literal">CR LF</code> sequences, so the result cannot
119 be passed directly to SMTP or certain other protocols.
120 </p>
121 <div class="variablelist"><table border="0">
122 <col align="left" valign="top">
123 <tbody>
124 <tr>
125 <td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
126 <td>the binary data to encode. <span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
127 </td>
128 </tr>
129 <tr>
130 <td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
131 <td>the length of <em class="parameter"><code>in</code></em>
132 </td>
133 </tr>
134 <tr>
135 <td><p><span class="term"><em class="parameter"><code>break_lines</code></em> :</span></p></td>
136 <td>whether to break long lines</td>
137 </tr>
138 <tr>
139 <td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
140 <td>pointer to destination buffer. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
141 </td>
142 </tr>
143 <tr>
144 <td><p><span class="term"><em class="parameter"><code>state</code></em> :</span></p></td>
145 <td>Saved state between steps, initialize to 0. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span>
146 </td>
147 </tr>
148 <tr>
149 <td><p><span class="term"><em class="parameter"><code>save</code></em> :</span></p></td>
150 <td>Saved state between steps, initialize to 0. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span>
151 </td>
152 </tr>
153 <tr>
154 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
155 <td>The number of bytes of output that was written</td>
156 </tr>
157 </tbody>
158 </table></div>
159 <p class="since">Since 2.12</p>
160 </div>
161 <hr>
162 <div class="refsect2">
163 <a name="g-base64-encode-close"></a><h3>g_base64_encode_close ()</h3>
164 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a>               g_base64_encode_close               (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> break_lines</code></em>,
165                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *out</code></em>,
166                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *state</code></em>,
167                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *save</code></em>);</pre>
168 <p>
169 Flush the status from a sequence of calls to <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-step" title="g_base64_encode_step ()"><code class="function">g_base64_encode_step()</code></a>.
170 </p>
171 <p>
172 The output buffer must be large enough to fit all the data that will
173 be written to it. It will need up to 4 bytes, or up to 5 bytes if
174 line-breaking is enabled.
175 </p>
176 <div class="variablelist"><table border="0">
177 <col align="left" valign="top">
178 <tbody>
179 <tr>
180 <td><p><span class="term"><em class="parameter"><code>break_lines</code></em> :</span></p></td>
181 <td>whether to break long lines</td>
182 </tr>
183 <tr>
184 <td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
185 <td>pointer to destination buffer. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
186 </td>
187 </tr>
188 <tr>
189 <td><p><span class="term"><em class="parameter"><code>state</code></em> :</span></p></td>
190 <td>Saved state from <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-step" title="g_base64_encode_step ()"><code class="function">g_base64_encode_step()</code></a>. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span>
191 </td>
192 </tr>
193 <tr>
194 <td><p><span class="term"><em class="parameter"><code>save</code></em> :</span></p></td>
195 <td>Saved state from <a class="link" href="glib-Base64-Encoding.html#g-base64-encode-step" title="g_base64_encode_step ()"><code class="function">g_base64_encode_step()</code></a>. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span>
196 </td>
197 </tr>
198 <tr>
199 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
200 <td>The number of bytes of output that was written</td>
201 </tr>
202 </tbody>
203 </table></div>
204 <p class="since">Since 2.12</p>
205 </div>
206 <hr>
207 <div class="refsect2">
208 <a name="g-base64-encode"></a><h3>g_base64_encode ()</h3>
209 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *             g_base64_encode                     (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="type">guchar</span></a> *data</code></em>,
210                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> len</code></em>);</pre>
211 <p>
212 Encode a sequence of binary data into its Base-64 stringified
213 representation.
214 </p>
215 <div class="variablelist"><table border="0">
216 <col align="left" valign="top">
217 <tbody>
218 <tr>
219 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
220 <td>the binary data to encode. <span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
221 </td>
222 </tr>
223 <tr>
224 <td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
225 <td>the length of <em class="parameter"><code>data</code></em>
226 </td>
227 </tr>
228 <tr>
229 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
230 <td>a newly allocated, zero-terminated Base-64
231 encoded string representing <em class="parameter"><code>data</code></em>. The returned string must
232 be freed with <a class="link" href="glib-Memory-Allocation.html#g-free" title="g_free ()"><code class="function">g_free()</code></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
233 </td>
234 </tr>
235 </tbody>
236 </table></div>
237 <p class="since">Since 2.12</p>
238 </div>
239 <hr>
240 <div class="refsect2">
241 <a name="g-base64-decode-step"></a><h3>g_base64_decode_step ()</h3>
242 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a>               g_base64_decode_step                (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *in</code></em>,
243                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> len</code></em>,
244                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="type">guchar</span></a> *out</code></em>,
245                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *state</code></em>,
246                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> *save</code></em>);</pre>
247 <p>
248 Incrementally decode a sequence of binary data from its Base-64 stringified
249 representation. By calling this function multiple times you can convert
250 data in chunks to avoid having to have the full encoded data in memory.
251 </p>
252 <p>
253 The output buffer must be large enough to fit all the data that will
254 be written to it. Since base64 encodes 3 bytes in 4 chars you need
255 at least: (<em class="parameter"><code>len</code></em> / 4) * 3 + 3 bytes (+ 3 may be needed in case of non-zero
256 state).
257 </p>
258 <div class="variablelist"><table border="0">
259 <col align="left" valign="top">
260 <tbody>
261 <tr>
262 <td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
263 <td>binary input data. <span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
264 </td>
265 </tr>
266 <tr>
267 <td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
268 <td>max length of <em class="parameter"><code>in</code></em> data to decode</td>
269 </tr>
270 <tr>
271 <td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
272 <td>output buffer. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
273 </td>
274 </tr>
275 <tr>
276 <td><p><span class="term"><em class="parameter"><code>state</code></em> :</span></p></td>
277 <td>Saved state between steps, initialize to 0. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span>
278 </td>
279 </tr>
280 <tr>
281 <td><p><span class="term"><em class="parameter"><code>save</code></em> :</span></p></td>
282 <td>Saved state between steps, initialize to 0. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span>
283 </td>
284 </tr>
285 <tr>
286 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
287 <td>The number of bytes of output that was written</td>
288 </tr>
289 </tbody>
290 </table></div>
291 <p class="since">Since 2.12</p>
292 </div>
293 <hr>
294 <div class="refsect2">
295 <a name="g-base64-decode"></a><h3>g_base64_decode ()</h3>
296 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *            g_base64_decode                     (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *text</code></em>,
297                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *out_len</code></em>);</pre>
298 <p>
299 Decode a sequence of Base-64 encoded text into binary data
300 </p>
301 <div class="variablelist"><table border="0">
302 <col align="left" valign="top">
303 <tbody>
304 <tr>
305 <td><p><span class="term"><em class="parameter"><code>text</code></em> :</span></p></td>
306 <td>zero-terminated string with base64 text to decode</td>
307 </tr>
308 <tr>
309 <td><p><span class="term"><em class="parameter"><code>out_len</code></em> :</span></p></td>
310 <td>The length of the decoded data is written here. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
311 </td>
312 </tr>
313 <tr>
314 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
315 <td>newly allocated buffer containing the binary data
316 that <em class="parameter"><code>text</code></em> represents. The returned buffer must
317 be freed with <a class="link" href="glib-Memory-Allocation.html#g-free" title="g_free ()"><code class="function">g_free()</code></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=out_len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
318 </td>
319 </tr>
320 </tbody>
321 </table></div>
322 <p class="since">Since 2.12</p>
323 </div>
324 <hr>
325 <div class="refsect2">
326 <a name="g-base64-decode-inplace"></a><h3>g_base64_decode_inplace ()</h3>
327 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *            g_base64_decode_inplace             (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *text</code></em>,
328                                                          <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *out_len</code></em>);</pre>
329 <p>
330 Decode a sequence of Base-64 encoded text into binary data
331 by overwriting the input data.
332 </p>
333 <div class="variablelist"><table border="0">
334 <col align="left" valign="top">
335 <tbody>
336 <tr>
337 <td><p><span class="term"><em class="parameter"><code>text</code></em> :</span></p></td>
338 <td>zero-terminated
339 string with base64 text to decode. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=out_len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint8]</span>
340 </td>
341 </tr>
342 <tr>
343 <td><p><span class="term"><em class="parameter"><code>out_len</code></em> :</span></p></td>
344 <td>The length of the decoded data is written here. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span>
345 </td>
346 </tr>
347 <tr>
348 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
349 <td>The binary data that <em class="parameter"><code>text</code></em> responds. This pointer
350 is the same as the input <em class="parameter"><code>text</code></em>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
351 </td>
352 </tr>
353 </tbody>
354 </table></div>
355 <p class="since">Since 2.20</p>
356 </div>
357 </div>
358 </div>
359 <div class="footer">
360 <hr>
361           Generated by GTK-Doc V1.18</div>
362 </body>
363 </html>