OpenCoverage

unicodeio.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/unicodeio.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12long-
13unicode_to_mb (unsigned int code,-
14 long (*success) (const char *buf, size_t buflen,-
15 void *callback_arg),-
16 long (*failure) (unsigned int code, const char *msg,-
17 void *callback_arg),-
18 void *callback_arg)-
19{-
20 static int initialized;-
21 static int is_utf8;-
22-
23 static iconv_t utf8_to_local;-
24-
25-
26 char inbuf[6];-
27 int count;-
28-
29 if (!initialized
!initializedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
30 {-
31 const char *charset = locale_charset ();-
32-
33 is_utf8 = !-
34 __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (-
35 charset-
36 ) && __builtin_constant_p (-
37 "UTF-8"-
38 ) && (__s1_len = __builtin_strlen (-
39 charset-
40 ), __s2_len = __builtin_strlen (-
41 "UTF-8"-
42 ), (!((size_t)(const void *)((-
43 charset-
44 ) + 1) - (size_t)(const void *)(-
45 charset-
46 ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((-
47 "UTF-8"-
48 ) + 1) - (size_t)(const void *)(-
49 "UTF-8"-
50 ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (-
51 charset-
52 , -
53 "UTF-8"-
54 ) : (__builtin_constant_p (-
55 charset-
56 ) && ((size_t)(const void *)((-
57 charset-
58 ) + 1) - (size_t)(const void *)(-
59 charset-
60 ) == 1) && (__s1_len = __builtin_strlen (-
61 charset-
62 ), __s1_len < 4) ? (__builtin_constant_p (-
63 "UTF-8"-
64 ) && ((size_t)(const void *)((-
65 "UTF-8"-
66 ) + 1) - (size_t)(const void *)(-
67 "UTF-8"-
68 ) == 1) ? __builtin_strcmp (-
69 charset-
70 , -
71 "UTF-8"-
72 ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (-
73 "UTF-8"-
74 ); int __result = (((const unsigned char *) (const char *) (-
75 charset-
76 ))[0] - __s2[0]); if (__s1_len > 0
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
0
77 charset-
78 ))[1] - __s2[1]); if (__s1_len > 1
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
0
79 charset-
80 ))[2] - __s2[2]); if (__s1_len > 2
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) __result = (((const unsigned char *) (const char *) (
never executed: __result = (((const unsigned char *) (const char *) ( charset ))[3] - __s2[3]);
0
81 charset
never executed: __result = (((const unsigned char *) (const char *) ( charset ))[3] - __s2[3]);
0
82 ))[3] - __s2[3]);
never executed: __result = (((const unsigned char *) (const char *) ( charset ))[3] - __s2[3]);
}
never executed: end of block
}
never executed: end of block
__result; }))) : (__builtin_constant_p (
0
83 "UTF-8"-
84 ) && ((size_t)(const void *)((-
85 "UTF-8"-
86 ) + 1) - (size_t)(const void *)(-
87 "UTF-8"-
88 ) == 1) && (__s2_len = __builtin_strlen (-
89 "UTF-8"-
90 ), __s2_len < 4) ? (__builtin_constant_p (-
91 charset-
92 ) && ((size_t)(const void *)((-
93 charset-
94 ) + 1) - (size_t)(const void *)(-
95 charset-
96 ) == 1) ? __builtin_strcmp (-
97 charset-
98 , -
99 "UTF-8"-
100 ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (-
101 charset-
102 ); int __result = (((const unsigned char *) (const char *) (-
103 "UTF-8"-
104 ))[0] - __s2[0]); if (__s2_len > 0
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
0
105 "UTF-8"-
106 ))[1] - __s2[1]); if (__s2_len > 1
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
0
107 "UTF-8"-
108 ))[2] - __s2[2]); if (__s2_len > 2
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) __result = (((const unsigned char *) (const char *) (
never executed: __result = (((const unsigned char *) (const char *) ( "UTF-8" ))[3] - __s2[3]);
0
109 "UTF-8"
never executed: __result = (((const unsigned char *) (const char *) ( "UTF-8" ))[3] - __s2[3]);
0
110 ))[3] - __s2[3]);
never executed: __result = (((const unsigned char *) (const char *) ( "UTF-8" ))[3] - __s2[3]);
}
never executed: end of block
}
never executed: end of block
__result; }))) : __builtin_strcmp (
0
111 charset-
112 , -
113 "UTF-8"-
114 )))); })-
115 ;-
116-
117 if (!is_utf8
!is_utf8Description
TRUEnever evaluated
FALSEnever evaluated
)
0
118 {-
119 utf8_to_local = iconv_open (charset, "UTF-8");-
120 if (utf8_to_local == (iconv_t)(-1)
utf8_to_local == (iconv_t)(-1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
121-
122 utf8_to_local = iconv_open ("ASCII", "UTF-8");
never executed: utf8_to_local = iconv_open ("ASCII", "UTF-8");
0
123 }
never executed: end of block
0
124-
125 initialized = 1;-
126 }
never executed: end of block
0
127-
128-
129 if (!is_utf8
!is_utf8Description
TRUEnever evaluated
FALSEnever evaluated
)
0
130 {-
131-
132 if (utf8_to_local == (iconv_t)(-1)
utf8_to_local == (iconv_t)(-1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
133 return
never executed: return failure (code, "iconv function not usable", callback_arg);
failure (code, "iconv function not usable", callback_arg);
never executed: return failure (code, "iconv function not usable", callback_arg);
0
134-
135-
136-
137 }
never executed: end of block
0
138-
139-
140 count = u8_uctomb ((unsigned char *) inbuf, code, sizeof (inbuf));-
141 if (count < 0
count < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
142 return
never executed: return failure (code, "character out of range", callback_arg);
failure (code, "character out of range", callback_arg);
never executed: return failure (code, "character out of range", callback_arg);
0
143-
144-
145 if (!is_utf8
!is_utf8Description
TRUEnever evaluated
FALSEnever evaluated
)
0
146 {-
147 char outbuf[25];-
148 const char *inptr;-
149 size_t inbytesleft;-
150 char *outptr;-
151 size_t outbytesleft;-
152 size_t res;-
153-
154 inptr = inbuf;-
155 inbytesleft = count;-
156 outptr = outbuf;-
157 outbytesleft = sizeof (outbuf);-
158-
159-
160 res = iconv (utf8_to_local,-
161 ( char **)&inptr, &inbytesleft,-
162 &outptr, &outbytesleft);-
163 if (inbytesleft > 0
inbytesleft > 0Description
TRUEnever evaluated
FALSEnever evaluated
|| res == (size_t)(-1)
res == (size_t)(-1)Description
TRUEnever evaluated
FALSEnever evaluated
0
164-
165-
166-
167-
168 )-
169 return
never executed: return failure (code, ((void *)0) , callback_arg);
failure (code,
never executed: return failure (code, ((void *)0) , callback_arg);
0
170 ((void *)0)
never executed: return failure (code, ((void *)0) , callback_arg);
0
171 , callback_arg);
never executed: return failure (code, ((void *)0) , callback_arg);
0
172 res = iconv (utf8_to_local, -
173 ((void *)0)-
174 , -
175 ((void *)0)-
176 , &outptr, &outbytesleft);-
177 if (res == (size_t)(-1)
res == (size_t)(-1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
178 return
never executed: return failure (code, ((void *)0) , callback_arg);
failure (code,
never executed: return failure (code, ((void *)0) , callback_arg);
0
179 ((void *)0)
never executed: return failure (code, ((void *)0) , callback_arg);
0
180 , callback_arg);
never executed: return failure (code, ((void *)0) , callback_arg);
0
181-
182-
183 return
never executed: return success (outbuf, outptr - outbuf, callback_arg);
success (outbuf, outptr - outbuf, callback_arg);
never executed: return success (outbuf, outptr - outbuf, callback_arg);
0
184 }-
185-
186-
187-
188 return
never executed: return success (inbuf, count, callback_arg);
success (inbuf, count, callback_arg);
never executed: return success (inbuf, count, callback_arg);
0
189}-
190-
191-
192-
193long-
194fwrite_success_callback (const char *buf, size_t buflen, void *callback_arg)-
195{-
196 FILE *stream = (FILE *) callback_arg;-
197-
198-
199-
200-
201-
202 fwrite (buf, 1, buflen, stream);-
203 return
never executed: return 0;
0;
never executed: return 0;
0
204}-
205-
206-
207static long-
208exit_failure_callback (unsigned int code, const char *msg,-
209 void *callback_arg __attribute__ ((__unused__)))-
210{-
211 if (msg ==
msg == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
212 ((void *)0)
msg == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
213 )-
214 error (1, 0,
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set" , 5) , code);
0
215 dcgettext (((void *)0),
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set" , 5) , code);
0
216 "cannot convert U+%04X to local character set"
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set" , 5) , code);
0
217 , 5)
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set" , 5) , code);
0
218 , code);
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set" , 5) , code);
0
219 else-
220 error (1, 0,
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
221 dcgettext (((void *)0),
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
222 "cannot convert U+%04X to local character set: %s"
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
223 , 5)
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
224 , code,
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
225
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
226 dcgettext (((void *)0),
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
227 msg
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
228 , 5)
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
229 );
never executed: error (1, 0, dcgettext (((void *)0), "cannot convert U+%04X to local character set: %s" , 5) , code, dcgettext (((void *)0), msg , 5) );
0
230 return
never executed: return -1;
-1;
never executed: return -1;
0
231}-
232-
233-
234-
235static long-
236fallback_failure_callback (unsigned int code,-
237 const char *msg __attribute__ ((__unused__)),-
238 void *callback_arg)-
239{-
240 FILE *stream = (FILE *) callback_arg;-
241-
242 if (code < 0x10000
code < 0x10000Description
TRUEnever evaluated
FALSEnever evaluated
)
0
243 fprintf (stream, "\\u%04X", code);
never executed: fprintf (stream, "\\u%04X", code);
0
244 else-
245 fprintf (stream, "\\U%08X", code);
never executed: fprintf (stream, "\\U%08X", code);
0
246 return
never executed: return -1;
-1;
never executed: return -1;
0
247}-
248-
249-
250-
251-
252void-
253print_unicode_char (FILE *stream, unsigned int code, int exit_on_error)-
254{-
255 unicode_to_mb (code, fwrite_success_callback,-
256 exit_on_error-
257 ? exit_failure_callback-
258 : fallback_failure_callback,-
259 stream);-
260}
never executed: end of block
0
Switch to Source codePreprocessed file

Generated by Squish Coco 4.1.2