46 gdsp->
group =
nullptr;
77 for (n = 0; n < strlen(src); ++n)
78 if ((
unsigned char) src[n] > 127)
82 p = (
unsigned char *)
xmalloc(strlen(src) + c);
84 for (n = 0; n < strlen(src); ++n) {
86 s = (
unsigned char) src[n];
87 if (s > 127 && s < 192) {
101 return (
char *) dupp;
106char *hex_utf_char(
struct main_args *margs,
int flag);
123hex_utf_char(
struct main_args *margs,
int flag)
126 int iUTF2, iUTF3, iUTF4;
128 char *up = (flag ? margs->
ulist : margs->
tlist);
132 char *upd = strrchr(up,
'@');
133 size_t a = (upd ? (
size_t)(upd - up) : strlen(up) );
135 char *ul = (
char *)
xmalloc(strlen(up)+1);
142 while (n < strlen(up)) {
152 if (ival > 64 && ival < 71)
153 ichar = (ival - 55) * 16;
154 else if (ival > 96 && ival < 103)
155 ichar = (ival - 87) * 16;
156 else if (ival > 47 && ival < 58)
157 ichar = (ival - 48) * 16;
171 if (ival > 64 && ival < 71)
172 ichar = ichar + ival - 55;
173 else if (ival > 96 && ival < 103)
174 ichar = ichar + ival - 87;
175 else if (ival > 47 && ival < 58)
176 ichar = ichar + ival - 48;
184 if (iUTF2 == 0xC2 && ichar > 0x7F && ichar < 0xC0) {
186 ul[nl - 1] = (char)ichar;
187 }
else if (iUTF2 == 0xC3 && ichar > 0x7F && ichar < 0xC0) {
189 ul[nl - 1] = (char)(ichar + 64);
190 }
else if (iUTF2 > 0xC3 && iUTF2 < 0xE0 && ichar > 0x7F && ichar < 0xC0) {
192 ul[nl] = (char)ichar;
196 ul[nl] = (char)ichar;
198 debug((
char *)
"%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n",
LogTime(),
PROGRAM, ul);
203 if (iUTF3 == 0xE0 && ichar > 0x9F && ichar < 0xC0) {
205 ul[nl] = (char)ichar;
207 }
else if (iUTF3 > 0xE0 && iUTF3 < 0xED && ichar > 0x7F && ichar < 0xC0) {
209 ul[nl] = (char)ichar;
211 }
else if (iUTF3 == 0xED && ichar > 0x7F && ichar < 0xA0) {
213 ul[nl] = (char)ichar;
215 }
else if (iUTF3 > 0xED && iUTF3 < 0xF0 && ichar > 0x7F && ichar < 0xC0) {
217 ul[nl] = (char)ichar;
219 }
else if (iUTF3 > 0 && iUTF3 < 5 && ichar > 0x7F && ichar < 0xC0) {
221 ul[nl] = (char)ichar;
225 ul[nl] = (char)ichar;
227 debug((
char *)
"%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n",
LogTime(),
PROGRAM, ul);
232 if (iUTF4 == 0xF0 && ichar > 0x8F && ichar < 0xC0) {
234 ul[nl] = (char)ichar;
236 }
else if (iUTF4 > 0xF0 && iUTF3 < 0xF4 && ichar > 0x7F && ichar < 0xC0) {
238 ul[nl] = (char)ichar;
240 }
else if (iUTF4 == 0xF4 && ichar > 0x7F && ichar < 0x90) {
242 ul[nl] = (char)ichar;
244 }
else if (iUTF4 > 0 && iUTF4 < 5 && ichar > 0x7F && ichar < 0xC0) {
249 ul[nl] = (char)ichar;
253 ul[nl] = (char)ichar;
255 debug((
char *)
"%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n",
LogTime(),
PROGRAM, ul);
259 }
else if (ichar < 0x80) {
261 ul[nl] = (char)ichar;
263 }
else if (ichar > 0xC1 && ichar < 0xE0) {
266 ul[nl] = (char)ichar;
268 }
else if (ichar > 0xDF && ichar < 0xF0) {
271 ul[nl] = (char)ichar;
273 }
else if (ichar > 0xEF && ichar < 0xF5) {
276 ul[nl] = (char)ichar;
279 ul[nl] = (char)ichar;
281 debug((
char *)
"%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n",
LogTime(),
PROGRAM, ul);
289 if (iUTF2 || iUTF3 || iUTF4) {
290 debug((
char *)
"%s| %s: INFO: iUTF2: %d iUTF3: %d iUTF4: %d\n",
LogTime(),
PROGRAM, iUTF2, iUTF3, iUTF4);
291 debug((
char *)
"%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n",
LogTime(),
PROGRAM, ul);
296 ul = strcat(ul, upd);
305 struct gdstruct *gdsp =
nullptr, *gdspn =
nullptr;
325 char *hp1 = hex_utf_char(margs, 0);
326 char *hp2 = hex_utf_char(margs, 1);
327 char *up = utf8dup(margs);
332 char *gpbuf =
nullptr;
347 gpbuf = p = (
char *)
xmalloc(strlen(up) + strlen(hp1) + strlen(hp2) + 2);
354 gpbuf = p = (
char *)
xmalloc(strlen(hp1) + strlen(hp2) + 1);
361 gpbuf = p = (
char *)
xmalloc(strlen(up) + strlen(hp1) + 1);
371 gpbuf = p = (
char *)
xmalloc(strlen(up) + strlen(hp2) + 1);
390 if (*p ==
'\n' || *p ==
'\r') {
411 }
else if (*p ==
':') {
int create_gd(struct main_args *margs)
const char * LogTime(void)
void debug(const char *format,...)