]> git.wh0rd.org - ICEs.git/blame - hppa-ICE-insn-constraints/regex.i.0
initial import
[ICEs.git] / hppa-ICE-insn-constraints / regex.i.0
CommitLineData
45516216 1# 1 "regex.c"
2# 1 "/var/tmp/portage/glibc-2.5/work/glibc-2.5/posix//"
3# 1 "<built-in>"
4# 1 "<command line>"
5# 1 "./../include/libc-symbols.h" 1
6# 55 "./../include/libc-symbols.h"
7# 1 "/var/tmp/portage/glibc-2.5/work/build-default-hppa2.0-unknown-linux-gnu-nptl/config.h" 1
8# 56 "./../include/libc-symbols.h" 2
9# 824 "./../include/libc-symbols.h"
10# 1 "../sysdeps/wordsize-32/symbol-hacks.h" 1
11# 825 "./../include/libc-symbols.h" 2
12# 1 "<command line>" 2
13# 1 "regex.c"
14# 52 "regex.c"
15# 1 "../locale/localeinfo.h" 1
16# 23 "../locale/localeinfo.h"
17# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
18# 152 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 3 4
19typedef int ptrdiff_t;
20# 214 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 3 4
21typedef unsigned int size_t;
22# 326 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 3 4
23typedef long int wchar_t;
24# 24 "../locale/localeinfo.h" 2
25# 1 "../include/langinfo.h" 1
26
27
28# 1 "../locale/langinfo.h" 1
29# 24 "../locale/langinfo.h"
30# 1 "../include/nl_types.h" 1
31# 1 "../catgets/nl_types.h" 1
32# 22 "../catgets/nl_types.h"
33# 1 "../include/features.h" 1
34# 323 "../include/features.h"
35# 1 "../include/sys/cdefs.h" 1
36
37
38# 1 "../misc/sys/cdefs.h" 1
39# 313 "../misc/sys/cdefs.h"
40# 1 "../sysdeps/wordsize-32/bits/wordsize.h" 1
41# 314 "../misc/sys/cdefs.h" 2
42# 4 "../include/sys/cdefs.h" 2
43
44extern void __chk_fail (void) __attribute__ ((__noreturn__));
45
46
47# 324 "../include/features.h" 2
48# 346 "../include/features.h"
49# 1 "../include/gnu/stubs.h" 1
50# 347 "../include/features.h" 2
51# 23 "../catgets/nl_types.h" 2
52# 31 "../catgets/nl_types.h"
53
54
55
56typedef void *nl_catd;
57
58
59typedef int nl_item;
60
61
62
63
64
65extern nl_catd catopen (__const char *__cat_name, int __flag) __attribute__ ((__nonnull__ (1)));
66
67
68
69extern char *catgets (nl_catd __catalog, int __set, int __number,
70 __const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
71
72
73extern int catclose (nl_catd __catalog) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
74
75
76# 1 "../include/nl_types.h" 2
77# 25 "../locale/langinfo.h" 2
78
79# 1 "../include/bits/locale.h" 1
80# 1 "../locale/bits/locale.h" 1
81# 27 "../locale/bits/locale.h"
82enum
83{
84 __LC_CTYPE = 0,
85 __LC_NUMERIC = 1,
86 __LC_TIME = 2,
87 __LC_COLLATE = 3,
88 __LC_MONETARY = 4,
89 __LC_MESSAGES = 5,
90 __LC_ALL = 6,
91 __LC_PAPER = 7,
92 __LC_NAME = 8,
93 __LC_ADDRESS = 9,
94 __LC_TELEPHONE = 10,
95 __LC_MEASUREMENT = 11,
96 __LC_IDENTIFICATION = 12
97};
98# 1 "../include/bits/locale.h" 2
99# 27 "../locale/langinfo.h" 2
100
101
102
103# 42 "../locale/langinfo.h"
104enum
105{
106
107
108
109 ABDAY_1 = (((__LC_TIME) << 16) | (0)),
110
111 ABDAY_2,
112
113 ABDAY_3,
114
115 ABDAY_4,
116
117 ABDAY_5,
118
119 ABDAY_6,
120
121 ABDAY_7,
122
123
124
125 DAY_1,
126
127 DAY_2,
128
129 DAY_3,
130
131 DAY_4,
132
133 DAY_5,
134
135 DAY_6,
136
137 DAY_7,
138
139
140
141 ABMON_1,
142
143 ABMON_2,
144
145 ABMON_3,
146
147 ABMON_4,
148
149 ABMON_5,
150
151 ABMON_6,
152
153 ABMON_7,
154
155 ABMON_8,
156
157 ABMON_9,
158
159 ABMON_10,
160
161 ABMON_11,
162
163 ABMON_12,
164
165
166
167 MON_1,
168
169 MON_2,
170
171 MON_3,
172
173 MON_4,
174
175 MON_5,
176
177 MON_6,
178
179 MON_7,
180
181 MON_8,
182
183 MON_9,
184
185 MON_10,
186
187 MON_11,
188
189 MON_12,
190
191
192 AM_STR,
193
194 PM_STR,
195
196
197 D_T_FMT,
198
199 D_FMT,
200
201 T_FMT,
202
203 T_FMT_AMPM,
204
205
206 ERA,
207
208 __ERA_YEAR,
209
210
211
212 ERA_D_FMT,
213
214 ALT_DIGITS,
215
216 ERA_D_T_FMT,
217
218 ERA_T_FMT,
219
220
221 _NL_TIME_ERA_NUM_ENTRIES,
222 _NL_TIME_ERA_ENTRIES,
223
224 _NL_WABDAY_1,
225 _NL_WABDAY_2,
226 _NL_WABDAY_3,
227 _NL_WABDAY_4,
228 _NL_WABDAY_5,
229 _NL_WABDAY_6,
230 _NL_WABDAY_7,
231
232
233 _NL_WDAY_1,
234 _NL_WDAY_2,
235 _NL_WDAY_3,
236 _NL_WDAY_4,
237 _NL_WDAY_5,
238 _NL_WDAY_6,
239 _NL_WDAY_7,
240
241
242 _NL_WABMON_1,
243 _NL_WABMON_2,
244 _NL_WABMON_3,
245 _NL_WABMON_4,
246 _NL_WABMON_5,
247 _NL_WABMON_6,
248 _NL_WABMON_7,
249 _NL_WABMON_8,
250 _NL_WABMON_9,
251 _NL_WABMON_10,
252 _NL_WABMON_11,
253 _NL_WABMON_12,
254
255
256 _NL_WMON_1,
257 _NL_WMON_2,
258 _NL_WMON_3,
259 _NL_WMON_4,
260 _NL_WMON_5,
261 _NL_WMON_6,
262 _NL_WMON_7,
263 _NL_WMON_8,
264 _NL_WMON_9,
265 _NL_WMON_10,
266 _NL_WMON_11,
267 _NL_WMON_12,
268
269 _NL_WAM_STR,
270 _NL_WPM_STR,
271
272 _NL_WD_T_FMT,
273 _NL_WD_FMT,
274 _NL_WT_FMT,
275 _NL_WT_FMT_AMPM,
276
277 _NL_WERA_YEAR,
278 _NL_WERA_D_FMT,
279 _NL_WALT_DIGITS,
280 _NL_WERA_D_T_FMT,
281 _NL_WERA_T_FMT,
282
283 _NL_TIME_WEEK_NDAYS,
284 _NL_TIME_WEEK_1STDAY,
285 _NL_TIME_WEEK_1STWEEK,
286 _NL_TIME_FIRST_WEEKDAY,
287 _NL_TIME_FIRST_WORKDAY,
288 _NL_TIME_CAL_DIRECTION,
289 _NL_TIME_TIMEZONE,
290
291 _DATE_FMT,
292
293 _NL_W_DATE_FMT,
294
295 _NL_TIME_CODESET,
296
297 _NL_NUM_LC_TIME,
298
299
300
301
302 _NL_COLLATE_NRULES = (((__LC_COLLATE) << 16) | (0)),
303 _NL_COLLATE_RULESETS,
304 _NL_COLLATE_TABLEMB,
305 _NL_COLLATE_WEIGHTMB,
306 _NL_COLLATE_EXTRAMB,
307 _NL_COLLATE_INDIRECTMB,
308 _NL_COLLATE_GAP1,
309 _NL_COLLATE_GAP2,
310 _NL_COLLATE_GAP3,
311 _NL_COLLATE_TABLEWC,
312 _NL_COLLATE_WEIGHTWC,
313 _NL_COLLATE_EXTRAWC,
314 _NL_COLLATE_INDIRECTWC,
315 _NL_COLLATE_SYMB_HASH_SIZEMB,
316 _NL_COLLATE_SYMB_TABLEMB,
317 _NL_COLLATE_SYMB_EXTRAMB,
318 _NL_COLLATE_COLLSEQMB,
319 _NL_COLLATE_COLLSEQWC,
320 _NL_COLLATE_CODESET,
321 _NL_NUM_LC_COLLATE,
322
323
324
325
326 _NL_CTYPE_CLASS = (((__LC_CTYPE) << 16) | (0)),
327 _NL_CTYPE_TOUPPER,
328 _NL_CTYPE_GAP1,
329 _NL_CTYPE_TOLOWER,
330 _NL_CTYPE_GAP2,
331 _NL_CTYPE_CLASS32,
332 _NL_CTYPE_GAP3,
333 _NL_CTYPE_GAP4,
334 _NL_CTYPE_GAP5,
335 _NL_CTYPE_GAP6,
336 _NL_CTYPE_CLASS_NAMES,
337 _NL_CTYPE_MAP_NAMES,
338 _NL_CTYPE_WIDTH,
339 _NL_CTYPE_MB_CUR_MAX,
340 _NL_CTYPE_CODESET_NAME,
341 CODESET = _NL_CTYPE_CODESET_NAME,
342
343 _NL_CTYPE_TOUPPER32,
344 _NL_CTYPE_TOLOWER32,
345 _NL_CTYPE_CLASS_OFFSET,
346 _NL_CTYPE_MAP_OFFSET,
347 _NL_CTYPE_INDIGITS_MB_LEN,
348 _NL_CTYPE_INDIGITS0_MB,
349 _NL_CTYPE_INDIGITS1_MB,
350 _NL_CTYPE_INDIGITS2_MB,
351 _NL_CTYPE_INDIGITS3_MB,
352 _NL_CTYPE_INDIGITS4_MB,
353 _NL_CTYPE_INDIGITS5_MB,
354 _NL_CTYPE_INDIGITS6_MB,
355 _NL_CTYPE_INDIGITS7_MB,
356 _NL_CTYPE_INDIGITS8_MB,
357 _NL_CTYPE_INDIGITS9_MB,
358 _NL_CTYPE_INDIGITS_WC_LEN,
359 _NL_CTYPE_INDIGITS0_WC,
360 _NL_CTYPE_INDIGITS1_WC,
361 _NL_CTYPE_INDIGITS2_WC,
362 _NL_CTYPE_INDIGITS3_WC,
363 _NL_CTYPE_INDIGITS4_WC,
364 _NL_CTYPE_INDIGITS5_WC,
365 _NL_CTYPE_INDIGITS6_WC,
366 _NL_CTYPE_INDIGITS7_WC,
367 _NL_CTYPE_INDIGITS8_WC,
368 _NL_CTYPE_INDIGITS9_WC,
369 _NL_CTYPE_OUTDIGIT0_MB,
370 _NL_CTYPE_OUTDIGIT1_MB,
371 _NL_CTYPE_OUTDIGIT2_MB,
372 _NL_CTYPE_OUTDIGIT3_MB,
373 _NL_CTYPE_OUTDIGIT4_MB,
374 _NL_CTYPE_OUTDIGIT5_MB,
375 _NL_CTYPE_OUTDIGIT6_MB,
376 _NL_CTYPE_OUTDIGIT7_MB,
377 _NL_CTYPE_OUTDIGIT8_MB,
378 _NL_CTYPE_OUTDIGIT9_MB,
379 _NL_CTYPE_OUTDIGIT0_WC,
380 _NL_CTYPE_OUTDIGIT1_WC,
381 _NL_CTYPE_OUTDIGIT2_WC,
382 _NL_CTYPE_OUTDIGIT3_WC,
383 _NL_CTYPE_OUTDIGIT4_WC,
384 _NL_CTYPE_OUTDIGIT5_WC,
385 _NL_CTYPE_OUTDIGIT6_WC,
386 _NL_CTYPE_OUTDIGIT7_WC,
387 _NL_CTYPE_OUTDIGIT8_WC,
388 _NL_CTYPE_OUTDIGIT9_WC,
389 _NL_CTYPE_TRANSLIT_TAB_SIZE,
390 _NL_CTYPE_TRANSLIT_FROM_IDX,
391 _NL_CTYPE_TRANSLIT_FROM_TBL,
392 _NL_CTYPE_TRANSLIT_TO_IDX,
393 _NL_CTYPE_TRANSLIT_TO_TBL,
394 _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN,
395 _NL_CTYPE_TRANSLIT_DEFAULT_MISSING,
396 _NL_CTYPE_TRANSLIT_IGNORE_LEN,
397 _NL_CTYPE_TRANSLIT_IGNORE,
398 _NL_CTYPE_MAP_TO_NONASCII,
399 _NL_CTYPE_EXTRA_MAP_1,
400 _NL_CTYPE_EXTRA_MAP_2,
401 _NL_CTYPE_EXTRA_MAP_3,
402 _NL_CTYPE_EXTRA_MAP_4,
403 _NL_CTYPE_EXTRA_MAP_5,
404 _NL_CTYPE_EXTRA_MAP_6,
405 _NL_CTYPE_EXTRA_MAP_7,
406 _NL_CTYPE_EXTRA_MAP_8,
407 _NL_CTYPE_EXTRA_MAP_9,
408 _NL_CTYPE_EXTRA_MAP_10,
409 _NL_CTYPE_EXTRA_MAP_11,
410 _NL_CTYPE_EXTRA_MAP_12,
411 _NL_CTYPE_EXTRA_MAP_13,
412 _NL_CTYPE_EXTRA_MAP_14,
413 _NL_NUM_LC_CTYPE,
414
415
416
417
418 __INT_CURR_SYMBOL = (((__LC_MONETARY) << 16) | (0)),
419
420
421
422 __CURRENCY_SYMBOL,
423
424
425
426 __MON_DECIMAL_POINT,
427
428
429
430 __MON_THOUSANDS_SEP,
431
432
433
434 __MON_GROUPING,
435
436
437
438 __POSITIVE_SIGN,
439
440
441
442 __NEGATIVE_SIGN,
443
444
445
446 __INT_FRAC_DIGITS,
447
448
449
450 __FRAC_DIGITS,
451
452
453
454 __P_CS_PRECEDES,
455
456
457
458 __P_SEP_BY_SPACE,
459
460
461
462 __N_CS_PRECEDES,
463
464
465
466 __N_SEP_BY_SPACE,
467
468
469
470 __P_SIGN_POSN,
471
472
473
474 __N_SIGN_POSN,
475
476
477
478 _NL_MONETARY_CRNCYSTR,
479
480 __INT_P_CS_PRECEDES,
481
482
483
484 __INT_P_SEP_BY_SPACE,
485
486
487
488 __INT_N_CS_PRECEDES,
489
490
491
492 __INT_N_SEP_BY_SPACE,
493
494
495
496 __INT_P_SIGN_POSN,
497
498
499
500 __INT_N_SIGN_POSN,
501
502
503
504 _NL_MONETARY_DUO_INT_CURR_SYMBOL,
505 _NL_MONETARY_DUO_CURRENCY_SYMBOL,
506 _NL_MONETARY_DUO_INT_FRAC_DIGITS,
507 _NL_MONETARY_DUO_FRAC_DIGITS,
508 _NL_MONETARY_DUO_P_CS_PRECEDES,
509 _NL_MONETARY_DUO_P_SEP_BY_SPACE,
510 _NL_MONETARY_DUO_N_CS_PRECEDES,
511 _NL_MONETARY_DUO_N_SEP_BY_SPACE,
512 _NL_MONETARY_DUO_INT_P_CS_PRECEDES,
513 _NL_MONETARY_DUO_INT_P_SEP_BY_SPACE,
514 _NL_MONETARY_DUO_INT_N_CS_PRECEDES,
515 _NL_MONETARY_DUO_INT_N_SEP_BY_SPACE,
516 _NL_MONETARY_DUO_P_SIGN_POSN,
517 _NL_MONETARY_DUO_N_SIGN_POSN,
518 _NL_MONETARY_DUO_INT_P_SIGN_POSN,
519 _NL_MONETARY_DUO_INT_N_SIGN_POSN,
520 _NL_MONETARY_UNO_VALID_FROM,
521 _NL_MONETARY_UNO_VALID_TO,
522 _NL_MONETARY_DUO_VALID_FROM,
523 _NL_MONETARY_DUO_VALID_TO,
524 _NL_MONETARY_CONVERSION_RATE,
525 _NL_MONETARY_DECIMAL_POINT_WC,
526 _NL_MONETARY_THOUSANDS_SEP_WC,
527 _NL_MONETARY_CODESET,
528 _NL_NUM_LC_MONETARY,
529
530
531
532 __DECIMAL_POINT = (((__LC_NUMERIC) << 16) | (0)),
533
534
535
536 RADIXCHAR = __DECIMAL_POINT,
537
538 __THOUSANDS_SEP,
539
540
541
542 THOUSEP = __THOUSANDS_SEP,
543
544 __GROUPING,
545
546
547
548 _NL_NUMERIC_DECIMAL_POINT_WC,
549 _NL_NUMERIC_THOUSANDS_SEP_WC,
550 _NL_NUMERIC_CODESET,
551 _NL_NUM_LC_NUMERIC,
552
553 __YESEXPR = (((__LC_MESSAGES) << 16) | (0)),
554
555 __NOEXPR,
556
557 __YESSTR,
558
559
560
561 __NOSTR,
562
563
564
565 _NL_MESSAGES_CODESET,
566 _NL_NUM_LC_MESSAGES,
567
568 _NL_PAPER_HEIGHT = (((__LC_PAPER) << 16) | (0)),
569 _NL_PAPER_WIDTH,
570 _NL_PAPER_CODESET,
571 _NL_NUM_LC_PAPER,
572
573 _NL_NAME_NAME_FMT = (((__LC_NAME) << 16) | (0)),
574 _NL_NAME_NAME_GEN,
575 _NL_NAME_NAME_MR,
576 _NL_NAME_NAME_MRS,
577 _NL_NAME_NAME_MISS,
578 _NL_NAME_NAME_MS,
579 _NL_NAME_CODESET,
580 _NL_NUM_LC_NAME,
581
582 _NL_ADDRESS_POSTAL_FMT = (((__LC_ADDRESS) << 16) | (0)),
583 _NL_ADDRESS_COUNTRY_NAME,
584 _NL_ADDRESS_COUNTRY_POST,
585 _NL_ADDRESS_COUNTRY_AB2,
586 _NL_ADDRESS_COUNTRY_AB3,
587 _NL_ADDRESS_COUNTRY_CAR,
588 _NL_ADDRESS_COUNTRY_NUM,
589 _NL_ADDRESS_COUNTRY_ISBN,
590 _NL_ADDRESS_LANG_NAME,
591 _NL_ADDRESS_LANG_AB,
592 _NL_ADDRESS_LANG_TERM,
593 _NL_ADDRESS_LANG_LIB,
594 _NL_ADDRESS_CODESET,
595 _NL_NUM_LC_ADDRESS,
596
597 _NL_TELEPHONE_TEL_INT_FMT = (((__LC_TELEPHONE) << 16) | (0)),
598 _NL_TELEPHONE_TEL_DOM_FMT,
599 _NL_TELEPHONE_INT_SELECT,
600 _NL_TELEPHONE_INT_PREFIX,
601 _NL_TELEPHONE_CODESET,
602 _NL_NUM_LC_TELEPHONE,
603
604 _NL_MEASUREMENT_MEASUREMENT = (((__LC_MEASUREMENT) << 16) | (0)),
605 _NL_MEASUREMENT_CODESET,
606 _NL_NUM_LC_MEASUREMENT,
607
608 _NL_IDENTIFICATION_TITLE = (((__LC_IDENTIFICATION) << 16) | (0)),
609 _NL_IDENTIFICATION_SOURCE,
610 _NL_IDENTIFICATION_ADDRESS,
611 _NL_IDENTIFICATION_CONTACT,
612 _NL_IDENTIFICATION_EMAIL,
613 _NL_IDENTIFICATION_TEL,
614 _NL_IDENTIFICATION_FAX,
615 _NL_IDENTIFICATION_LANGUAGE,
616 _NL_IDENTIFICATION_TERRITORY,
617 _NL_IDENTIFICATION_AUDIENCE,
618 _NL_IDENTIFICATION_APPLICATION,
619 _NL_IDENTIFICATION_ABBREVIATION,
620 _NL_IDENTIFICATION_REVISION,
621 _NL_IDENTIFICATION_DATE,
622 _NL_IDENTIFICATION_CATEGORY,
623 _NL_IDENTIFICATION_CODESET,
624 _NL_NUM_LC_IDENTIFICATION,
625
626
627 _NL_NUM
628};
629# 582 "../locale/langinfo.h"
630extern char *nl_langinfo (nl_item __item) __attribute__ ((__nothrow__));
631
632
633
634
635
636
637
638# 1 "../include/xlocale.h" 1
639# 1 "../locale/xlocale.h" 1
640# 28 "../locale/xlocale.h"
641typedef struct __locale_struct
642{
643
644 struct locale_data *__locales[13];
645
646
647 const unsigned short int *__ctype_b;
648 const int *__ctype_tolower;
649 const int *__ctype_toupper;
650
651
652 const char *__names[13];
653} *__locale_t;
654# 1 "../include/xlocale.h" 2
655# 591 "../locale/langinfo.h" 2
656
657
658extern char *nl_langinfo_l (nl_item __item, __locale_t l);
659
660
661
662# 4 "../include/langinfo.h" 2
663
664
665
666extern __typeof (nl_langinfo_l) __nl_langinfo_l;
667# 25 "../locale/localeinfo.h" 2
668# 1 "../include/limits.h" 1
669# 125 "../include/limits.h"
670# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/limits.h" 1 3 4
671# 126 "../include/limits.h" 2
672# 145 "../include/limits.h"
673# 1 "../include/bits/posix1_lim.h" 1
674# 1 "../posix/bits/posix1_lim.h" 1
675# 153 "../posix/bits/posix1_lim.h"
676# 1 "../nptl/sysdeps/unix/sysv/linux/bits/local_lim.h" 1
677# 36 "../nptl/sysdeps/unix/sysv/linux/bits/local_lim.h"
678# 1 "/usr/include/linux/limits.h" 1 3 4
679# 37 "../nptl/sysdeps/unix/sysv/linux/bits/local_lim.h" 2
680# 154 "../posix/bits/posix1_lim.h" 2
681# 1 "../include/bits/posix1_lim.h" 2
682# 146 "../include/limits.h" 2
683
684
685
686# 1 "../include/bits/posix2_lim.h" 1
687# 1 "../posix/bits/posix2_lim.h" 1
688# 1 "../include/bits/posix2_lim.h" 2
689# 150 "../include/limits.h" 2
690
691
692
693# 1 "../include/bits/xopen_lim.h" 1
694# 34 "../include/bits/xopen_lim.h"
695# 1 "/var/tmp/portage/glibc-2.5/work/build-default-hppa2.0-unknown-linux-gnu-nptl/bits/stdio_lim.h" 1
696# 35 "../include/bits/xopen_lim.h" 2
697# 154 "../include/limits.h" 2
698# 26 "../locale/localeinfo.h" 2
699# 1 "../include/locale.h" 1
700
701# 1 "../locale/locale.h" 1
702# 29 "../locale/locale.h"
703# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
704# 30 "../locale/locale.h" 2
705# 1 "../include/bits/locale.h" 1
706# 1 "../locale/bits/locale.h" 1
707# 1 "../include/bits/locale.h" 2
708# 31 "../locale/locale.h" 2
709
710
711# 52 "../locale/locale.h"
712struct lconv
713{
714
715
716 char *decimal_point;
717 char *thousands_sep;
718
719
720
721
722
723 char *grouping;
724
725
726
727
728
729 char *int_curr_symbol;
730 char *currency_symbol;
731 char *mon_decimal_point;
732 char *mon_thousands_sep;
733 char *mon_grouping;
734 char *positive_sign;
735 char *negative_sign;
736 char int_frac_digits;
737 char frac_digits;
738
739 char p_cs_precedes;
740
741 char p_sep_by_space;
742
743 char n_cs_precedes;
744
745 char n_sep_by_space;
746
747
748
749
750
751
752 char p_sign_posn;
753 char n_sign_posn;
754
755
756 char int_p_cs_precedes;
757
758 char int_p_sep_by_space;
759
760 char int_n_cs_precedes;
761
762 char int_n_sep_by_space;
763
764
765
766
767
768
769 char int_p_sign_posn;
770 char int_n_sign_posn;
771# 119 "../locale/locale.h"
772};
773
774
775
776
777
778extern char *setlocale (int __category, __const char *__locale) __attribute__ ((__nothrow__));
779
780
781extern struct lconv *localeconv (void) __attribute__ ((__nothrow__));
782
783
784# 146 "../locale/locale.h"
785# 1 "../include/xlocale.h" 1
786# 147 "../locale/locale.h" 2
787
788typedef __locale_t locale_t;
789
790
791
792
793
794extern __locale_t newlocale (int __category_mask, __const char *__locale,
795 __locale_t __base) __attribute__ ((__nothrow__));
796# 189 "../locale/locale.h"
797extern __locale_t duplocale (__locale_t __dataset) __attribute__ ((__nothrow__));
798
799
800
801extern void freelocale (__locale_t __dataset) __attribute__ ((__nothrow__));
802
803
804
805
806
807
808extern __locale_t uselocale (__locale_t __dataset) __attribute__ ((__nothrow__));
809
810
811
812
813
814
815
816
817# 3 "../include/locale.h" 2
818
819extern __typeof (uselocale) __uselocale;
820
821
822
823
824
825
826extern struct loaded_l10nfile *_nl_locale_file_list[] ;
827
828
829extern const struct __locale_struct _nl_C_locobj ;
830
831
832
833extern struct lconv *__localeconv (void);
834
835
836extern const char *__current_locale_name (int category) ;
837# 27 "../locale/localeinfo.h" 2
838# 1 "../include/time.h" 1
839
840
841
842
843# 1 "../time/time.h" 1
844# 31 "../time/time.h"
845
846
847
848
849
850
851
852
853# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
854# 40 "../time/time.h" 2
855
856
857
858# 1 "../bits/time.h" 1
859# 44 "../time/time.h" 2
860# 57 "../time/time.h"
861# 1 "../bits/types.h" 1
862# 28 "../bits/types.h"
863# 1 "../sysdeps/wordsize-32/bits/wordsize.h" 1
864# 29 "../bits/types.h" 2
865
866
867# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
868# 32 "../bits/types.h" 2
869
870
871typedef unsigned char __u_char;
872typedef unsigned short int __u_short;
873typedef unsigned int __u_int;
874typedef unsigned long int __u_long;
875
876
877typedef signed char __int8_t;
878typedef unsigned char __uint8_t;
879typedef signed short int __int16_t;
880typedef unsigned short int __uint16_t;
881typedef signed int __int32_t;
882typedef unsigned int __uint32_t;
883
884
885
886
887__extension__ typedef signed long long int __int64_t;
888__extension__ typedef unsigned long long int __uint64_t;
889
890
891
892
893
894
895
896__extension__ typedef long long int __quad_t;
897__extension__ typedef unsigned long long int __u_quad_t;
898# 134 "../bits/types.h"
899# 1 "../bits/typesizes.h" 1
900# 135 "../bits/types.h" 2
901
902
903__extension__ typedef __u_quad_t __dev_t;
904__extension__ typedef unsigned int __uid_t;
905__extension__ typedef unsigned int __gid_t;
906__extension__ typedef unsigned long int __ino_t;
907__extension__ typedef __u_quad_t __ino64_t;
908__extension__ typedef unsigned int __mode_t;
909__extension__ typedef unsigned int __nlink_t;
910__extension__ typedef long int __off_t;
911__extension__ typedef __quad_t __off64_t;
912__extension__ typedef int __pid_t;
913__extension__ typedef struct { int __val[2]; } __fsid_t;
914__extension__ typedef long int __clock_t;
915__extension__ typedef unsigned long int __rlim_t;
916__extension__ typedef __u_quad_t __rlim64_t;
917__extension__ typedef unsigned int __id_t;
918__extension__ typedef long int __time_t;
919__extension__ typedef unsigned int __useconds_t;
920__extension__ typedef long int __suseconds_t;
921
922__extension__ typedef int __daddr_t;
923__extension__ typedef long int __swblk_t;
924__extension__ typedef int __key_t;
925
926
927__extension__ typedef int __clockid_t;
928
929
930__extension__ typedef void * __timer_t;
931
932
933__extension__ typedef long int __blksize_t;
934
935
936
937
938__extension__ typedef long int __blkcnt_t;
939__extension__ typedef __quad_t __blkcnt64_t;
940
941
942__extension__ typedef unsigned long int __fsblkcnt_t;
943__extension__ typedef __u_quad_t __fsblkcnt64_t;
944
945
946__extension__ typedef unsigned long int __fsfilcnt_t;
947__extension__ typedef __u_quad_t __fsfilcnt64_t;
948
949__extension__ typedef int __ssize_t;
950
951
952
953typedef __off64_t __loff_t;
954typedef __quad_t *__qaddr_t;
955typedef char *__caddr_t;
956
957
958__extension__ typedef int __intptr_t;
959
960
961__extension__ typedef unsigned int __socklen_t;
962# 58 "../time/time.h" 2
963
964
965
966typedef __clock_t clock_t;
967
968
969
970# 75 "../time/time.h"
971
972
973typedef __time_t time_t;
974
975
976
977# 93 "../time/time.h"
978typedef __clockid_t clockid_t;
979# 105 "../time/time.h"
980typedef __timer_t timer_t;
981# 121 "../time/time.h"
982struct timespec
983 {
984 __time_t tv_sec;
985 long int tv_nsec;
986 };
987
988
989
990
991
992
993
994
995struct tm
996{
997 int tm_sec;
998 int tm_min;
999 int tm_hour;
1000 int tm_mday;
1001 int tm_mon;
1002 int tm_year;
1003 int tm_wday;
1004 int tm_yday;
1005 int tm_isdst;
1006
1007
1008 long int tm_gmtoff;
1009 __const char *tm_zone;
1010
1011
1012
1013
1014};
1015
1016
1017
1018
1019
1020
1021
1022
1023struct itimerspec
1024 {
1025 struct timespec it_interval;
1026 struct timespec it_value;
1027 };
1028
1029
1030struct sigevent;
1031
1032
1033
1034
1035
1036typedef __pid_t pid_t;
1037
1038
1039
1040
1041
1042
1043
1044
1045extern clock_t clock (void) __attribute__ ((__nothrow__));
1046
1047
1048extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));
1049
1050
1051extern double difftime (time_t __time1, time_t __time0)
1052 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
1053
1054
1055extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));
1056
1057
1058
1059
1060
1061extern size_t strftime (char *__restrict __s, size_t __maxsize,
1062 __const char *__restrict __format,
1063 __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
1064
1065
1066
1067
1068
1069extern char *strptime (__const char *__restrict __s,
1070 __const char *__restrict __fmt, struct tm *__tp)
1071 __attribute__ ((__nothrow__));
1072
1073
1074
1075
1076
1077# 1 "../include/xlocale.h" 1
1078# 217 "../time/time.h" 2
1079
1080extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
1081 __const char *__restrict __format,
1082 __const struct tm *__restrict __tp,
1083 __locale_t __loc) __attribute__ ((__nothrow__));
1084
1085extern char *strptime_l (__const char *__restrict __s,
1086 __const char *__restrict __fmt, struct tm *__tp,
1087 __locale_t __loc) __attribute__ ((__nothrow__));
1088
1089
1090
1091
1092
1093
1094extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));
1095
1096
1097
1098extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));
1099
1100
1101
1102
1103
1104extern struct tm *gmtime_r (__const time_t *__restrict __timer,
1105 struct tm *__restrict __tp) __attribute__ ((__nothrow__));
1106
1107
1108
1109extern struct tm *localtime_r (__const time_t *__restrict __timer,
1110 struct tm *__restrict __tp) __attribute__ ((__nothrow__));
1111
1112
1113
1114
1115
1116extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));
1117
1118
1119extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));
1120
1121
1122
1123
1124
1125
1126
1127extern char *asctime_r (__const struct tm *__restrict __tp,
1128 char *__restrict __buf) __attribute__ ((__nothrow__));
1129
1130
1131extern char *ctime_r (__const time_t *__restrict __timer,
1132 char *__restrict __buf) __attribute__ ((__nothrow__));
1133
1134
1135
1136
1137extern char *__tzname[2];
1138extern int __daylight;
1139extern long int __timezone;
1140
1141
1142
1143
1144extern char *tzname[2];
1145
1146
1147
1148extern void tzset (void) __attribute__ ((__nothrow__));
1149
1150
1151
1152extern int daylight;
1153extern long int timezone;
1154
1155
1156
1157
1158
1159extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
1160# 312 "../time/time.h"
1161extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));
1162
1163
1164extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));
1165
1166
1167extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
1168# 327 "../time/time.h"
1169extern int nanosleep (__const struct timespec *__requested_time,
1170 struct timespec *__remaining);
1171
1172
1173
1174extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));
1175
1176
1177extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));
1178
1179
1180extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
1181 __attribute__ ((__nothrow__));
1182
1183
1184
1185
1186
1187
1188extern int clock_nanosleep (clockid_t __clock_id, int __flags,
1189 __const struct timespec *__req,
1190 struct timespec *__rem);
1191
1192
1193extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));
1194
1195
1196
1197
1198extern int timer_create (clockid_t __clock_id,
1199 struct sigevent *__restrict __evp,
1200 timer_t *__restrict __timerid) __attribute__ ((__nothrow__));
1201
1202
1203extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));
1204
1205
1206extern int timer_settime (timer_t __timerid, int __flags,
1207 __const struct itimerspec *__restrict __value,
1208 struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));
1209
1210
1211extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
1212 __attribute__ ((__nothrow__));
1213
1214
1215extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
1216# 389 "../time/time.h"
1217extern int getdate_err;
1218# 398 "../time/time.h"
1219extern struct tm *getdate (__const char *__string);
1220# 412 "../time/time.h"
1221extern int getdate_r (__const char *__restrict __string,
1222 struct tm *__restrict __resbufp);
1223
1224
1225
1226# 6 "../include/time.h" 2
1227# 1 "../include/xlocale.h" 1
1228# 7 "../include/time.h" 2
1229
1230
1231
1232extern __typeof (strftime_l) __strftime_l;
1233
1234extern __typeof (strptime_l) __strptime_l;
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247struct tm;
1248
1249
1250extern const unsigned short int __mon_yday[2][13] ;
1251
1252
1253extern struct tm _tmbuf ;
1254
1255
1256extern char *__tzstring (const char *string);
1257
1258
1259extern size_t __tzname_cur_max ;
1260
1261
1262extern int __use_tzfile ;
1263
1264extern void __tzfile_read (const char *file, size_t extra,
1265 char **extrap);
1266extern void __tzfile_compute (time_t timer, int use_localtime,
1267 long int *leap_correct, int *leap_hit,
1268 struct tm *tp);
1269extern void __tzfile_default (const char *std, const char *dst,
1270 long int stdoff, long int dstoff);
1271
1272
1273
1274
1275extern time_t __mktime_internal (struct tm *__tp,
1276 struct tm *(*__func) (const time_t *,
1277 struct tm *),
1278 time_t *__offset);
1279extern struct tm *__localtime_r (__const time_t *__timer,
1280 struct tm *__tp) ;
1281
1282extern struct tm *__gmtime_r (__const time_t *__restrict __timer,
1283 struct tm *__restrict __tp);
1284
1285
1286
1287
1288
1289
1290extern int __offtime (__const time_t *__timer,
1291 long int __offset,
1292 struct tm *__tp);
1293
1294extern char *__asctime_r (__const struct tm *__tp, char *__buf);
1295extern void __tzset (void);
1296
1297
1298extern struct tm *__tz_convert (const time_t *timer, int use_localtime, struct tm *tp);
1299
1300
1301
1302extern long int __tzname_max (void);
1303
1304extern int __nanosleep (__const struct timespec *__requested_time,
1305 struct timespec *__remaining);
1306
1307extern int __nanosleep_nocancel (__const struct timespec *__requested_time,
1308 struct timespec *__remaining)
1309 ;
1310extern int __getdate_r (__const char *__string, struct tm *__resbufp);
1311
1312
1313
1314extern int __getclktck (void);
1315
1316
1317
1318
1319
1320
1321enum ptime_locale_status { not, loc, raw };
1322
1323extern char * __strptime_internal (const char *rp, const char *fmt,
1324 struct tm *tm,
1325 enum ptime_locale_status *decided,
1326 int era_cnt, __locale_t locparam)
1327 ;
1328
1329
1330extern double __difftime (time_t time1, time_t time0);
1331# 117 "../include/time.h"
1332
1333# 28 "../locale/localeinfo.h" 2
1334# 1 "../sysdeps/generic/stdint.h" 1
1335# 27 "../sysdeps/generic/stdint.h"
1336# 1 "../bits/wchar.h" 1
1337# 28 "../sysdeps/generic/stdint.h" 2
1338# 1 "../sysdeps/wordsize-32/bits/wordsize.h" 1
1339# 29 "../sysdeps/generic/stdint.h" 2
1340# 37 "../sysdeps/generic/stdint.h"
1341typedef signed char int8_t;
1342typedef short int int16_t;
1343typedef int int32_t;
1344
1345
1346
1347__extension__
1348typedef long long int int64_t;
1349
1350
1351
1352
1353typedef unsigned char uint8_t;
1354typedef unsigned short int uint16_t;
1355
1356typedef unsigned int uint32_t;
1357
1358
1359
1360
1361
1362__extension__
1363typedef unsigned long long int uint64_t;
1364
1365
1366
1367
1368
1369
1370typedef signed char int_least8_t;
1371typedef short int int_least16_t;
1372typedef int int_least32_t;
1373
1374
1375
1376__extension__
1377typedef long long int int_least64_t;
1378
1379
1380
1381typedef unsigned char uint_least8_t;
1382typedef unsigned short int uint_least16_t;
1383typedef unsigned int uint_least32_t;
1384
1385
1386
1387__extension__
1388typedef unsigned long long int uint_least64_t;
1389
1390
1391
1392
1393
1394
1395typedef signed char int_fast8_t;
1396
1397
1398
1399
1400
1401typedef int int_fast16_t;
1402typedef int int_fast32_t;
1403__extension__
1404typedef long long int int_fast64_t;
1405
1406
1407
1408typedef unsigned char uint_fast8_t;
1409
1410
1411
1412
1413
1414typedef unsigned int uint_fast16_t;
1415typedef unsigned int uint_fast32_t;
1416__extension__
1417typedef unsigned long long int uint_fast64_t;
1418# 126 "../sysdeps/generic/stdint.h"
1419typedef int intptr_t;
1420
1421
1422typedef unsigned int uintptr_t;
1423# 138 "../sysdeps/generic/stdint.h"
1424__extension__
1425typedef long long int intmax_t;
1426__extension__
1427typedef unsigned long long int uintmax_t;
1428# 29 "../locale/localeinfo.h" 2
1429# 1 "../include/sys/types.h" 1
1430# 1 "../posix/sys/types.h" 1
1431# 29 "../posix/sys/types.h"
1432
1433
1434
1435
1436
1437
1438typedef __u_char u_char;
1439typedef __u_short u_short;
1440typedef __u_int u_int;
1441typedef __u_long u_long;
1442typedef __quad_t quad_t;
1443typedef __u_quad_t u_quad_t;
1444typedef __fsid_t fsid_t;
1445
1446
1447
1448
1449typedef __loff_t loff_t;
1450
1451
1452
1453typedef __ino_t ino_t;
1454
1455
1456
1457
1458
1459
1460typedef __ino64_t ino64_t;
1461
1462
1463
1464
1465typedef __dev_t dev_t;
1466
1467
1468
1469
1470typedef __gid_t gid_t;
1471
1472
1473
1474
1475typedef __mode_t mode_t;
1476
1477
1478
1479
1480typedef __nlink_t nlink_t;
1481
1482
1483
1484
1485typedef __uid_t uid_t;
1486
1487
1488
1489
1490
1491typedef __off_t off_t;
1492
1493
1494
1495
1496
1497
1498typedef __off64_t off64_t;
1499# 105 "../posix/sys/types.h"
1500typedef __id_t id_t;
1501
1502
1503
1504
1505typedef __ssize_t ssize_t;
1506
1507
1508
1509
1510
1511typedef __daddr_t daddr_t;
1512typedef __caddr_t caddr_t;
1513
1514
1515
1516
1517
1518typedef __key_t key_t;
1519# 137 "../posix/sys/types.h"
1520typedef __useconds_t useconds_t;
1521
1522
1523
1524typedef __suseconds_t suseconds_t;
1525
1526
1527
1528
1529
1530# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
1531# 148 "../posix/sys/types.h" 2
1532
1533
1534
1535typedef unsigned long int ulong;
1536typedef unsigned short int ushort;
1537typedef unsigned int uint;
1538# 201 "../posix/sys/types.h"
1539typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
1540typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
1541typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
1542typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
1543
1544typedef int register_t __attribute__ ((__mode__ (__word__)));
1545# 217 "../posix/sys/types.h"
1546# 1 "../include/endian.h" 1
1547# 1 "../string/endian.h" 1
1548# 37 "../string/endian.h"
1549# 1 "../ports/sysdeps/hppa/bits/endian.h" 1
1550# 38 "../string/endian.h" 2
1551# 2 "../include/endian.h" 2
1552# 218 "../posix/sys/types.h" 2
1553
1554
1555# 1 "../include/sys/select.h" 1
1556
1557# 1 "../misc/sys/select.h" 1
1558# 31 "../misc/sys/select.h"
1559# 1 "../bits/select.h" 1
1560# 32 "../misc/sys/select.h" 2
1561
1562
1563# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
1564# 23 "../sysdeps/unix/sysv/linux/bits/sigset.h"
1565typedef int __sig_atomic_t;
1566
1567
1568
1569
1570typedef struct
1571 {
1572 unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
1573 } __sigset_t;
1574# 35 "../misc/sys/select.h" 2
1575
1576
1577
1578typedef __sigset_t sigset_t;
1579
1580
1581
1582
1583
1584
1585
1586# 1 "../bits/time.h" 1
1587# 69 "../bits/time.h"
1588struct timeval
1589 {
1590 __time_t tv_sec;
1591 __suseconds_t tv_usec;
1592 };
1593# 47 "../misc/sys/select.h" 2
1594# 55 "../misc/sys/select.h"
1595typedef long int __fd_mask;
1596# 67 "../misc/sys/select.h"
1597typedef struct
1598 {
1599
1600
1601
1602 __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
1603
1604
1605
1606
1607
1608 } fd_set;
1609
1610
1611
1612
1613
1614
1615typedef __fd_mask fd_mask;
1616# 99 "../misc/sys/select.h"
1617
1618# 109 "../misc/sys/select.h"
1619extern int select (int __nfds, fd_set *__restrict __readfds,
1620 fd_set *__restrict __writefds,
1621 fd_set *__restrict __exceptfds,
1622 struct timeval *__restrict __timeout);
1623# 121 "../misc/sys/select.h"
1624extern int pselect (int __nfds, fd_set *__restrict __readfds,
1625 fd_set *__restrict __writefds,
1626 fd_set *__restrict __exceptfds,
1627 const struct timespec *__restrict __timeout,
1628 const __sigset_t *__restrict __sigmask);
1629
1630
1631
1632# 3 "../include/sys/select.h" 2
1633
1634
1635extern int __pselect (int __nfds, fd_set *__readfds,
1636 fd_set *__writefds, fd_set *__exceptfds,
1637 const struct timespec *__timeout,
1638 const __sigset_t *__sigmask);
1639
1640extern int __select (int __nfds, fd_set *__restrict __readfds,
1641 fd_set *__restrict __writefds,
1642 fd_set *__restrict __exceptfds,
1643 struct timeval *__restrict __timeout);
1644
1645# 221 "../posix/sys/types.h" 2
1646
1647
1648# 1 "../sysdeps/unix/sysv/linux/sys/sysmacros.h" 1
1649# 29 "../sysdeps/unix/sysv/linux/sys/sysmacros.h"
1650__extension__
1651extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
1652 __attribute__ ((__nothrow__));
1653__extension__
1654extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
1655 __attribute__ ((__nothrow__));
1656__extension__
1657extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
1658 unsigned int __minor)
1659 __attribute__ ((__nothrow__));
1660
1661
1662__extension__ extern __inline unsigned int
1663__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
1664{
1665 return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
1666}
1667
1668__extension__ extern __inline unsigned int
1669__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
1670{
1671 return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
1672}
1673
1674__extension__ extern __inline unsigned long long int
1675__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
1676{
1677 return ((__minor & 0xff) | ((__major & 0xfff) << 8)
1678 | (((unsigned long long int) (__minor & ~0xff)) << 12)
1679 | (((unsigned long long int) (__major & ~0xfff)) << 32));
1680}
1681# 224 "../posix/sys/types.h" 2
1682
1683
1684
1685
1686typedef __blksize_t blksize_t;
1687
1688
1689
1690
1691
1692
1693typedef __blkcnt_t blkcnt_t;
1694
1695
1696
1697typedef __fsblkcnt_t fsblkcnt_t;
1698
1699
1700
1701typedef __fsfilcnt_t fsfilcnt_t;
1702# 262 "../posix/sys/types.h"
1703typedef __blkcnt64_t blkcnt64_t;
1704typedef __fsblkcnt64_t fsblkcnt64_t;
1705typedef __fsfilcnt64_t fsfilcnt64_t;
1706
1707
1708
1709
1710
1711# 1 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h" 1
1712# 48 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h"
1713typedef unsigned long int pthread_t;
1714# 60 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h"
1715typedef union
1716{
1717 char __size[36];
1718 long int __align;
1719} pthread_attr_t;
1720
1721
1722typedef struct __pthread_internal_slist
1723{
1724 struct __pthread_internal_slist *__next;
1725} __pthread_slist_t;
1726
1727
1728
1729
1730typedef union
1731{
1732 struct __pthread_mutex_s
1733 {
1734 int __lock;
1735 unsigned int __count;
1736 int __owner;
1737
1738
1739 int __kind;
1740 unsigned int __nusers;
1741 __extension__ union
1742 {
1743 int __spins;
1744 __pthread_slist_t __list;
1745 };
1746 } __data;
1747 char __size[48];
1748 long int __align;
1749} pthread_mutex_t;
1750
1751typedef union
1752{
1753 char __size[4];
1754 long int __align;
1755} pthread_mutexattr_t;
1756
1757
1758
1759
1760typedef union
1761{
1762 struct
1763 {
1764 int __lock;
1765 unsigned int __futex;
1766 __extension__ unsigned long long int __total_seq;
1767 __extension__ unsigned long long int __wakeup_seq;
1768 __extension__ unsigned long long int __woken_seq;
1769 void *__mutex;
1770 unsigned int __nwaiters;
1771 unsigned int __broadcast_seq;
1772 } __data;
1773 char __size[64];
1774 __extension__ long long int __align;
1775} pthread_cond_t;
1776
1777typedef union
1778{
1779 char __size[4];
1780 long int __align;
1781} pthread_condattr_t;
1782
1783
1784
1785typedef unsigned int pthread_key_t;
1786
1787
1788
1789typedef int pthread_once_t;
1790
1791
1792
1793
1794
1795typedef union
1796{
1797 struct
1798 {
1799 int __lock;
1800 unsigned int __nr_readers;
1801 unsigned int __readers_wakeup;
1802 unsigned int __writer_wakeup;
1803 unsigned int __nr_readers_queued;
1804 unsigned int __nr_writers_queued;
1805
1806
1807 unsigned int __flags;
1808 int __writer;
1809 } __data;
1810 char __size[64];
1811 long int __align;
1812} pthread_rwlock_t;
1813
1814typedef union
1815{
1816 char __size[8];
1817 long int __align;
1818} pthread_rwlockattr_t;
1819
1820
1821
1822
1823
1824typedef volatile int pthread_spinlock_t;
1825
1826
1827
1828
1829typedef union
1830{
1831 char __size[48];
1832 long int __align;
1833} pthread_barrier_t;
1834
1835typedef union
1836{
1837 char __size[4];
1838 int __align;
1839} pthread_barrierattr_t;
1840# 271 "../posix/sys/types.h" 2
1841
1842
1843
1844# 1 "../include/sys/types.h" 2
1845# 30 "../locale/localeinfo.h" 2
1846
1847# 1 "../intl/loadinfo.h" 1
1848# 60 "../intl/loadinfo.h"
1849struct loaded_l10nfile
1850{
1851 const char *filename;
1852 int decided;
1853
1854 const void *data;
1855
1856 struct loaded_l10nfile *next;
1857 struct loaded_l10nfile *successor[1];
1858};
1859
1860
1861
1862
1863
1864
1865extern const char *_nl_normalize_codeset (const char *codeset, size_t name_len);
1866
1867
1868extern struct loaded_l10nfile *
1869_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, const char *dirlist, size_t dirlist_len, int mask, const char *language, const char *territory, const char *codeset, const char *normalized_codeset, const char *modifier, const char *filename, int do_allocate);
1870# 89 "../intl/loadinfo.h"
1871extern const char *_nl_expand_alias (const char *name);
1872
1873
1874
1875extern int _nl_explode_name (char *name, const char **language, const char **modifier, const char **territory, const char **codeset, const char **normalized_codeset);
1876# 32 "../locale/localeinfo.h" 2
1877# 48 "../locale/localeinfo.h"
1878struct locale_data
1879{
1880 const char *name;
1881 const char *filedata;
1882 off_t filesize;
1883 enum
1884 {
1885 ld_malloced,
1886 ld_mapped,
1887 ld_archive
1888 } alloc;
1889
1890
1891
1892
1893 struct
1894 {
1895 void (*cleanup) (struct locale_data *) ;
1896 union
1897 {
1898 void *data;
1899 struct lc_time_data *time;
1900 const struct gconv_fcts *ctype;
1901 };
1902 } private;
1903
1904 unsigned int usage_count;
1905
1906 int use_translit;
1907
1908
1909 unsigned int nstrings;
1910 union locale_data_value
1911 {
1912 const uint32_t *wstr;
1913 const char *string;
1914 unsigned int word;
1915 }
1916 values [];
1917};
1918
1919
1920enum coll_sort_rule
1921{
1922 illegal_0__,
1923 sort_forward,
1924 sort_backward,
1925 illegal_3__,
1926 sort_position,
1927 sort_forward_position,
1928 sort_backward_position,
1929 sort_mask
1930};
1931
1932
1933enum value_type
1934{
1935 none,
1936 string,
1937 stringarray,
1938 byte,
1939 bytearray,
1940 word,
1941 stringlist,
1942 wordarray,
1943 wstring,
1944 wstringarray,
1945 wstringlist
1946};
1947# 128 "../locale/localeinfo.h"
1948struct era_entry
1949{
1950 uint32_t direction;
1951 int32_t offset;
1952 int32_t start_date[3];
1953 int32_t stop_date[3];
1954 const char *era_name;
1955 const char *era_format;
1956 const wchar_t *era_wname;
1957 const wchar_t *era_wformat;
1958 int absolute_direction;
1959
1960
1961
1962};
1963
1964
1965
1966struct lc_time_data
1967{
1968 struct era_entry *eras;
1969 size_t num_eras;
1970 int era_initialized;
1971
1972 const char **alt_digits;
1973 const wchar_t **walt_digits;
1974 int alt_digits_initialized;
1975 int walt_digits_initialized;
1976};
1977
1978
1979
1980
1981enum
1982{
1983 __TOW_toupper = 0,
1984 __TOW_tolower = 1
1985};
1986# 178 "../locale/localeinfo.h"
1987extern const union catnamestr_t
1988{
1989 struct
1990 {
1991
1992
1993# 1 "../locale/categories.def" 1
1994# 42 "../locale/categories.def"
1995char str62[sizeof ("LC_COLLATE")];
1996# 68 "../locale/categories.def"
1997char str137[sizeof ("LC_CTYPE")];
1998# 140 "../locale/categories.def"
1999char str189[sizeof ("LC_MONETARY")];
2000# 192 "../locale/categories.def"
2001char str203[sizeof ("LC_NUMERIC")];
2002# 206 "../locale/categories.def"
2003char str251[sizeof ("LC_TIME")];
2004# 254 "../locale/categories.def"
2005char str263[sizeof ("LC_MESSAGES")];
2006# 265 "../locale/categories.def"
2007char str272[sizeof ("LC_PAPER")];
2008# 274 "../locale/categories.def"
2009char str285[sizeof ("LC_NAME")];
2010# 287 "../locale/categories.def"
2011char str304[sizeof ("LC_ADDRESS")];
2012# 306 "../locale/categories.def"
2013char str315[sizeof ("LC_TELEPHONE")];
2014# 317 "../locale/categories.def"
2015char str323[sizeof ("LC_MEASUREMENT")];
2016
2017
2018
2019
2020
2021
2022
2023char str345[sizeof ("LC_IDENTIFICATION")];
2024# 185 "../locale/localeinfo.h" 2
2025
2026 };
2027 char str[0];
2028} _nl_category_names ;
2029const uint8_t _nl_category_name_idxs[13] ;
2030extern const uint8_t _nl_category_name_sizes[13] ;
2031
2032
2033extern const char _nl_C_name[] ;
2034extern const char _nl_POSIX_name[] ;
2035
2036
2037extern const char _nl_C_codeset[] ;
2038
2039
2040
2041
2042extern struct __locale_struct _nl_global_locale ;
2043
2044
2045
2046
2047# 1 "../bits/libc-tsd.h" 1
2048# 45 "../bits/libc-tsd.h"
2049# 1 "../include/tls.h" 1
2050
2051
2052
2053
2054
2055# 1 "../ports/sysdeps/hppa/nptl/tls.h" 1
2056# 23 "../ports/sysdeps/hppa/nptl/tls.h"
2057# 1 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 1
2058# 20 "../sysdeps/unix/sysv/linux/dl-sysdep.h"
2059# 1 "../sysdeps/generic/dl-sysdep.h" 1
2060# 21 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 2
2061# 24 "../ports/sysdeps/hppa/nptl/tls.h" 2
2062
2063
2064# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stdbool.h" 1 3 4
2065# 27 "../ports/sysdeps/hppa/nptl/tls.h" 2
2066# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
2067# 28 "../ports/sysdeps/hppa/nptl/tls.h" 2
2068
2069
2070
2071typedef union dtv
2072{
2073 size_t counter;
2074 struct
2075 {
2076 void *val;
2077 _Bool is_static;
2078 } pointer;
2079} dtv_t;
2080# 57 "../ports/sysdeps/hppa/nptl/tls.h"
2081# 1 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 1
2082# 22 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h"
2083# 1 "/usr/include/asm/unistd.h" 1 3 4
2084# 23 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 2
2085# 1 "../sysdeps/generic/sysdep.h" 1
2086# 24 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 2
2087# 1 "../sysdeps/unix/sysv/linux/sys/syscall.h" 1
2088# 25 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 2
2089# 58 "../ports/sysdeps/hppa/nptl/tls.h" 2
2090
2091
2092
2093
2094
2095# 1 "../nptl/descr.h" 1
2096# 23 "../nptl/descr.h"
2097# 1 "../include/limits.h" 1
2098# 145 "../include/limits.h"
2099# 1 "../include/bits/posix1_lim.h" 1
2100# 146 "../include/limits.h" 2
2101
2102
2103
2104# 1 "../include/bits/posix2_lim.h" 1
2105# 150 "../include/limits.h" 2
2106# 24 "../nptl/descr.h" 2
2107# 1 "../include/sched.h" 1
2108
2109# 1 "../posix/sched.h" 1
2110# 32 "../posix/sched.h"
2111# 1 "../sysdeps/unix/sysv/linux/bits/sched.h" 1
2112# 65 "../sysdeps/unix/sysv/linux/bits/sched.h"
2113struct sched_param
2114 {
2115 int __sched_priority;
2116 };
2117
2118
2119
2120
2121
2122extern int clone (int (*__fn) (void *__arg), void *__child_stack,
2123 int __flags, void *__arg, ...) __attribute__ ((__nothrow__));
2124
2125
2126extern int unshare (int __flags) __attribute__ ((__nothrow__));
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137struct __sched_param
2138 {
2139 int __sched_priority;
2140 };
2141# 104 "../sysdeps/unix/sysv/linux/bits/sched.h"
2142typedef unsigned long int __cpu_mask;
2143
2144
2145
2146
2147
2148
2149typedef struct
2150{
2151 __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
2152} cpu_set_t;
2153# 33 "../posix/sched.h" 2
2154
2155
2156
2157
2158
2159
2160
2161extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
2162 __attribute__ ((__nothrow__));
2163
2164
2165extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__));
2166
2167
2168extern int sched_setscheduler (__pid_t __pid, int __policy,
2169 __const struct sched_param *__param) __attribute__ ((__nothrow__));
2170
2171
2172extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__));
2173
2174
2175extern int sched_yield (void) __attribute__ ((__nothrow__));
2176
2177
2178extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__));
2179
2180
2181extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__));
2182
2183
2184extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__));
2185# 76 "../posix/sched.h"
2186extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
2187 __const cpu_set_t *__cpuset) __attribute__ ((__nothrow__));
2188
2189
2190extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
2191 cpu_set_t *__cpuset) __attribute__ ((__nothrow__));
2192
2193
2194
2195# 3 "../include/sched.h" 2
2196
2197
2198extern int __sched_setparam (__pid_t __pid,
2199 __const struct sched_param *__param);
2200extern int __sched_getparam (__pid_t __pid, struct sched_param *__param);
2201extern int __sched_setscheduler (__pid_t __pid, int __policy,
2202 __const struct sched_param *__param);
2203
2204extern int __sched_getscheduler (__pid_t __pid);
2205extern int __sched_yield (void);
2206
2207extern int __sched_get_priority_max (int __algorithm);
2208extern int __sched_get_priority_min (int __algorithm);
2209extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t);
2210
2211
2212extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
2213 int __flags, void *__arg, ...);
2214extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
2215 size_t __child_stack_size, int __flags, void *__arg, ...);
2216# 25 "../nptl/descr.h" 2
2217# 1 "../include/setjmp.h" 1
2218
2219# 1 "../setjmp/setjmp.h" 1
2220# 28 "../setjmp/setjmp.h"
2221
2222
2223# 1 "../ports/sysdeps/hppa/bits/setjmp.h" 1
2224# 33 "../ports/sysdeps/hppa/bits/setjmp.h"
2225typedef double __jmp_buf[21];
2226# 31 "../setjmp/setjmp.h" 2
2227# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
2228# 32 "../setjmp/setjmp.h" 2
2229
2230
2231
2232
2233typedef struct __jmp_buf_tag
2234 {
2235
2236
2237
2238
2239 __jmp_buf __jmpbuf;
2240 int __mask_was_saved;
2241 __sigset_t __saved_mask;
2242 } jmp_buf[1];
2243
2244
2245
2246
2247extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__));
2248
2249
2250
2251
2252
2253
2254
2255extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__));
2256
2257
2258
2259
2260extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__ ((__nothrow__));
2261# 76 "../setjmp/setjmp.h"
2262
2263
2264
2265
2266extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
2267 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
2268
2269
2270
2271
2272
2273
2274
2275extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
2276 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
2277
2278
2279
2280
2281
2282
2283
2284typedef struct __jmp_buf_tag sigjmp_buf[1];
2285# 108 "../setjmp/setjmp.h"
2286extern void siglongjmp (sigjmp_buf __env, int __val)
2287 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
2288
2289
2290
2291# 3 "../include/setjmp.h" 2
2292
2293
2294
2295
2296extern void __longjmp (__jmp_buf __env, int __val)
2297 __attribute__ ((__noreturn__));
2298
2299
2300
2301
2302
2303extern int __sigjmp_save (jmp_buf __env, int __savemask);
2304
2305extern void _longjmp_unwind (jmp_buf env, int val);
2306
2307extern void __libc_siglongjmp (sigjmp_buf env, int val)
2308 __attribute__ ((noreturn));
2309extern void __libc_longjmp (sigjmp_buf env, int val)
2310 __attribute__ ((noreturn));
2311
2312
2313
2314
2315# 26 "../nptl/descr.h" 2
2316
2317# 1 "../include/sys/types.h" 1
2318# 28 "../nptl/descr.h" 2
2319# 1 "../sysdeps/generic/hp-timing.h" 1
2320# 71 "../sysdeps/generic/hp-timing.h"
2321typedef int hp_timing_t;
2322# 29 "../nptl/descr.h" 2
2323# 1 "../nptl/sysdeps/pthread/list.h" 1
2324# 29 "../nptl/sysdeps/pthread/list.h"
2325typedef struct list_head
2326{
2327 struct list_head *next;
2328 struct list_head *prev;
2329} list_t;
2330# 46 "../nptl/sysdeps/pthread/list.h"
2331static inline void
2332list_add (list_t *newp, list_t *head)
2333{
2334 head->next->prev = newp;
2335 newp->next = head->next;
2336 newp->prev = head;
2337 head->next = newp;
2338}
2339
2340
2341
2342static inline void
2343list_add_tail (list_t *newp, list_t *head)
2344{
2345 head->prev->next = newp;
2346 newp->next = head;
2347 newp->prev = head->prev;
2348 head->prev = newp;
2349}
2350
2351
2352
2353static inline void
2354list_del (list_t *elem)
2355{
2356 elem->next->prev = elem->prev;
2357 elem->prev->next = elem->next;
2358}
2359
2360
2361
2362static inline void
2363list_splice (list_t *add, list_t *head)
2364{
2365
2366 if (add != add->next)
2367 {
2368 add->next->prev = head;
2369 add->prev->next = head->next;
2370 head->next->prev = add->prev;
2371 head->next = add->next;
2372 }
2373}
2374# 30 "../nptl/descr.h" 2
2375# 1 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h" 1
2376# 23 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h"
2377# 1 "../sysdeps/unix/sysv/linux/sys/param.h" 1
2378# 22 "../sysdeps/unix/sysv/linux/sys/param.h"
2379# 1 "../include/limits.h" 1
2380# 145 "../include/limits.h"
2381# 1 "../include/bits/posix1_lim.h" 1
2382# 146 "../include/limits.h" 2
2383
2384
2385
2386# 1 "../include/bits/posix2_lim.h" 1
2387# 150 "../include/limits.h" 2
2388# 23 "../sysdeps/unix/sysv/linux/sys/param.h" 2
2389
2390# 1 "/usr/include/linux/param.h" 1 3 4
2391
2392
2393
2394# 1 "/usr/include/asm/param.h" 1 3 4
2395# 5 "/usr/include/linux/param.h" 2 3 4
2396# 25 "../sysdeps/unix/sysv/linux/sys/param.h" 2
2397# 42 "../sysdeps/unix/sysv/linux/sys/param.h"
2398# 1 "../include/sys/types.h" 1
2399# 43 "../sysdeps/unix/sysv/linux/sys/param.h" 2
2400# 24 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h" 2
2401
2402# 1 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 1
2403# 23 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h"
2404# 1 "../sysdeps/generic/sysdep.h" 1
2405# 24 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 2
2406# 26 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h" 2
2407# 1 "../include/atomic.h" 1
2408# 49 "../include/atomic.h"
2409# 1 "../include/stdlib.h" 1
2410
2411
2412
2413
2414
2415
2416# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
2417# 8 "../include/stdlib.h" 2
2418# 1 "../stdlib/stdlib.h" 1
2419# 33 "../stdlib/stdlib.h"
2420# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
2421# 34 "../stdlib/stdlib.h" 2
2422
2423
2424
2425
2426
2427
2428
2429
2430# 1 "../sysdeps/unix/sysv/linux/bits/waitflags.h" 1
2431# 43 "../stdlib/stdlib.h" 2
2432# 1 "../bits/waitstatus.h" 1
2433# 65 "../bits/waitstatus.h"
2434# 1 "../include/endian.h" 1
2435# 66 "../bits/waitstatus.h" 2
2436
2437union wait
2438 {
2439 int w_status;
2440 struct
2441 {
2442
2443
2444
2445
2446
2447
2448
2449 unsigned int:16;
2450 unsigned int __w_retcode:8;
2451 unsigned int __w_coredump:1;
2452 unsigned int __w_termsig:7;
2453
2454 } __wait_terminated;
2455 struct
2456 {
2457
2458
2459
2460
2461
2462
2463 unsigned int:16;
2464 unsigned int __w_stopsig:8;
2465 unsigned int __w_stopval:8;
2466
2467 } __wait_stopped;
2468 };
2469# 44 "../stdlib/stdlib.h" 2
2470# 68 "../stdlib/stdlib.h"
2471typedef union
2472 {
2473 union wait *__uptr;
2474 int *__iptr;
2475 } __WAIT_STATUS __attribute__ ((__transparent_union__));
2476# 96 "../stdlib/stdlib.h"
2477
2478
2479typedef struct
2480 {
2481 int quot;
2482 int rem;
2483 } div_t;
2484
2485
2486
2487typedef struct
2488 {
2489 long int quot;
2490 long int rem;
2491 } ldiv_t;
2492
2493
2494
2495
2496
2497
2498
2499__extension__ typedef struct
2500 {
2501 long long int quot;
2502 long long int rem;
2503 } lldiv_t;
2504
2505
2506# 140 "../stdlib/stdlib.h"
2507extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
2508
2509
2510
2511
2512extern double atof (__const char *__nptr)
2513 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
2514
2515extern int atoi (__const char *__nptr)
2516 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
2517
2518extern long int atol (__const char *__nptr)
2519 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
2520
2521
2522
2523
2524
2525__extension__ extern long long int atoll (__const char *__nptr)
2526 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
2527
2528
2529
2530
2531
2532extern double strtod (__const char *__restrict __nptr,
2533 char **__restrict __endptr)
2534 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2535
2536
2537
2538
2539
2540extern float strtof (__const char *__restrict __nptr,
2541 char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2542
2543extern long double strtold (__const char *__restrict __nptr,
2544 char **__restrict __endptr)
2545 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2546
2547
2548
2549
2550
2551extern long int strtol (__const char *__restrict __nptr,
2552 char **__restrict __endptr, int __base)
2553 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2554
2555extern unsigned long int strtoul (__const char *__restrict __nptr,
2556 char **__restrict __endptr, int __base)
2557 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2558
2559
2560
2561
2562__extension__
2563extern long long int strtoq (__const char *__restrict __nptr,
2564 char **__restrict __endptr, int __base)
2565 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2566
2567__extension__
2568extern unsigned long long int strtouq (__const char *__restrict __nptr,
2569 char **__restrict __endptr, int __base)
2570 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2571
2572
2573
2574
2575
2576__extension__
2577extern long long int strtoll (__const char *__restrict __nptr,
2578 char **__restrict __endptr, int __base)
2579 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2580
2581__extension__
2582extern unsigned long long int strtoull (__const char *__restrict __nptr,
2583 char **__restrict __endptr, int __base)
2584 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2585
2586# 236 "../stdlib/stdlib.h"
2587# 1 "../include/xlocale.h" 1
2588# 237 "../stdlib/stdlib.h" 2
2589
2590
2591
2592extern long int strtol_l (__const char *__restrict __nptr,
2593 char **__restrict __endptr, int __base,
2594 __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
2595
2596extern unsigned long int strtoul_l (__const char *__restrict __nptr,
2597 char **__restrict __endptr,
2598 int __base, __locale_t __loc)
2599 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
2600
2601__extension__
2602extern long long int strtoll_l (__const char *__restrict __nptr,
2603 char **__restrict __endptr, int __base,
2604 __locale_t __loc)
2605 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
2606
2607__extension__
2608extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
2609 char **__restrict __endptr,
2610 int __base, __locale_t __loc)
2611 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
2612
2613extern double strtod_l (__const char *__restrict __nptr,
2614 char **__restrict __endptr, __locale_t __loc)
2615 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
2616
2617extern float strtof_l (__const char *__restrict __nptr,
2618 char **__restrict __endptr, __locale_t __loc)
2619 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
2620
2621extern long double strtold_l (__const char *__restrict __nptr,
2622 char **__restrict __endptr,
2623 __locale_t __loc)
2624 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
2625
2626
2627
2628
2629
2630
2631extern double __strtod_internal (__const char *__restrict __nptr,
2632 char **__restrict __endptr, int __group)
2633 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2634extern float __strtof_internal (__const char *__restrict __nptr,
2635 char **__restrict __endptr, int __group)
2636 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2637extern long double __strtold_internal (__const char *__restrict __nptr,
2638 char **__restrict __endptr,
2639 int __group)
2640 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2641
2642extern long int __strtol_internal (__const char *__restrict __nptr,
2643 char **__restrict __endptr,
2644 int __base, int __group)
2645 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2646
2647
2648
2649extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
2650 char **__restrict __endptr,
2651 int __base, int __group)
2652 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2653
2654
2655
2656
2657__extension__
2658extern long long int __strtoll_internal (__const char *__restrict __nptr,
2659 char **__restrict __endptr,
2660 int __base, int __group)
2661 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2662
2663
2664
2665__extension__
2666extern unsigned long long int __strtoull_internal (__const char *
2667 __restrict __nptr,
2668 char **__restrict __endptr,
2669 int __base, int __group)
2670 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2671
2672
2673
2674
2675
2676
2677
2678
2679extern __inline double
2680__attribute__ ((__nothrow__)) strtod (__const char *__restrict __nptr, char **__restrict __endptr)
2681{
2682 return __strtod_internal (__nptr, __endptr, 0);
2683}
2684extern __inline long int
2685__attribute__ ((__nothrow__)) strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
2686
2687{
2688 return __strtol_internal (__nptr, __endptr, __base, 0);
2689}
2690extern __inline unsigned long int
2691__attribute__ ((__nothrow__)) strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
2692
2693{
2694 return __strtoul_internal (__nptr, __endptr, __base, 0);
2695}
2696
2697
2698
2699
2700extern __inline float
2701__attribute__ ((__nothrow__)) strtof (__const char *__restrict __nptr, char **__restrict __endptr)
2702{
2703 return __strtof_internal (__nptr, __endptr, 0);
2704}
2705
2706extern __inline long double
2707__attribute__ ((__nothrow__)) strtold (__const char *__restrict __nptr, char **__restrict __endptr)
2708{
2709 return __strtold_internal (__nptr, __endptr, 0);
2710}
2711
2712
2713
2714
2715
2716__extension__ extern __inline long long int
2717__attribute__ ((__nothrow__)) strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
2718
2719{
2720 return __strtoll_internal (__nptr, __endptr, __base, 0);
2721}
2722__extension__ extern __inline unsigned long long int
2723__attribute__ ((__nothrow__)) strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
2724
2725{
2726 return __strtoull_internal (__nptr, __endptr, __base, 0);
2727}
2728
2729
2730
2731
2732__extension__ extern __inline long long int
2733__attribute__ ((__nothrow__)) strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
2734
2735{
2736 return __strtoll_internal (__nptr, __endptr, __base, 0);
2737}
2738__extension__ extern __inline unsigned long long int
2739__attribute__ ((__nothrow__)) strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base)
2740
2741{
2742 return __strtoull_internal (__nptr, __endptr, __base, 0);
2743}
2744
2745
2746
2747
2748extern __inline double
2749__attribute__ ((__nothrow__)) atof (__const char *__nptr)
2750{
2751 return strtod (__nptr, (char **) ((void *)0));
2752}
2753extern __inline int
2754__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
2755{
2756 return (int) strtol (__nptr, (char **) ((void *)0), 10);
2757}
2758extern __inline long int
2759__attribute__ ((__nothrow__)) atol (__const char *__nptr)
2760{
2761 return strtol (__nptr, (char **) ((void *)0), 10);
2762}
2763
2764
2765
2766
2767__extension__ extern __inline long long int
2768__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
2769{
2770 return strtoll (__nptr, (char **) ((void *)0), 10);
2771}
2772
2773# 429 "../stdlib/stdlib.h"
2774extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
2775
2776
2777extern long int a64l (__const char *__s)
2778 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
2779
2780
2781
2782
2783# 1 "../include/sys/types.h" 1
2784# 439 "../stdlib/stdlib.h" 2
2785
2786
2787
2788
2789
2790
2791extern long int random (void) __attribute__ ((__nothrow__));
2792
2793
2794extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
2795
2796
2797
2798
2799
2800extern char *initstate (unsigned int __seed, char *__statebuf,
2801 size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
2802
2803
2804
2805extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
2806
2807
2808
2809
2810
2811
2812
2813struct random_data
2814 {
2815 int32_t *fptr;
2816 int32_t *rptr;
2817 int32_t *state;
2818 int rand_type;
2819 int rand_deg;
2820 int rand_sep;
2821 int32_t *end_ptr;
2822 };
2823
2824extern int random_r (struct random_data *__restrict __buf,
2825 int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2826
2827extern int srandom_r (unsigned int __seed, struct random_data *__buf)
2828 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
2829
2830extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
2831 size_t __statelen,
2832 struct random_data *__restrict __buf)
2833 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
2834
2835extern int setstate_r (char *__restrict __statebuf,
2836 struct random_data *__restrict __buf)
2837 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2838
2839
2840
2841
2842
2843
2844extern int rand (void) __attribute__ ((__nothrow__));
2845
2846extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
2847
2848
2849
2850
2851extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
2852
2853
2854
2855
2856
2857
2858
2859extern double drand48 (void) __attribute__ ((__nothrow__));
2860extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
2861
2862
2863extern long int lrand48 (void) __attribute__ ((__nothrow__));
2864extern long int nrand48 (unsigned short int __xsubi[3])
2865 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
2866
2867
2868extern long int mrand48 (void) __attribute__ ((__nothrow__));
2869extern long int jrand48 (unsigned short int __xsubi[3])
2870 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
2871
2872
2873extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
2874extern unsigned short int *seed48 (unsigned short int __seed16v[3])
2875 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
2876extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
2877
2878
2879
2880
2881
2882struct drand48_data
2883 {
2884 unsigned short int __x[3];
2885 unsigned short int __old_x[3];
2886 unsigned short int __c;
2887 unsigned short int __init;
2888 unsigned long long int __a;
2889 };
2890
2891
2892extern int drand48_r (struct drand48_data *__restrict __buffer,
2893 double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2894extern int erand48_r (unsigned short int __xsubi[3],
2895 struct drand48_data *__restrict __buffer,
2896 double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2897
2898
2899extern int lrand48_r (struct drand48_data *__restrict __buffer,
2900 long int *__restrict __result)
2901 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2902extern int nrand48_r (unsigned short int __xsubi[3],
2903 struct drand48_data *__restrict __buffer,
2904 long int *__restrict __result)
2905 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2906
2907
2908extern int mrand48_r (struct drand48_data *__restrict __buffer,
2909 long int *__restrict __result)
2910 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2911extern int jrand48_r (unsigned short int __xsubi[3],
2912 struct drand48_data *__restrict __buffer,
2913 long int *__restrict __result)
2914 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2915
2916
2917extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
2918 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
2919
2920extern int seed48_r (unsigned short int __seed16v[3],
2921 struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2922
2923extern int lcong48_r (unsigned short int __param[7],
2924 struct drand48_data *__buffer)
2925 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
2936
2937extern void *calloc (size_t __nmemb, size_t __size)
2938 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
2939
2940
2941
2942
2943
2944
2945
2946extern void *realloc (void *__ptr, size_t __size)
2947 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
2948
2949extern void free (void *__ptr) __attribute__ ((__nothrow__));
2950
2951
2952
2953
2954extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
2955
2956
2957
2958# 1 "../include/alloca.h" 1
2959
2960
2961# 1 "../stdlib/alloca.h" 1
2962# 25 "../stdlib/alloca.h"
2963# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
2964# 26 "../stdlib/alloca.h" 2
2965
2966
2967
2968
2969
2970
2971
2972extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
2973
2974
2975
2976
2977
2978
2979# 4 "../include/alloca.h" 2
2980# 1 "../ports/sysdeps/hppa/stackinfo.h" 1
2981# 5 "../include/alloca.h" 2
2982
2983
2984
2985
2986extern void *__alloca (size_t __size);
2987
2988
2989
2990
2991
2992extern int __libc_use_alloca (size_t size) __attribute__ ((const));
2993extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
2994
2995
2996
2997# 1 "../nptl/sysdeps/pthread/allocalim.h" 1
2998# 20 "../nptl/sysdeps/pthread/allocalim.h"
2999# 1 "../include/alloca.h" 1
3000# 21 "../nptl/sysdeps/pthread/allocalim.h" 2
3001# 1 "../include/limits.h" 1
3002# 145 "../include/limits.h"
3003# 1 "../include/bits/posix1_lim.h" 1
3004# 146 "../include/limits.h" 2
3005
3006
3007
3008# 1 "../include/bits/posix2_lim.h" 1
3009# 150 "../include/limits.h" 2
3010# 22 "../nptl/sysdeps/pthread/allocalim.h" 2
3011
3012
3013extern int
3014__inline __attribute__ ((__always_inline__))
3015__libc_use_alloca (size_t size)
3016{
3017 return (__builtin_expect (size <= 16384 / 4, 1)
3018 || __libc_alloca_cutoff (size));
3019}
3020# 21 "../include/alloca.h" 2
3021# 613 "../stdlib/stdlib.h" 2
3022
3023
3024
3025
3026extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
3027
3028
3029
3030
3031extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
3032 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3033
3034
3035
3036
3037extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
3038
3039
3040
3041extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3042
3043
3044
3045
3046
3047extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
3048 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3049
3050
3051
3052
3053
3054
3055extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
3056
3057
3058
3059
3060
3061
3062extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
3063
3064
3065
3066
3067
3068
3069extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3070
3071
3072
3073
3074extern char *__secure_getenv (__const char *__name)
3075 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3076
3077
3078
3079
3080
3081extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3082
3083
3084
3085
3086
3087extern int setenv (__const char *__name, __const char *__value, int __replace)
3088 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
3089
3090
3091extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
3092
3093
3094
3095
3096
3097
3098extern int clearenv (void) __attribute__ ((__nothrow__));
3099# 698 "../stdlib/stdlib.h"
3100extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3101# 709 "../stdlib/stdlib.h"
3102extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
3103# 719 "../stdlib/stdlib.h"
3104extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
3105# 729 "../stdlib/stdlib.h"
3106extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3107
3108
3109
3110
3111
3112
3113
3114
3115extern int system (__const char *__command) ;
3116
3117
3118
3119
3120
3121
3122extern char *canonicalize_file_name (__const char *__name)
3123 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3124# 756 "../stdlib/stdlib.h"
3125extern char *realpath (__const char *__restrict __name,
3126 char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
3127
3128
3129
3130
3131
3132
3133typedef int (*__compar_fn_t) (__const void *, __const void *);
3134
3135
3136typedef __compar_fn_t comparison_fn_t;
3137
3138
3139
3140
3141
3142
3143extern void *bsearch (__const void *__key, __const void *__base,
3144 size_t __nmemb, size_t __size, __compar_fn_t __compar)
3145 __attribute__ ((__nonnull__ (1, 2, 5))) ;
3146
3147
3148
3149extern void qsort (void *__base, size_t __nmemb, size_t __size,
3150 __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
3151
3152
3153
3154extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3155extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3156
3157
3158
3159__extension__ extern long long int llabs (long long int __x)
3160 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3161
3162
3163
3164
3165
3166
3167
3168extern div_t div (int __numer, int __denom)
3169 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3170extern ldiv_t ldiv (long int __numer, long int __denom)
3171 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3172
3173
3174
3175
3176__extension__ extern lldiv_t lldiv (long long int __numer,
3177 long long int __denom)
3178 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
3179
3180# 821 "../stdlib/stdlib.h"
3181extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
3182 int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3183
3184
3185
3186
3187extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
3188 int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3189
3190
3191
3192
3193extern char *gcvt (double __value, int __ndigit, char *__buf)
3194 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
3195
3196
3197
3198
3199extern char *qecvt (long double __value, int __ndigit,
3200 int *__restrict __decpt, int *__restrict __sign)
3201 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3202extern char *qfcvt (long double __value, int __ndigit,
3203 int *__restrict __decpt, int *__restrict __sign)
3204 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
3205extern char *qgcvt (long double __value, int __ndigit, char *__buf)
3206 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
3207
3208
3209
3210
3211extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
3212 int *__restrict __sign, char *__restrict __buf,
3213 size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3214extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
3215 int *__restrict __sign, char *__restrict __buf,
3216 size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3217
3218extern int qecvt_r (long double __value, int __ndigit,
3219 int *__restrict __decpt, int *__restrict __sign,
3220 char *__restrict __buf, size_t __len)
3221 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3222extern int qfcvt_r (long double __value, int __ndigit,
3223 int *__restrict __decpt, int *__restrict __sign,
3224 char *__restrict __buf, size_t __len)
3225 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
3226
3227
3228
3229
3230
3231
3232
3233extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
3234
3235
3236extern int mbtowc (wchar_t *__restrict __pwc,
3237 __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
3238
3239
3240extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
3241
3242
3243
3244extern size_t mbstowcs (wchar_t *__restrict __pwcs,
3245 __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
3246
3247extern size_t wcstombs (char *__restrict __s,
3248 __const wchar_t *__restrict __pwcs, size_t __n)
3249 __attribute__ ((__nothrow__));
3250
3251
3252
3253
3254
3255
3256
3257
3258extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
3259# 909 "../stdlib/stdlib.h"
3260extern int getsubopt (char **__restrict __optionp,
3261 char *__const *__restrict __tokens,
3262 char **__restrict __valuep)
3263 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
3264
3265
3266
3267
3268
3269extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3270
3271
3272
3273
3274
3275
3276
3277extern int posix_openpt (int __oflag) ;
3278
3279
3280
3281
3282
3283
3284
3285extern int grantpt (int __fd) __attribute__ ((__nothrow__));
3286
3287
3288
3289extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
3290
3291
3292
3293
3294extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;
3295
3296
3297
3298
3299
3300
3301extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
3302 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
3303
3304
3305extern int getpt (void);
3306
3307
3308
3309
3310
3311
3312extern int getloadavg (double __loadavg[], int __nelem)
3313 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3314# 977 "../stdlib/stdlib.h"
3315
3316# 9 "../include/stdlib.h" 2
3317
3318
3319
3320
3321
3322
3323extern __typeof (strtol_l) __strtol_l;
3324extern __typeof (strtoul_l) __strtoul_l;
3325extern __typeof (strtoll_l) __strtoll_l;
3326extern __typeof (strtoull_l) __strtoull_l;
3327extern __typeof (strtod_l) __strtod_l;
3328extern __typeof (strtof_l) __strtof_l;
3329extern __typeof (strtold_l) __strtold_l;
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347extern long int __random (void);
3348extern void __srandom (unsigned int __seed);
3349extern char *__initstate (unsigned int __seed, char *__statebuf,
3350 size_t __statelen);
3351extern char *__setstate (char *__statebuf);
3352extern int __random_r (struct random_data *__buf, int32_t *__result);
3353extern int __srandom_r (unsigned int __seed, struct random_data *__buf);
3354extern int __initstate_r (unsigned int __seed, char *__statebuf,
3355 size_t __statelen, struct random_data *__buf);
3356extern int __setstate_r (char *__statebuf, struct random_data *__buf);
3357extern int __rand_r (unsigned int *__seed);
3358extern int __erand48_r (unsigned short int __xsubi[3],
3359 struct drand48_data *__buffer, double *__result);
3360extern int __nrand48_r (unsigned short int __xsubi[3],
3361 struct drand48_data *__buffer,
3362 long int *__result);
3363extern int __jrand48_r (unsigned short int __xsubi[3],
3364 struct drand48_data *__buffer,
3365 long int *__result);
3366extern int __srand48_r (long int __seedval,
3367 struct drand48_data *__buffer);
3368extern int __seed48_r (unsigned short int __seed16v[3],
3369 struct drand48_data *__buffer);
3370extern int __lcong48_r (unsigned short int __param[7],
3371 struct drand48_data *__buffer);
3372
3373
3374extern int __drand48_iterate (unsigned short int __xsubi[3],
3375 struct drand48_data *__buffer);
3376
3377
3378extern struct drand48_data __libc_drand48_data ;
3379
3380extern int __setenv (__const char *__name, __const char *__value,
3381 int __replace);
3382extern int __unsetenv (__const char *__name);
3383extern int __clearenv (void);
3384extern char *__canonicalize_file_name (__const char *__name);
3385extern char *__realpath (__const char *__name, char *__resolved);
3386extern int __ptsname_r (int __fd, char *__buf, size_t __buflen);
3387extern int __getpt (void);
3388extern int __posix_openpt (int __oflag);
3389
3390extern int __add_to_environ (const char *name, const char *value,
3391 const char *combines, int replace);
3392
3393extern void _quicksort (void *const pbase, size_t total_elems,
3394 size_t size, __compar_fn_t cmp);
3395
3396extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg);
3397
3398extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
3399extern int __cxa_atexit_internal (void (*func) (void *), void *arg, void *d)
3400 ;
3401
3402extern void __cxa_finalize (void *d);
3403
3404extern int __posix_memalign (void **memptr, size_t alignment, size_t size);
3405
3406extern void *__libc_memalign (size_t alignment, size_t size)
3407 __attribute__ ((__malloc__));
3408
3409extern int __libc_system (const char *line);
3410
3411extern double ____strtod_l_internal (__const char *__restrict __nptr,
3412 char **__restrict __endptr, int __group,
3413 __locale_t __loc);
3414extern float ____strtof_l_internal (__const char *__restrict __nptr,
3415 char **__restrict __endptr, int __group,
3416 __locale_t __loc);
3417extern long double ____strtold_l_internal (__const char *__restrict __nptr,
3418 char **__restrict __endptr,
3419 int __group, __locale_t __loc);
3420extern long int ____strtol_l_internal (__const char *__restrict __nptr,
3421 char **__restrict __endptr,
3422 int __base, int __group,
3423 __locale_t __loc);
3424extern unsigned long int ____strtoul_l_internal (__const char *
3425 __restrict __nptr,
3426 char **__restrict __endptr,
3427 int __base, int __group,
3428 __locale_t __loc);
3429__extension__
3430extern long long int ____strtoll_l_internal (__const char *__restrict __nptr,
3431 char **__restrict __endptr,
3432 int __base, int __group,
3433 __locale_t __loc);
3434__extension__
3435extern unsigned long long int ____strtoull_l_internal (__const char *
3436 __restrict __nptr,
3437 char **
3438 __restrict __endptr,
3439 int __base, int __group,
3440 __locale_t __loc);
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450extern __inline double
3451__attribute__ ((__nothrow__)) __strtod_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc)
3452
3453{
3454 return ____strtod_l_internal (__nptr, __endptr, 0, __loc);
3455}
3456extern __inline long int
3457__attribute__ ((__nothrow__)) __strtol_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)
3458
3459{
3460 return ____strtol_l_internal (__nptr, __endptr, __base, 0, __loc);
3461}
3462extern __inline unsigned long int
3463__attribute__ ((__nothrow__)) __strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)
3464
3465{
3466 return ____strtoul_l_internal (__nptr, __endptr, __base, 0, __loc);
3467}
3468extern __inline float
3469__attribute__ ((__nothrow__)) __strtof_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc)
3470
3471{
3472 return ____strtof_l_internal (__nptr, __endptr, 0, __loc);
3473}
3474extern __inline long double
3475__attribute__ ((__nothrow__)) __strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc)
3476
3477{
3478 return ____strtold_l_internal (__nptr, __endptr, 0, __loc);
3479}
3480__extension__ extern __inline long long int
3481__attribute__ ((__nothrow__)) __strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)
3482
3483{
3484 return ____strtoll_l_internal (__nptr, __endptr, __base, 0, __loc);
3485}
3486__extension__ extern __inline unsigned long long int
3487__attribute__ ((__nothrow__)) __strtoull_l (__const char * __restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)
3488
3489{
3490 return ____strtoull_l_internal (__nptr, __endptr, __base, 0, __loc);
3491}
3492
3493extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt,
3494 int *__restrict __sign);
3495extern char *__fcvt (double __value, int __ndigit, int *__restrict __decpt,
3496 int *__restrict __sign);
3497extern char *__gcvt (double __value, int __ndigit, char *__buf);
3498extern int __ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
3499 int *__restrict __sign, char *__restrict __buf,
3500 size_t __len);
3501extern int __fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
3502 int *__restrict __sign, char *__restrict __buf,
3503 size_t __len);
3504extern char *__qecvt (long double __value, int __ndigit,
3505 int *__restrict __decpt, int *__restrict __sign);
3506extern char *__qfcvt (long double __value, int __ndigit,
3507 int *__restrict __decpt, int *__restrict __sign);
3508extern char *__qgcvt (long double __value, int __ndigit, char *__buf);
3509extern int __qecvt_r (long double __value, int __ndigit,
3510 int *__restrict __decpt, int *__restrict __sign,
3511 char *__restrict __buf, size_t __len);
3512extern int __qfcvt_r (long double __value, int __ndigit,
3513 int *__restrict __decpt, int *__restrict __sign,
3514 char *__restrict __buf, size_t __len);
3515# 217 "../include/stdlib.h"
3516extern void *__default_morecore (ptrdiff_t) __attribute__ ((__nothrow__));
3517
3518
3519
3520# 50 "../include/atomic.h" 2
3521
3522# 1 "../ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h" 1
3523# 21 "../ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h"
3524# 1 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 1
3525# 23 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h"
3526# 1 "../sysdeps/generic/sysdep.h" 1
3527# 24 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 2
3528# 22 "../ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h" 2
3529# 1 "../ports/sysdeps/hppa/abort-instr.h" 1
3530# 23 "../ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h" 2
3531# 1 "../ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h" 1
3532# 39 "../ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h"
3533# 1 "../sysdeps/unix/sysv/linux/kernel-features.h" 1
3534# 39 "../ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h" 2
3535# 24 "../ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h" 2
3536# 34 "../ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h"
3537typedef int8_t atomic8_t;
3538typedef uint8_t uatomic8_t;
3539typedef int_fast8_t atomic_fast8_t;
3540typedef uint_fast8_t uatomic_fast8_t;
3541
3542typedef int32_t atomic32_t;
3543typedef uint32_t uatomic32_t;
3544typedef int_fast32_t atomic_fast32_t;
3545typedef uint_fast32_t uatomic_fast32_t;
3546
3547typedef intptr_t atomicptr_t;
3548typedef uintptr_t uatomicptr_t;
3549typedef intmax_t atomic_max_t;
3550typedef uintmax_t uatomic_max_t;
3551# 52 "../include/atomic.h" 2
3552# 27 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h" 2
3553# 48 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h"
3554typedef int lll_lock_t;
3555# 110 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h"
3556static inline int __attribute__((always_inline))
3557__lll_mutex_trylock(lll_lock_t *futex)
3558{
3559 return ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (1) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }) != 0;
3560}
3561
3562
3563static inline int __attribute__((always_inline))
3564__lll_robust_mutex_trylock(int *futex, int id)
3565{
3566 return ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (id) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }) != 0;
3567}
3568
3569
3570
3571
3572static inline int __attribute__((always_inline))
3573__lll_mutex_cond_trylock(lll_lock_t *futex)
3574{
3575 return ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (2) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }) != 0;
3576}
3577
3578
3579
3580extern void __lll_lock_wait (lll_lock_t *futex) ;
3581
3582static inline void __attribute__((always_inline))
3583__lll_mutex_lock(lll_lock_t *futex)
3584{
3585 if (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (1) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != 0); }) != 0)
3586 __lll_lock_wait (futex);
3587}
3588
3589
3590extern int __lll_robust_lock_wait (int *futex) ;
3591
3592static inline int __attribute__ ((always_inline))
3593__lll_robust_mutex_lock (int *futex, int id)
3594{
3595 int result = 0;
3596 if (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (id) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != 0); }) != 0)
3597 result = __lll_robust_lock_wait (futex);
3598 return result;
3599}
3600
3601
3602
3603static inline void __attribute__ ((always_inline))
3604__lll_mutex_cond_lock (lll_lock_t *futex)
3605{
3606 if (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (2) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != 0); }) != 0)
3607 __lll_lock_wait (futex);
3608}
3609
3610
3611
3612
3613
3614
3615
3616extern int __lll_timedlock_wait (lll_lock_t *futex, const struct timespec *)
3617 ;
3618extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *)
3619 ;
3620
3621static inline int __attribute__ ((always_inline))
3622__lll_mutex_timedlock (lll_lock_t *futex, const struct timespec *abstime)
3623{
3624 int result = 0;
3625 if (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (1) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != 0); }) != 0)
3626 result = __lll_timedlock_wait (futex, abstime);
3627 return result;
3628}
3629
3630
3631
3632static inline int __attribute__ ((always_inline))
3633__lll_robust_mutex_timedlock (int *futex, const struct timespec *abstime,
3634 int id)
3635{
3636 int result = 0;
3637 if (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*futex) : "r" (futex), "r" (0), "r" (id) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != 0); }) != 0)
3638 result = __lll_robust_timedlock_wait (futex, abstime);
3639 return result;
3640}
3641
3642
3643
3644
3645static inline void __attribute__ ((always_inline))
3646__lll_mutex_unlock (lll_lock_t *futex)
3647{
3648 int val = ({ __typeof (*(futex)) __atg5_oldval; __typeof (futex) __atg5_memp = (futex); __typeof (*(futex)) __atg5_value = (0); do __atg5_oldval = *__atg5_memp; while (__builtin_expect (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*__atg5_memp) : "r" (__atg5_memp), "r" (__atg5_oldval), "r" (__atg5_value) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != __atg5_oldval); }), 0)); __atg5_oldval; });
3649 if (__builtin_expect (val > 1, 0))
3650 ({ ; long int __ret; __ret = ({ long __sys_res; { register unsigned long __res asm("r28"); register unsigned long __r23 __asm__("r23") = (unsigned long)(0); register unsigned long __r24 __asm__("r24") = (unsigned long)((1)); register unsigned long __r25 __asm__("r25") = (unsigned long)(1); register unsigned long __r26 __asm__("r26") = (unsigned long)((futex)); asm volatile( "nop \n" " ble 0x100(%%sr2, %%r0)\n" " ldi %1, %%r20\n" "nop \n" : "=r" (__res) : "i" (((0 + 210))) , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23) : "memory", "%r1", "%r2", "%r20", "%r29", "%r31" , "%r21", "%r22" ); __sys_res = (long)__res; } __sys_res; }); __ret; });
3651}
3652
3653
3654
3655static inline void __attribute__ ((always_inline))
3656__lll_robust_mutex_unlock (int *futex, int mask)
3657{
3658 int val = ({ __typeof (*(futex)) __atg5_oldval; __typeof (futex) __atg5_memp = (futex); __typeof (*(futex)) __atg5_value = (0); do __atg5_oldval = *__atg5_memp; while (__builtin_expect (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*__atg5_memp) : "r" (__atg5_memp), "r" (__atg5_oldval), "r" (__atg5_value) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != __atg5_oldval); }), 0)); __atg5_oldval; });
3659 if (__builtin_expect (val & mask, 0))
3660 ({ ; long int __ret; __ret = ({ long __sys_res; { register unsigned long __res asm("r28"); register unsigned long __r23 __asm__("r23") = (unsigned long)(0); register unsigned long __r24 __asm__("r24") = (unsigned long)((1)); register unsigned long __r25 __asm__("r25") = (unsigned long)(1); register unsigned long __r26 __asm__("r26") = (unsigned long)((futex)); asm volatile( "nop \n" " ble 0x100(%%sr2, %%r0)\n" " ldi %1, %%r20\n" "nop \n" : "=r" (__res) : "i" (((0 + 210))) , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23) : "memory", "%r1", "%r2", "%r20", "%r29", "%r31" , "%r21", "%r22" ); __sys_res = (long)__res; } __sys_res; }); __ret; });
3661}
3662
3663
3664
3665
3666static inline void __attribute__ ((always_inline))
3667__lll_mutex_unlock_force (lll_lock_t *futex)
3668{
3669 (void) ({ __typeof (*(futex)) __atg5_oldval; __typeof (futex) __atg5_memp = (futex); __typeof (*(futex)) __atg5_value = (0); do __atg5_oldval = *__atg5_memp; while (__builtin_expect (({ int ret; ret = ({ volatile int lws_errno = 14; volatile int lws_ret = 0xdeadbeef; asm volatile( "0: \n\t" "copy %3, %%r26 \n\t" "copy %4, %%r25 \n\t" "copy %5, %%r24 \n\t" "ble " "0xb0" "(%%sr2, %%r0) \n\t" "ldi " "0" ", %%r20 \n\t" "cmpib,=,n " "11" ",%%r21,0b \n\t" "nop \n\t" "stw %%r28, %0 \n\t" "sub %%r0, %%r21, %%r21 \n\t" "stw %%r21, %1 \n\t" : "=m" (lws_ret), "=m" (lws_errno), "=m" (*__atg5_memp) : "r" (__atg5_memp), "r" (__atg5_oldval), "r" (__atg5_value) : "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory" ); if(lws_errno == 14 || lws_errno == 251) asm ("iitlbp %r0,(%sr0, %r0)"); lws_ret; }); (ret != __atg5_oldval); }), 0)); __atg5_oldval; });
3670 ({ ; long int __ret; __ret = ({ long __sys_res; { register unsigned long __res asm("r28"); register unsigned long __r23 __asm__("r23") = (unsigned long)(0); register unsigned long __r24 __asm__("r24") = (unsigned long)((1)); register unsigned long __r25 __asm__("r25") = (unsigned long)(1); register unsigned long __r26 __asm__("r26") = (unsigned long)((futex)); asm volatile( "nop \n" " ble 0x100(%%sr2, %%r0)\n" " ldi %1, %%r20\n" "nop \n" : "=r" (__res) : "i" (((0 + 210))) , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23) : "memory", "%r1", "%r2", "%r20", "%r29", "%r31" , "%r21", "%r22" ); __sys_res = (long)__res; } __sys_res; }); __ret; });
3671}
3672# 242 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h"
3673extern int lll_unlock_wake_cb (lll_lock_t *__futex) ;
3674# 265 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h"
3675extern int __lll_timedwait_tid (int *, const struct timespec *)
3676 ;
3677# 279 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h"
3678extern void __lll_cond_wait (pthread_cond_t *cond)
3679 ;
3680extern int __lll_cond_timedwait (pthread_cond_t *cond,
3681 const struct timespec *abstime)
3682 ;
3683extern void __lll_cond_wake (pthread_cond_t *cond)
3684 ;
3685extern void __lll_cond_broadcast (pthread_cond_t *cond)
3686 ;
3687# 31 "../nptl/descr.h" 2
3688# 1 "../ports/sysdeps/hppa/nptl/pthreaddef.h" 1
3689# 34 "../ports/sysdeps/hppa/nptl/pthreaddef.h"
3690register char * stack_pointer __asm__ ("%r30");
3691# 32 "../nptl/descr.h" 2
3692# 1 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 1
3693# 20 "../sysdeps/unix/sysv/linux/dl-sysdep.h"
3694# 1 "../sysdeps/generic/dl-sysdep.h" 1
3695# 21 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 2
3696# 33 "../nptl/descr.h" 2
3697# 1 "../nptl/../nptl_db/thread_db.h" 1
3698# 26 "../nptl/../nptl_db/thread_db.h"
3699# 1 "../include/pthread.h" 1
3700# 1 "../nptl/sysdeps/pthread/pthread.h" 1
3701# 27 "../nptl/sysdeps/pthread/pthread.h"
3702# 1 "../include/signal.h" 1
3703
3704
3705# 1 "../signal/signal.h" 1
3706# 31 "../signal/signal.h"
3707
3708
3709# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
3710# 34 "../signal/signal.h" 2
3711# 400 "../signal/signal.h"
3712
3713# 4 "../include/signal.h" 2
3714# 28 "../nptl/sysdeps/pthread/pthread.h" 2
3715
3716
3717# 1 "../sysdeps/wordsize-32/bits/wordsize.h" 1
3718# 31 "../nptl/sysdeps/pthread/pthread.h" 2
3719
3720
3721
3722enum
3723{
3724 PTHREAD_CREATE_JOINABLE,
3725
3726 PTHREAD_CREATE_DETACHED
3727
3728};
3729
3730
3731
3732enum
3733{
3734 PTHREAD_MUTEX_TIMED_NP,
3735 PTHREAD_MUTEX_RECURSIVE_NP,
3736 PTHREAD_MUTEX_ERRORCHECK_NP,
3737 PTHREAD_MUTEX_ADAPTIVE_NP
3738
3739 ,
3740 PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
3741 PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
3742 PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
3743 PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
3744
3745
3746
3747 , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
3748
3749};
3750
3751
3752
3753
3754enum
3755{
3756 PTHREAD_MUTEX_STALLED_NP,
3757 PTHREAD_MUTEX_ROBUST_NP
3758};
3759
3760
3761
3762
3763
3764enum
3765{
3766 PTHREAD_PRIO_NONE,
3767 PTHREAD_PRIO_INHERIT,
3768 PTHREAD_PRIO_PROTECT
3769};
3770# 113 "../nptl/sysdeps/pthread/pthread.h"
3771enum
3772{
3773 PTHREAD_RWLOCK_PREFER_READER_NP,
3774 PTHREAD_RWLOCK_PREFER_WRITER_NP,
3775 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
3776 PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
3777};
3778# 143 "../nptl/sysdeps/pthread/pthread.h"
3779enum
3780{
3781 PTHREAD_INHERIT_SCHED,
3782
3783 PTHREAD_EXPLICIT_SCHED
3784
3785};
3786
3787
3788
3789enum
3790{
3791 PTHREAD_SCOPE_SYSTEM,
3792
3793 PTHREAD_SCOPE_PROCESS
3794
3795};
3796
3797
3798
3799enum
3800{
3801 PTHREAD_PROCESS_PRIVATE,
3802
3803 PTHREAD_PROCESS_SHARED
3804
3805};
3806# 178 "../nptl/sysdeps/pthread/pthread.h"
3807struct _pthread_cleanup_buffer
3808{
3809 void (*__routine) (void *);
3810 void *__arg;
3811 int __canceltype;
3812 struct _pthread_cleanup_buffer *__prev;
3813};
3814
3815
3816enum
3817{
3818 PTHREAD_CANCEL_ENABLE,
3819
3820 PTHREAD_CANCEL_DISABLE
3821
3822};
3823enum
3824{
3825 PTHREAD_CANCEL_DEFERRED,
3826
3827 PTHREAD_CANCEL_ASYNCHRONOUS
3828
3829};
3830# 216 "../nptl/sysdeps/pthread/pthread.h"
3831
3832
3833
3834
3835
3836extern int pthread_create (pthread_t *__restrict __newthread,
3837 __const pthread_attr_t *__restrict __attr,
3838 void *(*__start_routine) (void *),
3839 void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
3840
3841
3842
3843
3844
3845extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
3846
3847
3848
3849
3850
3851
3852
3853extern int pthread_join (pthread_t __th, void **__thread_return);
3854
3855
3856
3857
3858extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__));
3859
3860
3861
3862
3863
3864
3865
3866extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
3867 __const struct timespec *__abstime);
3868
3869
3870
3871
3872
3873
3874extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__));
3875
3876
3877
3878extern pthread_t pthread_self (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
3879
3880
3881extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __attribute__ ((__nothrow__));
3882
3883
3884
3885
3886
3887
3888
3889extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3890
3891
3892extern int pthread_attr_destroy (pthread_attr_t *__attr)
3893 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3894
3895
3896extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
3897 int *__detachstate)
3898 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3899
3900
3901extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
3902 int __detachstate)
3903 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3904
3905
3906
3907extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
3908 size_t *__guardsize)
3909 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3910
3911
3912extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
3913 size_t __guardsize)
3914 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3915
3916
3917
3918extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
3919 __attr,
3920 struct sched_param *__restrict __param)
3921 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3922
3923
3924extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
3925 __const struct sched_param *__restrict
3926 __param) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3927
3928
3929extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
3930 __attr, int *__restrict __policy)
3931 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3932
3933
3934extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
3935 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3936
3937
3938extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
3939 __attr, int *__restrict __inherit)
3940 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3941
3942
3943extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
3944 int __inherit)
3945 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3946
3947
3948
3949extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
3950 int *__restrict __scope)
3951 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3952
3953
3954extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
3955 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3956
3957
3958extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
3959 __attr, void **__restrict __stackaddr)
3960 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
3961
3962
3963
3964
3965
3966extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
3967 void *__stackaddr)
3968 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
3969
3970
3971extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
3972 __attr, size_t *__restrict __stacksize)
3973 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
3974
3975
3976
3977
3978extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
3979 size_t __stacksize)
3980 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3981
3982
3983
3984extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
3985 void **__restrict __stackaddr,
3986 size_t *__restrict __stacksize)
3987 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));
3988
3989
3990
3991
3992extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
3993 size_t __stacksize) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3994
3995
3996
3997
3998
3999extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
4000 size_t __cpusetsize,
4001 __const cpu_set_t *__cpuset)
4002 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
4003
4004
4005
4006extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
4007 size_t __cpusetsize,
4008 cpu_set_t *__cpuset)
4009 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
4010
4011
4012
4013
4014
4015extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
4016 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
4017
4018
4019
4020
4021
4022
4023
4024extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
4025 __const struct sched_param *__param)
4026 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
4027
4028
4029extern int pthread_getschedparam (pthread_t __target_thread,
4030 int *__restrict __policy,
4031 struct sched_param *__restrict __param)
4032 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
4033
4034
4035extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
4036 __attribute__ ((__nothrow__));
4037
4038
4039
4040
4041extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__));
4042
4043
4044extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__));
4045
4046
4047
4048
4049
4050
4051
4052extern int pthread_yield (void) __attribute__ ((__nothrow__));
4053
4054
4055
4056
4057extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
4058 __const cpu_set_t *__cpuset)
4059 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
4060
4061
4062extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
4063 cpu_set_t *__cpuset)
4064 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
4065# 462 "../nptl/sysdeps/pthread/pthread.h"
4066extern int pthread_once (pthread_once_t *__once_control,
4067 void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
4068# 474 "../nptl/sysdeps/pthread/pthread.h"
4069extern int pthread_setcancelstate (int __state, int *__oldstate);
4070
4071
4072
4073extern int pthread_setcanceltype (int __type, int *__oldtype);
4074
4075
4076extern int pthread_cancel (pthread_t __th);
4077
4078
4079
4080
4081extern void pthread_testcancel (void);
4082
4083
4084
4085
4086typedef struct
4087{
4088 struct
4089 {
4090 __jmp_buf __cancel_jmp_buf;
4091 int __mask_was_saved;
4092 } __cancel_jmp_buf[1];
4093 void *__pad[4];
4094} __pthread_unwind_buf_t __attribute__ ((__aligned__));
4095# 508 "../nptl/sysdeps/pthread/pthread.h"
4096struct __pthread_cleanup_frame
4097{
4098 void (*__cancel_routine) (void *);
4099 void *__cancel_arg;
4100 int __do_it;
4101 int __cancel_type;
4102};
4103# 648 "../nptl/sysdeps/pthread/pthread.h"
4104extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
4105 ;
4106# 659 "../nptl/sysdeps/pthread/pthread.h"
4107extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
4108 ;
4109# 682 "../nptl/sysdeps/pthread/pthread.h"
4110extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
4111 ;
4112# 694 "../nptl/sysdeps/pthread/pthread.h"
4113extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf)
4114 ;
4115
4116
4117
4118extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
4119 __attribute__ ((__noreturn__))
4120
4121 __attribute__ ((__weak__))
4122
4123 ;
4124
4125
4126
4127struct __jmp_buf_tag;
4128extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __attribute__ ((__nothrow__));
4129
4130
4131
4132
4133
4134extern int pthread_mutex_init (pthread_mutex_t *__mutex,
4135 __const pthread_mutexattr_t *__mutexattr)
4136 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4137
4138
4139extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
4140 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4141
4142
4143extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
4144 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4145
4146
4147extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
4148 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4149
4150
4151
4152extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
4153 __const struct timespec *__restrict
4154 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4155
4156
4157
4158extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
4159 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4160
4161
4162
4163
4164extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
4165 __restrict __mutex,
4166 int *__restrict __prioceiling)
4167 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4168
4169
4170
4171extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
4172 int __prioceiling,
4173 int *__restrict __old_ceiling)
4174 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
4175
4176
4177
4178
4179
4180extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
4181 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4182
4183
4184
4185
4186
4187
4188
4189extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
4190 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4191
4192
4193extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
4194 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4195
4196
4197extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
4198 __restrict __attr,
4199 int *__restrict __pshared)
4200 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4201
4202
4203extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
4204 int __pshared)
4205 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4206
4207
4208
4209extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
4210 __attr, int *__restrict __kind)
4211 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4212
4213
4214
4215
4216extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
4217 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4218
4219
4220extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
4221 __restrict __attr,
4222 int *__restrict __protocol)
4223 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4224
4225
4226
4227extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
4228 int __protocol)
4229 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4230
4231
4232extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
4233 __restrict __attr,
4234 int *__restrict __prioceiling)
4235 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4236
4237
4238extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
4239 int __prioceiling)
4240 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4241
4242
4243
4244
4245extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
4246 int *__robustness)
4247 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4248
4249
4250extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
4251 int __robustness)
4252 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4253# 842 "../nptl/sysdeps/pthread/pthread.h"
4254extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
4255 __const pthread_rwlockattr_t *__restrict
4256 __attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4257
4258
4259extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
4260 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4261
4262
4263extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
4264 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4265
4266
4267extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
4268 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4269
4270
4271
4272extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
4273 __const struct timespec *__restrict
4274 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4275
4276
4277
4278extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
4279 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4280
4281
4282extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
4283 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4284
4285
4286
4287extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
4288 __const struct timespec *__restrict
4289 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4290
4291
4292
4293extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
4294 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4295
4296
4297
4298
4299
4300extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
4301 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4302
4303
4304extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
4305 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4306
4307
4308extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
4309 __restrict __attr,
4310 int *__restrict __pshared)
4311 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4312
4313
4314extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
4315 int __pshared)
4316 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4317
4318
4319extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
4320 __restrict __attr,
4321 int *__restrict __pref)
4322 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4323
4324
4325extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
4326 int __pref) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4327
4328
4329
4330
4331
4332
4333
4334extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
4335 __const pthread_condattr_t *__restrict
4336 __cond_attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4337
4338
4339extern int pthread_cond_destroy (pthread_cond_t *__cond)
4340 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4341
4342
4343extern int pthread_cond_signal (pthread_cond_t *__cond)
4344 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4345
4346
4347extern int pthread_cond_broadcast (pthread_cond_t *__cond)
4348 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4349
4350
4351
4352
4353
4354
4355extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
4356 pthread_mutex_t *__restrict __mutex)
4357 __attribute__ ((__nonnull__ (1, 2)));
4358# 954 "../nptl/sysdeps/pthread/pthread.h"
4359extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
4360 pthread_mutex_t *__restrict __mutex,
4361 __const struct timespec *__restrict
4362 __abstime) __attribute__ ((__nonnull__ (1, 2, 3)));
4363
4364
4365
4366
4367extern int pthread_condattr_init (pthread_condattr_t *__attr)
4368 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4369
4370
4371extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
4372 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4373
4374
4375extern int pthread_condattr_getpshared (__const pthread_condattr_t *
4376 __restrict __attr,
4377 int *__restrict __pshared)
4378 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4379
4380
4381extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
4382 int __pshared) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4383
4384
4385
4386extern int pthread_condattr_getclock (__const pthread_condattr_t *
4387 __restrict __attr,
4388 __clockid_t *__restrict __clock_id)
4389 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4390
4391
4392extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
4393 __clockid_t __clock_id)
4394 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4395# 998 "../nptl/sysdeps/pthread/pthread.h"
4396extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
4397 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4398
4399
4400extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
4401 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4402
4403
4404extern int pthread_spin_lock (pthread_spinlock_t *__lock)
4405 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4406
4407
4408extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
4409 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4410
4411
4412extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
4413 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4414
4415
4416
4417
4418
4419
4420extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
4421 __const pthread_barrierattr_t *__restrict
4422 __attr, unsigned int __count)
4423 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4424
4425
4426extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
4427 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4428
4429
4430extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
4431 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4432
4433
4434
4435extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
4436 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4437
4438
4439extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
4440 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4441
4442
4443extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
4444 __restrict __attr,
4445 int *__restrict __pshared)
4446 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
4447
4448
4449extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
4450 int __pshared)
4451 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4452# 1065 "../nptl/sysdeps/pthread/pthread.h"
4453extern int pthread_key_create (pthread_key_t *__key,
4454 void (*__destr_function) (void *))
4455 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4456
4457
4458extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__));
4459
4460
4461extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__));
4462
4463
4464extern int pthread_setspecific (pthread_key_t __key,
4465 __const void *__pointer) __attribute__ ((__nothrow__)) ;
4466
4467
4468
4469
4470extern int pthread_getcpuclockid (pthread_t __thread_id,
4471 __clockid_t *__clock_id)
4472 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
4473# 1099 "../nptl/sysdeps/pthread/pthread.h"
4474extern int pthread_atfork (void (*__prepare) (void),
4475 void (*__parent) (void),
4476 void (*__child) (void)) __attribute__ ((__nothrow__));
4477
4478
4479
4480
4481extern __inline int
4482__attribute__ ((__nothrow__)) pthread_equal (pthread_t __thread1, pthread_t __thread2)
4483{
4484 return __thread1 == __thread2;
4485}
4486
4487
4488
4489# 2 "../include/pthread.h" 2
4490
4491
4492extern void __pthread_initialize (void) __attribute__ ((weak));
4493# 27 "../nptl/../nptl_db/thread_db.h" 2
4494
4495# 1 "../include/sys/types.h" 1
4496# 29 "../nptl/../nptl_db/thread_db.h" 2
4497# 1 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h" 1
4498# 32 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h"
4499# 1 "../include/signal.h" 1
4500
4501
4502
4503
4504# 1 "../signal/signal.h" 1
4505# 31 "../signal/signal.h"
4506
4507
4508# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
4509# 103 "../sysdeps/unix/sysv/linux/bits/sigset.h"
4510extern int __sigismember (__const __sigset_t *, int);
4511extern int __sigaddset (__sigset_t *, int);
4512extern int __sigdelset (__sigset_t *, int);
4513# 117 "../sysdeps/unix/sysv/linux/bits/sigset.h"
4514extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; }
4515extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); }
4516extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); }
4517# 34 "../signal/signal.h" 2
4518
4519
4520
4521
4522
4523
4524
4525typedef __sig_atomic_t sig_atomic_t;
4526
4527# 58 "../signal/signal.h"
4528# 1 "../ports/sysdeps/unix/sysv/linux/hppa/bits/signum.h" 1
4529# 59 "../signal/signal.h" 2
4530# 75 "../signal/signal.h"
4531typedef void (*__sighandler_t) (int);
4532
4533
4534
4535
4536extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
4537 __attribute__ ((__nothrow__));
4538
4539extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
4540 __attribute__ ((__nothrow__));
4541
4542
4543
4544
4545
4546
4547
4548extern __sighandler_t signal (int __sig, __sighandler_t __handler)
4549 __attribute__ ((__nothrow__));
4550# 104 "../signal/signal.h"
4551
4552
4553
4554
4555
4556extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler)
4557 __attribute__ ((__nothrow__));
4558
4559
4560
4561
4562
4563
4564extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__));
4565
4566
4567
4568
4569
4570
4571extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__));
4572
4573
4574
4575
4576extern int raise (int __sig) __attribute__ ((__nothrow__));
4577
4578
4579
4580
4581extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
4582 __attribute__ ((__nothrow__));
4583extern int gsignal (int __sig) __attribute__ ((__nothrow__));
4584
4585
4586
4587
4588extern void psignal (int __sig, __const char *__s);
4589# 153 "../signal/signal.h"
4590extern int __sigpause (int __sig_or_mask, int __is_sig);
4591# 162 "../signal/signal.h"
4592extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
4593# 181 "../signal/signal.h"
4594extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
4595
4596
4597extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
4598
4599
4600extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
4601# 196 "../signal/signal.h"
4602typedef __sighandler_t sighandler_t;
4603
4604
4605
4606
4607typedef __sighandler_t sig_t;
4608# 212 "../signal/signal.h"
4609# 1 "../sysdeps/unix/sysv/linux/bits/siginfo.h" 1
4610# 25 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
4611# 1 "../sysdeps/wordsize-32/bits/wordsize.h" 1
4612# 26 "../sysdeps/unix/sysv/linux/bits/siginfo.h" 2
4613
4614
4615
4616
4617
4618
4619
4620typedef union sigval
4621 {
4622 int sival_int;
4623 void *sival_ptr;
4624 } sigval_t;
4625# 51 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
4626typedef struct siginfo
4627 {
4628 int si_signo;
4629 int si_errno;
4630
4631 int si_code;
4632
4633 union
4634 {
4635 int _pad[((128 / sizeof (int)) - 3)];
4636
4637
4638 struct
4639 {
4640 __pid_t si_pid;
4641 __uid_t si_uid;
4642 } _kill;
4643
4644
4645 struct
4646 {
4647 int si_tid;
4648 int si_overrun;
4649 sigval_t si_sigval;
4650 } _timer;
4651
4652
4653 struct
4654 {
4655 __pid_t si_pid;
4656 __uid_t si_uid;
4657 sigval_t si_sigval;
4658 } _rt;
4659
4660
4661 struct
4662 {
4663 __pid_t si_pid;
4664 __uid_t si_uid;
4665 int si_status;
4666 __clock_t si_utime;
4667 __clock_t si_stime;
4668 } _sigchld;
4669
4670
4671 struct
4672 {
4673 void *si_addr;
4674 } _sigfault;
4675
4676
4677 struct
4678 {
4679 long int si_band;
4680 int si_fd;
4681 } _sigpoll;
4682 } _sifields;
4683 } siginfo_t;
4684# 129 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
4685enum
4686{
4687 SI_ASYNCNL = -60,
4688
4689 SI_TKILL = -6,
4690
4691 SI_SIGIO,
4692
4693 SI_ASYNCIO,
4694
4695 SI_MESGQ,
4696
4697 SI_TIMER,
4698
4699 SI_QUEUE,
4700
4701 SI_USER,
4702
4703 SI_KERNEL = 0x80
4704
4705};
4706
4707
4708
4709enum
4710{
4711 ILL_ILLOPC = 1,
4712
4713 ILL_ILLOPN,
4714
4715 ILL_ILLADR,
4716
4717 ILL_ILLTRP,
4718
4719 ILL_PRVOPC,
4720
4721 ILL_PRVREG,
4722
4723 ILL_COPROC,
4724
4725 ILL_BADSTK
4726
4727};
4728
4729
4730enum
4731{
4732 FPE_INTDIV = 1,
4733
4734 FPE_INTOVF,
4735
4736 FPE_FLTDIV,
4737
4738 FPE_FLTOVF,
4739
4740 FPE_FLTUND,
4741
4742 FPE_FLTRES,
4743
4744 FPE_FLTINV,
4745
4746 FPE_FLTSUB
4747
4748};
4749
4750
4751enum
4752{
4753 SEGV_MAPERR = 1,
4754
4755 SEGV_ACCERR
4756
4757};
4758
4759
4760enum
4761{
4762 BUS_ADRALN = 1,
4763
4764 BUS_ADRERR,
4765
4766 BUS_OBJERR
4767
4768};
4769
4770
4771enum
4772{
4773 TRAP_BRKPT = 1,
4774
4775 TRAP_TRACE
4776
4777};
4778
4779
4780enum
4781{
4782 CLD_EXITED = 1,
4783
4784 CLD_KILLED,
4785
4786 CLD_DUMPED,
4787
4788 CLD_TRAPPED,
4789
4790 CLD_STOPPED,
4791
4792 CLD_CONTINUED
4793
4794};
4795
4796
4797enum
4798{
4799 POLL_IN = 1,
4800
4801 POLL_OUT,
4802
4803 POLL_MSG,
4804
4805 POLL_ERR,
4806
4807 POLL_PRI,
4808
4809 POLL_HUP
4810
4811};
4812# 273 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
4813typedef struct sigevent
4814 {
4815 sigval_t sigev_value;
4816 int sigev_signo;
4817 int sigev_notify;
4818
4819 union
4820 {
4821 int _pad[((64 / sizeof (int)) - 3)];
4822
4823
4824
4825 __pid_t _tid;
4826
4827 struct
4828 {
4829 void (*_function) (sigval_t);
4830 void *_attribute;
4831 } _sigev_thread;
4832 } _sigev_un;
4833 } sigevent_t;
4834
4835
4836
4837
4838
4839
4840enum
4841{
4842 SIGEV_SIGNAL = 0,
4843
4844 SIGEV_NONE,
4845
4846 SIGEV_THREAD,
4847
4848
4849 SIGEV_THREAD_ID = 4
4850
4851};
4852# 213 "../signal/signal.h" 2
4853
4854
4855
4856extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4857
4858
4859extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4860
4861
4862extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4863
4864
4865extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4866
4867
4868extern int sigismember (__const sigset_t *__set, int __signo)
4869 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4870
4871
4872
4873extern int sigisemptyset (__const sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4874
4875
4876extern int sigandset (sigset_t *__set, __const sigset_t *__left,
4877 __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));
4878
4879
4880extern int sigorset (sigset_t *__set, __const sigset_t *__left,
4881 __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));
4882
4883
4884
4885
4886# 1 "../ports/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h" 1
4887# 25 "../ports/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h"
4888struct sigaction
4889 {
4890
4891
4892 union
4893 {
4894
4895 __sighandler_t sa_handler;
4896
4897 void (*sa_sigaction) (int, siginfo_t *, void *);
4898 }
4899 __sigaction_handler;
4900
4901
4902
4903
4904
4905
4906
4907 unsigned long int sa_flags;
4908
4909
4910 __sigset_t sa_mask;
4911 };
4912# 247 "../signal/signal.h" 2
4913
4914
4915extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
4916 sigset_t *__restrict __oset) __attribute__ ((__nothrow__));
4917
4918
4919
4920
4921
4922
4923extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
4924
4925
4926extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
4927 struct sigaction *__restrict __oact) __attribute__ ((__nothrow__));
4928
4929
4930extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
4931
4932
4933
4934
4935
4936
4937extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
4938 __attribute__ ((__nonnull__ (1, 2)));
4939
4940
4941
4942
4943
4944
4945extern int sigwaitinfo (__const sigset_t *__restrict __set,
4946 siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
4947
4948
4949
4950
4951
4952
4953extern int sigtimedwait (__const sigset_t *__restrict __set,
4954 siginfo_t *__restrict __info,
4955 __const struct timespec *__restrict __timeout)
4956 __attribute__ ((__nonnull__ (1)));
4957
4958
4959
4960extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
4961 __attribute__ ((__nothrow__));
4962# 304 "../signal/signal.h"
4963extern __const char *__const _sys_siglist[65];
4964extern __const char *__const sys_siglist[65];
4965
4966
4967struct sigvec
4968 {
4969 __sighandler_t sv_handler;
4970 int sv_mask;
4971
4972 int sv_flags;
4973
4974 };
4975# 328 "../signal/signal.h"
4976extern int sigvec (int __sig, __const struct sigvec *__vec,
4977 struct sigvec *__ovec) __attribute__ ((__nothrow__));
4978
4979
4980
4981# 1 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 1
4982# 28 "../sysdeps/unix/sysv/linux/bits/sigcontext.h"
4983# 1 "/usr/include/asm/sigcontext.h" 1 3 4
4984# 9 "/usr/include/asm/sigcontext.h" 3 4
4985struct sigcontext {
4986 unsigned long sc_flags;
4987
4988 unsigned long sc_gr[32];
4989 unsigned long long sc_fr[32];
4990 unsigned long sc_iasq[2];
4991 unsigned long sc_iaoq[2];
4992 unsigned long sc_sar;
4993};
4994# 29 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 2
4995# 334 "../signal/signal.h" 2
4996
4997
4998extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__));
4999# 346 "../signal/signal.h"
5000extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__));
5001
5002# 1 "../sysdeps/unix/sysv/linux/bits/sigstack.h" 1
5003# 26 "../sysdeps/unix/sysv/linux/bits/sigstack.h"
5004struct sigstack
5005 {
5006 void *ss_sp;
5007 int ss_onstack;
5008 };
5009
5010
5011
5012enum
5013{
5014 SS_ONSTACK = 1,
5015
5016 SS_DISABLE
5017
5018};
5019# 50 "../sysdeps/unix/sysv/linux/bits/sigstack.h"
5020typedef struct sigaltstack
5021 {
5022 void *ss_sp;
5023 int ss_flags;
5024 size_t ss_size;
5025 } stack_t;
5026# 349 "../signal/signal.h" 2
5027
5028
5029# 1 "../ports/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h" 1
5030# 29 "../ports/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h"
5031# 1 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 1
5032# 30 "../ports/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h" 2
5033
5034
5035
5036typedef unsigned long int greg_t;
5037
5038
5039
5040
5041
5042
5043typedef struct gregset
5044 {
5045 greg_t g_regs[32];
5046 greg_t sr_regs[8];
5047 greg_t cr_regs[24];
5048 greg_t g_pad[16];
5049 } gregset_t;
5050
5051
5052typedef struct fpregset
5053 {
5054 double fp_dregs[32];
5055 } fpregset_t;
5056
5057
5058typedef struct sigcontext mcontext_t;
5059
5060
5061typedef struct ucontext
5062 {
5063 unsigned long int uc_flags;
5064 struct ucontext *uc_link;
5065 stack_t uc_stack;
5066 mcontext_t uc_mcontext;
5067 __sigset_t uc_sigmask;
5068 } ucontext_t;
5069# 352 "../signal/signal.h" 2
5070
5071
5072
5073
5074
5075extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
5076 __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
5077
5078
5079
5080extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
5081 struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__));
5082
5083
5084
5085
5086
5087
5088
5089extern int sighold (int __sig) __attribute__ ((__nothrow__));
5090
5091
5092extern int sigrelse (int __sig) __attribute__ ((__nothrow__));
5093
5094
5095extern int sigignore (int __sig) __attribute__ ((__nothrow__));
5096
5097
5098extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__));
5099
5100
5101
5102
5103
5104
5105# 1 "../nptl/sysdeps/pthread/bits/sigthread.h" 1
5106# 31 "../nptl/sysdeps/pthread/bits/sigthread.h"
5107extern int pthread_sigmask (int __how,
5108 __const __sigset_t *__restrict __newmask,
5109 __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__));
5110
5111
5112extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__));
5113# 388 "../signal/signal.h" 2
5114
5115
5116
5117
5118
5119
5120extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__));
5121
5122extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__));
5123
5124
5125
5126
5127# 6 "../include/signal.h" 2
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140extern __sighandler_t __bsd_signal (int __sig, __sighandler_t __handler);
5141extern int __kill (__pid_t __pid, int __sig);
5142extern int __sigaction (int __sig, __const struct sigaction *__restrict __act,
5143 struct sigaction *__restrict __oact);
5144
5145extern int __sigblock (int __mask);
5146extern int __sigsetmask (int __mask);
5147extern int __sigprocmask (int __how,
5148 __const sigset_t *__set, sigset_t *__oset);
5149extern int __sigsuspend (__const sigset_t *__set);
5150
5151
5152extern int __sigsuspend_nocancel (__const sigset_t *__set) ;
5153
5154extern int __sigwait (__const sigset_t *__set, int *__sig);
5155
5156extern int __sigwaitinfo (__const sigset_t *__set, siginfo_t *__info);
5157
5158extern int __sigtimedwait (__const sigset_t *__set, siginfo_t *__info,
5159 __const struct timespec *__timeout);
5160
5161extern int __sigqueue (__pid_t __pid, int __sig,
5162 __const union sigval __val);
5163extern int __sigvec (int __sig, __const struct sigvec *__vec,
5164 struct sigvec *__ovec);
5165extern int __sigreturn (struct sigcontext *__scp);
5166extern int __sigaltstack (__const struct sigaltstack *__ss,
5167 struct sigaltstack *__oss);
5168extern int __libc_sigaction (int sig, const struct sigaction *act,
5169 struct sigaction *oact);
5170
5171
5172extern int __sigpause (int sig_or_mask, int is_sig);
5173extern int __default_sigpause (int mask);
5174extern int __xpg_sigpause (int sig);
5175
5176
5177
5178
5179
5180
5181
5182extern int __libc_allocate_rtsig (int __high);
5183# 33 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h" 2
5184# 1 "../include/sys/time.h" 1
5185
5186# 1 "../time/sys/time.h" 1
5187# 29 "../time/sys/time.h"
5188# 1 "../bits/time.h" 1
5189# 30 "../time/sys/time.h" 2
5190# 39 "../time/sys/time.h"
5191
5192# 57 "../time/sys/time.h"
5193struct timezone
5194 {
5195 int tz_minuteswest;
5196 int tz_dsttime;
5197 };
5198
5199typedef struct timezone *__restrict __timezone_ptr_t;
5200# 73 "../time/sys/time.h"
5201extern int gettimeofday (struct timeval *__restrict __tv,
5202 __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
5203
5204
5205
5206
5207extern int settimeofday (__const struct timeval *__tv,
5208 __const struct timezone *__tz)
5209 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
5210
5211
5212
5213
5214
5215extern int adjtime (__const struct timeval *__delta,
5216 struct timeval *__olddelta) __attribute__ ((__nothrow__));
5217
5218
5219
5220
5221enum __itimer_which
5222 {
5223
5224 ITIMER_REAL = 0,
5225
5226
5227 ITIMER_VIRTUAL = 1,
5228
5229
5230
5231 ITIMER_PROF = 2
5232
5233 };
5234
5235
5236
5237struct itimerval
5238 {
5239
5240 struct timeval it_interval;
5241
5242 struct timeval it_value;
5243 };
5244
5245
5246
5247
5248typedef enum __itimer_which __itimer_which_t;
5249
5250
5251
5252
5253
5254
5255extern int getitimer (__itimer_which_t __which,
5256 struct itimerval *__value) __attribute__ ((__nothrow__));
5257
5258
5259
5260
5261extern int setitimer (__itimer_which_t __which,
5262 __const struct itimerval *__restrict __new,
5263 struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
5264
5265
5266
5267
5268extern int utimes (__const char *__file, __const struct timeval __tvp[2])
5269 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
5270
5271
5272
5273extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
5274 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
5275
5276
5277extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
5278
5279
5280
5281
5282
5283
5284extern int futimesat (int __fd, __const char *__file,
5285 __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
5286# 191 "../time/sys/time.h"
5287
5288# 3 "../include/sys/time.h" 2
5289
5290
5291extern int __gettimeofday (struct timeval *__tv,
5292 struct timezone *__tz);
5293extern int __gettimeofday_internal (struct timeval *__tv,
5294 struct timezone *__tz)
5295 ;
5296extern int __settimeofday (__const struct timeval *__tv,
5297 __const struct timezone *__tz)
5298 ;
5299extern int __adjtime (__const struct timeval *__delta,
5300 struct timeval *__olddelta);
5301extern int __getitimer (enum __itimer_which __which,
5302 struct itimerval *__value);
5303extern int __setitimer (enum __itimer_which __which,
5304 __const struct itimerval *__restrict __new,
5305 struct itimerval *__restrict __old)
5306 ;
5307extern int __utimes (__const char *__file, const struct timeval __tvp[2])
5308 ;
5309extern int __futimes (int fd, __const struct timeval tvp[2]) ;
5310# 34 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h" 2
5311# 1 "../include/sys/types.h" 1
5312# 35 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h" 2
5313
5314# 1 "../sysdeps/unix/sysv/linux/sys/user.h" 1
5315# 1 "/usr/include/linux/user.h" 1 3 4
5316# 1 "/usr/include/asm/user.h" 1 3 4
5317# 1 "/usr/include/linux/user.h" 2 3 4
5318# 1 "../sysdeps/unix/sysv/linux/sys/user.h" 2
5319# 37 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h" 2
5320# 1 "/usr/include/asm/elf.h" 1 3 4
5321
5322
5323
5324
5325
5326
5327
5328# 1 "/usr/include/asm/ptrace.h" 1 3 4
5329
5330
5331
5332
5333
5334
5335
5336# 1 "/usr/include/linux/types.h" 1 3 4
5337
5338
5339
5340# 1 "../include/sys/types.h" 1 3 4
5341# 5 "/usr/include/linux/types.h" 2 3 4
5342# 1 "../sysdeps/generic/inttypes.h" 1 3 4
5343# 35 "../sysdeps/generic/inttypes.h" 3 4
5344typedef long int __gwchar_t;
5345# 274 "../sysdeps/generic/inttypes.h" 3 4
5346
5347# 288 "../sysdeps/generic/inttypes.h" 3 4
5348typedef struct
5349 {
5350 long long int quot;
5351 long long int rem;
5352 } imaxdiv_t;
5353
5354
5355
5356
5357
5358extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
5359
5360
5361extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
5362 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
5363
5364
5365extern intmax_t strtoimax (__const char *__restrict __nptr,
5366 char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
5367
5368
5369extern uintmax_t strtoumax (__const char *__restrict __nptr,
5370 char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
5371
5372
5373extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
5374 __gwchar_t **__restrict __endptr, int __base)
5375 __attribute__ ((__nothrow__));
5376
5377
5378extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
5379 __gwchar_t ** __restrict __endptr, int __base)
5380 __attribute__ ((__nothrow__));
5381# 396 "../sysdeps/generic/inttypes.h" 3 4
5382extern __inline intmax_t
5383__attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
5384
5385{
5386 return __strtoll_internal (nptr, endptr, base, 0);
5387}
5388# 414 "../sysdeps/generic/inttypes.h" 3 4
5389extern __inline uintmax_t
5390__attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
5391
5392{
5393 return __strtoull_internal (nptr, endptr, base, 0);
5394}
5395
5396
5397
5398__extension__
5399extern long long int __wcstoll_internal (__const __gwchar_t *
5400 __restrict __nptr,
5401 __gwchar_t **__restrict __endptr,
5402 int __base, int __group) __attribute__ ((__nothrow__));
5403
5404
5405extern __inline intmax_t
5406__attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
5407
5408{
5409 return __wcstoll_internal (nptr, endptr, base, 0);
5410}
5411
5412
5413
5414
5415__extension__
5416extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
5417 __restrict __nptr,
5418 __gwchar_t **
5419 __restrict __endptr,
5420 int __base,
5421 int __group) __attribute__ ((__nothrow__));
5422
5423
5424extern __inline uintmax_t
5425__attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
5426
5427{
5428 return __wcstoull_internal (nptr, endptr, base, 0);
5429}
5430
5431
5432
5433
5434
5435# 6 "/usr/include/linux/types.h" 2 3 4
5436# 1 "/usr/include/linux/posix_types.h" 1 3 4
5437
5438
5439
5440# 1 "/usr/include/linux/stddef.h" 1 3 4
5441# 5 "/usr/include/linux/posix_types.h" 2 3 4
5442# 36 "/usr/include/linux/posix_types.h" 3 4
5443typedef struct {
5444 unsigned long fds_bits [(1024/(8 * sizeof(unsigned long)))];
5445} __kernel_fd_set;
5446
5447
5448typedef void (*__kernel_sighandler_t)(int);
5449
5450
5451typedef int __kernel_key_t;
5452typedef int __kernel_mqd_t;
5453
5454# 1 "/usr/include/asm/posix_types.h" 1 3 4
5455# 9 "/usr/include/asm/posix_types.h" 3 4
5456typedef unsigned long __kernel_ino_t;
5457typedef unsigned short __kernel_mode_t;
5458typedef unsigned short __kernel_nlink_t;
5459typedef long __kernel_off_t;
5460typedef int __kernel_pid_t;
5461typedef unsigned short __kernel_ipc_pid_t;
5462typedef unsigned int __kernel_uid_t;
5463typedef unsigned int __kernel_gid_t;
5464typedef int __kernel_suseconds_t;
5465typedef long __kernel_clock_t;
5466typedef int __kernel_timer_t;
5467typedef int __kernel_clockid_t;
5468typedef int __kernel_daddr_t;
5469
5470
5471
5472
5473
5474
5475
5476typedef unsigned int __kernel_size_t;
5477typedef int __kernel_ssize_t;
5478typedef int __kernel_ptrdiff_t;
5479typedef long __kernel_time_t;
5480
5481typedef char * __kernel_caddr_t;
5482
5483typedef unsigned short __kernel_uid16_t;
5484typedef unsigned short __kernel_gid16_t;
5485typedef unsigned int __kernel_uid32_t;
5486typedef unsigned int __kernel_gid32_t;
5487
5488
5489typedef long long __kernel_loff_t;
5490typedef long long __kernel_off64_t;
5491typedef unsigned long long __kernel_ino64_t;
5492
5493
5494typedef unsigned int __kernel_old_dev_t;
5495
5496typedef struct {
5497
5498
5499
5500 int __val[2];
5501
5502} __kernel_fsid_t;
5503
5504
5505typedef __kernel_uid_t __kernel_old_uid_t;
5506typedef __kernel_gid_t __kernel_old_gid_t;
5507# 48 "/usr/include/linux/posix_types.h" 2 3 4
5508# 7 "/usr/include/linux/types.h" 2 3 4
5509# 1 "/usr/include/asm/types.h" 1 3 4
5510
5511
5512
5513
5514
5515typedef unsigned short umode_t;
5516
5517
5518
5519
5520
5521
5522typedef __signed__ char __s8;
5523typedef unsigned char __u8;
5524
5525typedef __signed__ short __s16;
5526typedef unsigned short __u16;
5527
5528typedef __signed__ int __s32;
5529typedef unsigned int __u32;
5530
5531
5532typedef __signed__ long long __s64;
5533typedef unsigned long long __u64;
5534# 8 "/usr/include/linux/types.h" 2 3 4
5535# 148 "/usr/include/linux/types.h" 3 4
5536typedef __u16 __le16;
5537typedef __u16 __be16;
5538typedef __u32 __le32;
5539typedef __u32 __be32;
5540
5541typedef __u64 __le64;
5542typedef __u64 __be64;
5543
5544
5545
5546struct ustat {
5547 __kernel_daddr_t f_tfree;
5548 __kernel_ino_t f_tinode;
5549 char f_fname[6];
5550 char f_fpack[6];
5551};
5552# 9 "/usr/include/asm/ptrace.h" 2 3 4
5553# 18 "/usr/include/asm/ptrace.h" 3 4
5554struct pt_regs {
5555 unsigned long gr[32];
5556 __u64 fr[32];
5557 unsigned long sr[ 8];
5558 unsigned long iasq[2];
5559 unsigned long iaoq[2];
5560 unsigned long cr27;
5561 unsigned long pad0;
5562 unsigned long orig_r28;
5563 unsigned long ksp;
5564 unsigned long kpc;
5565 unsigned long sar;
5566 unsigned long iir;
5567 unsigned long isr;
5568 unsigned long ior;
5569 unsigned long ipsw;
5570};
5571# 9 "/usr/include/asm/elf.h" 2 3 4
5572# 158 "/usr/include/asm/elf.h" 3 4
5573typedef struct elf32_fdesc {
5574 __u32 addr;
5575 __u32 gp;
5576} Elf32_Fdesc;
5577
5578
5579typedef struct elf64_fdesc {
5580 __u64 dummy[2];
5581
5582 __u64 addr;
5583 __u64 gp;
5584} Elf64_Fdesc;
5585# 229 "/usr/include/asm/elf.h" 3 4
5586typedef unsigned long elf_greg_t;
5587# 285 "/usr/include/asm/elf.h" 3 4
5588typedef elf_greg_t elf_gregset_t[80];
5589
5590
5591typedef double elf_fpreg_t;
5592typedef elf_fpreg_t elf_fpregset_t[32];
5593
5594struct task_struct;
5595
5596extern int dump_task_fpu (struct task_struct *, elf_fpregset_t *);
5597
5598
5599struct pt_regs;
5600# 38 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h" 2
5601
5602
5603
5604struct elf_siginfo
5605 {
5606 int si_signo;
5607 int si_code;
5608 int si_errno;
5609 };
5610# 55 "../ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h"
5611struct elf_prstatus
5612 {
5613 struct elf_siginfo pr_info;
5614 short int pr_cursig;
5615 unsigned long int pr_sigpend;
5616 unsigned long int pr_sighold;
5617 __pid_t pr_pid;
5618 __pid_t pr_ppid;
5619 __pid_t pr_pgrp;
5620 __pid_t pr_sid;
5621 struct timeval pr_utime;
5622 struct timeval pr_stime;
5623 struct timeval pr_cutime;
5624 struct timeval pr_cstime;
5625 elf_gregset_t pr_reg;
5626 int pr_fpvalid;
5627 };
5628
5629
5630
5631
5632struct elf_prpsinfo
5633 {
5634 char pr_state;
5635 char pr_sname;
5636 char pr_zomb;
5637 char pr_nice;
5638 unsigned long int pr_flag;
5639 unsigned int pr_uid;
5640 unsigned int pr_gid;
5641 int pr_pid, pr_ppid, pr_pgrp, pr_sid;
5642
5643 char pr_fname[16];
5644 char pr_psargs[(80)];
5645 };
5646
5647
5648
5649
5650
5651
5652
5653typedef void *psaddr_t;
5654
5655
5656typedef elf_gregset_t prgregset_t;
5657typedef elf_fpregset_t prfpregset_t;
5658
5659
5660
5661typedef __pid_t lwpid_t;
5662
5663
5664typedef struct elf_prstatus prstatus_t;
5665typedef struct elf_prpsinfo prpsinfo_t;
5666
5667
5668# 30 "../nptl/../nptl_db/thread_db.h" 2
5669
5670
5671
5672typedef enum
5673{
5674 TD_OK,
5675 TD_ERR,
5676 TD_NOTHR,
5677 TD_NOSV,
5678 TD_NOLWP,
5679 TD_BADPH,
5680 TD_BADTH,
5681 TD_BADSH,
5682 TD_BADTA,
5683 TD_BADKEY,
5684 TD_NOMSG,
5685 TD_NOFPREGS,
5686 TD_NOLIBTHREAD,
5687 TD_NOEVENT,
5688 TD_NOCAPAB,
5689 TD_DBERR,
5690 TD_NOAPLIC,
5691 TD_NOTSD,
5692 TD_MALLOC,
5693 TD_PARTIALREG,
5694 TD_NOXREGS,
5695 TD_TLSDEFER,
5696 TD_NOTALLOC = TD_TLSDEFER,
5697 TD_VERSION,
5698 TD_NOTLS
5699} td_err_e;
5700
5701
5702
5703
5704typedef enum
5705{
5706 TD_THR_ANY_STATE,
5707 TD_THR_UNKNOWN,
5708 TD_THR_STOPPED,
5709 TD_THR_RUN,
5710 TD_THR_ACTIVE,
5711 TD_THR_ZOMBIE,
5712 TD_THR_SLEEP,
5713 TD_THR_STOPPED_ASLEEP
5714} td_thr_state_e;
5715
5716
5717
5718typedef enum
5719{
5720 TD_THR_ANY_TYPE,
5721 TD_THR_USER,
5722 TD_THR_SYSTEM
5723} td_thr_type_e;
5724
5725
5726
5727
5728
5729typedef struct td_thragent td_thragent_t;
5730
5731
5732typedef struct td_thrhandle
5733{
5734 td_thragent_t *th_ta_p;
5735 psaddr_t th_unique;
5736} td_thrhandle_t;
5737
5738
5739
5740struct link_map;
5741# 116 "../nptl/../nptl_db/thread_db.h"
5742typedef struct td_thr_events
5743{
5744 uint32_t event_bits[2];
5745} td_thr_events_t;
5746# 155 "../nptl/../nptl_db/thread_db.h"
5747typedef enum
5748{
5749 TD_ALL_EVENTS,
5750 TD_EVENT_NONE = TD_ALL_EVENTS,
5751 TD_READY,
5752 TD_SLEEP,
5753 TD_SWITCHTO,
5754 TD_SWITCHFROM,
5755 TD_LOCK_TRY,
5756 TD_CATCHSIG,
5757 TD_IDLE,
5758 TD_CREATE,
5759 TD_DEATH,
5760 TD_PREEMPT,
5761 TD_PRI_INHERIT,
5762 TD_REAP,
5763 TD_CONCURRENCY,
5764 TD_TIMEOUT,
5765 TD_MIN_EVENT_NUM = TD_READY,
5766 TD_MAX_EVENT_NUM = TD_TIMEOUT,
5767 TD_EVENTS_ENABLE = 31
5768} td_event_e;
5769
5770
5771typedef enum
5772{
5773 NOTIFY_BPT,
5774 NOTIFY_AUTOBPT,
5775
5776 NOTIFY_SYSCALL
5777} td_notify_e;
5778
5779
5780typedef struct td_notify
5781{
5782 td_notify_e type;
5783 union
5784 {
5785 psaddr_t bptaddr;
5786 int syscallno;
5787 } u;
5788} td_notify_t;
5789
5790
5791typedef struct td_event_msg
5792{
5793 td_event_e event;
5794 const td_thrhandle_t *th_p;
5795 union
5796 {
5797
5798
5799
5800 uintptr_t data;
5801 } msg;
5802} td_event_msg_t;
5803
5804
5805typedef struct
5806{
5807 td_thr_events_t eventmask;
5808 td_event_e eventnum;
5809 void *eventdata;
5810} td_eventbuf_t;
5811
5812
5813
5814typedef struct td_ta_stats
5815{
5816 int nthreads;
5817 int r_concurrency;
5818 int nrunnable_num;
5819 int nrunnable_den;
5820 int a_concurrency_num;
5821 int a_concurrency_den;
5822 int nlwps_num;
5823
5824 int nlwps_den;
5825
5826 int nidle_num;
5827
5828 int nidle_den;
5829
5830} td_ta_stats_t;
5831
5832
5833
5834
5835typedef pthread_t thread_t;
5836typedef pthread_key_t thread_key_t;
5837
5838
5839
5840typedef int td_thr_iter_f (const td_thrhandle_t *, void *);
5841
5842
5843typedef int td_key_iter_f (thread_key_t, void (*) (void *), void *);
5844
5845
5846
5847
5848struct ps_prochandle;
5849
5850
5851
5852typedef struct td_thrinfo
5853{
5854 td_thragent_t *ti_ta_p;
5855 unsigned int ti_user_flags;
5856 thread_t ti_tid;
5857
5858 char *ti_tls;
5859 psaddr_t ti_startfunc;
5860
5861 psaddr_t ti_stkbase;
5862 long int ti_stksize;
5863 psaddr_t ti_ro_area;
5864 int ti_ro_size;
5865 td_thr_state_e ti_state;
5866 unsigned char ti_db_suspended;
5867 td_thr_type_e ti_type;
5868
5869 intptr_t ti_pc;
5870 intptr_t ti_sp;
5871 short int ti_flags;
5872 int ti_pri;
5873 lwpid_t ti_lid;
5874 sigset_t ti_sigmask;
5875 unsigned char ti_traceme;
5876
5877 unsigned char ti_preemptflag;
5878 unsigned char ti_pirecflag;
5879 sigset_t ti_pending;
5880 td_thr_events_t ti_events;
5881} td_thrinfo_t;
5882
5883
5884
5885
5886
5887
5888extern td_err_e td_init (void);
5889
5890
5891extern td_err_e td_log (void);
5892
5893
5894extern const char **td_symbol_list (void);
5895
5896
5897extern td_err_e td_ta_new (struct ps_prochandle *__ps, td_thragent_t **__ta);
5898
5899
5900extern td_err_e td_ta_delete (td_thragent_t *__ta);
5901
5902
5903extern td_err_e td_ta_get_nthreads (const td_thragent_t *__ta, int *__np);
5904
5905
5906
5907extern td_err_e td_ta_get_ph (const td_thragent_t *__ta,
5908 struct ps_prochandle **__ph);
5909
5910
5911
5912extern td_err_e td_ta_map_id2thr (const td_thragent_t *__ta, pthread_t __pt,
5913 td_thrhandle_t *__th);
5914
5915
5916
5917extern td_err_e td_ta_map_lwp2thr (const td_thragent_t *__ta, lwpid_t __lwpid,
5918 td_thrhandle_t *__th);
5919
5920
5921
5922
5923extern td_err_e td_ta_thr_iter (const td_thragent_t *__ta,
5924 td_thr_iter_f *__callback, void *__cbdata_p,
5925 td_thr_state_e __state, int __ti_pri,
5926 sigset_t *__ti_sigmask_p,
5927 unsigned int __ti_user_flags);
5928
5929
5930extern td_err_e td_ta_tsd_iter (const td_thragent_t *__ta, td_key_iter_f *__ki,
5931 void *__p);
5932
5933
5934
5935extern td_err_e td_ta_event_addr (const td_thragent_t *__ta,
5936 td_event_e __event, td_notify_t *__ptr);
5937
5938
5939extern td_err_e td_ta_set_event (const td_thragent_t *__ta,
5940 td_thr_events_t *__event);
5941
5942
5943extern td_err_e td_ta_clear_event (const td_thragent_t *__ta,
5944 td_thr_events_t *__event);
5945
5946
5947extern td_err_e td_ta_event_getmsg (const td_thragent_t *__ta,
5948 td_event_msg_t *__msg);
5949
5950
5951
5952extern td_err_e td_ta_setconcurrency (const td_thragent_t *__ta, int __level);
5953
5954
5955
5956extern td_err_e td_ta_enable_stats (const td_thragent_t *__ta, int __enable);
5957
5958
5959extern td_err_e td_ta_reset_stats (const td_thragent_t *__ta);
5960
5961
5962extern td_err_e td_ta_get_stats (const td_thragent_t *__ta,
5963 td_ta_stats_t *__statsp);
5964
5965
5966
5967extern td_err_e td_thr_validate (const td_thrhandle_t *__th);
5968
5969
5970extern td_err_e td_thr_get_info (const td_thrhandle_t *__th,
5971 td_thrinfo_t *__infop);
5972
5973
5974extern td_err_e td_thr_getfpregs (const td_thrhandle_t *__th,
5975 prfpregset_t *__regset);
5976
5977
5978extern td_err_e td_thr_getgregs (const td_thrhandle_t *__th,
5979 prgregset_t __gregs);
5980
5981
5982extern td_err_e td_thr_getxregs (const td_thrhandle_t *__th, void *__xregs);
5983
5984
5985extern td_err_e td_thr_getxregsize (const td_thrhandle_t *__th, int *__sizep);
5986
5987
5988extern td_err_e td_thr_setfpregs (const td_thrhandle_t *__th,
5989 const prfpregset_t *__fpregs);
5990
5991
5992extern td_err_e td_thr_setgregs (const td_thrhandle_t *__th,
5993 prgregset_t __gregs);
5994
5995
5996extern td_err_e td_thr_setxregs (const td_thrhandle_t *__th,
5997 const void *__addr);
5998
5999
6000
6001extern td_err_e td_thr_tlsbase (const td_thrhandle_t *__th,
6002 unsigned long int __modid,
6003 psaddr_t *__base);
6004
6005
6006extern td_err_e td_thr_tls_get_addr (const td_thrhandle_t *__th,
6007 psaddr_t __map_address, size_t __offset,
6008 psaddr_t *__address);
6009
6010
6011
6012extern td_err_e td_thr_event_enable (const td_thrhandle_t *__th, int __event);
6013
6014
6015extern td_err_e td_thr_set_event (const td_thrhandle_t *__th,
6016 td_thr_events_t *__event);
6017
6018
6019extern td_err_e td_thr_clear_event (const td_thrhandle_t *__th,
6020 td_thr_events_t *__event);
6021
6022
6023extern td_err_e td_thr_event_getmsg (const td_thrhandle_t *__th,
6024 td_event_msg_t *__msg);
6025
6026
6027
6028extern td_err_e td_thr_setprio (const td_thrhandle_t *__th, int __prio);
6029
6030
6031
6032extern td_err_e td_thr_setsigpending (const td_thrhandle_t *__th,
6033 unsigned char __n, const sigset_t *__ss);
6034
6035
6036extern td_err_e td_thr_sigsetmask (const td_thrhandle_t *__th,
6037 const sigset_t *__ss);
6038
6039
6040
6041extern td_err_e td_thr_tsd (const td_thrhandle_t *__th,
6042 const thread_key_t __tk, void **__data);
6043
6044
6045
6046extern td_err_e td_thr_dbsuspend (const td_thrhandle_t *__th);
6047
6048
6049extern td_err_e td_thr_dbresume (const td_thrhandle_t *__th);
6050# 34 "../nptl/descr.h" 2
6051# 1 "../include/tls.h" 1
6052# 35 "../nptl/descr.h" 2
6053
6054# 1 "../sysdeps/generic/unwind.h" 1
6055# 35 "../sysdeps/generic/unwind.h"
6056typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
6057typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));
6058
6059
6060
6061typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
6062
6063typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
6064
6065
6066
6067
6068
6069typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__)));
6070
6071
6072
6073typedef enum
6074{
6075 _URC_NO_REASON = 0,
6076 _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
6077 _URC_FATAL_PHASE2_ERROR = 2,
6078 _URC_FATAL_PHASE1_ERROR = 3,
6079 _URC_NORMAL_STOP = 4,
6080 _URC_END_OF_STACK = 5,
6081 _URC_HANDLER_FOUND = 6,
6082 _URC_INSTALL_CONTEXT = 7,
6083 _URC_CONTINUE_UNWIND = 8
6084} _Unwind_Reason_Code;
6085# 72 "../sysdeps/generic/unwind.h"
6086struct _Unwind_Exception;
6087
6088typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
6089 struct _Unwind_Exception *);
6090
6091struct _Unwind_Exception
6092{
6093 _Unwind_Exception_Class exception_class;
6094 _Unwind_Exception_Cleanup_Fn exception_cleanup;
6095 _Unwind_Word private_1;
6096 _Unwind_Word private_2;
6097
6098
6099
6100
6101} __attribute__((__aligned__));
6102
6103
6104
6105
6106typedef int _Unwind_Action;
6107# 104 "../sysdeps/generic/unwind.h"
6108struct _Unwind_Context;
6109
6110
6111extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *);
6112
6113
6114
6115typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
6116 (int, _Unwind_Action, _Unwind_Exception_Class,
6117 struct _Unwind_Exception *, struct _Unwind_Context *, void *);
6118
6119extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *,
6120 _Unwind_Stop_Fn,
6121 void *);
6122
6123
6124extern void _Unwind_DeleteException (struct _Unwind_Exception *);
6125
6126
6127
6128extern void _Unwind_Resume (struct _Unwind_Exception *);
6129
6130
6131
6132
6133typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
6134 (struct _Unwind_Context *, void *);
6135
6136extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *);
6137
6138
6139
6140
6141
6142
6143extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int);
6144extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word);
6145
6146extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
6147extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
6148
6149
6150extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
6151
6152extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);
6153
6154extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
6155# 167 "../sysdeps/generic/unwind.h"
6156typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
6157 (int, _Unwind_Action, _Unwind_Exception_Class,
6158 struct _Unwind_Exception *, struct _Unwind_Context *);
6159
6160
6161
6162
6163struct SjLj_Function_Context;
6164extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *);
6165extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *);
6166
6167extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException
6168 (struct _Unwind_Exception *);
6169extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind
6170 (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
6171extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *);
6172# 208 "../sysdeps/generic/unwind.h"
6173extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
6174extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
6175
6176
6177
6178
6179extern void * _Unwind_FindEnclosingFunction (void *pc);
6180# 37 "../nptl/descr.h" 2
6181
6182
6183# 1 "../include/resolv.h" 1
6184# 12 "../include/resolv.h"
6185# 1 "../resolv/resolv.h" 1
6186# 56 "../resolv/resolv.h"
6187# 1 "../include/sys/types.h" 1
6188# 57 "../resolv/resolv.h" 2
6189# 1 "../include/netinet/in.h" 1
6190
6191
6192# 1 "../inet/netinet/in.h" 1
6193# 24 "../inet/netinet/in.h"
6194# 1 "../include/sys/socket.h" 1
6195
6196# 1 "../socket/sys/socket.h" 1
6197# 25 "../socket/sys/socket.h"
6198
6199
6200# 1 "../include/sys/uio.h" 1
6201
6202# 1 "../misc/sys/uio.h" 1
6203# 24 "../misc/sys/uio.h"
6204# 1 "../include/sys/types.h" 1
6205# 25 "../misc/sys/uio.h" 2
6206
6207
6208
6209
6210# 1 "../sysdeps/unix/sysv/linux/bits/uio.h" 1
6211# 26 "../sysdeps/unix/sysv/linux/bits/uio.h"
6212# 1 "../include/sys/types.h" 1
6213# 27 "../sysdeps/unix/sysv/linux/bits/uio.h" 2
6214# 44 "../sysdeps/unix/sysv/linux/bits/uio.h"
6215struct iovec
6216 {
6217 void *iov_base;
6218 size_t iov_len;
6219 };
6220# 30 "../misc/sys/uio.h" 2
6221# 40 "../misc/sys/uio.h"
6222extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count);
6223# 50 "../misc/sys/uio.h"
6224extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count);
6225
6226
6227# 3 "../include/sys/uio.h" 2
6228
6229
6230extern ssize_t __readv (int __fd, __const struct iovec *__vector,
6231 int __count);
6232extern ssize_t __libc_readv (int __fd, __const struct iovec *__vector,
6233 int __count);
6234extern ssize_t __writev (int __fd, __const struct iovec *__vector,
6235 int __count);
6236extern ssize_t __libc_writev (int __fd, __const struct iovec *__vector,
6237 int __count);
6238# 28 "../socket/sys/socket.h" 2
6239
6240# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
6241# 30 "../socket/sys/socket.h" 2
6242
6243
6244
6245
6246
6247# 1 "../sysdeps/unix/sysv/linux/bits/socket.h" 1
6248# 29 "../sysdeps/unix/sysv/linux/bits/socket.h"
6249# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
6250# 30 "../sysdeps/unix/sysv/linux/bits/socket.h" 2
6251
6252# 1 "../include/limits.h" 1
6253# 145 "../include/limits.h"
6254# 1 "../include/bits/posix1_lim.h" 1
6255# 146 "../include/limits.h" 2
6256
6257
6258
6259# 1 "../include/bits/posix2_lim.h" 1
6260# 150 "../include/limits.h" 2
6261# 32 "../sysdeps/unix/sysv/linux/bits/socket.h" 2
6262# 1 "../include/sys/types.h" 1
6263# 33 "../sysdeps/unix/sysv/linux/bits/socket.h" 2
6264
6265
6266
6267typedef __socklen_t socklen_t;
6268
6269
6270
6271
6272enum __socket_type
6273{
6274 SOCK_STREAM = 1,
6275
6276
6277 SOCK_DGRAM = 2,
6278
6279
6280 SOCK_RAW = 3,
6281
6282 SOCK_RDM = 4,
6283
6284 SOCK_SEQPACKET = 5,
6285
6286
6287 SOCK_PACKET = 10
6288
6289
6290
6291};
6292# 142 "../sysdeps/unix/sysv/linux/bits/socket.h"
6293# 1 "../bits/sockaddr.h" 1
6294# 29 "../bits/sockaddr.h"
6295typedef unsigned short int sa_family_t;
6296# 143 "../sysdeps/unix/sysv/linux/bits/socket.h" 2
6297
6298
6299struct sockaddr
6300 {
6301 sa_family_t sa_family;
6302 char sa_data[14];
6303 };
6304# 162 "../sysdeps/unix/sysv/linux/bits/socket.h"
6305struct sockaddr_storage
6306 {
6307 sa_family_t ss_family;
6308 __uint32_t __ss_align;
6309 char __ss_padding[(128 - (2 * sizeof (__uint32_t)))];
6310 };
6311
6312
6313
6314enum
6315 {
6316 MSG_OOB = 0x01,
6317
6318 MSG_PEEK = 0x02,
6319
6320 MSG_DONTROUTE = 0x04,
6321
6322
6323
6324 MSG_TRYHARD = MSG_DONTROUTE,
6325
6326
6327 MSG_CTRUNC = 0x08,
6328
6329 MSG_PROXY = 0x10,
6330
6331 MSG_TRUNC = 0x20,
6332
6333 MSG_DONTWAIT = 0x40,
6334
6335 MSG_EOR = 0x80,
6336
6337 MSG_WAITALL = 0x100,
6338
6339 MSG_FIN = 0x200,
6340
6341 MSG_SYN = 0x400,
6342
6343 MSG_CONFIRM = 0x800,
6344
6345 MSG_RST = 0x1000,
6346
6347 MSG_ERRQUEUE = 0x2000,
6348
6349 MSG_NOSIGNAL = 0x4000,
6350
6351 MSG_MORE = 0x8000
6352
6353 };
6354
6355
6356
6357
6358struct msghdr
6359 {
6360 void *msg_name;
6361 socklen_t msg_namelen;
6362
6363 struct iovec *msg_iov;
6364 size_t msg_iovlen;
6365
6366 void *msg_control;
6367 size_t msg_controllen;
6368
6369
6370
6371
6372 int msg_flags;
6373 };
6374
6375
6376struct cmsghdr
6377 {
6378 size_t cmsg_len;
6379
6380
6381
6382
6383 int cmsg_level;
6384 int cmsg_type;
6385
6386 __extension__ unsigned char __cmsg_data [];
6387
6388 };
6389# 263 "../sysdeps/unix/sysv/linux/bits/socket.h"
6390extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
6391 struct cmsghdr *__cmsg) __attribute__ ((__nothrow__));
6392
6393
6394
6395
6396extern __inline struct cmsghdr *
6397__attribute__ ((__nothrow__)) __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)
6398{
6399 if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
6400
6401 return 0;
6402
6403 __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
6404 + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)));
6405 if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
6406 + __mhdr->msg_controllen)
6407 || ((unsigned char *) __cmsg + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))
6408 > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
6409
6410 return 0;
6411 return __cmsg;
6412}
6413
6414
6415
6416
6417enum
6418 {
6419 SCM_RIGHTS = 0x01
6420
6421
6422 , SCM_CREDENTIALS = 0x02
6423
6424
6425 };
6426
6427
6428
6429struct ucred
6430{
6431 pid_t pid;
6432 uid_t uid;
6433 gid_t gid;
6434};
6435
6436
6437# 1 "/usr/include/asm/socket.h" 1 3 4
6438
6439
6440
6441# 1 "/usr/include/asm/sockios.h" 1 3 4
6442# 5 "/usr/include/asm/socket.h" 2 3 4
6443# 311 "../sysdeps/unix/sysv/linux/bits/socket.h" 2
6444
6445
6446
6447struct linger
6448 {
6449 int l_onoff;
6450 int l_linger;
6451 };
6452# 36 "../socket/sys/socket.h" 2
6453
6454
6455
6456
6457struct osockaddr
6458 {
6459 unsigned short int sa_family;
6460 unsigned char sa_data[14];
6461 };
6462
6463
6464
6465
6466enum
6467{
6468 SHUT_RD = 0,
6469
6470 SHUT_WR,
6471
6472 SHUT_RDWR
6473
6474};
6475# 87 "../socket/sys/socket.h"
6476typedef union { struct sockaddr *__restrict __sockaddr__; struct sockaddr_at *__restrict __sockaddr_at__; struct sockaddr_ax25 *__restrict __sockaddr_ax25__; struct sockaddr_dl *__restrict __sockaddr_dl__; struct sockaddr_eon *__restrict __sockaddr_eon__; struct sockaddr_in *__restrict __sockaddr_in__; struct sockaddr_in6 *__restrict __sockaddr_in6__; struct sockaddr_inarp *__restrict __sockaddr_inarp__; struct sockaddr_ipx *__restrict __sockaddr_ipx__; struct sockaddr_iso *__restrict __sockaddr_iso__; struct sockaddr_ns *__restrict __sockaddr_ns__; struct sockaddr_un *__restrict __sockaddr_un__; struct sockaddr_x25 *__restrict __sockaddr_x25__;
6477 } __SOCKADDR_ARG __attribute__ ((__transparent_union__));
6478
6479
6480typedef union { __const struct sockaddr *__restrict __sockaddr__; __const struct sockaddr_at *__restrict __sockaddr_at__; __const struct sockaddr_ax25 *__restrict __sockaddr_ax25__; __const struct sockaddr_dl *__restrict __sockaddr_dl__; __const struct sockaddr_eon *__restrict __sockaddr_eon__; __const struct sockaddr_in *__restrict __sockaddr_in__; __const struct sockaddr_in6 *__restrict __sockaddr_in6__; __const struct sockaddr_inarp *__restrict __sockaddr_inarp__; __const struct sockaddr_ipx *__restrict __sockaddr_ipx__; __const struct sockaddr_iso *__restrict __sockaddr_iso__; __const struct sockaddr_ns *__restrict __sockaddr_ns__; __const struct sockaddr_un *__restrict __sockaddr_un__; __const struct sockaddr_x25 *__restrict __sockaddr_x25__;
6481 } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
6482
6483
6484
6485
6486
6487
6488
6489extern int socket (int __domain, int __type, int __protocol) __attribute__ ((__nothrow__));
6490
6491
6492
6493
6494
6495extern int socketpair (int __domain, int __type, int __protocol,
6496 int __fds[2]) __attribute__ ((__nothrow__));
6497
6498
6499extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
6500 __attribute__ ((__nothrow__));
6501
6502
6503extern int getsockname (int __fd, __SOCKADDR_ARG __addr,
6504 socklen_t *__restrict __len) __attribute__ ((__nothrow__));
6505# 124 "../socket/sys/socket.h"
6506extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
6507
6508
6509
6510extern int getpeername (int __fd, __SOCKADDR_ARG __addr,
6511 socklen_t *__restrict __len) __attribute__ ((__nothrow__));
6512
6513
6514
6515
6516
6517
6518extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);
6519
6520
6521
6522
6523
6524
6525extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
6526
6527
6528
6529
6530
6531
6532extern ssize_t sendto (int __fd, __const void *__buf, size_t __n,
6533 int __flags, __CONST_SOCKADDR_ARG __addr,
6534 socklen_t __addr_len);
6535# 161 "../socket/sys/socket.h"
6536extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
6537 int __flags, __SOCKADDR_ARG __addr,
6538 socklen_t *__restrict __addr_len);
6539
6540
6541
6542
6543
6544
6545
6546extern ssize_t sendmsg (int __fd, __const struct msghdr *__message,
6547 int __flags);
6548
6549
6550
6551
6552
6553
6554extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
6555
6556
6557
6558
6559
6560extern int getsockopt (int __fd, int __level, int __optname,
6561 void *__restrict __optval,
6562 socklen_t *__restrict __optlen) __attribute__ ((__nothrow__));
6563
6564
6565
6566
6567extern int setsockopt (int __fd, int __level, int __optname,
6568 __const void *__optval, socklen_t __optlen) __attribute__ ((__nothrow__));
6569
6570
6571
6572
6573
6574extern int listen (int __fd, int __n) __attribute__ ((__nothrow__));
6575# 209 "../socket/sys/socket.h"
6576extern int accept (int __fd, __SOCKADDR_ARG __addr,
6577 socklen_t *__restrict __addr_len);
6578
6579
6580
6581
6582
6583
6584
6585extern int shutdown (int __fd, int __how) __attribute__ ((__nothrow__));
6586
6587
6588
6589
6590extern int sockatmark (int __fd) __attribute__ ((__nothrow__));
6591
6592
6593
6594
6595
6596
6597
6598extern int isfdtype (int __fd, int __fdtype) __attribute__ ((__nothrow__));
6599# 240 "../socket/sys/socket.h"
6600
6601# 3 "../include/sys/socket.h" 2
6602
6603
6604
6605
6606
6607
6608extern int __socket (int __domain, int __type,
6609 int __protocol) ;
6610
6611
6612
6613
6614
6615extern int __socketpair (int __domain, int __type, int __protocol,
6616 int __fds[2]) ;
6617
6618
6619
6620extern int __opensock (void) ;
6621
6622
6623
6624extern int __getpeername (int __fd, __SOCKADDR_ARG __addr,
6625 socklen_t *__len) ;
6626
6627
6628extern ssize_t __libc_send (int __fd, __const void *__buf, size_t __n,
6629 int __flags);
6630extern ssize_t __send (int __fd, __const void *__buf, size_t __n, int __flags);
6631
6632
6633
6634
6635extern ssize_t __libc_recv (int __fd, void *__buf, size_t __n, int __flags);
6636
6637
6638
6639extern ssize_t __libc_sendto (int __fd, __const void *__buf, size_t __n,
6640 int __flags, __CONST_SOCKADDR_ARG __addr,
6641 socklen_t __addr_len);
6642
6643
6644
6645
6646
6647extern ssize_t __libc_recvfrom (int __fd, void *__restrict __buf, size_t __n,
6648 int __flags, __SOCKADDR_ARG __addr,
6649 socklen_t *__restrict __addr_len);
6650
6651
6652
6653
6654
6655extern int __libc_connect (int __fd, __CONST_SOCKADDR_ARG __addr,
6656 socklen_t __len);
6657extern int __connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
6658extern int __connect_internal (int __fd, __CONST_SOCKADDR_ARG __addr,
6659 socklen_t __len) ;
6660
6661
6662
6663
6664
6665
6666extern ssize_t __recv (int __fd, void *__buf, size_t __n, int __flags)
6667 ;
6668
6669
6670
6671extern ssize_t __libc_sendto (int __fd, __const void *__buf, size_t __n,
6672 int __flags, __CONST_SOCKADDR_ARG __addr,
6673 socklen_t __addr_len);
6674extern ssize_t __sendto (int __fd, __const void *__buf, size_t __n,
6675 int __flags, __CONST_SOCKADDR_ARG __addr,
6676 socklen_t __addr_len) ;
6677
6678
6679
6680
6681
6682extern ssize_t __recvfrom (int __fd, void *__restrict __buf, size_t __n,
6683 int __flags, __SOCKADDR_ARG __addr,
6684 socklen_t *__restrict __addr_len) ;
6685
6686
6687
6688extern ssize_t __libc_sendmsg (int __fd, __const struct msghdr *__message,
6689 int __flags);
6690extern ssize_t __sendmsg (int __fd, __const struct msghdr *__message,
6691 int __flags) ;
6692
6693
6694
6695extern ssize_t __libc_recvmsg (int __fd, struct msghdr *__message,
6696 int __flags);
6697extern ssize_t __recvmsg (int __fd, struct msghdr *__message,
6698 int __flags) ;
6699
6700
6701
6702
6703extern int __setsockopt (int __fd, int __level, int __optname,
6704 __const void *__optval,
6705 socklen_t __optlen) ;
6706
6707
6708
6709
6710extern int __getsockopt (int __fd, int __level, int __optname,
6711 void *__restrict __optval,
6712 socklen_t *__restrict __optlen) ;
6713
6714
6715extern int __getsockname (int __fd, __SOCKADDR_ARG __addr,
6716 socklen_t *__restrict __len) ;
6717
6718
6719extern int __bind (int __fd, __CONST_SOCKADDR_ARG __addr,
6720 socklen_t __len) ;
6721
6722
6723
6724
6725extern int __listen (int __fd, int __n) ;
6726
6727
6728
6729
6730
6731
6732extern int __libc_accept (int __fd, __SOCKADDR_ARG __addr,
6733 socklen_t *__restrict __addr_len)
6734 __attribute__ ((__nothrow__));
6735
6736
6737
6738
6739
6740
6741extern int __libc_sa_len (sa_family_t __af);
6742extern int __libc_sa_len_internal (sa_family_t __af) ;
6743# 25 "../inet/netinet/in.h" 2
6744
6745
6746
6747
6748
6749
6750enum
6751 {
6752 IPPROTO_IP = 0,
6753
6754 IPPROTO_HOPOPTS = 0,
6755
6756 IPPROTO_ICMP = 1,
6757
6758 IPPROTO_IGMP = 2,
6759
6760 IPPROTO_IPIP = 4,
6761
6762 IPPROTO_TCP = 6,
6763
6764 IPPROTO_EGP = 8,
6765
6766 IPPROTO_PUP = 12,
6767
6768 IPPROTO_UDP = 17,
6769
6770 IPPROTO_IDP = 22,
6771
6772 IPPROTO_TP = 29,
6773
6774 IPPROTO_IPV6 = 41,
6775
6776 IPPROTO_ROUTING = 43,
6777
6778 IPPROTO_FRAGMENT = 44,
6779
6780 IPPROTO_RSVP = 46,
6781
6782 IPPROTO_GRE = 47,
6783
6784 IPPROTO_ESP = 50,
6785
6786 IPPROTO_AH = 51,
6787
6788 IPPROTO_ICMPV6 = 58,
6789
6790 IPPROTO_NONE = 59,
6791
6792 IPPROTO_DSTOPTS = 60,
6793
6794 IPPROTO_MTP = 92,
6795
6796 IPPROTO_ENCAP = 98,
6797
6798 IPPROTO_PIM = 103,
6799
6800 IPPROTO_COMP = 108,
6801
6802 IPPROTO_SCTP = 132,
6803
6804 IPPROTO_RAW = 255,
6805
6806 IPPROTO_MAX
6807 };
6808
6809
6810
6811typedef uint16_t in_port_t;
6812
6813
6814enum
6815 {
6816 IPPORT_ECHO = 7,
6817 IPPORT_DISCARD = 9,
6818 IPPORT_SYSTAT = 11,
6819 IPPORT_DAYTIME = 13,
6820 IPPORT_NETSTAT = 15,
6821 IPPORT_FTP = 21,
6822 IPPORT_TELNET = 23,
6823 IPPORT_SMTP = 25,
6824 IPPORT_TIMESERVER = 37,
6825 IPPORT_NAMESERVER = 42,
6826 IPPORT_WHOIS = 43,
6827 IPPORT_MTP = 57,
6828
6829 IPPORT_TFTP = 69,
6830 IPPORT_RJE = 77,
6831 IPPORT_FINGER = 79,
6832 IPPORT_TTYLINK = 87,
6833 IPPORT_SUPDUP = 95,
6834
6835
6836 IPPORT_EXECSERVER = 512,
6837 IPPORT_LOGINSERVER = 513,
6838 IPPORT_CMDSERVER = 514,
6839 IPPORT_EFSSERVER = 520,
6840
6841
6842 IPPORT_BIFFUDP = 512,
6843 IPPORT_WHOSERVER = 513,
6844 IPPORT_ROUTESERVER = 520,
6845
6846
6847 IPPORT_RESERVED = 1024,
6848
6849
6850 IPPORT_USERRESERVED = 5000
6851 };
6852
6853
6854
6855typedef uint32_t in_addr_t;
6856struct in_addr
6857 {
6858 in_addr_t s_addr;
6859 };
6860# 193 "../inet/netinet/in.h"
6861struct in6_addr
6862 {
6863 union
6864 {
6865 uint8_t u6_addr8[16];
6866 uint16_t u6_addr16[8];
6867 uint32_t u6_addr32[4];
6868 } in6_u;
6869
6870
6871
6872 };
6873
6874extern const struct in6_addr in6addr_any;
6875extern const struct in6_addr in6addr_loopback;
6876# 219 "../inet/netinet/in.h"
6877struct sockaddr_in
6878 {
6879 sa_family_t sin_family;
6880 in_port_t sin_port;
6881 struct in_addr sin_addr;
6882
6883
6884 unsigned char sin_zero[sizeof (struct sockaddr) -
6885 (sizeof (unsigned short int)) -
6886 sizeof (in_port_t) -
6887 sizeof (struct in_addr)];
6888 };
6889
6890
6891struct sockaddr_in6
6892 {
6893 sa_family_t sin6_family;
6894 in_port_t sin6_port;
6895 uint32_t sin6_flowinfo;
6896 struct in6_addr sin6_addr;
6897 uint32_t sin6_scope_id;
6898 };
6899
6900
6901
6902struct ip_mreq
6903 {
6904
6905 struct in_addr imr_multiaddr;
6906
6907
6908 struct in_addr imr_interface;
6909 };
6910
6911struct ip_mreq_source
6912 {
6913
6914 struct in_addr imr_multiaddr;
6915
6916
6917 struct in_addr imr_interface;
6918
6919
6920 struct in_addr imr_sourceaddr;
6921 };
6922
6923
6924struct ipv6_mreq
6925 {
6926
6927 struct in6_addr ipv6mr_multiaddr;
6928
6929
6930 unsigned int ipv6mr_interface;
6931 };
6932
6933
6934
6935struct group_req
6936 {
6937
6938 uint32_t gr_interface;
6939
6940
6941 struct sockaddr_storage gr_group;
6942 };
6943
6944struct group_source_req
6945 {
6946
6947 uint32_t gsr_interface;
6948
6949
6950 struct sockaddr_storage gsr_group;
6951
6952
6953 struct sockaddr_storage gsr_source;
6954 };
6955
6956
6957
6958struct ip_msfilter
6959 {
6960
6961 struct in_addr imsf_multiaddr;
6962
6963
6964 struct in_addr imsf_interface;
6965
6966
6967 uint32_t imsf_fmode;
6968
6969
6970 uint32_t imsf_numsrc;
6971
6972 struct in_addr imsf_slist[1];
6973 };
6974
6975
6976
6977
6978
6979struct group_filter
6980 {
6981
6982 uint32_t gf_interface;
6983
6984
6985 struct sockaddr_storage gf_group;
6986
6987
6988 uint32_t gf_fmode;
6989
6990
6991 uint32_t gf_numsrc;
6992
6993 struct sockaddr_storage gf_slist[1];
6994};
6995# 345 "../inet/netinet/in.h"
6996# 1 "../sysdeps/unix/sysv/linux/bits/in.h" 1
6997# 82 "../sysdeps/unix/sysv/linux/bits/in.h"
6998struct ip_opts
6999 {
7000 struct in_addr ip_dst;
7001 char ip_opts[40];
7002 };
7003
7004
7005struct ip_mreqn
7006 {
7007 struct in_addr imr_multiaddr;
7008 struct in_addr imr_address;
7009 int imr_ifindex;
7010 };
7011
7012
7013struct in_pktinfo
7014 {
7015 int ipi_ifindex;
7016 struct in_addr ipi_spec_dst;
7017 struct in_addr ipi_addr;
7018 };
7019# 346 "../inet/netinet/in.h" 2
7020# 354 "../inet/netinet/in.h"
7021extern uint32_t ntohl (uint32_t __netlong) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
7022extern uint16_t ntohs (uint16_t __netshort)
7023 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
7024extern uint32_t htonl (uint32_t __hostlong)
7025 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
7026extern uint16_t htons (uint16_t __hostshort)
7027 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
7028
7029# 1 "../include/endian.h" 1
7030# 363 "../inet/netinet/in.h" 2
7031
7032
7033# 1 "../bits/byteswap.h" 1
7034# 366 "../inet/netinet/in.h" 2
7035# 428 "../inet/netinet/in.h"
7036extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __attribute__ ((__nothrow__));
7037
7038
7039extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
7040 __attribute__ ((__nothrow__));
7041# 456 "../inet/netinet/in.h"
7042struct in6_pktinfo
7043 {
7044 struct in6_addr ipi6_addr;
7045 unsigned int ipi6_ifindex;
7046 };
7047
7048
7049struct ip6_mtuinfo
7050 {
7051 struct sockaddr_in6 ip6m_addr;
7052 uint32_t ip6m_mtu;
7053 };
7054
7055
7056
7057
7058extern int inet6_option_space (int __nbytes)
7059 __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
7060extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
7061 int __type) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
7062extern int inet6_option_append (struct cmsghdr *__cmsg,
7063 __const uint8_t *__typep, int __multx,
7064 int __plusy) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
7065extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
7066 int __multx, int __plusy)
7067 __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
7068extern int inet6_option_next (__const struct cmsghdr *__cmsg,
7069 uint8_t **__tptrp)
7070 __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
7071extern int inet6_option_find (__const struct cmsghdr *__cmsg,
7072 uint8_t **__tptrp, int __type)
7073 __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
7074
7075
7076
7077extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) __attribute__ ((__nothrow__));
7078extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset,
7079 uint8_t __type, socklen_t __len, uint8_t __align,
7080 void **__databufp) __attribute__ ((__nothrow__));
7081extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset)
7082 __attribute__ ((__nothrow__));
7083extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val,
7084 socklen_t __vallen) __attribute__ ((__nothrow__));
7085extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset,
7086 uint8_t *__typep, socklen_t *__lenp,
7087 void **__databufp) __attribute__ ((__nothrow__));
7088extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset,
7089 uint8_t __type, socklen_t *__lenp,
7090 void **__databufp) __attribute__ ((__nothrow__));
7091extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val,
7092 socklen_t __vallen) __attribute__ ((__nothrow__));
7093
7094
7095
7096extern socklen_t inet6_rth_space (int __type, int __segments) __attribute__ ((__nothrow__));
7097extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type,
7098 int __segments) __attribute__ ((__nothrow__));
7099extern int inet6_rth_add (void *__bp, __const struct in6_addr *__addr) __attribute__ ((__nothrow__));
7100extern int inet6_rth_reverse (__const void *__in, void *__out) __attribute__ ((__nothrow__));
7101extern int inet6_rth_segments (__const void *__bp) __attribute__ ((__nothrow__));
7102extern struct in6_addr *inet6_rth_getaddr (__const void *__bp, int __index)
7103 __attribute__ ((__nothrow__));
7104
7105
7106
7107
7108
7109extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr,
7110 struct in_addr __group, uint32_t *__fmode,
7111 uint32_t *__numsrc, struct in_addr *__slist)
7112 __attribute__ ((__nothrow__));
7113
7114
7115extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
7116 struct in_addr __group, uint32_t __fmode,
7117 uint32_t __numsrc,
7118 __const struct in_addr *__slist)
7119 __attribute__ ((__nothrow__));
7120
7121
7122
7123extern int getsourcefilter (int __s, uint32_t __interface_addr,
7124 __const struct sockaddr *__group,
7125 socklen_t __grouplen, uint32_t *__fmode,
7126 uint32_t *__numsrc,
7127 struct sockaddr_storage *__slist) __attribute__ ((__nothrow__));
7128
7129
7130extern int setsourcefilter (int __s, uint32_t __interface_addr,
7131 __const struct sockaddr *__group,
7132 socklen_t __grouplen, uint32_t __fmode,
7133 uint32_t __numsrc,
7134 __const struct sockaddr_storage *__slist) __attribute__ ((__nothrow__));
7135
7136
7137
7138# 4 "../include/netinet/in.h" 2
7139
7140
7141
7142
7143# 58 "../resolv/resolv.h" 2
7144# 71 "../resolv/resolv.h"
7145typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
7146 res_sendhookact;
7147
7148typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *ns,
7149 const u_char **query,
7150 int *querylen,
7151 u_char *ans,
7152 int anssiz,
7153 int *resplen);
7154
7155typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *ns,
7156 const u_char *query,
7157 int querylen,
7158 u_char *ans,
7159 int anssiz,
7160 int *resplen);
7161# 104 "../resolv/resolv.h"
7162struct __res_state {
7163 int retrans;
7164 int retry;
7165 u_long options;
7166 int nscount;
7167 struct sockaddr_in
7168 nsaddr_list[3];
7169
7170 u_short id;
7171 char *dnsrch[6 +1];
7172 char defdname[256];
7173 u_long pfcode;
7174 unsigned ndots:4;
7175 unsigned nsort:4;
7176 char unused[3];
7177 struct {
7178 struct in_addr addr;
7179 u_int32_t mask;
7180 } sort_list[10];
7181 res_send_qhook qhook;
7182 res_send_rhook rhook;
7183 int res_h_errno;
7184 int _vcsock;
7185 u_int _flags;
7186 union {
7187 char pad[52];
7188 struct {
7189 u_int16_t nscount;
7190 u_int16_t nsmap[3];
7191 int nssocks[3];
7192 u_int16_t nscount6;
7193 u_int16_t nsinit;
7194 struct sockaddr_in6 *nsaddrs[3];
7195
7196 unsigned long long int initstamp
7197 __attribute__((packed));
7198
7199
7200
7201 } _ext;
7202 } _u;
7203};
7204
7205typedef struct __res_state *res_state;
7206# 13 "../include/resolv.h" 2
7207# 40 "../nptl/descr.h" 2
7208# 65 "../nptl/descr.h"
7209struct pthread_unwind_buf
7210{
7211 struct
7212 {
7213 __jmp_buf jmp_buf;
7214 int mask_was_saved;
7215 } cancel_jmp_buf[1];
7216
7217 union
7218 {
7219
7220 void *pad[4];
7221
7222 struct
7223 {
7224
7225 struct pthread_unwind_buf *prev;
7226
7227
7228
7229
7230 struct _pthread_cleanup_buffer *cleanup;
7231
7232
7233 int canceltype;
7234 } data;
7235 } priv;
7236};
7237
7238
7239
7240
7241struct xid_command
7242{
7243 int syscall_no;
7244 long int id[3];
7245 volatile int cntr;
7246};
7247
7248
7249
7250struct robust_list_head
7251{
7252 void *list;
7253 long int futex_offset;
7254 void *list_op_pending;
7255};
7256
7257
7258
7259struct priority_protection_data
7260{
7261 int priomax;
7262 unsigned int priomap[];
7263};
7264
7265
7266
7267struct pthread
7268{
7269 union
7270 {
7271
7272
7273
7274
7275 struct
7276 {
7277 int multiple_threads;
7278 } header;
7279
7280
7281
7282
7283
7284
7285 void *__padding[16];
7286 };
7287
7288
7289 list_t list;
7290
7291
7292
7293 pid_t tid;
7294
7295
7296 pid_t pid;
7297# 193 "../nptl/descr.h"
7298 union
7299 {
7300 __pthread_slist_t robust_list;
7301 struct robust_list_head robust_head;
7302 };
7303# 231 "../nptl/descr.h"
7304 struct _pthread_cleanup_buffer *cleanup;
7305
7306
7307 struct pthread_unwind_buf *cleanup_jmp_buf;
7308
7309
7310
7311 int cancelhandling;
7312# 273 "../nptl/descr.h"
7313 struct pthread_key_data
7314 {
7315
7316
7317
7318 uintptr_t seq;
7319
7320
7321 void *data;
7322 } specific_1stblock[32];
7323
7324
7325 struct pthread_key_data *specific[((1024 + 32 - 1) / 32)];
7326
7327
7328 _Bool specific_used;
7329
7330
7331 _Bool report_events;
7332
7333
7334 _Bool user_stack;
7335
7336
7337 _Bool stopped_start;
7338
7339
7340
7341 int parent_cancelhandling;
7342
7343
7344 lll_lock_t lock;
7345
7346
7347 lll_lock_t setxid_futex;
7348# 320 "../nptl/descr.h"
7349 struct pthread *joinid;
7350
7351
7352
7353
7354 int flags;
7355
7356
7357 void *result;
7358
7359
7360 struct sched_param schedparam;
7361 int schedpolicy;
7362
7363
7364
7365 void *(*start_routine) (void *);
7366 void *arg;
7367
7368
7369 td_eventbuf_t eventbuf;
7370
7371 struct pthread *nextevent;
7372
7373
7374
7375 struct _Unwind_Exception exc;
7376
7377
7378
7379
7380 void *stackblock;
7381 size_t stackblock_size;
7382
7383 size_t guardsize;
7384
7385 size_t reported_guardsize;
7386
7387
7388 struct priority_protection_data *tpp;
7389
7390
7391 struct __res_state res;
7392
7393
7394 char end_padding[];
7395
7396
7397
7398} __attribute ((aligned (64)));
7399# 64 "../ports/sysdeps/hppa/nptl/tls.h" 2
7400
7401typedef struct
7402{
7403 dtv_t *dtv;
7404 void *private;
7405} tcbhead_t;
7406# 135 "../ports/sysdeps/hppa/nptl/tls.h"
7407static inline struct pthread *__get_cr27(void)
7408{
7409 long cr27;
7410 asm ("mfctl %%cr27, %0" : "=r" (cr27) : );
7411 return (struct pthread *) cr27;
7412}
7413
7414static inline void __set_cr27(struct pthread *cr27)
7415{
7416 asm ( "ble 0xe0(%%sr2, %%r0)\n\t"
7417 "copy %0, %%r26"
7418 : : "r" (cr27) : "r26" );
7419}
7420# 7 "../include/tls.h" 2
7421# 46 "../bits/libc-tsd.h" 2
7422# 208 "../locale/localeinfo.h" 2
7423extern __thread void *__libc_tsd_LOCALE __attribute__ ((tls_model ("initial-exec")));
7424# 234 "../locale/localeinfo.h"
7425# 1 "../locale/categories.def" 1
7426# 42 "../locale/categories.def"
7427extern __thread struct locale_data *const *_nl_current_LC_COLLATE __attribute__ ((tls_model ("initial-exec")));
7428# 68 "../locale/categories.def"
7429extern __thread struct locale_data *const *_nl_current_LC_CTYPE __attribute__ ((tls_model ("initial-exec")));
7430# 140 "../locale/categories.def"
7431extern __thread struct locale_data *const *_nl_current_LC_MONETARY __attribute__ ((tls_model ("initial-exec")));
7432# 192 "../locale/categories.def"
7433extern __thread struct locale_data *const *_nl_current_LC_NUMERIC __attribute__ ((tls_model ("initial-exec")));
7434# 206 "../locale/categories.def"
7435extern __thread struct locale_data *const *_nl_current_LC_TIME __attribute__ ((tls_model ("initial-exec")));
7436# 254 "../locale/categories.def"
7437extern __thread struct locale_data *const *_nl_current_LC_MESSAGES __attribute__ ((tls_model ("initial-exec")));
7438# 265 "../locale/categories.def"
7439extern __thread struct locale_data *const *_nl_current_LC_PAPER __attribute__ ((tls_model ("initial-exec")));
7440# 274 "../locale/categories.def"
7441extern __thread struct locale_data *const *_nl_current_LC_NAME __attribute__ ((tls_model ("initial-exec")));
7442# 287 "../locale/categories.def"
7443extern __thread struct locale_data *const *_nl_current_LC_ADDRESS __attribute__ ((tls_model ("initial-exec")));
7444# 306 "../locale/categories.def"
7445extern __thread struct locale_data *const *_nl_current_LC_TELEPHONE __attribute__ ((tls_model ("initial-exec")));
7446# 317 "../locale/categories.def"
7447extern __thread struct locale_data *const *_nl_current_LC_MEASUREMENT __attribute__ ((tls_model ("initial-exec")));
7448
7449
7450
7451
7452
7453
7454
7455extern __thread struct locale_data *const *_nl_current_LC_IDENTIFICATION __attribute__ ((tls_model ("initial-exec")));
7456# 235 "../locale/localeinfo.h" 2
7457# 296 "../locale/localeinfo.h"
7458extern const char _nl_default_locale_path[] ;
7459
7460
7461
7462
7463
7464
7465
7466extern struct locale_data *_nl_find_locale (const char *locale_path,
7467 size_t locale_path_len,
7468 int category, const char **name)
7469 ;
7470
7471
7472extern void _nl_load_locale (struct loaded_l10nfile *file, int category)
7473 ;
7474
7475
7476extern void _nl_unload_locale (struct locale_data *locale)
7477 ;
7478
7479
7480extern void _nl_remove_locale (int locale, struct locale_data *data)
7481 ;
7482
7483
7484
7485
7486
7487
7488extern struct locale_data *_nl_load_locale_from_archive (int category,
7489 const char **namep)
7490 ;
7491
7492
7493extern void _nl_archive_subfreeres (void) ;
7494
7495
7496extern void _nl_locale_subfreeres (void) ;
7497
7498
7499
7500
7501
7502
7503extern struct locale_data *_nl_intern_locale_data (int category,
7504 const void *data,
7505 size_t datasize)
7506 ;
7507
7508
7509
7510extern struct era_entry *_nl_get_era_entry (const struct tm *tp,
7511 struct locale_data *lc_time)
7512 ;
7513
7514
7515extern struct era_entry *_nl_select_era_entry (int cnt,
7516 struct locale_data *lc_time)
7517 ;
7518
7519
7520extern const char *_nl_get_alt_digit (unsigned int number,
7521 struct locale_data *lc_time)
7522 ;
7523
7524
7525extern const wchar_t *_nl_get_walt_digit (unsigned int number,
7526 struct locale_data *lc_time)
7527 ;
7528
7529
7530extern int _nl_parse_alt_digit (const char **strp,
7531 struct locale_data *lc_time)
7532 ;
7533
7534
7535extern void _nl_postload_ctype (void);
7536
7537
7538extern void _nl_cleanup_time (struct locale_data *)
7539 ;
7540# 53 "regex.c" 2
7541
7542
7543
7544
7545
7546# 1 "../include/limits.h" 1
7547# 145 "../include/limits.h"
7548# 1 "../include/bits/posix1_lim.h" 1
7549# 146 "../include/limits.h" 2
7550
7551
7552
7553# 1 "../include/bits/posix2_lim.h" 1
7554# 150 "../include/limits.h" 2
7555# 59 "regex.c" 2
7556
7557# 1 "../include/regex.h" 1
7558
7559# 1 "../posix/regex.h" 1
7560# 25 "../posix/regex.h"
7561# 1 "../include/sys/types.h" 1
7562# 26 "../posix/regex.h" 2
7563# 36 "../posix/regex.h"
7564typedef long int s_reg_t;
7565typedef unsigned long int active_reg_t;
7566
7567
7568
7569
7570
7571
7572typedef unsigned long int reg_syntax_t;
7573# 181 "../posix/regex.h"
7574extern reg_syntax_t re_syntax_options;
7575# 303 "../posix/regex.h"
7576typedef enum
7577{
7578
7579 REG_ENOSYS = -1,
7580
7581
7582 REG_NOERROR = 0,
7583 REG_NOMATCH,
7584
7585
7586
7587 REG_BADPAT,
7588 REG_ECOLLATE,
7589 REG_ECTYPE,
7590 REG_EESCAPE,
7591 REG_ESUBREG,
7592 REG_EBRACK,
7593 REG_EPAREN,
7594 REG_EBRACE,
7595 REG_BADBR,
7596 REG_ERANGE,
7597 REG_ESPACE,
7598 REG_BADRPT,
7599
7600
7601 REG_EEND,
7602 REG_ESIZE,
7603 REG_ERPAREN
7604} reg_errcode_t;
7605# 343 "../posix/regex.h"
7606struct re_pattern_buffer
7607{
7608
7609
7610
7611 unsigned char *buffer;
7612
7613
7614 unsigned long int allocated;
7615
7616
7617 unsigned long int used;
7618
7619
7620 reg_syntax_t syntax;
7621
7622
7623
7624
7625 char *fastmap;
7626
7627
7628
7629
7630
7631 unsigned char * translate;
7632
7633
7634 size_t re_nsub;
7635
7636
7637
7638
7639
7640 unsigned can_be_null : 1;
7641# 386 "../posix/regex.h"
7642 unsigned regs_allocated : 2;
7643
7644
7645
7646 unsigned fastmap_accurate : 1;
7647
7648
7649
7650 unsigned no_sub : 1;
7651
7652
7653
7654 unsigned not_bol : 1;
7655
7656
7657 unsigned not_eol : 1;
7658
7659
7660 unsigned newline_anchor : 1;
7661};
7662
7663typedef struct re_pattern_buffer regex_t;
7664
7665
7666typedef int regoff_t;
7667
7668
7669
7670
7671struct re_registers
7672{
7673 unsigned num_regs;
7674 regoff_t *start;
7675 regoff_t *end;
7676};
7677# 434 "../posix/regex.h"
7678typedef struct
7679{
7680 regoff_t rm_so;
7681 regoff_t rm_eo;
7682} regmatch_t;
7683
7684
7685
7686
7687
7688extern reg_syntax_t __re_set_syntax (reg_syntax_t __syntax);
7689
7690
7691
7692
7693extern const char *__re_compile_pattern (const char *__pattern, size_t __length, struct re_pattern_buffer *__buffer);
7694
7695
7696
7697
7698
7699
7700extern int __re_compile_fastmap (struct re_pattern_buffer *__buffer);
7701
7702
7703
7704
7705
7706
7707
7708extern int __re_search (struct re_pattern_buffer *__buffer, const char *__string, int __length, int __start, int __range, struct re_registers *__regs);
7709
7710
7711
7712
7713
7714
7715extern int __re_search_2 (struct re_pattern_buffer *__buffer, const char *__string1, int __length1, const char *__string2, int __length2, int __start, int __range, struct re_registers *__regs, int __stop);
7716
7717
7718
7719
7720
7721
7722
7723extern int __re_match (struct re_pattern_buffer *__buffer, const char *__string, int __length, int __start, struct re_registers *__regs);
7724
7725
7726
7727
7728extern int __re_match_2 (struct re_pattern_buffer *__buffer, const char *__string1, int __length1, const char *__string2, int __length2, int __start, struct re_registers *__regs, int __stop);
7729# 502 "../posix/regex.h"
7730extern void __re_set_registers (struct re_pattern_buffer *__buffer, struct re_registers *__regs, unsigned int __num_regs, regoff_t *__starts, regoff_t *__ends);
7731
7732
7733
7734
7735
7736
7737
7738extern char *re_comp (const char *);
7739extern int re_exec (const char *);
7740# 537 "../posix/regex.h"
7741extern int __regcomp (regex_t *__restrict __preg, const char *__restrict __pattern, int __cflags);
7742
7743
7744
7745extern int __regexec (const regex_t *__restrict __preg, const char *__restrict __string, size_t __nmatch, regmatch_t __pmatch[__restrict], int __eflags);
7746
7747
7748
7749
7750extern size_t __regerror(int __errcode, const regex_t *__restrict __preg, char *__restrict __errbuf, size_t __errbuf_size);
7751
7752
7753extern void __regfree (regex_t *__preg);
7754# 3 "../include/regex.h" 2
7755
7756
7757extern reg_syntax_t __re_set_syntax (reg_syntax_t syntax);
7758
7759extern const char *__re_compile_pattern (const char *pattern, size_t length,
7760 struct re_pattern_buffer *buffer);
7761
7762extern int __re_compile_fastmap (struct re_pattern_buffer *buffer);
7763
7764extern int __re_search (struct re_pattern_buffer *buffer, const char *string,
7765 int length, int start, int range,
7766 struct re_registers *regs);
7767
7768extern int __re_search_2
7769 (struct re_pattern_buffer *buffer, const char *string1,
7770 int length1, const char *string2, int length2,
7771 int start, int range, struct re_registers *regs, int stop);
7772
7773extern int __re_match
7774 (struct re_pattern_buffer *buffer, const char *string,
7775 int length, int start, struct re_registers *regs);
7776
7777extern int __re_match_2
7778 (struct re_pattern_buffer *buffer, const char *string1,
7779 int length1, const char *string2, int length2,
7780 int start, struct re_registers *regs, int stop);
7781
7782extern void __re_set_registers
7783 (struct re_pattern_buffer *buffer, struct re_registers *regs,
7784 unsigned num_regs, regoff_t *starts, regoff_t *ends);
7785
7786extern int __regcomp (regex_t *__preg, const char *__pattern, int __cflags);
7787
7788extern int __regexec (const regex_t *__preg, const char *__string,
7789 size_t __nmatch, regmatch_t __pmatch[], int __eflags);
7790
7791extern size_t __regerror (int __errcode, const regex_t *__preg,
7792 char *__errbuf, size_t __errbuf_size);
7793
7794extern void __regfree (regex_t *__preg);
7795# 61 "regex.c" 2
7796# 1 "regex_internal.h" 1
7797# 24 "regex_internal.h"
7798# 1 "../include/assert.h" 1
7799# 1 "../assert/assert.h" 1
7800# 65 "../assert/assert.h"
7801
7802
7803
7804extern void __assert_fail (__const char *__assertion, __const char *__file,
7805 unsigned int __line, __const char *__function)
7806 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7807
7808
7809extern void __assert_perror_fail (int __errnum, __const char *__file,
7810 unsigned int __line,
7811 __const char *__function)
7812 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7813
7814
7815
7816
7817extern void __assert (const char *__assertion, const char *__file, int __line)
7818 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7819
7820
7821
7822# 2 "../include/assert.h" 2
7823
7824
7825
7826
7827extern void __assert_fail (__const char *__assertion, __const char *__file,
7828 unsigned int __line, __const char *__function)
7829 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7830
7831
7832extern void __assert_perror_fail (int __errnum, __const char *__file,
7833 unsigned int __line,
7834 __const char *__function)
7835 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7836
7837
7838
7839
7840# 25 "regex_internal.h" 2
7841# 1 "../include/ctype.h" 1
7842
7843
7844extern int __isctype (int __c, int __mask);
7845# 14 "../include/ctype.h"
7846# 1 "../include/../locale/localeinfo.h" 1
7847# 15 "../include/ctype.h" 2
7848
7849
7850
7851
7852
7853
7854extern __thread void *__libc_tsd_CTYPE_B __attribute__ ((tls_model ("initial-exec")));
7855extern __thread void *__libc_tsd_CTYPE_TOUPPER __attribute__ ((tls_model ("initial-exec")));
7856extern __thread void *__libc_tsd_CTYPE_TOLOWER __attribute__ ((tls_model ("initial-exec")));
7857
7858extern inline const uint16_t ** __attribute__ ((const))
7859__ctype_b_loc (void)
7860{
7861 union
7862 {
7863 void **ptr;
7864 const uint16_t **tablep;
7865 } u;
7866 u.ptr = (&__libc_tsd_CTYPE_B);
7867 if (__builtin_expect (*u.tablep == ((void *)0), 0))
7868 *u.tablep = (const uint16_t *) ((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CLASS) & 0xffff)].string) + 128;
7869 return u.tablep;
7870}
7871
7872extern inline const int32_t ** __attribute__ ((const))
7873__ctype_toupper_loc (void)
7874{
7875 union
7876 {
7877 void **ptr;
7878 const int32_t **tablep;
7879 } u;
7880 u.ptr = (&__libc_tsd_CTYPE_TOUPPER);
7881 if (__builtin_expect (*u.tablep == ((void *)0), 0))
7882 *u.tablep = ((int32_t *) ((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_TOUPPER) & 0xffff)].string) + 128);
7883 return u.tablep;
7884}
7885
7886extern inline const int32_t ** __attribute__ ((const))
7887__ctype_tolower_loc (void)
7888{
7889 union
7890 {
7891 void **ptr;
7892 const int32_t **tablep;
7893 } u;
7894 u.ptr = (&__libc_tsd_CTYPE_TOLOWER);
7895 if (__builtin_expect (*u.tablep == ((void *)0), 0))
7896 *u.tablep = ((int32_t *) ((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_TOLOWER) & 0xffff)].string) + 128);
7897 return u.tablep;
7898}
7899
7900
7901
7902# 1 "../ctype/ctype.h" 1
7903# 30 "../ctype/ctype.h"
7904
7905# 41 "../ctype/ctype.h"
7906# 1 "../include/endian.h" 1
7907# 42 "../ctype/ctype.h" 2
7908
7909
7910
7911
7912
7913
7914enum
7915{
7916 _ISupper = (1 << (0)),
7917 _ISlower = (1 << (1)),
7918 _ISalpha = (1 << (2)),
7919 _ISdigit = (1 << (3)),
7920 _ISxdigit = (1 << (4)),
7921 _ISspace = (1 << (5)),
7922 _ISprint = (1 << (6)),
7923 _ISgraph = (1 << (7)),
7924 _ISblank = (1 << (8)),
7925 _IScntrl = (1 << (9)),
7926 _ISpunct = (1 << (10)),
7927 _ISalnum = (1 << (11))
7928};
7929# 81 "../ctype/ctype.h"
7930extern __const unsigned short int **__ctype_b_loc (void)
7931 __attribute__ ((__const));
7932extern __const __int32_t **__ctype_tolower_loc (void)
7933 __attribute__ ((__const));
7934extern __const __int32_t **__ctype_toupper_loc (void)
7935 __attribute__ ((__const));
7936# 96 "../ctype/ctype.h"
7937
7938
7939
7940
7941
7942
7943extern int isalnum (int) __attribute__ ((__nothrow__));
7944extern int isalpha (int) __attribute__ ((__nothrow__));
7945extern int iscntrl (int) __attribute__ ((__nothrow__));
7946extern int isdigit (int) __attribute__ ((__nothrow__));
7947extern int islower (int) __attribute__ ((__nothrow__));
7948extern int isgraph (int) __attribute__ ((__nothrow__));
7949extern int isprint (int) __attribute__ ((__nothrow__));
7950extern int ispunct (int) __attribute__ ((__nothrow__));
7951extern int isspace (int) __attribute__ ((__nothrow__));
7952extern int isupper (int) __attribute__ ((__nothrow__));
7953extern int isxdigit (int) __attribute__ ((__nothrow__));
7954
7955
7956
7957extern int tolower (int __c) __attribute__ ((__nothrow__));
7958
7959
7960extern int toupper (int __c) __attribute__ ((__nothrow__));
7961
7962
7963
7964
7965
7966
7967
7968
7969extern int isblank (int) __attribute__ ((__nothrow__));
7970
7971
7972
7973
7974
7975
7976extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));
7977
7978
7979
7980
7981
7982
7983extern int isascii (int __c) __attribute__ ((__nothrow__));
7984
7985
7986
7987extern int toascii (int __c) __attribute__ ((__nothrow__));
7988
7989
7990
7991extern int _toupper (int) __attribute__ ((__nothrow__));
7992extern int _tolower (int) __attribute__ ((__nothrow__));
7993# 190 "../ctype/ctype.h"
7994extern __inline int
7995__attribute__ ((__nothrow__)) tolower (int __c)
7996{
7997 return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
7998}
7999
8000extern __inline int
8001__attribute__ ((__nothrow__)) toupper (int __c)
8002{
8003 return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
8004}
8005# 233 "../ctype/ctype.h"
8006# 1 "../include/xlocale.h" 1
8007# 234 "../ctype/ctype.h" 2
8008# 247 "../ctype/ctype.h"
8009extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
8010extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
8011extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
8012extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
8013extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
8014extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
8015extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
8016extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
8017extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
8018extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
8019extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
8020
8021extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
8022
8023
8024
8025extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
8026extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
8027
8028
8029extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
8030extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
8031# 323 "../ctype/ctype.h"
8032
8033# 70 "../include/ctype.h" 2
8034# 26 "regex_internal.h" 2
8035# 1 "../include/stdio.h" 1
8036
8037
8038
8039
8040# 1 "../libio/stdio.h" 1
8041# 30 "../libio/stdio.h"
8042
8043
8044
8045
8046# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
8047# 35 "../libio/stdio.h" 2
8048# 44 "../libio/stdio.h"
8049
8050
8051typedef struct _IO_FILE FILE;
8052
8053
8054
8055
8056
8057# 62 "../libio/stdio.h"
8058typedef struct _IO_FILE __FILE;
8059# 72 "../libio/stdio.h"
8060# 1 "../include/libio.h" 1
8061# 1 "../libio/libio.h" 1
8062# 32 "../libio/libio.h"
8063# 1 "../sysdeps/gnu/_G_config.h" 1
8064# 14 "../sysdeps/gnu/_G_config.h"
8065# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
8066# 355 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 3 4
8067typedef unsigned int wint_t;
8068# 15 "../sysdeps/gnu/_G_config.h" 2
8069# 24 "../sysdeps/gnu/_G_config.h"
8070# 1 "../include/wchar.h" 1
8071
8072# 1 "../wcsmbs/wchar.h" 1
8073# 48 "../wcsmbs/wchar.h"
8074# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
8075# 49 "../wcsmbs/wchar.h" 2
8076# 76 "../wcsmbs/wchar.h"
8077typedef struct
8078{
8079 int __count;
8080 union
8081 {
8082 wint_t __wch;
8083 char __wchb[4];
8084 } __value;
8085} __mbstate_t;
8086# 3 "../include/wchar.h" 2
8087# 25 "../sysdeps/gnu/_G_config.h" 2
8088
8089typedef struct
8090{
8091 __off_t __pos;
8092 __mbstate_t __state;
8093} _G_fpos_t;
8094typedef struct
8095{
8096 __off64_t __pos;
8097 __mbstate_t __state;
8098} _G_fpos64_t;
8099# 44 "../sysdeps/gnu/_G_config.h"
8100# 1 "../include/gconv.h" 1
8101# 1 "../iconv/gconv.h" 1
8102# 28 "../iconv/gconv.h"
8103# 1 "../include/wchar.h" 1
8104
8105# 1 "../wcsmbs/wchar.h" 1
8106# 48 "../wcsmbs/wchar.h"
8107# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
8108# 49 "../wcsmbs/wchar.h" 2
8109# 3 "../include/wchar.h" 2
8110# 29 "../iconv/gconv.h" 2
8111
8112
8113# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
8114# 32 "../iconv/gconv.h" 2
8115
8116
8117
8118
8119
8120enum
8121{
8122 __GCONV_OK = 0,
8123 __GCONV_NOCONV,
8124 __GCONV_NODB,
8125 __GCONV_NOMEM,
8126
8127 __GCONV_EMPTY_INPUT,
8128 __GCONV_FULL_OUTPUT,
8129 __GCONV_ILLEGAL_INPUT,
8130 __GCONV_INCOMPLETE_INPUT,
8131
8132 __GCONV_ILLEGAL_DESCRIPTOR,
8133 __GCONV_INTERNAL_ERROR
8134};
8135
8136
8137
8138enum
8139{
8140 __GCONV_IS_LAST = 0x0001,
8141 __GCONV_IGNORE_ERRORS = 0x0002
8142};
8143
8144
8145
8146struct __gconv_step;
8147struct __gconv_step_data;
8148struct __gconv_loaded_object;
8149struct __gconv_trans_data;
8150
8151
8152
8153typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
8154 __const unsigned char **, __const unsigned char *,
8155 unsigned char **, size_t *, int, int);
8156
8157
8158typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
8159
8160
8161typedef int (*__gconv_init_fct) (struct __gconv_step *);
8162typedef void (*__gconv_end_fct) (struct __gconv_step *);
8163
8164
8165
8166typedef int (*__gconv_trans_fct) (struct __gconv_step *,
8167 struct __gconv_step_data *, void *,
8168 __const unsigned char *,
8169 __const unsigned char **,
8170 __const unsigned char *, unsigned char **,
8171 size_t *);
8172
8173
8174typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
8175 __const unsigned char *,
8176 unsigned char *, unsigned char *);
8177
8178
8179typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
8180 size_t *);
8181
8182
8183typedef int (*__gconv_trans_init_fct) (void **, const char *);
8184typedef void (*__gconv_trans_end_fct) (void *);
8185
8186struct __gconv_trans_data
8187{
8188
8189 __gconv_trans_fct __trans_fct;
8190 __gconv_trans_context_fct __trans_context_fct;
8191 __gconv_trans_end_fct __trans_end_fct;
8192 void *__data;
8193 struct __gconv_trans_data *__next;
8194};
8195
8196
8197
8198struct __gconv_step
8199{
8200 struct __gconv_loaded_object *__shlib_handle;
8201 __const char *__modname;
8202
8203 int __counter;
8204
8205 char *__from_name;
8206 char *__to_name;
8207
8208 __gconv_fct __fct;
8209 __gconv_btowc_fct __btowc_fct;
8210 __gconv_init_fct __init_fct;
8211 __gconv_end_fct __end_fct;
8212
8213
8214
8215 int __min_needed_from;
8216 int __max_needed_from;
8217 int __min_needed_to;
8218 int __max_needed_to;
8219
8220
8221 int __stateful;
8222
8223 void *__data;
8224};
8225
8226
8227
8228struct __gconv_step_data
8229{
8230 unsigned char *__outbuf;
8231 unsigned char *__outbufend;
8232
8233
8234
8235 int __flags;
8236
8237
8238
8239 int __invocation_counter;
8240
8241
8242
8243 int __internal_use;
8244
8245 __mbstate_t *__statep;
8246 __mbstate_t __state;
8247
8248
8249
8250 struct __gconv_trans_data *__trans;
8251};
8252
8253
8254
8255typedef struct __gconv_info
8256{
8257 size_t __nsteps;
8258 struct __gconv_step *__steps;
8259 __extension__ struct __gconv_step_data __data [];
8260} *__gconv_t;
8261# 1 "../include/gconv.h" 2
8262# 45 "../sysdeps/gnu/_G_config.h" 2
8263typedef union
8264{
8265 struct __gconv_info __cd;
8266 struct
8267 {
8268 struct __gconv_info __cd;
8269 struct __gconv_step_data __data;
8270 } __combined;
8271} _G_iconv_t;
8272
8273typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
8274typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
8275typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
8276typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
8277# 33 "../libio/libio.h" 2
8278# 53 "../libio/libio.h"
8279# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stdarg.h" 1 3 4
8280# 43 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stdarg.h" 3 4
8281typedef __builtin_va_list __gnuc_va_list;
8282# 54 "../libio/libio.h" 2
8283# 167 "../libio/libio.h"
8284struct _IO_jump_t; struct _IO_FILE;
8285# 177 "../libio/libio.h"
8286typedef void _IO_lock_t;
8287
8288
8289
8290
8291
8292struct _IO_marker {
8293 struct _IO_marker *_next;
8294 struct _IO_FILE *_sbuf;
8295
8296
8297
8298 int _pos;
8299# 200 "../libio/libio.h"
8300};
8301
8302
8303enum __codecvt_result
8304{
8305 __codecvt_ok,
8306 __codecvt_partial,
8307 __codecvt_error,
8308 __codecvt_noconv
8309};
8310
8311
8312
8313
8314struct _IO_codecvt
8315{
8316 void (*__codecvt_destr) (struct _IO_codecvt *);
8317 enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *,
8318 __mbstate_t *,
8319 const wchar_t *,
8320 const wchar_t *,
8321 const wchar_t **, char *,
8322 char *, char **);
8323 enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *,
8324 __mbstate_t *, char *,
8325 char *, char **);
8326 enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *,
8327 __mbstate_t *,
8328 const char *, const char *,
8329 const char **, wchar_t *,
8330 wchar_t *, wchar_t **);
8331 int (*__codecvt_do_encoding) (struct _IO_codecvt *);
8332 int (*__codecvt_do_always_noconv) (struct _IO_codecvt *);
8333 int (*__codecvt_do_length) (struct _IO_codecvt *, __mbstate_t *,
8334 const char *, const char *, size_t);
8335 int (*__codecvt_do_max_length) (struct _IO_codecvt *);
8336
8337 _G_iconv_t __cd_in;
8338 _G_iconv_t __cd_out;
8339};
8340
8341
8342struct _IO_wide_data
8343{
8344 wchar_t *_IO_read_ptr;
8345 wchar_t *_IO_read_end;
8346 wchar_t *_IO_read_base;
8347 wchar_t *_IO_write_base;
8348 wchar_t *_IO_write_ptr;
8349 wchar_t *_IO_write_end;
8350 wchar_t *_IO_buf_base;
8351 wchar_t *_IO_buf_end;
8352
8353 wchar_t *_IO_save_base;
8354 wchar_t *_IO_backup_base;
8355
8356 wchar_t *_IO_save_end;
8357
8358 __mbstate_t _IO_state;
8359 __mbstate_t _IO_last_state;
8360 struct _IO_codecvt _codecvt;
8361
8362 wchar_t _shortbuf[1];
8363
8364 const struct _IO_jump_t *_wide_vtable;
8365};
8366
8367
8368struct _IO_FILE {
8369 int _flags;
8370
8371
8372
8373
8374 char* _IO_read_ptr;
8375 char* _IO_read_end;
8376 char* _IO_read_base;
8377 char* _IO_write_base;
8378 char* _IO_write_ptr;
8379 char* _IO_write_end;
8380 char* _IO_buf_base;
8381 char* _IO_buf_end;
8382
8383 char *_IO_save_base;
8384 char *_IO_backup_base;
8385 char *_IO_save_end;
8386
8387 struct _IO_marker *_markers;
8388
8389 struct _IO_FILE *_chain;
8390
8391 int _fileno;
8392
8393
8394
8395 int _flags2;
8396
8397 __off_t _old_offset;
8398
8399
8400
8401 unsigned short _cur_column;
8402 signed char _vtable_offset;
8403 char _shortbuf[1];
8404
8405
8406
8407 _IO_lock_t *_lock;
8408# 316 "../libio/libio.h"
8409 __off64_t _offset;
8410
8411
8412 struct _IO_codecvt *_codecvt;
8413 struct _IO_wide_data *_wide_data;
8414 struct _IO_FILE *_freeres_list;
8415 void *_freeres_buf;
8416 size_t _freeres_size;
8417
8418
8419
8420
8421
8422
8423
8424 int _mode;
8425
8426 char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
8427
8428};
8429
8430
8431typedef struct _IO_FILE _IO_FILE;
8432
8433
8434struct _IO_FILE_plus;
8435
8436extern struct _IO_FILE_plus _IO_2_1_stdin_;
8437extern struct _IO_FILE_plus _IO_2_1_stdout_;
8438extern struct _IO_FILE_plus _IO_2_1_stderr_;
8439
8440
8441
8442
8443
8444extern _IO_FILE *_IO_stdin ;
8445extern _IO_FILE *_IO_stdout ;
8446extern _IO_FILE *_IO_stderr ;
8447
8448
8449
8450
8451
8452
8453
8454typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
8455
8456
8457
8458
8459
8460
8461
8462typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
8463 size_t __n);
8464
8465
8466
8467
8468
8469
8470
8471typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
8472
8473
8474typedef int __io_close_fn (void *__cookie);
8475
8476
8477
8478
8479typedef __io_read_fn cookie_read_function_t;
8480typedef __io_write_fn cookie_write_function_t;
8481typedef __io_seek_fn cookie_seek_function_t;
8482typedef __io_close_fn cookie_close_function_t;
8483
8484
8485typedef struct
8486{
8487 __io_read_fn *read;
8488 __io_write_fn *write;
8489 __io_seek_fn *seek;
8490 __io_close_fn *close;
8491} _IO_cookie_io_functions_t;
8492typedef _IO_cookie_io_functions_t cookie_io_functions_t;
8493
8494struct _IO_cookie_file;
8495
8496
8497extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
8498 void *__cookie, _IO_cookie_io_functions_t __fns);
8499
8500
8501
8502
8503
8504
8505
8506extern int __underflow (_IO_FILE *) __attribute__ ((__nothrow__));
8507extern int __uflow (_IO_FILE *) __attribute__ ((__nothrow__));
8508extern int __overflow (_IO_FILE *, int) __attribute__ ((__nothrow__));
8509extern wint_t __wunderflow (_IO_FILE *) __attribute__ ((__nothrow__));
8510extern wint_t __wuflow (_IO_FILE *) __attribute__ ((__nothrow__));
8511extern wint_t __woverflow (_IO_FILE *, wint_t) __attribute__ ((__nothrow__));
8512# 451 "../libio/libio.h"
8513extern int _IO_getc (_IO_FILE *__fp) __attribute__ ((__nothrow__));
8514extern int _IO_putc (int __c, _IO_FILE *__fp) __attribute__ ((__nothrow__));
8515extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
8516extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
8517
8518extern int _IO_peekc_locked (_IO_FILE *__fp) __attribute__ ((__nothrow__));
8519
8520
8521
8522
8523
8524extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
8525extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
8526extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
8527# 481 "../libio/libio.h"
8528extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
8529 __gnuc_va_list, int *__restrict);
8530extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
8531 __gnuc_va_list);
8532extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) __attribute__ ((__nothrow__));
8533extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) __attribute__ ((__nothrow__));
8534
8535extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) __attribute__ ((__nothrow__));
8536extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) __attribute__ ((__nothrow__));
8537
8538extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
8539
8540
8541extern wint_t _IO_getwc (_IO_FILE *__fp) __attribute__ ((__nothrow__));
8542extern wint_t _IO_putwc (wchar_t __wc, _IO_FILE *__fp) __attribute__ ((__nothrow__));
8543extern int _IO_fwide (_IO_FILE *__fp, int __mode) __attribute__ ((__nothrow__));
8544# 530 "../libio/libio.h"
8545extern int _IO_vfwscanf (_IO_FILE * __restrict, const wchar_t * __restrict,
8546 __gnuc_va_list, int *__restrict);
8547extern int _IO_vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict,
8548 __gnuc_va_list);
8549extern __ssize_t _IO_wpadn (_IO_FILE *, wint_t, __ssize_t) __attribute__ ((__nothrow__));
8550extern void _IO_free_wbackup_area (_IO_FILE *) __attribute__ ((__nothrow__));
8551# 2 "../include/libio.h" 2
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562# 73 "../libio/stdio.h" 2
8563
8564
8565
8566
8567typedef __gnuc_va_list va_list;
8568# 86 "../libio/stdio.h"
8569
8570
8571typedef _G_fpos_t fpos_t;
8572
8573
8574
8575
8576
8577typedef _G_fpos64_t fpos64_t;
8578# 138 "../libio/stdio.h"
8579# 1 "/var/tmp/portage/glibc-2.5/work/build-default-hppa2.0-unknown-linux-gnu-nptl/bits/stdio_lim.h" 1
8580# 139 "../libio/stdio.h" 2
8581
8582
8583
8584extern struct _IO_FILE *stdin;
8585extern struct _IO_FILE *stdout;
8586extern struct _IO_FILE *stderr;
8587
8588
8589
8590
8591
8592
8593
8594extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
8595
8596extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
8597
8598
8599
8600
8601extern int renameat (int __oldfd, __const char *__old, int __newfd,
8602 __const char *__new) __attribute__ ((__nothrow__));
8603
8604
8605
8606
8607
8608
8609
8610
8611extern FILE *tmpfile (void) ;
8612# 179 "../libio/stdio.h"
8613extern FILE *tmpfile64 (void) ;
8614
8615
8616
8617extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
8618
8619
8620
8621
8622
8623extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
8624# 201 "../libio/stdio.h"
8625extern char *tempnam (__const char *__dir, __const char *__pfx)
8626 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
8627
8628
8629
8630
8631
8632
8633
8634
8635extern int fclose (FILE *__stream);
8636
8637
8638
8639
8640extern int fflush (FILE *__stream);
8641
8642# 226 "../libio/stdio.h"
8643extern int fflush_unlocked (FILE *__stream);
8644# 236 "../libio/stdio.h"
8645extern int fcloseall (void);
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655extern FILE *fopen (__const char *__restrict __filename,
8656 __const char *__restrict __modes) ;
8657
8658
8659
8660
8661extern FILE *freopen (__const char *__restrict __filename,
8662 __const char *__restrict __modes,
8663 FILE *__restrict __stream) ;
8664# 269 "../libio/stdio.h"
8665
8666
8667extern FILE *fopen64 (__const char *__restrict __filename,
8668 __const char *__restrict __modes) ;
8669extern FILE *freopen64 (__const char *__restrict __filename,
8670 __const char *__restrict __modes,
8671 FILE *__restrict __stream) ;
8672
8673
8674
8675
8676extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
8677
8678
8679
8680
8681
8682extern FILE *fopencookie (void *__restrict __magic_cookie,
8683 __const char *__restrict __modes,
8684 _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) ;
8685
8686
8687extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
8688 __attribute__ ((__nothrow__)) ;
8689
8690
8691
8692
8693extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
8694
8695
8696
8697
8698
8699
8700extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
8701
8702
8703
8704extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
8705 int __modes, size_t __n) __attribute__ ((__nothrow__));
8706
8707
8708
8709
8710
8711extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
8712 size_t __size) __attribute__ ((__nothrow__));
8713
8714
8715extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
8716
8717
8718
8719
8720
8721
8722
8723
8724extern int fprintf (FILE *__restrict __stream,
8725 __const char *__restrict __format, ...);
8726
8727
8728
8729
8730extern int printf (__const char *__restrict __format, ...);
8731
8732extern int sprintf (char *__restrict __s,
8733 __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
8734
8735
8736
8737
8738
8739extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
8740 __gnuc_va_list __arg);
8741
8742
8743
8744
8745extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
8746
8747extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
8748 __gnuc_va_list __arg) __attribute__ ((__nothrow__));
8749
8750
8751
8752
8753
8754extern int snprintf (char *__restrict __s, size_t __maxlen,
8755 __const char *__restrict __format, ...)
8756 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
8757
8758extern int vsnprintf (char *__restrict __s, size_t __maxlen,
8759 __const char *__restrict __format, __gnuc_va_list __arg)
8760 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
8761
8762
8763
8764
8765
8766
8767extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
8768 __gnuc_va_list __arg)
8769 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
8770extern int __asprintf (char **__restrict __ptr,
8771 __const char *__restrict __fmt, ...)
8772 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
8773extern int asprintf (char **__restrict __ptr,
8774 __const char *__restrict __fmt, ...)
8775 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
8776
8777
8778
8779
8780
8781
8782
8783extern int vdprintf (int __fd, __const char *__restrict __fmt,
8784 __gnuc_va_list __arg)
8785 __attribute__ ((__format__ (__printf__, 2, 0)));
8786extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
8787 __attribute__ ((__format__ (__printf__, 2, 3)));
8788
8789
8790
8791
8792
8793
8794
8795
8796extern int fscanf (FILE *__restrict __stream,
8797 __const char *__restrict __format, ...) ;
8798
8799
8800
8801
8802extern int scanf (__const char *__restrict __format, ...) ;
8803
8804extern int sscanf (__const char *__restrict __s,
8805 __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
8806
8807
8808
8809
8810
8811
8812
8813
8814extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
8815 __gnuc_va_list __arg)
8816 __attribute__ ((__format__ (__scanf__, 2, 0))) ;
8817
8818
8819
8820
8821
8822extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
8823 __attribute__ ((__format__ (__scanf__, 1, 0))) ;
8824
8825
8826extern int vsscanf (__const char *__restrict __s,
8827 __const char *__restrict __format, __gnuc_va_list __arg)
8828 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838extern int fgetc (FILE *__stream);
8839extern int getc (FILE *__stream);
8840
8841
8842
8843
8844
8845extern int getchar (void);
8846
8847# 461 "../libio/stdio.h"
8848extern int getc_unlocked (FILE *__stream);
8849extern int getchar_unlocked (void);
8850# 472 "../libio/stdio.h"
8851extern int fgetc_unlocked (FILE *__stream);
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863extern int fputc (int __c, FILE *__stream);
8864extern int putc (int __c, FILE *__stream);
8865
8866
8867
8868
8869
8870extern int putchar (int __c);
8871
8872# 505 "../libio/stdio.h"
8873extern int fputc_unlocked (int __c, FILE *__stream);
8874
8875
8876
8877
8878
8879
8880
8881extern int putc_unlocked (int __c, FILE *__stream);
8882extern int putchar_unlocked (int __c);
8883
8884
8885
8886
8887
8888
8889extern int getw (FILE *__stream);
8890
8891
8892extern int putw (int __w, FILE *__stream);
8893
8894
8895
8896
8897
8898
8899
8900
8901extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
8902 ;
8903
8904
8905
8906
8907
8908
8909extern char *gets (char *__s) ;
8910
8911# 551 "../libio/stdio.h"
8912extern char *fgets_unlocked (char *__restrict __s, int __n,
8913 FILE *__restrict __stream) ;
8914# 567 "../libio/stdio.h"
8915extern __ssize_t __getdelim (char **__restrict __lineptr,
8916 size_t *__restrict __n, int __delimiter,
8917 FILE *__restrict __stream) ;
8918extern __ssize_t getdelim (char **__restrict __lineptr,
8919 size_t *__restrict __n, int __delimiter,
8920 FILE *__restrict __stream) ;
8921
8922
8923
8924
8925
8926
8927
8928extern __ssize_t getline (char **__restrict __lineptr,
8929 size_t *__restrict __n,
8930 FILE *__restrict __stream) ;
8931
8932
8933
8934
8935
8936
8937
8938
8939extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
8940
8941
8942
8943
8944
8945extern int puts (__const char *__s);
8946
8947
8948
8949
8950
8951
8952extern int ungetc (int __c, FILE *__stream);
8953
8954
8955
8956
8957
8958
8959extern size_t fread (void *__restrict __ptr, size_t __size,
8960 size_t __n, FILE *__restrict __stream) ;
8961
8962
8963
8964
8965extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
8966 size_t __n, FILE *__restrict __s) ;
8967
8968# 628 "../libio/stdio.h"
8969extern int fputs_unlocked (__const char *__restrict __s,
8970 FILE *__restrict __stream);
8971# 639 "../libio/stdio.h"
8972extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
8973 size_t __n, FILE *__restrict __stream) ;
8974extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
8975 size_t __n, FILE *__restrict __stream) ;
8976
8977
8978
8979
8980
8981
8982
8983
8984extern int fseek (FILE *__stream, long int __off, int __whence);
8985
8986
8987
8988
8989extern long int ftell (FILE *__stream) ;
8990
8991
8992
8993
8994extern void rewind (FILE *__stream);
8995
8996# 675 "../libio/stdio.h"
8997extern int fseeko (FILE *__stream, __off_t __off, int __whence);
8998
8999
9000
9001
9002extern __off_t ftello (FILE *__stream) ;
9003# 694 "../libio/stdio.h"
9004
9005
9006
9007
9008
9009
9010extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
9011
9012
9013
9014
9015extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
9016# 717 "../libio/stdio.h"
9017
9018
9019
9020extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
9021extern __off64_t ftello64 (FILE *__stream) ;
9022extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
9023extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
9024
9025
9026
9027
9028extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
9029
9030extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
9031
9032extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
9033
9034
9035
9036
9037extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
9038extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
9039extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
9040
9041
9042
9043
9044
9045
9046
9047
9048extern void perror (__const char *__s);
9049
9050
9051
9052
9053
9054
9055# 1 "../sysdeps/unix/sysv/linux/bits/sys_errlist.h" 1
9056# 27 "../sysdeps/unix/sysv/linux/bits/sys_errlist.h"
9057extern int sys_nerr;
9058extern __const char *__const sys_errlist[];
9059
9060
9061extern int _sys_nerr;
9062extern __const char *__const _sys_errlist[];
9063# 756 "../libio/stdio.h" 2
9064
9065
9066
9067
9068extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
9069
9070
9071
9072
9073extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
9074# 775 "../libio/stdio.h"
9075extern FILE *popen (__const char *__command, __const char *__modes) ;
9076
9077
9078
9079
9080
9081extern int pclose (FILE *__stream);
9082
9083
9084
9085
9086
9087extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
9088
9089
9090
9091
9092
9093extern char *cuserid (char *__s);
9094
9095
9096
9097
9098struct obstack;
9099
9100
9101extern int obstack_printf (struct obstack *__restrict __obstack,
9102 __const char *__restrict __format, ...)
9103 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
9104extern int obstack_vprintf (struct obstack *__restrict __obstack,
9105 __const char *__restrict __format,
9106 __gnuc_va_list __args)
9107 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
9108
9109
9110
9111
9112
9113
9114
9115extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
9116
9117
9118
9119extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
9120
9121
9122extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
9123# 836 "../libio/stdio.h"
9124# 1 "../libio/bits/stdio.h" 1
9125# 33 "../libio/bits/stdio.h"
9126extern __inline int
9127vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
9128{
9129 return vfprintf (stdout, __fmt, __arg);
9130}
9131
9132
9133extern __inline int
9134getchar (void)
9135{
9136 return _IO_getc (stdin);
9137}
9138
9139
9140
9141
9142extern __inline int
9143getc_unlocked (FILE *__fp)
9144{
9145 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
9146}
9147
9148
9149extern __inline int
9150getchar_unlocked (void)
9151{
9152 return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
9153}
9154
9155
9156
9157
9158extern __inline int
9159putchar (int __c)
9160{
9161 return _IO_putc (__c, stdout);
9162}
9163
9164
9165
9166
9167extern __inline int
9168fputc_unlocked (int __c, FILE *__stream)
9169{
9170 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
9171}
9172
9173
9174
9175
9176
9177extern __inline int
9178putc_unlocked (int __c, FILE *__stream)
9179{
9180 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
9181}
9182
9183
9184extern __inline int
9185putchar_unlocked (int __c)
9186{
9187 return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
9188}
9189
9190
9191
9192
9193
9194extern __inline __ssize_t
9195getline (char **__lineptr, size_t *__n, FILE *__stream)
9196{
9197 return __getdelim (__lineptr, __n, '\n', __stream);
9198}
9199
9200
9201
9202
9203
9204extern __inline int
9205__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
9206{
9207 return (((__stream)->_flags & 0x10) != 0);
9208}
9209
9210
9211extern __inline int
9212__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
9213{
9214 return (((__stream)->_flags & 0x20) != 0);
9215}
9216# 837 "../libio/stdio.h" 2
9217# 845 "../libio/stdio.h"
9218
9219# 6 "../include/stdio.h" 2
9220
9221
9222extern int __fcloseall (void);
9223extern int __snprintf (char *__restrict __s, size_t __maxlen,
9224 __const char *__restrict __format, ...)
9225 __attribute__ ((__format__ (__printf__, 3, 4)));
9226extern int __vsnprintf (char *__restrict __s, size_t __maxlen,
9227 __const char *__restrict __format, __gnuc_va_list __arg)
9228 __attribute__ ((__format__ (__printf__, 3, 0)));
9229extern int __vfscanf (FILE *__restrict __s,
9230 __const char *__restrict __format,
9231 __gnuc_va_list __arg)
9232 __attribute__ ((__format__ (__scanf__, 2, 0)));
9233
9234extern int __vscanf (__const char *__restrict __format,
9235 __gnuc_va_list __arg)
9236 __attribute__ ((__format__ (__scanf__, 1, 0)));
9237extern __ssize_t __getline (char **__lineptr, size_t *__n,
9238 FILE *__stream);
9239extern int __vsscanf (__const char *__restrict __s,
9240 __const char *__restrict __format,
9241 __gnuc_va_list __arg)
9242 __attribute__ ((__format__ (__scanf__, 2, 0)));
9243
9244extern int __sprintf_chk (char *, int, size_t, const char *, ...) __attribute__ ((__nothrow__));
9245extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
9246 __attribute__ ((__nothrow__));
9247extern int __vsprintf_chk (char *, int, size_t, const char *,
9248 __gnuc_va_list) __attribute__ ((__nothrow__));
9249extern int __vsnprintf_chk (char *, size_t, int, size_t, const char *,
9250 __gnuc_va_list) __attribute__ ((__nothrow__));
9251extern int __printf_chk (int, const char *, ...);
9252extern int __fprintf_chk (FILE *, int, const char *, ...);
9253extern int __vprintf_chk (int, const char *, __gnuc_va_list);
9254extern int __vfprintf_chk (FILE *, int, const char *, __gnuc_va_list);
9255extern char *__fgets_unlocked_chk (char *buf, size_t size, int n, FILE *fp);
9256extern char *__fgets_chk (char *buf, size_t size, int n, FILE *fp);
9257
9258
9259extern FILE *__new_tmpfile (void);
9260extern FILE *__old_tmpfile (void);
9261
9262
9263
9264
9265# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
9266# 52 "../include/stdio.h" 2
9267
9268extern int __path_search (char *__tmpl, size_t __tmpl_len,
9269 __const char *__dir, __const char *__pfx,
9270 int __try_tempdir);
9271
9272extern int __gen_tempname (char *__tmpl, int __kind);
9273
9274
9275
9276
9277
9278
9279
9280extern void __libc_fatal (__const char *__message)
9281 __attribute__ ((__noreturn__));
9282extern void __libc_message (int do_abort, __const char *__fnt, ...);
9283
9284
9285extern void __flockfile (FILE *__stream);
9286
9287
9288extern void __funlockfile (FILE *__stream);
9289
9290
9291
9292extern int __ftrylockfile (FILE *__stream);
9293
9294extern int __getc_unlocked (FILE *__fp);
9295extern wint_t __getwc_unlocked (FILE *__fp);
9296
9297extern int __fxprintf (FILE *__fp, const char *__fmt, ...)
9298 __attribute__ ((__format__ (__printf__, 2, 3)));
9299
9300extern __const char *__const _sys_errlist_internal[] ;
9301extern int _sys_nerr_internal ;
9302
9303extern int __asprintf_internal (char **__restrict __ptr,
9304 __const char *__restrict __fmt, ...)
9305 __attribute__ ((__format__ (__printf__, 2, 3)));
9306
9307
9308
9309
9310extern _IO_FILE *_IO_new_fopen (const char*, const char*);
9311
9312extern _IO_FILE *_IO_new_fdopen (int, const char*);
9313
9314extern int _IO_new_fclose (_IO_FILE*);
9315
9316extern int _IO_fputs (const char*, _IO_FILE*);
9317
9318
9319extern int _IO_new_fsetpos (_IO_FILE *, const _G_fpos_t *);
9320
9321extern int _IO_new_fgetpos (_IO_FILE *, _G_fpos_t *);
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347# 27 "regex_internal.h" 2
9348
9349# 1 "../include/string.h" 1
9350
9351
9352# 1 "../include/sys/types.h" 1
9353# 4 "../include/string.h" 2
9354
9355extern void *__memccpy (void *__dest, __const void *__src,
9356 int __c, size_t __n);
9357
9358extern size_t __strnlen (__const char *__string, size_t __maxlen)
9359 __attribute__ ((__pure__));
9360
9361extern char *__strsep (char **__stringp, __const char *__delim);
9362
9363extern int __strverscmp (__const char *__s1, __const char *__s2)
9364 __attribute__ ((__pure__));
9365
9366extern int __strncasecmp (__const char *__s1, __const char *__s2,
9367 size_t __n)
9368 __attribute__ ((__pure__));
9369
9370extern int __strcasecmp (__const char *__s1, __const char *__s2)
9371 __attribute__ ((__pure__));
9372
9373extern char *__strcasestr (__const char *__haystack, __const char *__needle)
9374 __attribute__ ((__pure__));
9375
9376extern char *__strdup (__const char *__string)
9377 __attribute__ ((__malloc__));
9378extern char *__strndup (__const char *__string, size_t __n)
9379 __attribute__ ((__malloc__));
9380
9381extern void *__rawmemchr (__const void *__s, int __c)
9382 __attribute__ ((__pure__));
9383
9384extern char *__strchrnul (__const char *__s, int __c)
9385 __attribute__ ((__pure__));
9386
9387extern void *__memrchr (__const void *__s, int __c, size_t __n)
9388 __attribute__ ((__pure__));
9389
9390extern void *__memchr (__const void *__s, int __c, size_t __n)
9391 __attribute__ ((__pure__));
9392
9393extern int __ffs (int __i) __attribute__ ((const));
9394
9395extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
9396
9397
9398
9399# 1 "../string/string.h" 1
9400# 28 "../string/string.h"
9401
9402
9403
9404
9405
9406# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
9407# 34 "../string/string.h" 2
9408
9409
9410
9411
9412extern void *memcpy (void *__restrict __dest,
9413 __const void *__restrict __src, size_t __n)
9414 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9415
9416
9417extern void *memmove (void *__dest, __const void *__src, size_t __n)
9418 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9419
9420
9421
9422
9423
9424
9425extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
9426 int __c, size_t __n)
9427 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9428
9429
9430
9431
9432
9433extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9434
9435
9436extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
9437 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9438
9439
9440extern void *memchr (__const void *__s, int __c, size_t __n)
9441 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9442
9443
9444
9445
9446
9447extern void *rawmemchr (__const void *__s, int __c)
9448 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9449
9450
9451extern void *memrchr (__const void *__s, int __c, size_t __n)
9452 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9453
9454
9455
9456
9457
9458extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
9459 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9460
9461extern char *strncpy (char *__restrict __dest,
9462 __const char *__restrict __src, size_t __n)
9463 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9464
9465
9466extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
9467 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9468
9469extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
9470 size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9471
9472
9473extern int strcmp (__const char *__s1, __const char *__s2)
9474 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9475
9476extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
9477 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9478
9479
9480extern int strcoll (__const char *__s1, __const char *__s2)
9481 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9482
9483extern size_t strxfrm (char *__restrict __dest,
9484 __const char *__restrict __src, size_t __n)
9485 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
9486
9487
9488
9489
9490
9491
9492# 1 "../include/xlocale.h" 1
9493# 119 "../string/string.h" 2
9494
9495
9496extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
9497 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
9498
9499extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
9500 __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
9501
9502
9503
9504
9505extern char *strdup (__const char *__s)
9506 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
9507
9508
9509
9510
9511
9512
9513extern char *strndup (__const char *__string, size_t __n)
9514 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
9515# 165 "../string/string.h"
9516
9517
9518extern char *strchr (__const char *__s, int __c)
9519 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9520
9521extern char *strrchr (__const char *__s, int __c)
9522 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9523
9524
9525
9526
9527
9528extern char *strchrnul (__const char *__s, int __c)
9529 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9530
9531
9532
9533
9534
9535extern size_t strcspn (__const char *__s, __const char *__reject)
9536 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9537
9538
9539extern size_t strspn (__const char *__s, __const char *__accept)
9540 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9541
9542extern char *strpbrk (__const char *__s, __const char *__accept)
9543 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9544
9545extern char *strstr (__const char *__haystack, __const char *__needle)
9546 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9547
9548
9549
9550extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
9551 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
9552
9553
9554
9555
9556extern char *__strtok_r (char *__restrict __s,
9557 __const char *__restrict __delim,
9558 char **__restrict __save_ptr)
9559 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
9560
9561extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
9562 char **__restrict __save_ptr)
9563 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
9564
9565
9566
9567
9568extern char *strcasestr (__const char *__haystack, __const char *__needle)
9569 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9570
9571
9572
9573
9574
9575
9576extern void *memmem (__const void *__haystack, size_t __haystacklen,
9577 __const void *__needle, size_t __needlelen)
9578 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
9579
9580
9581
9582extern void *__mempcpy (void *__restrict __dest,
9583 __const void *__restrict __src, size_t __n)
9584 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9585extern void *mempcpy (void *__restrict __dest,
9586 __const void *__restrict __src, size_t __n)
9587 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9588
9589
9590
9591
9592
9593extern size_t strlen (__const char *__s)
9594 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9595
9596
9597
9598
9599
9600extern size_t strnlen (__const char *__string, size_t __maxlen)
9601 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9602
9603
9604
9605
9606
9607extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
9608
9609# 281 "../string/string.h"
9610extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
9611 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
9612
9613
9614
9615
9616
9617extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9618
9619
9620
9621extern void bcopy (__const void *__src, void *__dest, size_t __n)
9622 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9623
9624
9625extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9626
9627
9628extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
9629 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9630
9631
9632extern char *index (__const char *__s, int __c)
9633 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9634
9635
9636extern char *rindex (__const char *__s, int __c)
9637 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
9638
9639
9640
9641extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
9642
9643
9644
9645
9646extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
9647
9648__extension__ extern int ffsll (long long int __ll)
9649 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
9650
9651
9652
9653
9654extern int strcasecmp (__const char *__s1, __const char *__s2)
9655 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9656
9657
9658extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
9659 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9660
9661
9662
9663
9664
9665extern int strcasecmp_l (__const char *__s1, __const char *__s2,
9666 __locale_t __loc)
9667 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
9668
9669extern int strncasecmp_l (__const char *__s1, __const char *__s2,
9670 size_t __n, __locale_t __loc)
9671 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
9672
9673
9674
9675
9676
9677extern char *strsep (char **__restrict __stringp,
9678 __const char *__restrict __delim)
9679 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9680
9681
9682
9683
9684extern int strverscmp (__const char *__s1, __const char *__s2)
9685 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
9686
9687
9688extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
9689
9690
9691extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
9692 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9693extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
9694 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9695
9696
9697
9698extern char *__stpncpy (char *__restrict __dest,
9699 __const char *__restrict __src, size_t __n)
9700 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9701extern char *stpncpy (char *__restrict __dest,
9702 __const char *__restrict __src, size_t __n)
9703 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9704
9705
9706extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9707
9708
9709extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9710
9711
9712
9713
9714
9715
9716extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9717# 414 "../string/string.h"
9718# 1 "../bits/string.h" 1
9719# 415 "../string/string.h" 2
9720
9721
9722# 1 "../include/bits/string2.h" 1
9723# 1 "../string/bits/string2.h" 1
9724# 80 "../string/bits/string2.h"
9725typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2;
9726typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3;
9727typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4;
9728typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5;
9729typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6;
9730typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7;
9731typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8;
9732# 394 "../string/bits/string2.h"
9733extern void *__rawmemchr (const void *__s, int __c);
9734# 969 "../string/bits/string2.h"
9735extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
9736extern __inline size_t
9737__strcspn_c1 (__const char *__s, int __reject)
9738{
9739 register size_t __result = 0;
9740 while (__s[__result] != '\0' && __s[__result] != __reject)
9741 ++__result;
9742 return __result;
9743}
9744
9745extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
9746 int __reject2);
9747extern __inline size_t
9748__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
9749{
9750 register size_t __result = 0;
9751 while (__s[__result] != '\0' && __s[__result] != __reject1
9752 && __s[__result] != __reject2)
9753 ++__result;
9754 return __result;
9755}
9756
9757extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
9758 int __reject2, int __reject3);
9759extern __inline size_t
9760__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
9761 int __reject3)
9762{
9763 register size_t __result = 0;
9764 while (__s[__result] != '\0' && __s[__result] != __reject1
9765 && __s[__result] != __reject2 && __s[__result] != __reject3)
9766 ++__result;
9767 return __result;
9768}
9769# 1045 "../string/bits/string2.h"
9770extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
9771extern __inline size_t
9772__strspn_c1 (__const char *__s, int __accept)
9773{
9774 register size_t __result = 0;
9775
9776 while (__s[__result] == __accept)
9777 ++__result;
9778 return __result;
9779}
9780
9781extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
9782 int __accept2);
9783extern __inline size_t
9784__strspn_c2 (__const char *__s, int __accept1, int __accept2)
9785{
9786 register size_t __result = 0;
9787
9788 while (__s[__result] == __accept1 || __s[__result] == __accept2)
9789 ++__result;
9790 return __result;
9791}
9792
9793extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
9794 int __accept2, int __accept3);
9795extern __inline size_t
9796__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
9797{
9798 register size_t __result = 0;
9799
9800 while (__s[__result] == __accept1 || __s[__result] == __accept2
9801 || __s[__result] == __accept3)
9802 ++__result;
9803 return __result;
9804}
9805# 1121 "../string/bits/string2.h"
9806extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
9807 int __accept2);
9808extern __inline char *
9809__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
9810{
9811
9812 while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
9813 ++__s;
9814 return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
9815}
9816
9817extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
9818 int __accept2, int __accept3);
9819extern __inline char *
9820__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
9821 int __accept3)
9822{
9823
9824 while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
9825 && *__s != __accept3)
9826 ++__s;
9827 return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
9828}
9829# 1173 "../string/bits/string2.h"
9830extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
9831extern __inline char *
9832__strtok_r_1c (char *__s, char __sep, char **__nextp)
9833{
9834 char *__result;
9835 if (__s == ((void *)0))
9836 __s = *__nextp;
9837 while (*__s == __sep)
9838 ++__s;
9839 __result = ((void *)0);
9840 if (*__s != '\0')
9841 {
9842 __result = __s++;
9843 while (*__s != '\0')
9844 if (*__s++ == __sep)
9845 {
9846 __s[-1] = '\0';
9847 break;
9848 }
9849 *__nextp = __s;
9850 }
9851 return __result;
9852}
9853# 1205 "../string/bits/string2.h"
9854extern char *__strsep_g (char **__stringp, __const char *__delim);
9855# 1223 "../string/bits/string2.h"
9856extern __inline char *__strsep_1c (char **__s, char __reject);
9857extern __inline char *
9858__strsep_1c (char **__s, char __reject)
9859{
9860 register char *__retval = *__s;
9861 if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
9862 *(*__s)++ = '\0';
9863 return __retval;
9864}
9865
9866extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
9867extern __inline char *
9868__strsep_2c (char **__s, char __reject1, char __reject2)
9869{
9870 register char *__retval = *__s;
9871 if (__retval != ((void *)0))
9872 {
9873 register char *__cp = __retval;
9874 while (1)
9875 {
9876 if (*__cp == '\0')
9877 {
9878 __cp = ((void *)0);
9879 break;
9880 }
9881 if (*__cp == __reject1 || *__cp == __reject2)
9882 {
9883 *__cp++ = '\0';
9884 break;
9885 }
9886 ++__cp;
9887 }
9888 *__s = __cp;
9889 }
9890 return __retval;
9891}
9892
9893extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
9894 char __reject3);
9895extern __inline char *
9896__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
9897{
9898 register char *__retval = *__s;
9899 if (__retval != ((void *)0))
9900 {
9901 register char *__cp = __retval;
9902 while (1)
9903 {
9904 if (*__cp == '\0')
9905 {
9906 __cp = ((void *)0);
9907 break;
9908 }
9909 if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
9910 {
9911 *__cp++ = '\0';
9912 break;
9913 }
9914 ++__cp;
9915 }
9916 *__s = __cp;
9917 }
9918 return __retval;
9919}
9920# 1304 "../string/bits/string2.h"
9921extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
9922# 1323 "../string/bits/string2.h"
9923extern char *__strndup (__const char *__string, size_t __n)
9924 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
9925# 1 "../include/bits/string2.h" 2
9926# 418 "../string/string.h" 2
9927# 426 "../string/string.h"
9928
9929# 50 "../include/string.h" 2
9930
9931extern __typeof (strcoll_l) __strcoll_l;
9932extern __typeof (strxfrm_l) __strxfrm_l;
9933extern __typeof (strcasecmp_l) __strcasecmp_l;
9934extern __typeof (strncasecmp_l) __strncasecmp_l;
9935# 70 "../include/string.h"
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952extern char *__strsep_g (char **__stringp, __const char *__delim);
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976# 120 "../include/string.h"
9977extern void *__memcpy_chk (void *__restrict __dest,
9978 const void *__restrict __src, size_t __len,
9979 size_t __destlen) __attribute__ ((__nothrow__));
9980extern void *__memmove_chk (void *__dest, const void *__src, size_t __len,
9981 size_t __destlen) __attribute__ ((__nothrow__));
9982extern void *__mempcpy_chk (void *__restrict __dest,
9983 const void *__restrict __src, size_t __len,
9984 size_t __destlen) __attribute__ ((__nothrow__));
9985extern void *__memset_chk (void *__dest, int __ch, size_t __len,
9986 size_t __destlen) __attribute__ ((__nothrow__));
9987extern char *__strcpy_chk (char *__restrict __dest,
9988 const char *__restrict __src,
9989 size_t __destlen) __attribute__ ((__nothrow__));
9990extern char *__stpcpy_chk (char *__restrict __dest,
9991 const char *__restrict __src,
9992 size_t __destlen) __attribute__ ((__nothrow__));
9993extern char *__strncpy_chk (char *__restrict __dest,
9994 const char *__restrict __src,
9995 size_t __len, size_t __destlen) __attribute__ ((__nothrow__));
9996extern char *__strcat_chk (char *__restrict __dest,
9997 const char *__restrict __src,
9998 size_t __destlen) __attribute__ ((__nothrow__));
9999extern char *__strncat_chk (char *__restrict __dest,
10000 const char *__restrict __src,
10001 size_t __len, size_t __destlen) __attribute__ ((__nothrow__));
10002# 29 "regex_internal.h" 2
10003# 37 "regex_internal.h"
10004# 1 "../include/wchar.h" 1
10005
10006# 1 "../wcsmbs/wchar.h" 1
10007# 40 "../wcsmbs/wchar.h"
10008# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stdarg.h" 1 3 4
10009# 41 "../wcsmbs/wchar.h" 2
10010
10011
10012
10013
10014
10015
10016
10017# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
10018# 49 "../wcsmbs/wchar.h" 2
10019# 93 "../wcsmbs/wchar.h"
10020
10021
10022typedef __mbstate_t mbstate_t;
10023
10024
10025
10026# 118 "../wcsmbs/wchar.h"
10027
10028
10029
10030
10031
10032struct tm;
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042extern wchar_t *wcscpy (wchar_t *__restrict __dest,
10043 __const wchar_t *__restrict __src) __attribute__ ((__nothrow__));
10044
10045extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
10046 __const wchar_t *__restrict __src, size_t __n)
10047 __attribute__ ((__nothrow__));
10048
10049
10050extern wchar_t *wcscat (wchar_t *__restrict __dest,
10051 __const wchar_t *__restrict __src) __attribute__ ((__nothrow__));
10052
10053extern wchar_t *wcsncat (wchar_t *__restrict __dest,
10054 __const wchar_t *__restrict __src, size_t __n)
10055 __attribute__ ((__nothrow__));
10056
10057
10058extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
10059 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10060
10061extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
10062 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10063
10064
10065
10066
10067extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__));
10068
10069
10070extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
10071 size_t __n) __attribute__ ((__nothrow__));
10072
10073
10074
10075# 1 "../include/xlocale.h" 1
10076# 167 "../wcsmbs/wchar.h" 2
10077
10078extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
10079 __locale_t __loc) __attribute__ ((__nothrow__));
10080
10081extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
10082 size_t __n, __locale_t __loc) __attribute__ ((__nothrow__));
10083
10084
10085
10086
10087
10088extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__));
10089
10090
10091
10092extern size_t wcsxfrm (wchar_t *__restrict __s1,
10093 __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__));
10094
10095
10096
10097
10098
10099
10100
10101
10102extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
10103 __locale_t __loc) __attribute__ ((__nothrow__));
10104
10105
10106
10107
10108extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
10109 size_t __n, __locale_t __loc) __attribute__ ((__nothrow__));
10110
10111
10112extern wchar_t *wcsdup (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
10113
10114
10115
10116
10117extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
10118 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10119
10120extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
10121 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10122
10123
10124
10125
10126
10127extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
10128 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10129
10130
10131
10132
10133
10134extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
10135 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10136
10137
10138extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
10139 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10140
10141extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
10142 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10143
10144extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
10145 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10146
10147
10148extern wchar_t *wcstok (wchar_t *__restrict __s,
10149 __const wchar_t *__restrict __delim,
10150 wchar_t **__restrict __ptr) __attribute__ ((__nothrow__));
10151
10152
10153extern size_t wcslen (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10154
10155
10156
10157
10158extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
10159 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10160
10161
10162
10163
10164extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
10165 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10166
10167
10168
10169
10170
10171extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
10172 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10173
10174
10175extern int wmemcmp (__const wchar_t *__restrict __s1,
10176 __const wchar_t *__restrict __s2, size_t __n)
10177 __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10178
10179
10180extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
10181 __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__));
10182
10183
10184
10185extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
10186 __attribute__ ((__nothrow__));
10187
10188
10189extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __attribute__ ((__nothrow__));
10190
10191
10192
10193
10194
10195extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
10196 __const wchar_t *__restrict __s2, size_t __n)
10197 __attribute__ ((__nothrow__));
10198
10199
10200
10201
10202
10203
10204extern wint_t btowc (int __c) __attribute__ ((__nothrow__));
10205
10206
10207
10208extern int wctob (wint_t __c) __attribute__ ((__nothrow__));
10209
10210
10211
10212extern int mbsinit (__const mbstate_t *__ps) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
10213
10214
10215
10216extern size_t mbrtowc (wchar_t *__restrict __pwc,
10217 __const char *__restrict __s, size_t __n,
10218 mbstate_t *__p) __attribute__ ((__nothrow__));
10219
10220
10221extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
10222 mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
10223
10224
10225extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
10226 mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
10227extern size_t mbrlen (__const char *__restrict __s, size_t __n,
10228 mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
10229
10230# 328 "../wcsmbs/wchar.h"
10231extern wint_t __btowc_alias (int __c) __asm ("btowc");
10232extern __inline wint_t
10233__attribute__ ((__nothrow__)) btowc (int __c)
10234{ return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f'
10235 ? (wint_t) __c : __btowc_alias (__c)); }
10236
10237extern int __wctob_alias (wint_t __c) __asm ("wctob");
10238extern __inline int
10239__attribute__ ((__nothrow__)) wctob (wint_t __wc)
10240{ return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f'
10241 ? (int) __wc : __wctob_alias (__wc)); }
10242
10243
10244extern __inline size_t
10245__attribute__ ((__nothrow__)) mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps)
10246
10247{ return (__ps != ((void *)0)
10248 ? mbrtowc (((void *)0), __s, __n, __ps) : __mbrlen (__s, __n, ((void *)0))); }
10249
10250
10251
10252
10253
10254extern size_t mbsrtowcs (wchar_t *__restrict __dst,
10255 __const char **__restrict __src, size_t __len,
10256 mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
10257
10258
10259
10260extern size_t wcsrtombs (char *__restrict __dst,
10261 __const wchar_t **__restrict __src, size_t __len,
10262 mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
10263
10264
10265
10266
10267
10268
10269extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
10270 __const char **__restrict __src, size_t __nmc,
10271 size_t __len, mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
10272
10273
10274
10275extern size_t wcsnrtombs (char *__restrict __dst,
10276 __const wchar_t **__restrict __src,
10277 size_t __nwc, size_t __len,
10278 mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
10279
10280
10281
10282
10283
10284
10285extern int wcwidth (wchar_t __c) __attribute__ ((__nothrow__));
10286
10287
10288
10289extern int wcswidth (__const wchar_t *__s, size_t __n) __attribute__ ((__nothrow__));
10290
10291
10292
10293
10294
10295
10296extern double wcstod (__const wchar_t *__restrict __nptr,
10297 wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));
10298
10299
10300
10301extern float wcstof (__const wchar_t *__restrict __nptr,
10302 wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));
10303extern long double wcstold (__const wchar_t *__restrict __nptr,
10304 wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));
10305
10306
10307
10308
10309
10310extern long int wcstol (__const wchar_t *__restrict __nptr,
10311 wchar_t **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
10312
10313
10314
10315extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
10316 wchar_t **__restrict __endptr, int __base)
10317 __attribute__ ((__nothrow__));
10318
10319
10320
10321
10322__extension__
10323extern long long int wcstoll (__const wchar_t *__restrict __nptr,
10324 wchar_t **__restrict __endptr, int __base)
10325 __attribute__ ((__nothrow__));
10326
10327
10328
10329__extension__
10330extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
10331 wchar_t **__restrict __endptr,
10332 int __base) __attribute__ ((__nothrow__));
10333
10334
10335
10336
10337
10338
10339__extension__
10340extern long long int wcstoq (__const wchar_t *__restrict __nptr,
10341 wchar_t **__restrict __endptr, int __base)
10342 __attribute__ ((__nothrow__));
10343
10344
10345
10346__extension__
10347extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
10348 wchar_t **__restrict __endptr,
10349 int __base) __attribute__ ((__nothrow__));
10350# 463 "../wcsmbs/wchar.h"
10351# 1 "../include/xlocale.h" 1
10352# 464 "../wcsmbs/wchar.h" 2
10353
10354
10355
10356extern long int wcstol_l (__const wchar_t *__restrict __nptr,
10357 wchar_t **__restrict __endptr, int __base,
10358 __locale_t __loc) __attribute__ ((__nothrow__));
10359
10360extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr,
10361 wchar_t **__restrict __endptr,
10362 int __base, __locale_t __loc) __attribute__ ((__nothrow__));
10363
10364__extension__
10365extern long long int wcstoll_l (__const wchar_t *__restrict __nptr,
10366 wchar_t **__restrict __endptr,
10367 int __base, __locale_t __loc) __attribute__ ((__nothrow__));
10368
10369__extension__
10370extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr,
10371 wchar_t **__restrict __endptr,
10372 int __base, __locale_t __loc)
10373 __attribute__ ((__nothrow__));
10374
10375extern double wcstod_l (__const wchar_t *__restrict __nptr,
10376 wchar_t **__restrict __endptr, __locale_t __loc)
10377 __attribute__ ((__nothrow__));
10378
10379extern float wcstof_l (__const wchar_t *__restrict __nptr,
10380 wchar_t **__restrict __endptr, __locale_t __loc)
10381 __attribute__ ((__nothrow__));
10382
10383extern long double wcstold_l (__const wchar_t *__restrict __nptr,
10384 wchar_t **__restrict __endptr,
10385 __locale_t __loc) __attribute__ ((__nothrow__));
10386
10387
10388
10389
10390
10391extern double __wcstod_internal (__const wchar_t *__restrict __nptr,
10392 wchar_t **__restrict __endptr, int __group)
10393 __attribute__ ((__nothrow__));
10394extern float __wcstof_internal (__const wchar_t *__restrict __nptr,
10395 wchar_t **__restrict __endptr, int __group)
10396 __attribute__ ((__nothrow__));
10397extern long double __wcstold_internal (__const wchar_t *__restrict __nptr,
10398 wchar_t **__restrict __endptr,
10399 int __group) __attribute__ ((__nothrow__));
10400
10401
10402
10403extern long int __wcstol_internal (__const wchar_t *__restrict __nptr,
10404 wchar_t **__restrict __endptr,
10405 int __base, int __group) __attribute__ ((__nothrow__));
10406
10407
10408
10409
10410extern unsigned long int __wcstoul_internal (__const wchar_t *__restrict __npt,
10411 wchar_t **__restrict __endptr,
10412 int __base, int __group) __attribute__ ((__nothrow__));
10413# 549 "../wcsmbs/wchar.h"
10414
10415
10416extern __inline double
10417__attribute__ ((__nothrow__)) wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)
10418
10419{ return __wcstod_internal (__nptr, __endptr, 0); }
10420extern __inline long int
10421__attribute__ ((__nothrow__)) wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)
10422
10423{ return __wcstol_internal (__nptr, __endptr, __base, 0); }
10424extern __inline unsigned long int
10425__attribute__ ((__nothrow__)) wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)
10426
10427{ return __wcstoul_internal (__nptr, __endptr, __base, 0); }
10428
10429
10430
10431extern __inline float
10432__attribute__ ((__nothrow__)) wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)
10433
10434{ return __wcstof_internal (__nptr, __endptr, 0); }
10435
10436extern __inline long double
10437__attribute__ ((__nothrow__)) wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)
10438
10439{ return __wcstold_internal (__nptr, __endptr, 0); }
10440
10441__extension__
10442extern __inline long long int
10443__attribute__ ((__nothrow__)) wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)
10444
10445{ return __wcstoll_internal (__nptr, __endptr, __base, 0); }
10446__extension__
10447extern __inline unsigned long long int
10448__attribute__ ((__nothrow__)) wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)
10449
10450{ return __wcstoull_internal (__nptr, __endptr, __base, 0); }
10451
10452
10453
10454
10455
10456
10457
10458extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __attribute__ ((__nothrow__));
10459
10460
10461
10462extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
10463 __attribute__ ((__nothrow__));
10464# 607 "../wcsmbs/wchar.h"
10465extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__));
10466
10467
10468
10469
10470
10471
10472extern int fwide (__FILE *__fp, int __mode) __attribute__ ((__nothrow__));
10473
10474
10475
10476
10477
10478
10479extern int fwprintf (__FILE *__restrict __stream,
10480 __const wchar_t *__restrict __format, ...)
10481 ;
10482
10483
10484
10485
10486extern int wprintf (__const wchar_t *__restrict __format, ...)
10487 ;
10488
10489extern int swprintf (wchar_t *__restrict __s, size_t __n,
10490 __const wchar_t *__restrict __format, ...)
10491 __attribute__ ((__nothrow__)) ;
10492
10493
10494
10495
10496
10497extern int vfwprintf (__FILE *__restrict __s,
10498 __const wchar_t *__restrict __format,
10499 __gnuc_va_list __arg)
10500 ;
10501
10502
10503
10504
10505extern int vwprintf (__const wchar_t *__restrict __format,
10506 __gnuc_va_list __arg)
10507 ;
10508
10509
10510extern int vswprintf (wchar_t *__restrict __s, size_t __n,
10511 __const wchar_t *__restrict __format,
10512 __gnuc_va_list __arg)
10513 __attribute__ ((__nothrow__)) ;
10514
10515
10516
10517
10518
10519
10520extern int fwscanf (__FILE *__restrict __stream,
10521 __const wchar_t *__restrict __format, ...)
10522 ;
10523
10524
10525
10526
10527extern int wscanf (__const wchar_t *__restrict __format, ...)
10528 ;
10529
10530extern int swscanf (__const wchar_t *__restrict __s,
10531 __const wchar_t *__restrict __format, ...)
10532 __attribute__ ((__nothrow__)) ;
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544extern int vfwscanf (__FILE *__restrict __s,
10545 __const wchar_t *__restrict __format,
10546 __gnuc_va_list __arg)
10547 ;
10548
10549
10550
10551
10552extern int vwscanf (__const wchar_t *__restrict __format,
10553 __gnuc_va_list __arg)
10554 ;
10555
10556extern int vswscanf (__const wchar_t *__restrict __s,
10557 __const wchar_t *__restrict __format,
10558 __gnuc_va_list __arg)
10559 __attribute__ ((__nothrow__)) ;
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570extern wint_t fgetwc (__FILE *__stream);
10571extern wint_t getwc (__FILE *__stream);
10572
10573
10574
10575
10576
10577extern wint_t getwchar (void);
10578
10579
10580
10581
10582
10583
10584extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
10585extern wint_t putwc (wchar_t __wc, __FILE *__stream);
10586
10587
10588
10589
10590
10591extern wint_t putwchar (wchar_t __wc);
10592
10593
10594
10595
10596
10597
10598
10599extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
10600 __FILE *__restrict __stream);
10601
10602
10603
10604
10605
10606extern int fputws (__const wchar_t *__restrict __ws,
10607 __FILE *__restrict __stream);
10608
10609
10610
10611
10612
10613
10614extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
10615
10616# 768 "../wcsmbs/wchar.h"
10617extern wint_t getwc_unlocked (__FILE *__stream);
10618extern wint_t getwchar_unlocked (void);
10619
10620
10621
10622
10623
10624
10625
10626extern wint_t fgetwc_unlocked (__FILE *__stream);
10627
10628
10629
10630
10631
10632
10633
10634extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
10635# 794 "../wcsmbs/wchar.h"
10636extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
10637extern wint_t putwchar_unlocked (wchar_t __wc);
10638# 804 "../wcsmbs/wchar.h"
10639extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
10640 __FILE *__restrict __stream);
10641
10642
10643
10644
10645
10646
10647
10648extern int fputws_unlocked (__const wchar_t *__restrict __ws,
10649 __FILE *__restrict __stream);
10650
10651
10652
10653
10654
10655
10656
10657extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
10658 __const wchar_t *__restrict __format,
10659 __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
10660
10661
10662
10663# 1 "../include/xlocale.h" 1
10664# 829 "../wcsmbs/wchar.h" 2
10665
10666
10667
10668extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
10669 __const wchar_t *__restrict __format,
10670 __const struct tm *__restrict __tp,
10671 __locale_t __loc) __attribute__ ((__nothrow__));
10672# 858 "../wcsmbs/wchar.h"
10673
10674# 3 "../include/wchar.h" 2
10675
10676
10677
10678extern __typeof (wcscasecmp_l) __wcscasecmp_l;
10679extern __typeof (wcsncasecmp_l) __wcsncasecmp_l;
10680extern __typeof (wcscoll_l) __wcscoll_l;
10681extern __typeof (wcsxfrm_l) __wcsxfrm_l;
10682extern __typeof (wcstol_l) __wcstol_l;
10683extern __typeof (wcstoul_l) __wcstoul_l;
10684extern __typeof (wcstoll_l) __wcstoll_l;
10685extern __typeof (wcstoull_l) __wcstoull_l;
10686extern __typeof (wcstod_l) __wcstod_l;
10687extern __typeof (wcstof_l) __wcstof_l;
10688extern __typeof (wcstold_l) __wcstold_l;
10689extern __typeof (wcsftime_l) __wcsftime_l;
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726extern int __wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2)
10727 __attribute__ ((__pure__));
10728extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
10729 size_t __n)
10730 __attribute__ ((__pure__));
10731extern size_t __wcslen (__const wchar_t *__s) __attribute__ ((__pure__));
10732extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen)
10733 __attribute__ ((__pure__));
10734extern wchar_t *__wcscat (wchar_t *dest, const wchar_t *src);
10735extern wint_t __btowc (int __c);
10736extern int __mbsinit (__const __mbstate_t *__ps);
10737extern size_t __mbrtowc (wchar_t *__restrict __pwc,
10738 __const char *__restrict __s, size_t __n,
10739 __mbstate_t *__restrict __p);
10740
10741
10742extern size_t __wcrtomb (char *__restrict __s, wchar_t __wc,
10743 __mbstate_t *__restrict __ps);
10744extern size_t __mbsrtowcs (wchar_t *__restrict __dst,
10745 __const char **__restrict __src,
10746 size_t __len, __mbstate_t *__restrict __ps);
10747extern size_t __wcsrtombs (char *__restrict __dst,
10748 __const wchar_t **__restrict __src,
10749 size_t __len, __mbstate_t *__restrict __ps);
10750extern size_t __mbsnrtowcs (wchar_t *__restrict __dst,
10751 __const char **__restrict __src, size_t __nmc,
10752 size_t __len, __mbstate_t *__restrict __ps);
10753extern size_t __wcsnrtombs (char *__restrict __dst,
10754 __const wchar_t **__restrict __src,
10755 size_t __nwc, size_t __len,
10756 __mbstate_t *__restrict __ps);
10757extern wchar_t *__wcsncpy (wchar_t *__restrict __dest,
10758 __const wchar_t *__restrict __src, size_t __n);
10759extern wchar_t *__wcpcpy (wchar_t *__dest, __const wchar_t *__src);
10760extern wchar_t *__wcpncpy (wchar_t *__dest, __const wchar_t *__src,
10761 size_t __n);
10762extern wchar_t *__wmemcpy (wchar_t *__s1, __const wchar_t *s2,
10763 size_t __n);
10764extern wchar_t *__wmempcpy (wchar_t *__restrict __s1,
10765 __const wchar_t *__restrict __s2,
10766 size_t __n);
10767extern wchar_t *__wmemmove (wchar_t *__s1, __const wchar_t *__s2,
10768 size_t __n);
10769extern wchar_t *__wcschrnul (__const wchar_t *__s, wchar_t __wc)
10770 __attribute__ ((__pure__));
10771
10772extern int __vfwscanf (__FILE *__restrict __s,
10773 __const wchar_t *__restrict __format,
10774 __gnuc_va_list __arg)
10775 ;
10776extern int __vswprintf (wchar_t *__restrict __s, size_t __n,
10777 __const wchar_t *__restrict __format,
10778 __gnuc_va_list __arg)
10779 ;
10780extern int __fwprintf (__FILE *__restrict __s,
10781 __const wchar_t *__restrict __format, ...)
10782 ;
10783extern int __vfwprintf (__FILE *__restrict __s,
10784 __const wchar_t *__restrict __format,
10785 __gnuc_va_list __arg)
10786 ;
10787extern int __vfwprintf_chk (FILE *__restrict __s, int __flag,
10788 const wchar_t *__restrict __format,
10789 __gnuc_va_list __arg)
10790 ;
10791extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
10792 int __flag, size_t __s_len,
10793 __const wchar_t *__restrict __format,
10794 __gnuc_va_list __arg)
10795 ;
10796
10797
10798
10799
10800extern size_t __mbsrtowcs_l (wchar_t *dst, const char **src, size_t len,
10801 mbstate_t *ps, __locale_t l) ;
10802# 38 "regex_internal.h" 2
10803
10804
10805# 1 "../include/wctype.h" 1
10806
10807
10808
10809
10810
10811# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
10812# 7 "../include/wctype.h" 2
10813# 19 "../include/wctype.h"
10814extern int iswalpha (wint_t __wc);
10815extern int iswalnum (wint_t __wc);
10816extern int iswdigit (wint_t __wc);
10817extern int iswlower (wint_t __wc);
10818extern int iswspace (wint_t __wc);
10819extern int iswxdigit (wint_t __wc);
10820extern wint_t towlower (wint_t __wc);
10821extern wint_t towupper (wint_t __wc);
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832# 1 "../wctype/wctype.h" 1
10833# 35 "../wctype/wctype.h"
10834# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
10835# 36 "../wctype/wctype.h" 2
10836# 45 "../wctype/wctype.h"
10837
10838# 63 "../wctype/wctype.h"
10839
10840
10841
10842typedef unsigned long int wctype_t;
10843
10844
10845
10846
10847
10848
10849
10850# 1 "../include/endian.h" 1
10851# 75 "../wctype/wctype.h" 2
10852# 85 "../wctype/wctype.h"
10853enum
10854{
10855 __ISwupper = 0,
10856 __ISwlower = 1,
10857 __ISwalpha = 2,
10858 __ISwdigit = 3,
10859 __ISwxdigit = 4,
10860 __ISwspace = 5,
10861 __ISwprint = 6,
10862 __ISwgraph = 7,
10863 __ISwblank = 8,
10864 __ISwcntrl = 9,
10865 __ISwpunct = 10,
10866 __ISwalnum = 11,
10867
10868 _ISwupper = (1 << (__ISwupper)),
10869 _ISwlower = (1 << (__ISwlower)),
10870 _ISwalpha = (1 << (__ISwalpha)),
10871 _ISwdigit = (1 << (__ISwdigit)),
10872 _ISwxdigit = (1 << (__ISwxdigit)),
10873 _ISwspace = (1 << (__ISwspace)),
10874 _ISwprint = (1 << (__ISwprint)),
10875 _ISwgraph = (1 << (__ISwgraph)),
10876 _ISwblank = (1 << (__ISwblank)),
10877 _ISwcntrl = (1 << (__ISwcntrl)),
10878 _ISwpunct = (1 << (__ISwpunct)),
10879 _ISwalnum = (1 << (__ISwalnum))
10880};
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893extern int iswalnum (wint_t __wc) __attribute__ ((__nothrow__));
10894
10895
10896
10897
10898
10899extern int iswalpha (wint_t __wc) __attribute__ ((__nothrow__));
10900
10901
10902extern int iswcntrl (wint_t __wc) __attribute__ ((__nothrow__));
10903
10904
10905
10906extern int iswdigit (wint_t __wc) __attribute__ ((__nothrow__));
10907
10908
10909
10910extern int iswgraph (wint_t __wc) __attribute__ ((__nothrow__));
10911
10912
10913
10914
10915extern int iswlower (wint_t __wc) __attribute__ ((__nothrow__));
10916
10917
10918extern int iswprint (wint_t __wc) __attribute__ ((__nothrow__));
10919
10920
10921
10922
10923extern int iswpunct (wint_t __wc) __attribute__ ((__nothrow__));
10924
10925
10926
10927
10928extern int iswspace (wint_t __wc) __attribute__ ((__nothrow__));
10929
10930
10931
10932
10933extern int iswupper (wint_t __wc) __attribute__ ((__nothrow__));
10934
10935
10936
10937
10938extern int iswxdigit (wint_t __wc) __attribute__ ((__nothrow__));
10939
10940
10941
10942
10943
10944extern int iswblank (wint_t __wc) __attribute__ ((__nothrow__));
10945# 185 "../wctype/wctype.h"
10946extern wctype_t wctype (__const char *__property) __attribute__ ((__nothrow__));
10947
10948
10949
10950extern int iswctype (wint_t __wc, wctype_t __desc) __attribute__ ((__nothrow__));
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961typedef __const __int32_t *wctrans_t;
10962
10963
10964
10965
10966
10967
10968
10969extern wint_t towlower (wint_t __wc) __attribute__ ((__nothrow__));
10970
10971
10972extern wint_t towupper (wint_t __wc) __attribute__ ((__nothrow__));
10973
10974
10975
10976# 227 "../wctype/wctype.h"
10977
10978
10979
10980
10981
10982extern wctrans_t wctrans (__const char *__property) __attribute__ ((__nothrow__));
10983
10984
10985extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __attribute__ ((__nothrow__));
10986
10987
10988
10989
10990# 1 "../include/xlocale.h" 1
10991# 241 "../wctype/wctype.h" 2
10992
10993
10994
10995extern int iswalnum_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
10996
10997
10998
10999
11000
11001extern int iswalpha_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11002
11003
11004extern int iswcntrl_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11005
11006
11007
11008extern int iswdigit_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11009
11010
11011
11012extern int iswgraph_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11013
11014
11015
11016
11017extern int iswlower_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11018
11019
11020extern int iswprint_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11021
11022
11023
11024
11025extern int iswpunct_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11026
11027
11028
11029
11030extern int iswspace_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11031
11032
11033
11034
11035extern int iswupper_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11036
11037
11038
11039
11040extern int iswxdigit_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11041
11042
11043
11044
11045extern int iswblank_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11046
11047
11048
11049extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
11050 __attribute__ ((__nothrow__));
11051
11052
11053
11054extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
11055 __attribute__ ((__nothrow__));
11056
11057
11058
11059
11060
11061
11062
11063extern wint_t towlower_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11064
11065
11066extern wint_t towupper_l (wint_t __wc, __locale_t __locale) __attribute__ ((__nothrow__));
11067
11068
11069
11070extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
11071 __attribute__ ((__nothrow__));
11072
11073
11074extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
11075 __locale_t __locale) __attribute__ ((__nothrow__));
11076
11077
11078
11079
11080# 38 "../include/wctype.h" 2
11081
11082
11083extern int __iswalpha_l_internal (wint_t __wc, __locale_t __locale)
11084 ;
11085extern int __iswdigit_l_internal (wint_t __wc, __locale_t __locale)
11086 ;
11087extern int __iswspace_l_internal (wint_t __wc, __locale_t __locale)
11088 ;
11089extern int __iswxdigit_l_internal (wint_t __wc, __locale_t __locale)
11090 ;
11091extern int __iswspace (wint_t __wc);
11092extern int __iswctype (wint_t __wc, wctype_t __desc);
11093extern int __iswctype_internal (wint_t __wc, wctype_t __desc) ;
11094extern wctype_t __wctype (__const char *__property);
11095extern wctrans_t __wctrans (const char *__property);
11096extern wint_t __towctrans (wint_t __wc, wctrans_t __desc);
11097
11098extern __typeof (iswalnum_l) __iswalnum_l;
11099extern __typeof (iswalpha_l) __iswalpha_l;
11100extern __typeof (iswblank_l) __iswblank_l;
11101extern __typeof (iswcntrl_l) __iswcntrl_l;
11102extern __typeof (iswdigit_l) __iswdigit_l;
11103extern __typeof (iswlower_l) __iswlower_l;
11104extern __typeof (iswgraph_l) __iswgraph_l;
11105extern __typeof (iswprint_l) __iswprint_l;
11106extern __typeof (iswpunct_l) __iswpunct_l;
11107extern __typeof (iswspace_l) __iswspace_l;
11108extern __typeof (iswupper_l) __iswupper_l;
11109extern __typeof (iswxdigit_l) __iswxdigit_l;
11110extern __typeof (towlower_l) __towlower_l;
11111extern __typeof (towupper_l) __towupper_l;
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129# 41 "regex_internal.h" 2
11130# 49 "regex_internal.h"
11131# 1 "../nptl/sysdeps/pthread/bits/libc-lock.h" 1
11132# 23 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11133# 1 "../include/pthread.h" 1
11134
11135
11136
11137extern void __pthread_initialize (void) __attribute__ ((weak));
11138# 24 "../nptl/sysdeps/pthread/bits/libc-lock.h" 2
11139
11140# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
11141# 26 "../nptl/sysdeps/pthread/bits/libc-lock.h" 2
11142# 37 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11143# 1 "../nptl/sysdeps/pthread/pthread-functions.h" 1
11144# 23 "../nptl/sysdeps/pthread/pthread-functions.h"
11145# 1 "../include/pthread.h" 1
11146
11147
11148
11149extern void __pthread_initialize (void) __attribute__ ((weak));
11150# 24 "../nptl/sysdeps/pthread/pthread-functions.h" 2
11151
11152# 1 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h" 1
11153# 26 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h"
11154struct pthread_attr
11155{
11156
11157 struct sched_param schedparam;
11158 int schedpolicy;
11159
11160 int flags;
11161
11162 size_t guardsize;
11163
11164 void *stackaddr;
11165 size_t stacksize;
11166
11167 cpu_set_t *cpuset;
11168 size_t cpusetsize;
11169};
11170# 53 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h"
11171struct pthread_mutexattr
11172{
11173
11174
11175
11176
11177
11178
11179 int mutexkind;
11180};
11181
11182
11183
11184struct pthread_condattr
11185{
11186
11187
11188
11189
11190
11191
11192 int value;
11193};
11194# 85 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h"
11195struct pthread_rwlockattr
11196{
11197 int lockkind;
11198 int pshared;
11199};
11200
11201
11202
11203struct pthread_barrier
11204{
11205 unsigned int curr_event;
11206 int lock;
11207 unsigned int left;
11208 unsigned int init_count;
11209};
11210
11211
11212
11213struct pthread_barrierattr
11214{
11215 int pshared;
11216};
11217
11218
11219
11220struct pthread_key_struct
11221{
11222
11223
11224
11225
11226 uintptr_t seq;
11227
11228
11229 void (*destr) (void *);
11230};
11231# 140 "../ports/sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h"
11232struct sem
11233{
11234 unsigned int count;
11235};
11236
11237
11238
11239typedef struct
11240{
11241 pthread_cond_t *cond;
11242} pthread_cond_2_0_t;
11243# 26 "../nptl/sysdeps/pthread/pthread-functions.h" 2
11244# 1 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 1
11245# 23 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h"
11246# 1 "../sysdeps/generic/sysdep.h" 1
11247# 24 "../ports/sysdeps/unix/sysv/linux/hppa/sysdep.h" 2
11248# 27 "../nptl/sysdeps/pthread/pthread-functions.h" 2
11249
11250struct xid_command;
11251
11252
11253
11254struct pthread_functions
11255{
11256 int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
11257 int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *);
11258 int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *);
11259 int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
11260 int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int);
11261 int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *);
11262 int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int);
11263 int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *,
11264 struct sched_param *);
11265 int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *,
11266 const struct sched_param *);
11267 int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *);
11268 int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int);
11269 int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *);
11270 int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
11271 int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
11272 int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
11273 int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
11274 int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
11275 int (*ptr___pthread_cond_init) (pthread_cond_t *,
11276 const pthread_condattr_t *);
11277 int (*ptr___pthread_cond_signal) (pthread_cond_t *);
11278 int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
11279 int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
11280 const struct timespec *);
11281 int (*ptr___pthread_cond_broadcast_2_0) (pthread_cond_2_0_t *);
11282 int (*ptr___pthread_cond_destroy_2_0) (pthread_cond_2_0_t *);
11283 int (*ptr___pthread_cond_init_2_0) (pthread_cond_2_0_t *,
11284 const pthread_condattr_t *);
11285 int (*ptr___pthread_cond_signal_2_0) (pthread_cond_2_0_t *);
11286 int (*ptr___pthread_cond_wait_2_0) (pthread_cond_2_0_t *, pthread_mutex_t *);
11287 int (*ptr___pthread_cond_timedwait_2_0) (pthread_cond_2_0_t *,
11288 pthread_mutex_t *,
11289 const struct timespec *);
11290 int (*ptr_pthread_equal) (pthread_t, pthread_t);
11291 void (*ptr___pthread_exit) (void *);
11292 int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
11293 int (*ptr_pthread_setschedparam) (pthread_t, int,
11294 const struct sched_param *);
11295 int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
11296 int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
11297 const pthread_mutexattr_t *);
11298 int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
11299 int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
11300 pthread_t (*ptr_pthread_self) (void);
11301 int (*ptr_pthread_setcancelstate) (int, int *);
11302 int (*ptr_pthread_setcanceltype) (int, int *);
11303 void (*ptr___pthread_cleanup_upto) (__jmp_buf, char *);
11304 int (*ptr___pthread_once) (pthread_once_t *, void (*) (void));
11305 int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
11306 int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
11307 int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
11308 int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
11309 void *(*ptr___pthread_getspecific) (pthread_key_t);
11310 int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
11311 void (*ptr__pthread_cleanup_push_defer) (struct _pthread_cleanup_buffer *,
11312 void (*) (void *), void *);
11313 void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer *,
11314 int);
11315
11316 unsigned int *ptr_nthreads;
11317 void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
11318 __attribute ((noreturn)) ;
11319 void (*ptr__nptl_deallocate_tsd) (void);
11320 int (*ptr__nptl_setxid) (struct xid_command *);
11321 void (*ptr_freeres) (void);
11322};
11323
11324
11325extern struct pthread_functions __libc_pthread_functions ;
11326extern int __libc_pthread_functions_init ;
11327# 38 "../nptl/sysdeps/pthread/bits/libc-lock.h" 2
11328# 46 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11329typedef int __libc_lock_t;
11330typedef struct { int lock; int cnt; void *owner; } __libc_lock_recursive_t;
11331
11332typedef struct { pthread_mutex_t mutex; } __rtld_lock_recursive_t;
11333
11334typedef pthread_rwlock_t __libc_rwlock_t;
11335# 62 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11336typedef pthread_key_t __libc_key_t;
11337# 374 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11338extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
11339 void (*routine) (void *), void *arg);
11340extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer,
11341 int execute);
11342extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer,
11343 void (*routine) (void *), void *arg);
11344extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer,
11345 int execute);
11346# 417 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11347extern __inline void
11348__libc_cleanup_routine (struct __pthread_cleanup_frame *f)
11349{
11350 if (f->__do_it)
11351 f->__cancel_routine (f->__cancel_arg);
11352}
11353# 454 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11354extern int __register_atfork (void (*__prepare) (void),
11355 void (*__parent) (void),
11356 void (*__child) (void),
11357 void *__dso_handle);
11358
11359
11360
11361
11362extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
11363 __const pthread_mutexattr_t *__mutex_attr);
11364
11365extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
11366
11367extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex);
11368
11369extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
11370
11371extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
11372
11373extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr);
11374
11375extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr);
11376
11377extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr,
11378 int __kind);
11379
11380
11381extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
11382 __const pthread_rwlockattr_t *__attr);
11383
11384extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
11385
11386extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
11387
11388extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock);
11389
11390extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock);
11391
11392extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);
11393
11394extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);
11395
11396
11397extern int __pthread_key_create (pthread_key_t *__key,
11398 void (*__destr_function) (void *));
11399
11400extern int __pthread_setspecific (pthread_key_t __key,
11401 __const void *__pointer);
11402
11403extern void *__pthread_getspecific (pthread_key_t __key);
11404
11405extern int __pthread_once (pthread_once_t *__once_control,
11406 void (*__init_routine) (void));
11407
11408extern int __pthread_atfork (void (*__prepare) (void),
11409 void (*__parent) (void),
11410 void (*__child) (void));
11411# 519 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11412# 1 "../sysdeps/generic/bp-sym.h" 1
11413# 520 "../nptl/sysdeps/pthread/bits/libc-lock.h" 2
11414
11415
11416
11417
11418# 523 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11419#pragma weak __pthread_mutex_init
11420# 523 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11421
11422
11423# 524 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11424#pragma weak __pthread_mutex_destroy
11425# 524 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11426
11427
11428# 525 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11429#pragma weak __pthread_mutex_lock
11430# 525 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11431
11432
11433# 526 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11434#pragma weak __pthread_mutex_trylock
11435# 526 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11436
11437
11438# 527 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11439#pragma weak __pthread_mutex_unlock
11440# 527 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11441
11442
11443# 528 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11444#pragma weak __pthread_mutexattr_init
11445# 528 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11446
11447
11448# 529 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11449#pragma weak __pthread_mutexattr_destroy
11450# 529 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11451
11452
11453# 530 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11454#pragma weak __pthread_mutexattr_settype
11455# 530 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11456
11457
11458# 531 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11459#pragma weak __pthread_rwlock_init
11460# 531 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11461
11462
11463# 532 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11464#pragma weak __pthread_rwlock_destroy
11465# 532 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11466
11467
11468# 533 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11469#pragma weak __pthread_rwlock_rdlock
11470# 533 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11471
11472
11473# 534 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11474#pragma weak __pthread_rwlock_tryrdlock
11475# 534 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11476
11477
11478# 535 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11479#pragma weak __pthread_rwlock_wrlock
11480# 535 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11481
11482
11483# 536 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11484#pragma weak __pthread_rwlock_trywrlock
11485# 536 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11486
11487
11488# 537 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11489#pragma weak __pthread_rwlock_unlock
11490# 537 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11491
11492
11493# 538 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11494#pragma weak __pthread_key_create
11495# 538 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11496
11497
11498# 539 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11499#pragma weak __pthread_setspecific
11500# 539 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11501
11502
11503# 540 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11504#pragma weak __pthread_getspecific
11505# 540 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11506
11507
11508# 541 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11509#pragma weak __pthread_once
11510# 541 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11511
11512
11513# 542 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11514#pragma weak __pthread_initialize
11515# 542 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11516
11517
11518# 543 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11519#pragma weak __pthread_atfork
11520# 543 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11521
11522
11523# 544 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11524#pragma weak _pthread_cleanup_push_defer
11525# 544 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11526
11527
11528# 545 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11529#pragma weak _pthread_cleanup_pop_restore
11530# 545 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11531
11532
11533# 546 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11534#pragma weak pthread_setcancelstate
11535# 546 "../nptl/sysdeps/pthread/bits/libc-lock.h"
11536
11537# 50 "regex_internal.h" 2
11538# 65 "regex_internal.h"
11539# 1 "../locale/localeinfo.h" 1
11540# 66 "regex_internal.h" 2
11541# 1 "../locale/elem-hash.h" 1
11542# 22 "../locale/elem-hash.h"
11543static inline int32_t
11544elem_hash (const char *str, int_fast32_t n)
11545{
11546 int32_t result = n;
11547
11548 while (n-- > 0)
11549 {
11550 result <<= 3;
11551 result += *str++;
11552 }
11553
11554 return result;
11555}
11556# 67 "regex_internal.h" 2
11557# 1 "../locale/coll-lookup.h" 1
11558# 23 "../locale/coll-lookup.h"
11559extern int32_t __collidx_table_lookup (const char *table, uint32_t wc)
11560 ;
11561
11562
11563extern uint32_t __collseq_table_lookup (const char *table, uint32_t wc)
11564 ;
11565# 68 "regex_internal.h" 2
11566
11567
11568
11569
11570
11571# 1 "../include/libintl.h" 1
11572
11573# 1 "../intl/libintl.h" 1
11574# 35 "../intl/libintl.h"
11575
11576
11577
11578
11579
11580extern char *gettext (__const char *__msgid)
11581 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (1)));
11582
11583
11584
11585extern char *dgettext (__const char *__domainname, __const char *__msgid)
11586 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (2)));
11587extern char *__dgettext (__const char *__domainname, __const char *__msgid)
11588 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (2)));
11589
11590
11591
11592extern char *dcgettext (__const char *__domainname,
11593 __const char *__msgid, int __category)
11594 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (2)));
11595extern char *__dcgettext (__const char *__domainname,
11596 __const char *__msgid, int __category)
11597 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (2)));
11598
11599
11600
11601
11602extern char *ngettext (__const char *__msgid1, __const char *__msgid2,
11603 unsigned long int __n)
11604 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2)));
11605
11606
11607
11608extern char *dngettext (__const char *__domainname, __const char *__msgid1,
11609 __const char *__msgid2, unsigned long int __n)
11610 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
11611
11612
11613
11614extern char *dcngettext (__const char *__domainname, __const char *__msgid1,
11615 __const char *__msgid2, unsigned long int __n,
11616 int __category)
11617 __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
11618
11619
11620
11621
11622
11623extern char *textdomain (__const char *__domainname) __attribute__ ((__nothrow__));
11624
11625
11626
11627extern char *bindtextdomain (__const char *__domainname,
11628 __const char *__dirname) __attribute__ ((__nothrow__));
11629
11630
11631
11632extern char *bind_textdomain_codeset (__const char *__domainname,
11633 __const char *__codeset) __attribute__ ((__nothrow__));
11634
11635
11636
11637
11638
11639
11640
11641# 1 "/usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.1.1/include/stddef.h" 1 3 4
11642# 102 "../intl/libintl.h" 2
11643# 122 "../intl/libintl.h"
11644
11645# 3 "../include/libintl.h" 2
11646
11647
11648
11649extern char *__gettext (__const char *__msgid)
11650 __attribute__ ((__format_arg__ (1)));
11651extern char *__dgettext (__const char *__domainname,
11652 __const char *__msgid)
11653 __attribute__ ((__format_arg__ (2)));
11654extern char *__dcgettext (__const char *__domainname,
11655 __const char *__msgid, int __category)
11656 __attribute__ ((__format_arg__ (2)));
11657
11658extern char *__dcgettext_internal (__const char *__domainname,
11659 __const char *__msgid, int __category)
11660 __attribute__ ((__format_arg__ (2)))
11661 ;
11662
11663extern char *__ngettext (__const char *__msgid1, __const char *__msgid2,
11664 unsigned long int __n)
11665 __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2)));
11666extern char *__dngettext (__const char *__domainname,
11667 __const char *__msgid1, __const char *__msgid2,
11668 unsigned long int __n)
11669 __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
11670extern char *__dcngettext (__const char *__domainname,
11671 __const char *__msgid1, __const char *__msgid2,
11672 unsigned long int __n, int __category)
11673 __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
11674extern char *__dcngettext_internal (__const char *__domainname,
11675 __const char *__msgid1,
11676 __const char *__msgid2,
11677 unsigned long int __n, int __category)
11678 __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)))
11679 ;
11680
11681extern char *__textdomain (__const char *__domainname);
11682extern char *__bindtextdomain (__const char *__domainname,
11683 __const char *__dirname);
11684extern char *__bind_textdomain_codeset (__const char *__domainname,
11685 __const char *__codeset);
11686
11687extern const char _libc_intl_domainname[];
11688
11689# 74 "regex_internal.h" 2
11690# 131 "regex_internal.h"
11691extern const char __re_error_msgid[] ;
11692extern const size_t __re_error_msgid_idx[] ;
11693
11694
11695
11696typedef unsigned long int bitset_word_t;
11697
11698
11699
11700
11701
11702
11703typedef bitset_word_t bitset_t[(256 / (sizeof (bitset_word_t) * 8))];
11704typedef bitset_word_t *re_bitset_ptr_t;
11705typedef const bitset_word_t *re_const_bitset_ptr_t;
11706# 168 "regex_internal.h"
11707typedef enum
11708{
11709 INSIDE_WORD = 0x0001 | 0x0004,
11710 WORD_FIRST = 0x0002 | 0x0004,
11711 WORD_LAST = 0x0001 | 0x0008,
11712 INSIDE_NOTWORD = 0x0002 | 0x0008,
11713 LINE_FIRST = 0x0010,
11714 LINE_LAST = 0x0020,
11715 BUF_FIRST = 0x0040,
11716 BUF_LAST = 0x0080,
11717 WORD_DELIM = 0x0100,
11718 NOT_WORD_DELIM = 0x0200
11719} re_context_type;
11720
11721typedef struct
11722{
11723 int alloc;
11724 int nelem;
11725 int *elems;
11726} re_node_set;
11727
11728typedef enum
11729{
11730 NON_TYPE = 0,
11731
11732
11733 CHARACTER = 1,
11734 END_OF_RE = 2,
11735 SIMPLE_BRACKET = 3,
11736 OP_BACK_REF = 4,
11737 OP_PERIOD = 5,
11738
11739 COMPLEX_BRACKET = 6,
11740 OP_UTF8_PERIOD = 7,
11741
11742
11743
11744
11745
11746 OP_OPEN_SUBEXP = 8 | 0,
11747 OP_CLOSE_SUBEXP = 8 | 1,
11748 OP_ALT = 8 | 2,
11749 OP_DUP_ASTERISK = 8 | 3,
11750 ANCHOR = 8 | 4,
11751
11752
11753 CONCAT = 16,
11754 SUBEXP = 17,
11755
11756
11757 OP_DUP_PLUS = 18,
11758 OP_DUP_QUESTION,
11759 OP_OPEN_BRACKET,
11760 OP_CLOSE_BRACKET,
11761 OP_CHARSET_RANGE,
11762 OP_OPEN_DUP_NUM,
11763 OP_CLOSE_DUP_NUM,
11764 OP_NON_MATCH_LIST,
11765 OP_OPEN_COLL_ELEM,
11766 OP_CLOSE_COLL_ELEM,
11767 OP_OPEN_EQUIV_CLASS,
11768 OP_CLOSE_EQUIV_CLASS,
11769 OP_OPEN_CHAR_CLASS,
11770 OP_CLOSE_CHAR_CLASS,
11771 OP_WORD,
11772 OP_NOTWORD,
11773 OP_SPACE,
11774 OP_NOTSPACE,
11775 BACK_SLASH
11776
11777} re_token_type_t;
11778
11779
11780typedef struct
11781{
11782
11783 wchar_t *mbchars;
11784
11785
11786
11787 int32_t *coll_syms;
11788
11789
11790
11791
11792 int32_t *equiv_classes;
11793
11794
11795
11796
11797 uint32_t *range_starts;
11798 uint32_t *range_ends;
11799
11800
11801
11802
11803
11804
11805 wctype_t *char_classes;
11806
11807
11808 unsigned int non_match : 1;
11809
11810
11811 int nmbchars;
11812
11813
11814 int ncoll_syms;
11815
11816
11817 int nequiv_classes;
11818
11819
11820 int nranges;
11821
11822
11823 int nchar_classes;
11824} re_charset_t;
11825
11826
11827typedef struct
11828{
11829 union
11830 {
11831 unsigned char c;
11832 re_bitset_ptr_t sbcset;
11833
11834 re_charset_t *mbcset;
11835
11836 int idx;
11837 re_context_type ctx_type;
11838 } opr;
11839
11840 re_token_type_t type : 8;
11841
11842
11843
11844 unsigned int constraint : 10;
11845 unsigned int duplicated : 1;
11846 unsigned int opt_subexp : 1;
11847
11848 unsigned int accept_mb : 1;
11849
11850
11851 unsigned int mb_partial : 1;
11852
11853 unsigned int word_char : 1;
11854} re_token_t;
11855
11856
11857
11858struct re_string_t
11859{
11860
11861
11862 const unsigned char *raw_mbs;
11863
11864
11865
11866 unsigned char *mbs;
11867
11868
11869 wint_t *wcs;
11870 int *offsets;
11871 mbstate_t cur_state;
11872
11873
11874
11875 int raw_mbs_idx;
11876
11877 int valid_len;
11878
11879 int valid_raw_len;
11880
11881 int bufs_len;
11882
11883 int cur_idx;
11884
11885 int raw_len;
11886
11887 int len;
11888
11889
11890
11891 int raw_stop;
11892
11893 int stop;
11894
11895
11896
11897
11898 unsigned int tip_context;
11899
11900 unsigned char * trans;
11901
11902 re_const_bitset_ptr_t word_char;
11903
11904 unsigned char icase;
11905 unsigned char is_utf8;
11906 unsigned char map_notascii;
11907 unsigned char mbs_allocated;
11908 unsigned char offsets_needed;
11909 unsigned char newline_anchor;
11910 unsigned char word_ops_used;
11911 int mb_cur_max;
11912};
11913typedef struct re_string_t re_string_t;
11914
11915
11916struct re_dfa_t;
11917typedef struct re_dfa_t re_dfa_t;
11918# 388 "regex_internal.h"
11919static reg_errcode_t re_string_realloc_buffers (re_string_t *pstr,
11920 int new_buf_len)
11921 ;
11922
11923static void build_wcs_buffer (re_string_t *pstr) ;
11924static int build_wcs_upper_buffer (re_string_t *pstr) ;
11925
11926static void build_upper_buffer (re_string_t *pstr) ;
11927static void re_string_translate_buffer (re_string_t *pstr) ;
11928static unsigned int re_string_context_at (const re_string_t *input, int idx,
11929 int eflags)
11930 __attribute__ ((pure));
11931# 436 "regex_internal.h"
11932struct bin_tree_t
11933{
11934 struct bin_tree_t *parent;
11935 struct bin_tree_t *left;
11936 struct bin_tree_t *right;
11937 struct bin_tree_t *first;
11938 struct bin_tree_t *next;
11939
11940 re_token_t token;
11941
11942
11943
11944 int node_idx;
11945};
11946typedef struct bin_tree_t bin_tree_t;
11947
11948
11949
11950
11951struct bin_tree_storage_t
11952{
11953 struct bin_tree_storage_t *next;
11954 bin_tree_t data[((1024 - sizeof (void *)) / sizeof (bin_tree_t))];
11955};
11956typedef struct bin_tree_storage_t bin_tree_storage_t;
11957# 490 "regex_internal.h"
11958struct re_dfastate_t
11959{
11960 unsigned int hash;
11961 re_node_set nodes;
11962 re_node_set non_eps_nodes;
11963 re_node_set inveclosure;
11964 re_node_set *entrance_nodes;
11965 struct re_dfastate_t **trtable, **word_trtable;
11966 unsigned int context : 4;
11967 unsigned int halt : 1;
11968
11969
11970
11971 unsigned int accept_mb : 1;
11972
11973 unsigned int has_backref : 1;
11974 unsigned int has_constraint : 1;
11975};
11976typedef struct re_dfastate_t re_dfastate_t;
11977
11978struct re_state_table_entry
11979{
11980 int num;
11981 int alloc;
11982 re_dfastate_t **array;
11983};
11984
11985
11986
11987typedef struct
11988{
11989 int next_idx;
11990 int alloc;
11991 re_dfastate_t **array;
11992} state_array_t;
11993
11994
11995
11996typedef struct
11997{
11998 int node;
11999 int str_idx;
12000 state_array_t path;
12001} re_sub_match_last_t;
12002
12003
12004
12005
12006
12007typedef struct
12008{
12009 int str_idx;
12010 int node;
12011 state_array_t *path;
12012 int alasts;
12013 int nlasts;
12014 re_sub_match_last_t **lasts;
12015} re_sub_match_top_t;
12016
12017struct re_backref_cache_entry
12018{
12019 int node;
12020 int str_idx;
12021 int subexp_from;
12022 int subexp_to;
12023 char more;
12024 char unused;
12025 unsigned short int eps_reachable_subexps_map;
12026};
12027
12028typedef struct
12029{
12030
12031 re_string_t input;
12032
12033 const re_dfa_t *const dfa;
12034
12035
12036
12037
12038 int eflags;
12039
12040 int match_last;
12041 int last_node;
12042
12043 re_dfastate_t **state_log;
12044 int state_log_top;
12045
12046 int nbkref_ents;
12047 int abkref_ents;
12048 struct re_backref_cache_entry *bkref_ents;
12049 int max_mb_elem_len;
12050 int nsub_tops;
12051 int asub_tops;
12052 re_sub_match_top_t **sub_tops;
12053} re_match_context_t;
12054
12055typedef struct
12056{
12057 re_dfastate_t **sifted_states;
12058 re_dfastate_t **limited_states;
12059 int last_node;
12060 int last_str_idx;
12061 re_node_set limits;
12062} re_sift_context_t;
12063
12064struct re_fail_stack_ent_t
12065{
12066 int idx;
12067 int node;
12068 regmatch_t *regs;
12069 re_node_set eps_via_nodes;
12070};
12071
12072struct re_fail_stack_t
12073{
12074 int num;
12075 int alloc;
12076 struct re_fail_stack_ent_t *stack;
12077};
12078
12079struct re_dfa_t
12080{
12081 re_token_t *nodes;
12082 size_t nodes_alloc;
12083 size_t nodes_len;
12084 int *nexts;
12085 int *org_indices;
12086 re_node_set *edests;
12087 re_node_set *eclosures;
12088 re_node_set *inveclosures;
12089 struct re_state_table_entry *state_table;
12090 re_dfastate_t *init_state;
12091 re_dfastate_t *init_state_word;
12092 re_dfastate_t *init_state_nl;
12093 re_dfastate_t *init_state_begbuf;
12094 bin_tree_t *str_tree;
12095 bin_tree_storage_t *str_tree_storage;
12096 re_bitset_ptr_t sb_char;
12097 int str_tree_storage_idx;
12098
12099
12100 unsigned int state_hash_mask;
12101 int init_node;
12102 int nbackref;
12103
12104
12105 bitset_word_t used_bkref_map;
12106 bitset_word_t completed_bkref_map;
12107
12108 unsigned int has_plural_match : 1;
12109
12110
12111
12112 unsigned int has_mb_node : 1;
12113 unsigned int is_utf8 : 1;
12114 unsigned int map_notascii : 1;
12115 unsigned int word_ops_used : 1;
12116 int mb_cur_max;
12117 bitset_t word_char;
12118 reg_syntax_t syntax;
12119 int *subexp_map;
12120
12121
12122
12123 __libc_lock_t lock;
12124};
12125# 665 "regex_internal.h"
12126typedef enum
12127{
12128 SB_CHAR,
12129 MB_CHAR,
12130 EQUIV_CLASS,
12131 COLL_SYM,
12132 CHAR_CLASS
12133} bracket_elem_type;
12134
12135typedef struct
12136{
12137 bracket_elem_type type;
12138 union
12139 {
12140 unsigned char ch;
12141 unsigned char *name;
12142 wchar_t wch;
12143 } opr;
12144} bracket_elem_t;
12145
12146
12147
12148static inline void
12149bitset_not (bitset_t set)
12150{
12151 int bitset_i;
12152 for (bitset_i = 0; bitset_i < (256 / (sizeof (bitset_word_t) * 8)); ++bitset_i)
12153 set[bitset_i] = ~set[bitset_i];
12154}
12155
12156static inline void
12157bitset_merge (bitset_t dest, const bitset_t src)
12158{
12159 int bitset_i;
12160 for (bitset_i = 0; bitset_i < (256 / (sizeof (bitset_word_t) * 8)); ++bitset_i)
12161 dest[bitset_i] |= src[bitset_i];
12162}
12163
12164static inline void
12165bitset_mask (bitset_t dest, const bitset_t src)
12166{
12167 int bitset_i;
12168 for (bitset_i = 0; bitset_i < (256 / (sizeof (bitset_word_t) * 8)); ++bitset_i)
12169 dest[bitset_i] &= src[bitset_i];
12170}
12171
12172
12173
12174static inline int
12175 __attribute__ ((pure))
12176re_string_char_size_at (const re_string_t *pstr, int idx)
12177{
12178 int byte_idx;
12179 if (pstr->mb_cur_max == 1)
12180 return 1;
12181 for (byte_idx = 1; idx + byte_idx < pstr->valid_len; ++byte_idx)
12182 if (pstr->wcs[idx + byte_idx] != (0xffffffffu))
12183 break;
12184 return byte_idx;
12185}
12186
12187static inline wint_t
12188 __attribute__ ((pure))
12189re_string_wchar_at (const re_string_t *pstr, int idx)
12190{
12191 if (pstr->mb_cur_max == 1)
12192 return (wint_t) pstr->mbs[idx];
12193 return (wint_t) pstr->wcs[idx];
12194}
12195
12196static int
12197 __attribute__ ((pure))
12198re_string_elem_size_at (const re_string_t *pstr, int idx)
12199{
12200
12201 const unsigned char *p, *extra;
12202 const int32_t *table, *indirect;
12203 int32_t tmp;
12204# 1 "../locale/weight.h" 1
12205# 21 "../locale/weight.h"
12206auto inline int32_t
12207__attribute__ ((always_inline))
12208findidx (const unsigned char **cpp)
12209{
12210 int_fast32_t i = table[*(*cpp)++];
12211 const unsigned char *cp;
12212 const unsigned char *usrc;
12213
12214 if (i >= 0)
12215
12216 return i;
12217
12218
12219
12220 cp = &extra[-i];
12221 usrc = *cpp;
12222 while (1)
12223 {
12224 size_t nhere;
12225
12226
12227 i = *((const int32_t *) cp);
12228 cp += sizeof (int32_t);
12229
12230
12231
12232
12233 nhere = *cp++;
12234
12235 if (i >= 0)
12236 {
12237
12238
12239
12240
12241
12242 size_t cnt;
12243
12244 for (cnt = 0; cnt < nhere; ++cnt)
12245 if (cp[cnt] != usrc[cnt])
12246 break;
12247
12248 if (cnt == nhere)
12249 {
12250
12251 *cpp += nhere;
12252 return i;
12253 }
12254
12255
12256 cp += nhere;
12257 if ((1 + nhere) % __alignof__ (int32_t) != 0)
12258 cp += __alignof__ (int32_t) - (1 + nhere) % __alignof__ (int32_t);
12259 }
12260 else
12261 {
12262
12263
12264 size_t cnt;
12265 size_t offset = 0;
12266
12267 for (cnt = 0; cnt < nhere; ++cnt)
12268 if (cp[cnt] != usrc[cnt])
12269 break;
12270
12271 if (cnt != nhere)
12272 {
12273 if (cp[cnt] > usrc[cnt])
12274 {
12275
12276 cp += 2 * nhere;
12277 if ((1 + 2 * nhere) % __alignof__ (int32_t) != 0)
12278 cp += (__alignof__ (int32_t)
12279 - (1 + 2 * nhere) % __alignof__ (int32_t));
12280 continue;
12281 }
12282
12283
12284 for (cnt = 0; cnt < nhere; ++cnt)
12285 if (cp[nhere + cnt] != usrc[cnt])
12286 break;
12287
12288 if (cnt != nhere && cp[nhere + cnt] < usrc[cnt])
12289 {
12290
12291 cp += 2 * nhere;
12292 if ((1 + 2 * nhere) % __alignof__ (int32_t) != 0)
12293 cp += (__alignof__ (int32_t)
12294 - (1 + 2 * nhere) % __alignof__ (int32_t));
12295 continue;
12296 }
12297
12298
12299
12300 for (cnt = 0; cp[cnt] == usrc[cnt]; ++cnt);
12301
12302 do
12303 {
12304 offset <<= 8;
12305 offset += usrc[cnt] - cp[cnt];
12306 }
12307 while (++cnt < nhere);
12308 }
12309
12310 *cpp += nhere;
12311 return indirect[-i + offset];
12312 }
12313 }
12314
12315
12316 return 0x43219876;
12317}
12318# 744 "regex_internal.h" 2
12319 uint_fast32_t nrules = ((uint32_t) (*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_NRULES) & 0xffff)].word);
12320
12321 if (nrules != 0)
12322 {
12323 table = (const int32_t *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_TABLEMB) & 0xffff)].string);
12324 extra = (const unsigned char *)
12325 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_EXTRAMB) & 0xffff)].string);
12326 indirect = (const int32_t *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_INDIRECTMB) & 0xffff)].string);
12327
12328 p = pstr->mbs + idx;
12329 tmp = findidx (&p);
12330 return p - pstr->mbs - idx;
12331 }
12332 else
12333
12334 return 1;
12335}
12336# 62 "regex.c" 2
12337
12338# 1 "regex_internal.c" 1
12339# 21 "regex_internal.c"
12340static void re_string_construct_common (const char *str, int len,
12341 re_string_t *pstr,
12342 unsigned char * trans, int icase,
12343 const re_dfa_t *dfa) ;
12344static re_dfastate_t *create_ci_newstate (const re_dfa_t *dfa,
12345 const re_node_set *nodes,
12346 unsigned int hash) ;
12347static re_dfastate_t *create_cd_newstate (const re_dfa_t *dfa,
12348 const re_node_set *nodes,
12349 unsigned int context,
12350 unsigned int hash) ;
12351
12352
12353
12354
12355
12356
12357static reg_errcode_t
12358
12359re_string_allocate (re_string_t *pstr, const char *str, int len, int init_len,
12360 unsigned char * trans, int icase, const re_dfa_t *dfa)
12361{
12362 reg_errcode_t ret;
12363 int init_buf_len;
12364
12365
12366 if (init_len < dfa->mb_cur_max)
12367 init_len = dfa->mb_cur_max;
12368 init_buf_len = (len + 1 < init_len) ? len + 1: init_len;
12369 re_string_construct_common (str, len, pstr, trans, icase, dfa);
12370
12371 ret = re_string_realloc_buffers (pstr, init_buf_len);
12372 if (__builtin_expect (ret != REG_NOERROR, 0))
12373 return ret;
12374
12375 pstr->word_char = dfa->word_char;
12376 pstr->word_ops_used = dfa->word_ops_used;
12377 pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
12378 pstr->valid_len = (pstr->mbs_allocated || dfa->mb_cur_max > 1) ? 0 : len;
12379 pstr->valid_raw_len = pstr->valid_len;
12380 return REG_NOERROR;
12381}
12382
12383
12384
12385static reg_errcode_t
12386
12387re_string_construct (re_string_t *pstr, const char *str, int len,
12388 unsigned char * trans, int icase, const re_dfa_t *dfa)
12389{
12390 reg_errcode_t ret;
12391 memset (pstr, '\0', sizeof (re_string_t));
12392 re_string_construct_common (str, len, pstr, trans, icase, dfa);
12393
12394 if (len > 0)
12395 {
12396 ret = re_string_realloc_buffers (pstr, len + 1);
12397 if (__builtin_expect (ret != REG_NOERROR, 0))
12398 return ret;
12399 }
12400 pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
12401
12402 if (icase)
12403 {
12404
12405 if (dfa->mb_cur_max > 1)
12406 {
12407 while (1)
12408 {
12409 ret = build_wcs_upper_buffer (pstr);
12410 if (__builtin_expect (ret != REG_NOERROR, 0))
12411 return ret;
12412 if (pstr->valid_raw_len >= len)
12413 break;
12414 if (pstr->bufs_len > pstr->valid_len + dfa->mb_cur_max)
12415 break;
12416 ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
12417 if (__builtin_expect (ret != REG_NOERROR, 0))
12418 return ret;
12419 }
12420 }
12421 else
12422
12423 build_upper_buffer (pstr);
12424 }
12425 else
12426 {
12427
12428 if (dfa->mb_cur_max > 1)
12429 build_wcs_buffer (pstr);
12430 else
12431
12432 {
12433 if (trans != ((void *)0))
12434 re_string_translate_buffer (pstr);
12435 else
12436 {
12437 pstr->valid_len = pstr->bufs_len;
12438 pstr->valid_raw_len = pstr->bufs_len;
12439 }
12440 }
12441 }
12442
12443 return REG_NOERROR;
12444}
12445
12446
12447
12448static reg_errcode_t
12449
12450re_string_realloc_buffers (re_string_t *pstr, int new_buf_len)
12451{
12452
12453 if (pstr->mb_cur_max > 1)
12454 {
12455 wint_t *new_wcs = ((wint_t *) realloc (pstr->wcs, (new_buf_len) * sizeof (wint_t)));
12456 if (__builtin_expect (new_wcs == ((void *)0), 0))
12457 return REG_ESPACE;
12458 pstr->wcs = new_wcs;
12459 if (pstr->offsets != ((void *)0))
12460 {
12461 int *new_offsets = ((int *) realloc (pstr->offsets, (new_buf_len) * sizeof (int)));
12462 if (__builtin_expect (new_offsets == ((void *)0), 0))
12463 return REG_ESPACE;
12464 pstr->offsets = new_offsets;
12465 }
12466 }
12467
12468 if (pstr->mbs_allocated)
12469 {
12470 unsigned char *new_mbs = ((unsigned char *) realloc (pstr->mbs, (new_buf_len) * sizeof (unsigned char)));
12471
12472 if (__builtin_expect (new_mbs == ((void *)0), 0))
12473 return REG_ESPACE;
12474 pstr->mbs = new_mbs;
12475 }
12476 pstr->bufs_len = new_buf_len;
12477 return REG_NOERROR;
12478}
12479
12480
12481static void
12482
12483re_string_construct_common (const char *str, int len, re_string_t *pstr,
12484 unsigned char * trans, int icase,
12485 const re_dfa_t *dfa)
12486{
12487 pstr->raw_mbs = (const unsigned char *) str;
12488 pstr->len = len;
12489 pstr->raw_len = len;
12490 pstr->trans = trans;
12491 pstr->icase = icase ? 1 : 0;
12492 pstr->mbs_allocated = (trans != ((void *)0) || icase);
12493 pstr->mb_cur_max = dfa->mb_cur_max;
12494 pstr->is_utf8 = dfa->is_utf8;
12495 pstr->map_notascii = dfa->map_notascii;
12496 pstr->stop = pstr->len;
12497 pstr->raw_stop = pstr->stop;
12498}
12499# 194 "regex_internal.c"
12500static void
12501
12502build_wcs_buffer (re_string_t *pstr)
12503{
12504
12505 unsigned char buf[16];
12506 ((16 >= pstr->mb_cur_max) ? (void) (0) : (__assert_fail ("16 >= pstr->mb_cur_max", "regex_internal.c", 200, __PRETTY_FUNCTION__), (void) (0)));
12507
12508
12509
12510 mbstate_t prev_st;
12511 int byte_idx, end_idx, remain_len;
12512 size_t mbclen;
12513
12514
12515
12516 end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
12517 for (byte_idx = pstr->valid_len; byte_idx < end_idx;)
12518 {
12519 wchar_t wc;
12520 const char *p;
12521
12522 remain_len = end_idx - byte_idx;
12523 prev_st = pstr->cur_state;
12524
12525 if (__builtin_expect (pstr->trans != ((void *)0), 0))
12526 {
12527 int i, ch;
12528
12529 for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
12530 {
12531 ch = pstr->raw_mbs [pstr->raw_mbs_idx + byte_idx + i];
12532 buf[i] = pstr->mbs[byte_idx + i] = pstr->trans[ch];
12533 }
12534 p = (const char *) buf;
12535 }
12536 else
12537 p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx;
12538 mbclen = mbrtowc (&wc, p, remain_len, &pstr->cur_state);
12539 if (__builtin_expect (mbclen == (size_t) -2, 0))
12540 {
12541
12542 pstr->cur_state = prev_st;
12543 break;
12544 }
12545 else if (__builtin_expect (mbclen == (size_t) -1 || mbclen == 0, 0))
12546 {
12547
12548 mbclen = 1;
12549 wc = (wchar_t) pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
12550 if (__builtin_expect (pstr->trans != ((void *)0), 0))
12551 wc = pstr->trans[wc];
12552 pstr->cur_state = prev_st;
12553 }
12554
12555
12556 pstr->wcs[byte_idx++] = wc;
12557
12558 for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
12559 pstr->wcs[byte_idx++] = (0xffffffffu);
12560 }
12561 pstr->valid_len = byte_idx;
12562 pstr->valid_raw_len = byte_idx;
12563}
12564
12565
12566
12567
12568static reg_errcode_t
12569
12570build_wcs_upper_buffer (re_string_t *pstr)
12571{
12572 mbstate_t prev_st;
12573 int src_idx, byte_idx, end_idx, remain_len;
12574 size_t mbclen;
12575
12576 char buf[16];
12577 ((16 >= pstr->mb_cur_max) ? (void) (0) : (__assert_fail ("16 >= pstr->mb_cur_max", "regex_internal.c", 271, __PRETTY_FUNCTION__), (void) (0)));
12578
12579
12580
12581
12582 byte_idx = pstr->valid_len;
12583 end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
12584
12585
12586
12587 if (! pstr->map_notascii && pstr->trans == ((void *)0) && !pstr->offsets_needed)
12588 {
12589 while (byte_idx < end_idx)
12590 {
12591 wchar_t wc;
12592
12593 if ((((pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]) & ~0x7f) == 0)
12594 && ((&pstr->cur_state)->__count == 0))
12595 {
12596
12597 pstr->mbs[byte_idx]
12598 = (__extension__ ({ int __res; if (sizeof (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]) > 1) { if (__builtin_constant_p (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx])) { int __c = (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]); } else __res = (*__ctype_toupper_loc ())[(int) (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx])]; __res; }));
12599
12600
12601 pstr->wcs[byte_idx] = (wchar_t) pstr->mbs[byte_idx];
12602 ++byte_idx;
12603 continue;
12604 }
12605
12606 remain_len = end_idx - byte_idx;
12607 prev_st = pstr->cur_state;
12608 mbclen = mbrtowc (&wc,
12609 ((const char *) pstr->raw_mbs + pstr->raw_mbs_idx
12610 + byte_idx), remain_len, &pstr->cur_state);
12611 if (__builtin_expect (mbclen + 2 > 2, 1))
12612 {
12613 wchar_t wcu = wc;
12614 if (iswlower (wc))
12615 {
12616 size_t mbcdlen;
12617
12618 wcu = towupper (wc);
12619 mbcdlen = wcrtomb (buf, wcu, &prev_st);
12620 if (__builtin_expect (mbclen == mbcdlen, 1))
12621 memcpy (pstr->mbs + byte_idx, buf, mbclen);
12622 else
12623 {
12624 src_idx = byte_idx;
12625 goto offsets_needed;
12626 }
12627 }
12628 else
12629 memcpy (pstr->mbs + byte_idx,
12630 pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx, mbclen);
12631 pstr->wcs[byte_idx++] = wcu;
12632
12633 for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
12634 pstr->wcs[byte_idx++] = (0xffffffffu);
12635 }
12636 else if (mbclen == (size_t) -1 || mbclen == 0)
12637 {
12638
12639 int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
12640 pstr->mbs[byte_idx] = ch;
12641
12642 pstr->wcs[byte_idx++] = (wchar_t) ch;
12643 if (__builtin_expect (mbclen == (size_t) -1, 0))
12644 pstr->cur_state = prev_st;
12645 }
12646 else
12647 {
12648
12649 pstr->cur_state = prev_st;
12650 break;
12651 }
12652 }
12653 pstr->valid_len = byte_idx;
12654 pstr->valid_raw_len = byte_idx;
12655 return REG_NOERROR;
12656 }
12657 else
12658 for (src_idx = pstr->valid_raw_len; byte_idx < end_idx;)
12659 {
12660 wchar_t wc;
12661 const char *p;
12662 offsets_needed:
12663 remain_len = end_idx - byte_idx;
12664 prev_st = pstr->cur_state;
12665 if (__builtin_expect (pstr->trans != ((void *)0), 0))
12666 {
12667 int i, ch;
12668
12669 for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
12670 {
12671 ch = pstr->raw_mbs [pstr->raw_mbs_idx + src_idx + i];
12672 buf[i] = pstr->trans[ch];
12673 }
12674 p = (const char *) buf;
12675 }
12676 else
12677 p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + src_idx;
12678 mbclen = mbrtowc (&wc, p, remain_len, &pstr->cur_state);
12679 if (__builtin_expect (mbclen + 2 > 2, 1))
12680 {
12681 wchar_t wcu = wc;
12682 if (iswlower (wc))
12683 {
12684 size_t mbcdlen;
12685
12686 wcu = towupper (wc);
12687 mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st);
12688 if (__builtin_expect (mbclen == mbcdlen, 1))
12689 memcpy (pstr->mbs + byte_idx, buf, mbclen);
12690 else if (mbcdlen != (size_t) -1)
12691 {
12692 size_t i;
12693
12694 if (byte_idx + mbcdlen > pstr->bufs_len)
12695 {
12696 pstr->cur_state = prev_st;
12697 break;
12698 }
12699
12700 if (pstr->offsets == ((void *)0))
12701 {
12702 pstr->offsets = ((int *) malloc ((pstr->bufs_len) * sizeof (int)));
12703
12704 if (pstr->offsets == ((void *)0))
12705 return REG_ESPACE;
12706 }
12707 if (!pstr->offsets_needed)
12708 {
12709 for (i = 0; i < (size_t) byte_idx; ++i)
12710 pstr->offsets[i] = i;
12711 pstr->offsets_needed = 1;
12712 }
12713
12714 memcpy (pstr->mbs + byte_idx, buf, mbcdlen);
12715 pstr->wcs[byte_idx] = wcu;
12716 pstr->offsets[byte_idx] = src_idx;
12717 for (i = 1; i < mbcdlen; ++i)
12718 {
12719 pstr->offsets[byte_idx + i]
12720 = src_idx + (i < mbclen ? i : mbclen - 1);
12721 pstr->wcs[byte_idx + i] = (0xffffffffu);
12722 }
12723 pstr->len += mbcdlen - mbclen;
12724 if (pstr->raw_stop > src_idx)
12725 pstr->stop += mbcdlen - mbclen;
12726 end_idx = (pstr->bufs_len > pstr->len)
12727 ? pstr->len : pstr->bufs_len;
12728 byte_idx += mbcdlen;
12729 src_idx += mbclen;
12730 continue;
12731 }
12732 else
12733 memcpy (pstr->mbs + byte_idx, p, mbclen);
12734 }
12735 else
12736 memcpy (pstr->mbs + byte_idx, p, mbclen);
12737
12738 if (__builtin_expect (pstr->offsets_needed != 0, 0))
12739 {
12740 size_t i;
12741 for (i = 0; i < mbclen; ++i)
12742 pstr->offsets[byte_idx + i] = src_idx + i;
12743 }
12744 src_idx += mbclen;
12745
12746 pstr->wcs[byte_idx++] = wcu;
12747
12748 for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
12749 pstr->wcs[byte_idx++] = (0xffffffffu);
12750 }
12751 else if (mbclen == (size_t) -1 || mbclen == 0)
12752 {
12753
12754 int ch = pstr->raw_mbs[pstr->raw_mbs_idx + src_idx];
12755
12756 if (__builtin_expect (pstr->trans != ((void *)0), 0))
12757 ch = pstr->trans [ch];
12758 pstr->mbs[byte_idx] = ch;
12759
12760 if (__builtin_expect (pstr->offsets_needed != 0, 0))
12761 pstr->offsets[byte_idx] = src_idx;
12762 ++src_idx;
12763
12764
12765 pstr->wcs[byte_idx++] = (wchar_t) ch;
12766 if (__builtin_expect (mbclen == (size_t) -1, 0))
12767 pstr->cur_state = prev_st;
12768 }
12769 else
12770 {
12771
12772 pstr->cur_state = prev_st;
12773 break;
12774 }
12775 }
12776 pstr->valid_len = byte_idx;
12777 pstr->valid_raw_len = src_idx;
12778 return REG_NOERROR;
12779}
12780
12781
12782
12783
12784static int
12785
12786re_string_skip_chars (re_string_t *pstr, int new_raw_idx, wint_t *last_wc)
12787{
12788 mbstate_t prev_st;
12789 int rawbuf_idx;
12790 size_t mbclen;
12791 wchar_t wc = (0xffffffffu);
12792
12793
12794 for (rawbuf_idx = pstr->raw_mbs_idx + pstr->valid_raw_len;
12795 rawbuf_idx < new_raw_idx;)
12796 {
12797 int remain_len;
12798 remain_len = pstr->len - rawbuf_idx;
12799 prev_st = pstr->cur_state;
12800 mbclen = mbrtowc (&wc, (const char *) pstr->raw_mbs + rawbuf_idx,
12801 remain_len, &pstr->cur_state);
12802 if (__builtin_expect (mbclen == (size_t) -2 || mbclen == (size_t) -1 || mbclen == 0, 0))
12803 {
12804
12805 if (mbclen == 0 || remain_len == 0)
12806 wc = L'\0';
12807 else
12808 wc = *(unsigned char *) (pstr->raw_mbs + rawbuf_idx);
12809 mbclen = 1;
12810 pstr->cur_state = prev_st;
12811 }
12812
12813 rawbuf_idx += mbclen;
12814 }
12815 *last_wc = (wint_t) wc;
12816 return rawbuf_idx;
12817}
12818
12819
12820
12821
12822
12823static void
12824
12825build_upper_buffer (re_string_t *pstr)
12826{
12827 int char_idx, end_idx;
12828 end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
12829
12830 for (char_idx = pstr->valid_len; char_idx < end_idx; ++char_idx)
12831 {
12832 int ch = pstr->raw_mbs[pstr->raw_mbs_idx + char_idx];
12833 if (__builtin_expect (pstr->trans != ((void *)0), 0))
12834 ch = pstr->trans[ch];
12835 if (((*__ctype_b_loc ())[(int) ((ch))] & (unsigned short int) _ISlower))
12836 pstr->mbs[char_idx] = (__extension__ ({ int __res; if (sizeof (ch) > 1) { if (__builtin_constant_p (ch)) { int __c = (ch); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper (ch); } else __res = (*__ctype_toupper_loc ())[(int) (ch)]; __res; }));
12837 else
12838 pstr->mbs[char_idx] = ch;
12839 }
12840 pstr->valid_len = char_idx;
12841 pstr->valid_raw_len = char_idx;
12842}
12843
12844
12845
12846static void
12847
12848re_string_translate_buffer (re_string_t *pstr)
12849{
12850 int buf_idx, end_idx;
12851 end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
12852
12853 for (buf_idx = pstr->valid_len; buf_idx < end_idx; ++buf_idx)
12854 {
12855 int ch = pstr->raw_mbs[pstr->raw_mbs_idx + buf_idx];
12856 pstr->mbs[buf_idx] = pstr->trans[ch];
12857 }
12858
12859 pstr->valid_len = buf_idx;
12860 pstr->valid_raw_len = buf_idx;
12861}
12862
12863
12864
12865
12866
12867static reg_errcode_t
12868
12869re_string_reconstruct (re_string_t *pstr, int idx, int eflags)
12870{
12871 int offset = idx - pstr->raw_mbs_idx;
12872 if (__builtin_expect (offset < 0, 0))
12873 {
12874
12875
12876 if (pstr->mb_cur_max > 1)
12877 memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
12878
12879 pstr->len = pstr->raw_len;
12880 pstr->stop = pstr->raw_stop;
12881 pstr->valid_len = 0;
12882 pstr->raw_mbs_idx = 0;
12883 pstr->valid_raw_len = 0;
12884 pstr->offsets_needed = 0;
12885 pstr->tip_context = ((eflags & 1) ? ((1 << 1) << 1)
12886 : (1 << 1) | ((1 << 1) << 1));
12887 if (!pstr->mbs_allocated)
12888 pstr->mbs = (unsigned char *) pstr->raw_mbs;
12889 offset = idx;
12890 }
12891
12892 if (__builtin_expect (offset != 0, 1))
12893 {
12894
12895 if (__builtin_expect (offset < pstr->valid_raw_len, 1))
12896 {
12897
12898
12899 if (__builtin_expect (pstr->offsets_needed, 0))
12900 {
12901 int low = 0, high = pstr->valid_len, mid;
12902 do
12903 {
12904 mid = (high + low) / 2;
12905 if (pstr->offsets[mid] > offset)
12906 high = mid;
12907 else if (pstr->offsets[mid] < offset)
12908 low = mid + 1;
12909 else
12910 break;
12911 }
12912 while (low < high);
12913 if (pstr->offsets[mid] < offset)
12914 ++mid;
12915 pstr->tip_context = re_string_context_at (pstr, mid - 1,
12916 eflags);
12917
12918
12919
12920
12921 if (pstr->valid_len > offset
12922 && mid == offset && pstr->offsets[mid] == offset)
12923 {
12924 memmove (pstr->wcs, pstr->wcs + offset,
12925 (pstr->valid_len - offset) * sizeof (wint_t));
12926 memmove (pstr->mbs, pstr->mbs + offset, pstr->valid_len - offset);
12927 pstr->valid_len -= offset;
12928 pstr->valid_raw_len -= offset;
12929 for (low = 0; low < pstr->valid_len; low++)
12930 pstr->offsets[low] = pstr->offsets[low + offset] - offset;
12931 }
12932 else
12933 {
12934
12935
12936 pstr->len = pstr->raw_len - idx + offset;
12937 pstr->stop = pstr->raw_stop - idx + offset;
12938 pstr->offsets_needed = 0;
12939 while (mid > 0 && pstr->offsets[mid - 1] == offset)
12940 --mid;
12941 while (mid < pstr->valid_len)
12942 if (pstr->wcs[mid] != (0xffffffffu))
12943 break;
12944 else
12945 ++mid;
12946 if (mid == pstr->valid_len)
12947 pstr->valid_len = 0;
12948 else
12949 {
12950 pstr->valid_len = pstr->offsets[mid] - offset;
12951 if (pstr->valid_len)
12952 {
12953 for (low = 0; low < pstr->valid_len; ++low)
12954 pstr->wcs[low] = (0xffffffffu);
12955 memset (pstr->mbs, 255, pstr->valid_len);
12956 }
12957 }
12958 pstr->valid_raw_len = pstr->valid_len;
12959 }
12960 }
12961 else
12962
12963 {
12964 pstr->tip_context = re_string_context_at (pstr, offset - 1,
12965 eflags);
12966
12967 if (pstr->mb_cur_max > 1)
12968 memmove (pstr->wcs, pstr->wcs + offset,
12969 (pstr->valid_len - offset) * sizeof (wint_t));
12970
12971 if (__builtin_expect (pstr->mbs_allocated, 0))
12972 memmove (pstr->mbs, pstr->mbs + offset,
12973 pstr->valid_len - offset);
12974 pstr->valid_len -= offset;
12975 pstr->valid_raw_len -= offset;
12976
12977
12978
12979 }
12980 }
12981 else
12982 {
12983
12984 int prev_valid_len = pstr->valid_len;
12985
12986
12987 if (__builtin_expect (pstr->offsets_needed, 0))
12988 {
12989 pstr->len = pstr->raw_len - idx + offset;
12990 pstr->stop = pstr->raw_stop - idx + offset;
12991 pstr->offsets_needed = 0;
12992 }
12993
12994 pstr->valid_len = 0;
12995
12996 if (pstr->mb_cur_max > 1)
12997 {
12998 int wcs_idx;
12999 wint_t wc = (0xffffffffu);
13000
13001 if (pstr->is_utf8)
13002 {
13003 const unsigned char *raw, *p, *q, *end;
13004
13005
13006
13007 raw = pstr->raw_mbs + pstr->raw_mbs_idx;
13008 end = raw + (offset - pstr->mb_cur_max);
13009 if (end < pstr->raw_mbs)
13010 end = pstr->raw_mbs;
13011 p = raw + offset - 1;
13012
13013
13014
13015 if ((((*p) & ~0x7f) == 0) && __builtin_expect (pstr->trans == ((void *)0), 1))
13016 {
13017 memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
13018
13019 wc = (wchar_t) *p;
13020 }
13021 else
13022
13023 for (; p >= end; --p)
13024 if ((*p & 0xc0) != 0x80)
13025 {
13026 mbstate_t cur_state;
13027 wchar_t wc2;
13028 int mlen = raw + pstr->len - p;
13029 unsigned char buf[6];
13030 size_t mbclen;
13031
13032 q = p;
13033 if (__builtin_expect (pstr->trans != ((void *)0), 0))
13034 {
13035 int i = mlen < 6 ? mlen : 6;
13036 while (--i >= 0)
13037 buf[i] = pstr->trans[p[i]];
13038 q = buf;
13039 }
13040
13041
13042 memset (&cur_state, 0, sizeof (cur_state));
13043 mbclen = mbrtowc (&wc2, (const char *) p, mlen,
13044 &cur_state);
13045 if (raw + offset - p <= mbclen
13046 && mbclen < (size_t) -2)
13047 {
13048 memset (&pstr->cur_state, '\0',
13049 sizeof (mbstate_t));
13050 pstr->valid_len = mbclen - (raw + offset - p);
13051 wc = wc2;
13052 }
13053 break;
13054 }
13055 }
13056
13057 if (wc == (0xffffffffu))
13058 pstr->valid_len = re_string_skip_chars (pstr, idx, &wc) - idx;
13059 if (wc == (0xffffffffu))
13060 pstr->tip_context
13061 = re_string_context_at (pstr, prev_valid_len - 1, eflags);
13062 else
13063 pstr->tip_context = ((__builtin_expect (pstr->word_ops_used != 0, 0)
13064 && (iswalnum (wc) || (wc) == L'_'))
13065 ? 1
13066 : ((((wc) == L'\n')
13067 && pstr->newline_anchor)
13068 ? (1 << 1) : 0));
13069 if (__builtin_expect (pstr->valid_len, 0))
13070 {
13071 for (wcs_idx = 0; wcs_idx < pstr->valid_len; ++wcs_idx)
13072 pstr->wcs[wcs_idx] = (0xffffffffu);
13073 if (pstr->mbs_allocated)
13074 memset (pstr->mbs, 255, pstr->valid_len);
13075 }
13076 pstr->valid_raw_len = pstr->valid_len;
13077 }
13078 else
13079
13080 {
13081 int c = pstr->raw_mbs[pstr->raw_mbs_idx + offset - 1];
13082 pstr->valid_raw_len = 0;
13083 if (pstr->trans)
13084 c = pstr->trans[c];
13085 pstr->tip_context = ((pstr->word_char[c / (sizeof (bitset_word_t) * 8)] & ((bitset_word_t) 1 << c % (sizeof (bitset_word_t) * 8)))
13086 ? 1
13087 : ((((c) == '\n') && pstr->newline_anchor)
13088 ? (1 << 1) : 0));
13089 }
13090 }
13091 if (!__builtin_expect (pstr->mbs_allocated, 0))
13092 pstr->mbs += offset;
13093 }
13094 pstr->raw_mbs_idx = idx;
13095 pstr->len -= offset;
13096 pstr->stop -= offset;
13097
13098
13099
13100 if (pstr->mb_cur_max > 1)
13101 {
13102 if (pstr->icase)
13103 {
13104 reg_errcode_t ret = build_wcs_upper_buffer (pstr);
13105 if (__builtin_expect (ret != REG_NOERROR, 0))
13106 return ret;
13107 }
13108 else
13109 build_wcs_buffer (pstr);
13110 }
13111 else
13112
13113 if (__builtin_expect (pstr->mbs_allocated, 0))
13114 {
13115 if (pstr->icase)
13116 build_upper_buffer (pstr);
13117 else if (pstr->trans != ((void *)0))
13118 re_string_translate_buffer (pstr);
13119 }
13120 else
13121 pstr->valid_len = pstr->len;
13122
13123 pstr->cur_idx = 0;
13124 return REG_NOERROR;
13125}
13126
13127static unsigned char
13128 __attribute__ ((pure))
13129re_string_peek_byte_case (const re_string_t *pstr, int idx)
13130{
13131 int ch, off;
13132
13133
13134 if (__builtin_expect (!pstr->mbs_allocated, 1))
13135 return ((pstr)->mbs[(pstr)->cur_idx + idx]);
13136
13137
13138 if (pstr->mb_cur_max > 1
13139 && ! ((pstr)->wcs[pstr->cur_idx + idx] != (0xffffffffu) && ((pstr)->valid_len == (pstr->cur_idx + idx) + 1 || (pstr)->wcs[(pstr->cur_idx + idx) + 1] != (0xffffffffu))))
13140 return ((pstr)->mbs[(pstr)->cur_idx + idx]);
13141
13142
13143 off = pstr->cur_idx + idx;
13144
13145 if (pstr->offsets_needed)
13146 off = pstr->offsets[off];
13147
13148
13149 ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
13150
13151
13152
13153
13154
13155
13156 if (pstr->offsets_needed && !(((ch) & ~0x7f) == 0))
13157 return ((pstr)->mbs[(pstr)->cur_idx + idx]);
13158
13159
13160 return ch;
13161}
13162
13163static unsigned char
13164 __attribute__ ((pure))
13165re_string_fetch_byte_case (re_string_t *pstr)
13166{
13167 if (__builtin_expect (!pstr->mbs_allocated, 1))
13168 return ((pstr)->mbs[(pstr)->cur_idx++]);
13169
13170
13171 if (pstr->offsets_needed)
13172 {
13173 int off, ch;
13174# 876 "regex_internal.c"
13175 if (!((pstr->cur_idx) == (pstr)->valid_len || (pstr)->wcs[pstr->cur_idx] != (0xffffffffu)))
13176 return ((pstr)->mbs[(pstr)->cur_idx++]);
13177
13178 off = pstr->offsets[pstr->cur_idx];
13179 ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
13180
13181 if (! (((ch) & ~0x7f) == 0))
13182 return ((pstr)->mbs[(pstr)->cur_idx++]);
13183
13184 ((pstr)->cur_idx += (re_string_char_size_at (pstr, pstr->cur_idx)));
13185
13186 return ch;
13187 }
13188
13189
13190 return pstr->raw_mbs[pstr->raw_mbs_idx + pstr->cur_idx++];
13191}
13192
13193static void
13194
13195re_string_destruct (re_string_t *pstr)
13196{
13197
13198 free (pstr->wcs);
13199 free (pstr->offsets);
13200
13201 if (pstr->mbs_allocated)
13202 free (pstr->mbs);
13203}
13204
13205
13206
13207static unsigned int
13208
13209re_string_context_at (const re_string_t *input, int idx, int eflags)
13210{
13211 int c;
13212 if (__builtin_expect (idx < 0, 0))
13213
13214
13215 return input->tip_context;
13216 if (__builtin_expect (idx == input->len, 0))
13217 return ((eflags & (1 << 1)) ? (((1 << 1) << 1) << 1)
13218 : (1 << 1) | (((1 << 1) << 1) << 1));
13219
13220 if (input->mb_cur_max > 1)
13221 {
13222 wint_t wc;
13223 int wc_idx = idx;
13224 while(input->wcs[wc_idx] == (0xffffffffu))
13225 {
13226
13227
13228
13229
13230 --wc_idx;
13231 if (wc_idx < 0)
13232 return input->tip_context;
13233 }
13234 wc = input->wcs[wc_idx];
13235 if (__builtin_expect (input->word_ops_used != 0, 0) && (iswalnum (wc) || (wc) == L'_'))
13236 return 1;
13237 return (((wc) == L'\n') && input->newline_anchor
13238 ? (1 << 1) : 0);
13239 }
13240 else
13241
13242 {
13243 c = ((input)->mbs[idx]);
13244 if ((input->word_char[c / (sizeof (bitset_word_t) * 8)] & ((bitset_word_t) 1 << c % (sizeof (bitset_word_t) * 8))))
13245 return 1;
13246 return ((c) == '\n') && input->newline_anchor ? (1 << 1) : 0;
13247 }
13248}
13249
13250
13251
13252static reg_errcode_t
13253
13254re_node_set_alloc (re_node_set *set, int size)
13255{
13256 set->alloc = size;
13257 set->nelem = 0;
13258 set->elems = ((int *) malloc ((size) * sizeof (int)));
13259 if (__builtin_expect (set->elems == ((void *)0), 0))
13260 return REG_ESPACE;
13261 return REG_NOERROR;
13262}
13263
13264static reg_errcode_t
13265
13266re_node_set_init_1 (re_node_set *set, int elem)
13267{
13268 set->alloc = 1;
13269 set->nelem = 1;
13270 set->elems = ((int *) malloc ((1) * sizeof (int)));
13271 if (__builtin_expect (set->elems == ((void *)0), 0))
13272 {
13273 set->alloc = set->nelem = 0;
13274 return REG_ESPACE;
13275 }
13276 set->elems[0] = elem;
13277 return REG_NOERROR;
13278}
13279
13280static reg_errcode_t
13281
13282re_node_set_init_2 (re_node_set *set, int elem1, int elem2)
13283{
13284 set->alloc = 2;
13285 set->elems = ((int *) malloc ((2) * sizeof (int)));
13286 if (__builtin_expect (set->elems == ((void *)0), 0))
13287 return REG_ESPACE;
13288 if (elem1 == elem2)
13289 {
13290 set->nelem = 1;
13291 set->elems[0] = elem1;
13292 }
13293 else
13294 {
13295 set->nelem = 2;
13296 if (elem1 < elem2)
13297 {
13298 set->elems[0] = elem1;
13299 set->elems[1] = elem2;
13300 }
13301 else
13302 {
13303 set->elems[0] = elem2;
13304 set->elems[1] = elem1;
13305 }
13306 }
13307 return REG_NOERROR;
13308}
13309
13310static reg_errcode_t
13311
13312re_node_set_init_copy (re_node_set *dest, const re_node_set *src)
13313{
13314 dest->nelem = src->nelem;
13315 if (src->nelem > 0)
13316 {
13317 dest->alloc = dest->nelem;
13318 dest->elems = ((int *) malloc ((dest->alloc) * sizeof (int)));
13319 if (__builtin_expect (dest->elems == ((void *)0), 0))
13320 {
13321 dest->alloc = dest->nelem = 0;
13322 return REG_ESPACE;
13323 }
13324 memcpy (dest->elems, src->elems, src->nelem * sizeof (int));
13325 }
13326 else
13327 memset (dest, '\0', sizeof (re_node_set));
13328 return REG_NOERROR;
13329}
13330
13331
13332
13333
13334
13335static reg_errcode_t
13336
13337re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
13338 const re_node_set *src2)
13339{
13340 int i1, i2, is, id, delta, sbase;
13341 if (src1->nelem == 0 || src2->nelem == 0)
13342 return REG_NOERROR;
13343
13344
13345
13346 if (src1->nelem + src2->nelem + dest->nelem > dest->alloc)
13347 {
13348 int new_alloc = src1->nelem + src2->nelem + dest->alloc;
13349 int *new_elems = ((int *) realloc (dest->elems, (new_alloc) * sizeof (int)));
13350 if (__builtin_expect (new_elems == ((void *)0), 0))
13351 return REG_ESPACE;
13352 dest->elems = new_elems;
13353 dest->alloc = new_alloc;
13354 }
13355
13356
13357
13358 sbase = dest->nelem + src1->nelem + src2->nelem;
13359 i1 = src1->nelem - 1;
13360 i2 = src2->nelem - 1;
13361 id = dest->nelem - 1;
13362 for (;;)
13363 {
13364 if (src1->elems[i1] == src2->elems[i2])
13365 {
13366
13367 while (id >= 0 && dest->elems[id] > src1->elems[i1])
13368 --id;
13369
13370 if (id < 0 || dest->elems[id] != src1->elems[i1])
13371 dest->elems[--sbase] = src1->elems[i1];
13372
13373 if (--i1 < 0 || --i2 < 0)
13374 break;
13375 }
13376
13377
13378 else if (src1->elems[i1] < src2->elems[i2])
13379 {
13380 if (--i2 < 0)
13381 break;
13382 }
13383 else
13384 {
13385 if (--i1 < 0)
13386 break;
13387 }
13388 }
13389
13390 id = dest->nelem - 1;
13391 is = dest->nelem + src1->nelem + src2->nelem - 1;
13392 delta = is - sbase + 1;
13393
13394
13395
13396
13397 dest->nelem += delta;
13398 if (delta > 0 && id >= 0)
13399 for (;;)
13400 {
13401 if (dest->elems[is] > dest->elems[id])
13402 {
13403
13404 dest->elems[id + delta--] = dest->elems[is--];
13405 if (delta == 0)
13406 break;
13407 }
13408 else
13409 {
13410
13411 dest->elems[id + delta] = dest->elems[id];
13412 if (--id < 0)
13413 break;
13414 }
13415 }
13416
13417
13418 memcpy (dest->elems, dest->elems + sbase, delta * sizeof (int));
13419
13420 return REG_NOERROR;
13421}
13422
13423
13424
13425
13426static reg_errcode_t
13427
13428re_node_set_init_union (re_node_set *dest, const re_node_set *src1,
13429 const re_node_set *src2)
13430{
13431 int i1, i2, id;
13432 if (src1 != ((void *)0) && src1->nelem > 0 && src2 != ((void *)0) && src2->nelem > 0)
13433 {
13434 dest->alloc = src1->nelem + src2->nelem;
13435 dest->elems = ((int *) malloc ((dest->alloc) * sizeof (int)));
13436 if (__builtin_expect (dest->elems == ((void *)0), 0))
13437 return REG_ESPACE;
13438 }
13439 else
13440 {
13441 if (src1 != ((void *)0) && src1->nelem > 0)
13442 return re_node_set_init_copy (dest, src1);
13443 else if (src2 != ((void *)0) && src2->nelem > 0)
13444 return re_node_set_init_copy (dest, src2);
13445 else
13446 memset (dest, '\0', sizeof (re_node_set));
13447 return REG_NOERROR;
13448 }
13449 for (i1 = i2 = id = 0 ; i1 < src1->nelem && i2 < src2->nelem ;)
13450 {
13451 if (src1->elems[i1] > src2->elems[i2])
13452 {
13453 dest->elems[id++] = src2->elems[i2++];
13454 continue;
13455 }
13456 if (src1->elems[i1] == src2->elems[i2])
13457 ++i2;
13458 dest->elems[id++] = src1->elems[i1++];
13459 }
13460 if (i1 < src1->nelem)
13461 {
13462 memcpy (dest->elems + id, src1->elems + i1,
13463 (src1->nelem - i1) * sizeof (int));
13464 id += src1->nelem - i1;
13465 }
13466 else if (i2 < src2->nelem)
13467 {
13468 memcpy (dest->elems + id, src2->elems + i2,
13469 (src2->nelem - i2) * sizeof (int));
13470 id += src2->nelem - i2;
13471 }
13472 dest->nelem = id;
13473 return REG_NOERROR;
13474}
13475
13476
13477
13478
13479static reg_errcode_t
13480
13481re_node_set_merge (re_node_set *dest, const re_node_set *src)
13482{
13483 int is, id, sbase, delta;
13484 if (src == ((void *)0) || src->nelem == 0)
13485 return REG_NOERROR;
13486 if (dest->alloc < 2 * src->nelem + dest->nelem)
13487 {
13488 int new_alloc = 2 * (src->nelem + dest->alloc);
13489 int *new_buffer = ((int *) realloc (dest->elems, (new_alloc) * sizeof (int)));
13490 if (__builtin_expect (new_buffer == ((void *)0), 0))
13491 return REG_ESPACE;
13492 dest->elems = new_buffer;
13493 dest->alloc = new_alloc;
13494 }
13495
13496 if (__builtin_expect (dest->nelem == 0, 0))
13497 {
13498 dest->nelem = src->nelem;
13499 memcpy (dest->elems, src->elems, src->nelem * sizeof (int));
13500 return REG_NOERROR;
13501 }
13502
13503
13504
13505 for (sbase = dest->nelem + 2 * src->nelem,
13506 is = src->nelem - 1, id = dest->nelem - 1; is >= 0 && id >= 0; )
13507 {
13508 if (dest->elems[id] == src->elems[is])
13509 is--, id--;
13510 else if (dest->elems[id] < src->elems[is])
13511 dest->elems[--sbase] = src->elems[is--];
13512 else
13513 --id;
13514 }
13515
13516 if (is >= 0)
13517 {
13518
13519 sbase -= is + 1;
13520 memcpy (dest->elems + sbase, src->elems, (is + 1) * sizeof (int));
13521 }
13522
13523 id = dest->nelem - 1;
13524 is = dest->nelem + 2 * src->nelem - 1;
13525 delta = is - sbase + 1;
13526 if (delta == 0)
13527 return REG_NOERROR;
13528
13529
13530
13531 dest->nelem += delta;
13532 for (;;)
13533 {
13534 if (dest->elems[is] > dest->elems[id])
13535 {
13536
13537 dest->elems[id + delta--] = dest->elems[is--];
13538 if (delta == 0)
13539 break;
13540 }
13541 else
13542 {
13543
13544 dest->elems[id + delta] = dest->elems[id];
13545 if (--id < 0)
13546 {
13547
13548 memcpy (dest->elems, dest->elems + sbase,
13549 delta * sizeof (int));
13550 break;
13551 }
13552 }
13553 }
13554
13555 return REG_NOERROR;
13556}
13557
13558
13559
13560
13561
13562static int
13563
13564re_node_set_insert (re_node_set *set, int elem)
13565{
13566 int idx;
13567
13568 if (set->alloc == 0)
13569 {
13570 if (__builtin_expect (re_node_set_init_1 (set, elem) == REG_NOERROR, 1))
13571 return 1;
13572 else
13573 return -1;
13574 }
13575
13576 if (__builtin_expect (set->nelem, 0) == 0)
13577 {
13578
13579 set->elems[0] = elem;
13580 ++set->nelem;
13581 return 1;
13582 }
13583
13584
13585 if (set->alloc == set->nelem)
13586 {
13587 int *new_elems;
13588 set->alloc = set->alloc * 2;
13589 new_elems = ((int *) realloc (set->elems, (set->alloc) * sizeof (int)));
13590 if (__builtin_expect (new_elems == ((void *)0), 0))
13591 return -1;
13592 set->elems = new_elems;
13593 }
13594
13595
13596
13597 if (elem < set->elems[0])
13598 {
13599 idx = 0;
13600 for (idx = set->nelem; idx > 0; idx--)
13601 set->elems[idx] = set->elems[idx - 1];
13602 }
13603 else
13604 {
13605 for (idx = set->nelem; set->elems[idx - 1] > elem; idx--)
13606 set->elems[idx] = set->elems[idx - 1];
13607 }
13608
13609
13610 set->elems[idx] = elem;
13611 ++set->nelem;
13612 return 1;
13613}
13614
13615
13616
13617
13618
13619static int
13620
13621re_node_set_insert_last (re_node_set *set, int elem)
13622{
13623
13624 if (set->alloc == set->nelem)
13625 {
13626 int *new_elems;
13627 set->alloc = (set->alloc + 1) * 2;
13628 new_elems = ((int *) realloc (set->elems, (set->alloc) * sizeof (int)));
13629 if (__builtin_expect (new_elems == ((void *)0), 0))
13630 return -1;
13631 set->elems = new_elems;
13632 }
13633
13634
13635 set->elems[set->nelem++] = elem;
13636 return 1;
13637}
13638
13639
13640
13641
13642static int
13643 __attribute__ ((pure))
13644re_node_set_compare (const re_node_set *set1, const re_node_set *set2)
13645{
13646 int i;
13647 if (set1 == ((void *)0) || set2 == ((void *)0) || set1->nelem != set2->nelem)
13648 return 0;
13649 for (i = set1->nelem ; --i >= 0 ; )
13650 if (set1->elems[i] != set2->elems[i])
13651 return 0;
13652 return 1;
13653}
13654
13655
13656
13657static int
13658 __attribute__ ((pure))
13659re_node_set_contains (const re_node_set *set, int elem)
13660{
13661 unsigned int idx, right, mid;
13662 if (set->nelem <= 0)
13663 return 0;
13664
13665
13666 idx = 0;
13667 right = set->nelem - 1;
13668 while (idx < right)
13669 {
13670 mid = (idx + right) / 2;
13671 if (set->elems[mid] < elem)
13672 idx = mid + 1;
13673 else
13674 right = mid;
13675 }
13676 return set->elems[idx] == elem ? idx + 1 : 0;
13677}
13678
13679static void
13680
13681re_node_set_remove_at (re_node_set *set, int idx)
13682{
13683 if (idx < 0 || idx >= set->nelem)
13684 return;
13685 --set->nelem;
13686 for (; idx < set->nelem; idx++)
13687 set->elems[idx] = set->elems[idx + 1];
13688}
13689
13690
13691
13692
13693
13694static int
13695
13696re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
13697{
13698 int type = token.type;
13699 if (__builtin_expect (dfa->nodes_len >= dfa->nodes_alloc, 0))
13700 {
13701 size_t new_nodes_alloc = dfa->nodes_alloc * 2;
13702 int *new_nexts, *new_indices;
13703 re_node_set *new_edests, *new_eclosures;
13704 re_token_t *new_nodes;
13705
13706
13707 if (__builtin_expect (new_nodes_alloc < dfa->nodes_alloc, 0))
13708 return -1;
13709
13710 new_nodes = ((re_token_t *) realloc (dfa->nodes, (new_nodes_alloc) * sizeof (re_token_t)));
13711 if (__builtin_expect (new_nodes == ((void *)0), 0))
13712 return -1;
13713 dfa->nodes = new_nodes;
13714 new_nexts = ((int *) realloc (dfa->nexts, (new_nodes_alloc) * sizeof (int)));
13715 new_indices = ((int *) realloc (dfa->org_indices, (new_nodes_alloc) * sizeof (int)));
13716 new_edests = ((re_node_set *) realloc (dfa->edests, (new_nodes_alloc) * sizeof (re_node_set)));
13717 new_eclosures = ((re_node_set *) realloc (dfa->eclosures, (new_nodes_alloc) * sizeof (re_node_set)));
13718 if (__builtin_expect (new_nexts == ((void *)0) || new_indices == ((void *)0) || new_edests == ((void *)0) || new_eclosures == ((void *)0), 0))
13719
13720 return -1;
13721 dfa->nexts = new_nexts;
13722 dfa->org_indices = new_indices;
13723 dfa->edests = new_edests;
13724 dfa->eclosures = new_eclosures;
13725 dfa->nodes_alloc = new_nodes_alloc;
13726 }
13727 dfa->nodes[dfa->nodes_len] = token;
13728 dfa->nodes[dfa->nodes_len].constraint = 0;
13729
13730 dfa->nodes[dfa->nodes_len].accept_mb =
13731 (type == OP_PERIOD && dfa->mb_cur_max > 1) || type == COMPLEX_BRACKET;
13732
13733 dfa->nexts[dfa->nodes_len] = -1;
13734 memset (dfa->edests + dfa->nodes_len, '\0', sizeof (re_node_set));
13735 memset (dfa->eclosures + dfa->nodes_len, '\0', sizeof (re_node_set));
13736 return dfa->nodes_len++;
13737}
13738
13739static inline unsigned int
13740
13741calc_state_hash (const re_node_set *nodes, unsigned int context)
13742{
13743 unsigned int hash = nodes->nelem + context;
13744 int i;
13745 for (i = 0 ; i < nodes->nelem ; i++)
13746 hash += nodes->elems[i];
13747 return hash;
13748}
13749# 1460 "regex_internal.c"
13750static re_dfastate_t *
13751
13752re_acquire_state (reg_errcode_t *err, const re_dfa_t *dfa,
13753 const re_node_set *nodes)
13754{
13755 unsigned int hash;
13756 re_dfastate_t *new_state;
13757 struct re_state_table_entry *spot;
13758 int i;
13759 if (__builtin_expect (nodes->nelem == 0, 0))
13760 {
13761 *err = REG_NOERROR;
13762 return ((void *)0);
13763 }
13764 hash = calc_state_hash (nodes, 0);
13765 spot = dfa->state_table + (hash & dfa->state_hash_mask);
13766
13767 for (i = 0 ; i < spot->num ; i++)
13768 {
13769 re_dfastate_t *state = spot->array[i];
13770 if (hash != state->hash)
13771 continue;
13772 if (re_node_set_compare (&state->nodes, nodes))
13773 return state;
13774 }
13775
13776
13777 new_state = create_ci_newstate (dfa, nodes, hash);
13778 if (__builtin_expect (new_state == ((void *)0), 0))
13779 *err = REG_ESPACE;
13780
13781 return new_state;
13782}
13783# 1504 "regex_internal.c"
13784static re_dfastate_t *
13785
13786re_acquire_state_context (reg_errcode_t *err, const re_dfa_t *dfa,
13787 const re_node_set *nodes, unsigned int context)
13788{
13789 unsigned int hash;
13790 re_dfastate_t *new_state;
13791 struct re_state_table_entry *spot;
13792 int i;
13793 if (nodes->nelem == 0)
13794 {
13795 *err = REG_NOERROR;
13796 return ((void *)0);
13797 }
13798 hash = calc_state_hash (nodes, context);
13799 spot = dfa->state_table + (hash & dfa->state_hash_mask);
13800
13801 for (i = 0 ; i < spot->num ; i++)
13802 {
13803 re_dfastate_t *state = spot->array[i];
13804 if (state->hash == hash
13805 && state->context == context
13806 && re_node_set_compare (state->entrance_nodes, nodes))
13807 return state;
13808 }
13809
13810 new_state = create_cd_newstate (dfa, nodes, context, hash);
13811 if (__builtin_expect (new_state == ((void *)0), 0))
13812 *err = REG_ESPACE;
13813
13814 return new_state;
13815}
13816
13817
13818
13819
13820
13821static reg_errcode_t
13822register_state (const re_dfa_t *dfa, re_dfastate_t *newstate,
13823 unsigned int hash)
13824{
13825 struct re_state_table_entry *spot;
13826 reg_errcode_t err;
13827 int i;
13828
13829 newstate->hash = hash;
13830 err = re_node_set_alloc (&newstate->non_eps_nodes, newstate->nodes.nelem);
13831 if (__builtin_expect (err != REG_NOERROR, 0))
13832 return REG_ESPACE;
13833 for (i = 0; i < newstate->nodes.nelem; i++)
13834 {
13835 int elem = newstate->nodes.elems[i];
13836 if (!((dfa->nodes[elem].type) & 8))
13837 re_node_set_insert_last (&newstate->non_eps_nodes, elem);
13838 }
13839
13840 spot = dfa->state_table + (hash & dfa->state_hash_mask);
13841 if (__builtin_expect (spot->alloc <= spot->num, 0))
13842 {
13843 int new_alloc = 2 * spot->num + 2;
13844 re_dfastate_t **new_array = ((re_dfastate_t * *) realloc (spot->array, (new_alloc) * sizeof (re_dfastate_t *)));
13845
13846 if (__builtin_expect (new_array == ((void *)0), 0))
13847 return REG_ESPACE;
13848 spot->array = new_array;
13849 spot->alloc = new_alloc;
13850 }
13851 spot->array[spot->num++] = newstate;
13852 return REG_NOERROR;
13853}
13854
13855static void
13856free_state (re_dfastate_t *state)
13857{
13858 free ((&state->non_eps_nodes)->elems);
13859 free ((&state->inveclosure)->elems);
13860 if (state->entrance_nodes != &state->nodes)
13861 {
13862 free ((state->entrance_nodes)->elems);
13863 free (state->entrance_nodes);
13864 }
13865 free ((&state->nodes)->elems);
13866 free (state->word_trtable);
13867 free (state->trtable);
13868 free (state);
13869}
13870
13871
13872
13873
13874static re_dfastate_t *
13875
13876create_ci_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
13877 unsigned int hash)
13878{
13879 int i;
13880 reg_errcode_t err;
13881 re_dfastate_t *newstate;
13882
13883 newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
13884 if (__builtin_expect (newstate == ((void *)0), 0))
13885 return ((void *)0);
13886 err = re_node_set_init_copy (&newstate->nodes, nodes);
13887 if (__builtin_expect (err != REG_NOERROR, 0))
13888 {
13889 free (newstate);
13890 return ((void *)0);
13891 }
13892
13893 newstate->entrance_nodes = &newstate->nodes;
13894 for (i = 0 ; i < nodes->nelem ; i++)
13895 {
13896 re_token_t *node = dfa->nodes + nodes->elems[i];
13897 re_token_type_t type = node->type;
13898 if (type == CHARACTER && !node->constraint)
13899 continue;
13900
13901 newstate->accept_mb |= node->accept_mb;
13902
13903
13904
13905 if (type == END_OF_RE)
13906 newstate->halt = 1;
13907 else if (type == OP_BACK_REF)
13908 newstate->has_backref = 1;
13909 else if (type == ANCHOR || node->constraint)
13910 newstate->has_constraint = 1;
13911 }
13912 err = register_state (dfa, newstate, hash);
13913 if (__builtin_expect (err != REG_NOERROR, 0))
13914 {
13915 free_state (newstate);
13916 newstate = ((void *)0);
13917 }
13918 return newstate;
13919}
13920
13921
13922
13923
13924static re_dfastate_t *
13925
13926create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
13927 unsigned int context, unsigned int hash)
13928{
13929 int i, nctx_nodes = 0;
13930 reg_errcode_t err;
13931 re_dfastate_t *newstate;
13932
13933 newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
13934 if (__builtin_expect (newstate == ((void *)0), 0))
13935 return ((void *)0);
13936 err = re_node_set_init_copy (&newstate->nodes, nodes);
13937 if (__builtin_expect (err != REG_NOERROR, 0))
13938 {
13939 free (newstate);
13940 return ((void *)0);
13941 }
13942
13943 newstate->context = context;
13944 newstate->entrance_nodes = &newstate->nodes;
13945
13946 for (i = 0 ; i < nodes->nelem ; i++)
13947 {
13948 unsigned int constraint = 0;
13949 re_token_t *node = dfa->nodes + nodes->elems[i];
13950 re_token_type_t type = node->type;
13951 if (node->constraint)
13952 constraint = node->constraint;
13953
13954 if (type == CHARACTER && !constraint)
13955 continue;
13956
13957 newstate->accept_mb |= node->accept_mb;
13958
13959
13960
13961 if (type == END_OF_RE)
13962 newstate->halt = 1;
13963 else if (type == OP_BACK_REF)
13964 newstate->has_backref = 1;
13965 else if (type == ANCHOR)
13966 constraint = node->opr.ctx_type;
13967
13968 if (constraint)
13969 {
13970 if (newstate->entrance_nodes == &newstate->nodes)
13971 {
13972 newstate->entrance_nodes = ((re_node_set *) malloc ((1) * sizeof (re_node_set)));
13973 if (__builtin_expect (newstate->entrance_nodes == ((void *)0), 0))
13974 {
13975 free_state (newstate);
13976 return ((void *)0);
13977 }
13978 re_node_set_init_copy (newstate->entrance_nodes, nodes);
13979 nctx_nodes = 0;
13980 newstate->has_constraint = 1;
13981 }
13982
13983 if (((((constraint) & 0x0001) && !((context) & 1)) || ((constraint & 0x0002) && ((context) & 1)) || ((constraint & 0x0010) && !((context) & (1 << 1))) || ((constraint & 0x0040) && !((context) & ((1 << 1) << 1)))))
13984 {
13985 re_node_set_remove_at (&newstate->nodes, i - nctx_nodes);
13986 ++nctx_nodes;
13987 }
13988 }
13989 }
13990 err = register_state (dfa, newstate, hash);
13991 if (__builtin_expect (err != REG_NOERROR, 0))
13992 {
13993 free_state (newstate);
13994 newstate = ((void *)0);
13995 }
13996 return newstate;
13997}
13998# 64 "regex.c" 2
13999# 1 "regcomp.c" 1
14000# 21 "regcomp.c"
14001static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
14002 size_t length, reg_syntax_t syntax);
14003static void re_compile_fastmap_iter (regex_t *bufp,
14004 const re_dfastate_t *init_state,
14005 char *fastmap);
14006static reg_errcode_t init_dfa (re_dfa_t *dfa, size_t pat_len);
14007
14008static void free_charset (re_charset_t *cset);
14009
14010static void free_workarea_compile (regex_t *preg);
14011static reg_errcode_t create_initial_state (re_dfa_t *dfa);
14012
14013static void optimize_utf8 (re_dfa_t *dfa);
14014
14015static reg_errcode_t analyze (regex_t *preg);
14016static reg_errcode_t preorder (bin_tree_t *root,
14017 reg_errcode_t (fn (void *, bin_tree_t *)),
14018 void *extra);
14019static reg_errcode_t postorder (bin_tree_t *root,
14020 reg_errcode_t (fn (void *, bin_tree_t *)),
14021 void *extra);
14022static reg_errcode_t optimize_subexps (void *extra, bin_tree_t *node);
14023static reg_errcode_t lower_subexps (void *extra, bin_tree_t *node);
14024static bin_tree_t *lower_subexp (reg_errcode_t *err, regex_t *preg,
14025 bin_tree_t *node);
14026static reg_errcode_t calc_first (void *extra, bin_tree_t *node);
14027static reg_errcode_t calc_next (void *extra, bin_tree_t *node);
14028static reg_errcode_t link_nfa_nodes (void *extra, bin_tree_t *node);
14029static int duplicate_node (re_dfa_t *dfa, int org_idx, unsigned int constraint);
14030static int search_duplicated_node (const re_dfa_t *dfa, int org_node,
14031 unsigned int constraint);
14032static reg_errcode_t calc_eclosure (re_dfa_t *dfa);
14033static reg_errcode_t calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa,
14034 int node, int root);
14035static reg_errcode_t calc_inveclosure (re_dfa_t *dfa);
14036static int fetch_number (re_string_t *input, re_token_t *token,
14037 reg_syntax_t syntax);
14038static int peek_token (re_token_t *token, re_string_t *input,
14039 reg_syntax_t syntax) ;
14040static bin_tree_t *parse (re_string_t *regexp, regex_t *preg,
14041 reg_syntax_t syntax, reg_errcode_t *err);
14042static bin_tree_t *parse_reg_exp (re_string_t *regexp, regex_t *preg,
14043 re_token_t *token, reg_syntax_t syntax,
14044 int nest, reg_errcode_t *err);
14045static bin_tree_t *parse_branch (re_string_t *regexp, regex_t *preg,
14046 re_token_t *token, reg_syntax_t syntax,
14047 int nest, reg_errcode_t *err);
14048static bin_tree_t *parse_expression (re_string_t *regexp, regex_t *preg,
14049 re_token_t *token, reg_syntax_t syntax,
14050 int nest, reg_errcode_t *err);
14051static bin_tree_t *parse_sub_exp (re_string_t *regexp, regex_t *preg,
14052 re_token_t *token, reg_syntax_t syntax,
14053 int nest, reg_errcode_t *err);
14054static bin_tree_t *parse_dup_op (bin_tree_t *dup_elem, re_string_t *regexp,
14055 re_dfa_t *dfa, re_token_t *token,
14056 reg_syntax_t syntax, reg_errcode_t *err);
14057static bin_tree_t *parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa,
14058 re_token_t *token, reg_syntax_t syntax,
14059 reg_errcode_t *err);
14060static reg_errcode_t parse_bracket_element (bracket_elem_t *elem,
14061 re_string_t *regexp,
14062 re_token_t *token, int token_len,
14063 re_dfa_t *dfa,
14064 reg_syntax_t syntax,
14065 int accept_hyphen);
14066static reg_errcode_t parse_bracket_symbol (bracket_elem_t *elem,
14067 re_string_t *regexp,
14068 re_token_t *token);
14069
14070static reg_errcode_t build_equiv_class (bitset_t sbcset,
14071 re_charset_t *mbcset,
14072 int *equiv_class_alloc,
14073 const unsigned char *name);
14074static reg_errcode_t build_charclass (unsigned char * trans,
14075 bitset_t sbcset,
14076 re_charset_t *mbcset,
14077 int *char_class_alloc,
14078 const unsigned char *class_name,
14079 reg_syntax_t syntax);
14080# 108 "regcomp.c"
14081static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
14082 unsigned char * trans,
14083 const unsigned char *class_name,
14084 const unsigned char *extra,
14085 int non_match, reg_errcode_t *err);
14086static bin_tree_t *create_tree (re_dfa_t *dfa,
14087 bin_tree_t *left, bin_tree_t *right,
14088 re_token_type_t type);
14089static bin_tree_t *create_token_tree (re_dfa_t *dfa,
14090 bin_tree_t *left, bin_tree_t *right,
14091 const re_token_t *token);
14092static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
14093static void free_token (re_token_t *node);
14094static reg_errcode_t free_tree (void *extra, bin_tree_t *node);
14095static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node);
14096
14097
14098
14099
14100
14101
14102const char __re_error_msgid[] =
14103 {
14104
14105 "Success"
14106 "\0"
14107
14108 "No match"
14109 "\0"
14110
14111 "Invalid regular expression"
14112 "\0"
14113
14114 "Invalid collation character"
14115 "\0"
14116
14117 "Invalid character class name"
14118 "\0"
14119
14120 "Trailing backslash"
14121 "\0"
14122
14123 "Invalid back reference"
14124 "\0"
14125
14126 "Unmatched [ or [^"
14127 "\0"
14128
14129 "Unmatched ( or \\("
14130 "\0"
14131
14132 "Unmatched \\{"
14133 "\0"
14134
14135 "Invalid content of \\{\\}"
14136 "\0"
14137
14138 "Invalid range end"
14139 "\0"
14140
14141 "Memory exhausted"
14142 "\0"
14143
14144 "Invalid preceding regular expression"
14145 "\0"
14146
14147 "Premature end of regular expression"
14148 "\0"
14149
14150 "Regular expression too big"
14151 "\0"
14152
14153 "Unmatched ) or \\)"
14154 };
14155
14156const size_t __re_error_msgid_idx[] =
14157 {
14158 0,
14159 (0 + sizeof "Success"),
14160 ((0 + sizeof "Success") + sizeof "No match"),
14161 (((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression"),
14162 ((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character"),
14163 (((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name"),
14164 ((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash"),
14165 (((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference"),
14166 ((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^"),
14167 (((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\("),
14168 ((((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\(") + sizeof "Unmatched \\{"),
14169 (((((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\(") + sizeof "Unmatched \\{") + sizeof "Invalid content of \\{\\}"),
14170 ((((((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\(") + sizeof "Unmatched \\{") + sizeof "Invalid content of \\{\\}") + sizeof "Invalid range end"),
14171 (((((((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\(") + sizeof "Unmatched \\{") + sizeof "Invalid content of \\{\\}") + sizeof "Invalid range end") + sizeof "Memory exhausted"),
14172 ((((((((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\(") + sizeof "Unmatched \\{") + sizeof "Invalid content of \\{\\}") + sizeof "Invalid range end") + sizeof "Memory exhausted") + sizeof "Invalid preceding regular expression"),
14173 (((((((((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\(") + sizeof "Unmatched \\{") + sizeof "Invalid content of \\{\\}") + sizeof "Invalid range end") + sizeof "Memory exhausted") + sizeof "Invalid preceding regular expression") + sizeof "Premature end of regular expression"),
14174 ((((((((((((((((0 + sizeof "Success") + sizeof "No match") + sizeof "Invalid regular expression") + sizeof "Invalid collation character") + sizeof "Invalid character class name") + sizeof "Trailing backslash") + sizeof "Invalid back reference") + sizeof "Unmatched [ or [^") + sizeof "Unmatched ( or \\(") + sizeof "Unmatched \\{") + sizeof "Invalid content of \\{\\}") + sizeof "Invalid range end") + sizeof "Memory exhausted") + sizeof "Invalid preceding regular expression") + sizeof "Premature end of regular expression") + sizeof "Regular expression too big")
14175 };
14176# 213 "regcomp.c"
14177const char *
14178__re_compile_pattern (pattern, length, bufp)
14179 const char *pattern;
14180 size_t length;
14181 struct re_pattern_buffer *bufp;
14182{
14183 reg_errcode_t ret;
14184
14185
14186
14187
14188 bufp->no_sub = !!(re_syntax_options & (((((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1));
14189
14190
14191 bufp->newline_anchor = 1;
14192
14193 ret = re_compile_internal (bufp, pattern, length, re_syntax_options);
14194
14195 if (!ret)
14196 return ((void *)0);
14197 return __dcgettext (_libc_intl_domainname, __re_error_msgid + __re_error_msgid_idx[(int) ret], __LC_MESSAGES);
14198}
14199
14200extern __typeof (__re_compile_pattern) re_compile_pattern __attribute__ ((weak, alias ("__re_compile_pattern")));
14201
14202
14203
14204
14205
14206
14207
14208reg_syntax_t re_syntax_options;
14209# 254 "regcomp.c"
14210reg_syntax_t
14211__re_set_syntax (syntax)
14212 reg_syntax_t syntax;
14213{
14214 reg_syntax_t ret = re_syntax_options;
14215
14216 re_syntax_options = syntax;
14217 return ret;
14218}
14219
14220extern __typeof (__re_set_syntax) re_set_syntax __attribute__ ((weak, alias ("__re_set_syntax")));
14221
14222
14223int
14224__re_compile_fastmap (bufp)
14225 struct re_pattern_buffer *bufp;
14226{
14227 re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
14228 char *fastmap = bufp->fastmap;
14229
14230 memset (fastmap, '\0', sizeof (char) * 256);
14231 re_compile_fastmap_iter (bufp, dfa->init_state, fastmap);
14232 if (dfa->init_state != dfa->init_state_word)
14233 re_compile_fastmap_iter (bufp, dfa->init_state_word, fastmap);
14234 if (dfa->init_state != dfa->init_state_nl)
14235 re_compile_fastmap_iter (bufp, dfa->init_state_nl, fastmap);
14236 if (dfa->init_state != dfa->init_state_begbuf)
14237 re_compile_fastmap_iter (bufp, dfa->init_state_begbuf, fastmap);
14238 bufp->fastmap_accurate = 1;
14239 return 0;
14240}
14241
14242extern __typeof (__re_compile_fastmap) re_compile_fastmap __attribute__ ((weak, alias ("__re_compile_fastmap")));
14243
14244
14245static inline void
14246__attribute__ ((always_inline))
14247re_set_fastmap (char *fastmap, int icase, int ch)
14248{
14249 fastmap[ch] = 1;
14250 if (icase)
14251 fastmap[(__extension__ ({ int __res; if (sizeof (ch) > 1) { if (__builtin_constant_p (ch)) { int __c = (ch); __res = __c < -128 || __c > 255 ? __c : (*__ctype_tolower_loc ())[__c]; } else __res = tolower (ch); } else __res = (*__ctype_tolower_loc ())[(int) (ch)]; __res; }))] = 1;
14252}
14253
14254
14255
14256
14257static void
14258re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
14259 char *fastmap)
14260{
14261 re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
14262 int node_cnt;
14263 int icase = (dfa->mb_cur_max == 1 && (bufp->syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)));
14264 for (node_cnt = 0; node_cnt < init_state->nodes.nelem; ++node_cnt)
14265 {
14266 int node = init_state->nodes.elems[node_cnt];
14267 re_token_type_t type = dfa->nodes[node].type;
14268
14269 if (type == CHARACTER)
14270 {
14271 re_set_fastmap (fastmap, icase, dfa->nodes[node].opr.c);
14272
14273 if ((bufp->syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && dfa->mb_cur_max > 1)
14274 {
14275 unsigned char *buf = __builtin_alloca (dfa->mb_cur_max), *p;
14276 wchar_t wc;
14277 mbstate_t state;
14278
14279 p = buf;
14280 *p++ = dfa->nodes[node].opr.c;
14281 while (++node < dfa->nodes_len
14282 && dfa->nodes[node].type == CHARACTER
14283 && dfa->nodes[node].mb_partial)
14284 *p++ = dfa->nodes[node].opr.c;
14285 memset (&state, '\0', sizeof (state));
14286 if (mbrtowc (&wc, (const char *) buf, p - buf,
14287 &state) == p - buf
14288 && (__wcrtomb ((char *) buf, towlower (wc), &state)
14289 != (size_t) -1))
14290 re_set_fastmap (fastmap, 0, buf[0]);
14291 }
14292
14293 }
14294 else if (type == SIMPLE_BRACKET)
14295 {
14296 int i, ch;
14297 for (i = 0, ch = 0; i < (256 / (sizeof (bitset_word_t) * 8)); ++i)
14298 {
14299 int j;
14300 bitset_word_t w = dfa->nodes[node].opr.sbcset[i];
14301 for (j = 0; j < (sizeof (bitset_word_t) * 8); ++j, ++ch)
14302 if (w & ((bitset_word_t) 1 << j))
14303 re_set_fastmap (fastmap, icase, ch);
14304 }
14305 }
14306
14307 else if (type == COMPLEX_BRACKET)
14308 {
14309 int i;
14310 re_charset_t *cset = dfa->nodes[node].opr.mbcset;
14311 if (cset->non_match || cset->ncoll_syms || cset->nequiv_classes
14312 || cset->nranges || cset->nchar_classes)
14313 {
14314
14315 if (((uint32_t) (*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_NRULES) & 0xffff)].word) != 0)
14316 {
14317
14318
14319
14320
14321
14322
14323 const int32_t *table = (const int32_t *)
14324 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_TABLEMB) & 0xffff)].string);
14325 for (i = 0; i < 256; ++i)
14326 if (table[i] < 0)
14327 re_set_fastmap (fastmap, icase, i);
14328 }
14329
14330
14331
14332
14333
14334
14335 }
14336 for (i = 0; i < cset->nmbchars; ++i)
14337 {
14338 char buf[256];
14339 mbstate_t state;
14340 memset (&state, '\0', sizeof (state));
14341 if (__wcrtomb (buf, cset->mbchars[i], &state) != (size_t) -1)
14342 re_set_fastmap (fastmap, icase, *(unsigned char *) buf);
14343 if ((bufp->syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && dfa->mb_cur_max > 1)
14344 {
14345 if (__wcrtomb (buf, towlower (cset->mbchars[i]), &state)
14346 != (size_t) -1)
14347 re_set_fastmap (fastmap, 0, *(unsigned char *) buf);
14348 }
14349 }
14350 }
14351
14352 else if (type == OP_PERIOD
14353
14354 || type == OP_UTF8_PERIOD
14355
14356 || type == END_OF_RE)
14357 {
14358 memset (fastmap, '\1', sizeof (char) * 256);
14359 if (type == END_OF_RE)
14360 bufp->can_be_null = 1;
14361 return;
14362 }
14363 }
14364}
14365# 446 "regcomp.c"
14366int
14367__regcomp (preg, pattern, cflags)
14368 regex_t *__restrict preg;
14369 const char *__restrict pattern;
14370 int cflags;
14371{
14372 reg_errcode_t ret;
14373 reg_syntax_t syntax = ((cflags & 1) ? ((((((unsigned long int) 1) << 1) << 1) | ((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) | (((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) | (((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) | ((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) | (((((unsigned long int) 1) << 1) << 1) << 1) | ((((((unsigned long int) 1) << 1) << 1) << 1) << 1) | ((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) | (((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) | (((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) | (((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) | (((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
14374 : ((((((unsigned long int) 1) << 1) << 1) | ((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) | (((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) | (((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) | ((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) | (((unsigned long int) 1) << 1) | ((((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)));
14375
14376 preg->buffer = ((void *)0);
14377 preg->allocated = 0;
14378 preg->used = 0;
14379
14380
14381 preg->fastmap = ((char *) malloc ((256) * sizeof (char)));
14382 if (__builtin_expect (preg->fastmap == ((void *)0), 0))
14383 return REG_ESPACE;
14384
14385 syntax |= (cflags & (1 << 1)) ? ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) : 0;
14386
14387
14388 if (cflags & ((1 << 1) << 1))
14389 {
14390 syntax &= ~((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1);
14391 syntax |= ((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1);
14392
14393 preg->newline_anchor = 1;
14394 }
14395 else
14396 preg->newline_anchor = 0;
14397 preg->no_sub = !!(cflags & (((1 << 1) << 1) << 1));
14398 preg->translate = ((void *)0);
14399
14400 ret = re_compile_internal (preg, pattern, strlen (pattern), syntax);
14401
14402
14403
14404 if (ret == REG_ERPAREN)
14405 ret = REG_EPAREN;
14406
14407
14408 if (__builtin_expect (ret == REG_NOERROR, 1))
14409
14410
14411 (void) __re_compile_fastmap (preg);
14412 else
14413 {
14414
14415 free (preg->fastmap);
14416 preg->fastmap = ((void *)0);
14417 }
14418
14419 return (int) ret;
14420}
14421
14422extern __typeof (__regcomp) regcomp __attribute__ ((weak, alias ("__regcomp")));
14423
14424
14425
14426
14427
14428size_t
14429__regerror(errcode, preg, errbuf, errbuf_size)
14430 int errcode;
14431 const regex_t *__restrict preg;
14432 char *__restrict errbuf;
14433 size_t errbuf_size;
14434{
14435 const char *msg;
14436 size_t msg_size;
14437
14438 if (__builtin_expect (errcode < 0 || errcode >= (int) (sizeof (__re_error_msgid_idx) / sizeof (__re_error_msgid_idx[0])), 0))
14439
14440
14441
14442
14443
14444
14445 abort ();
14446
14447 msg = __dcgettext (_libc_intl_domainname, __re_error_msgid + __re_error_msgid_idx[errcode], __LC_MESSAGES);
14448
14449 msg_size = strlen (msg) + 1;
14450
14451 if (__builtin_expect (errbuf_size != 0, 1))
14452 {
14453 if (__builtin_expect (msg_size > errbuf_size, 0))
14454 {
14455
14456 *((char *) __builtin_mempcpy (errbuf, msg, errbuf_size - 1)) = '\0';
14457
14458
14459
14460
14461 }
14462 else
14463 memcpy (errbuf, msg, msg_size);
14464 }
14465
14466 return msg_size;
14467}
14468
14469extern __typeof (__regerror) regerror __attribute__ ((weak, alias ("__regerror")));
14470# 558 "regcomp.c"
14471static const bitset_t utf8_sb_map =
14472{
14473
14474 [0 ... 0x80 / (sizeof (bitset_word_t) * 8) - 1] = (2147483647L * 2UL + 1UL)
14475};
14476
14477
14478
14479static void
14480free_dfa_content (re_dfa_t *dfa)
14481{
14482 int i, j;
14483
14484 if (dfa->nodes)
14485 for (i = 0; i < dfa->nodes_len; ++i)
14486 free_token (dfa->nodes + i);
14487 free (dfa->nexts);
14488 for (i = 0; i < dfa->nodes_len; ++i)
14489 {
14490 if (dfa->eclosures != ((void *)0))
14491 free ((dfa->eclosures + i)->elems);
14492 if (dfa->inveclosures != ((void *)0))
14493 free ((dfa->inveclosures + i)->elems);
14494 if (dfa->edests != ((void *)0))
14495 free ((dfa->edests + i)->elems);
14496 }
14497 free (dfa->edests);
14498 free (dfa->eclosures);
14499 free (dfa->inveclosures);
14500 free (dfa->nodes);
14501
14502 if (dfa->state_table)
14503 for (i = 0; i <= dfa->state_hash_mask; ++i)
14504 {
14505 struct re_state_table_entry *entry = dfa->state_table + i;
14506 for (j = 0; j < entry->num; ++j)
14507 {
14508 re_dfastate_t *state = entry->array[j];
14509 free_state (state);
14510 }
14511 free (entry->array);
14512 }
14513 free (dfa->state_table);
14514
14515 if (dfa->sb_char != utf8_sb_map)
14516 free (dfa->sb_char);
14517
14518 free (dfa->subexp_map);
14519
14520
14521
14522
14523 free (dfa);
14524}
14525
14526
14527
14528
14529void
14530__regfree (preg)
14531 regex_t *preg;
14532{
14533 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
14534 if (__builtin_expect (dfa != ((void *)0), 1))
14535 free_dfa_content (dfa);
14536 preg->buffer = ((void *)0);
14537 preg->allocated = 0;
14538
14539 free (preg->fastmap);
14540 preg->fastmap = ((void *)0);
14541
14542 free (preg->translate);
14543 preg->translate = ((void *)0);
14544}
14545
14546extern __typeof (__regfree) regfree __attribute__ ((weak, alias ("__regfree")));
14547# 642 "regcomp.c"
14548static struct re_pattern_buffer re_comp_buf;
14549
14550char *
14551
14552
14553
14554
14555__attribute__ ((weak))
14556
14557re_comp (s)
14558 const char *s;
14559{
14560 reg_errcode_t ret;
14561 char *fastmap;
14562
14563 if (!s)
14564 {
14565 if (!re_comp_buf.buffer)
14566 return __dcgettext (_libc_intl_domainname, "No previous regular expression", __LC_MESSAGES);
14567 return 0;
14568 }
14569
14570 if (re_comp_buf.buffer)
14571 {
14572 fastmap = re_comp_buf.fastmap;
14573 re_comp_buf.fastmap = ((void *)0);
14574 __regfree (&re_comp_buf);
14575 memset (&re_comp_buf, '\0', sizeof (re_comp_buf));
14576 re_comp_buf.fastmap = fastmap;
14577 }
14578
14579 if (re_comp_buf.fastmap == ((void *)0))
14580 {
14581 re_comp_buf.fastmap = (char *) malloc (256);
14582 if (re_comp_buf.fastmap == ((void *)0))
14583 return (char *) __dcgettext (_libc_intl_domainname, __re_error_msgid + __re_error_msgid_idx[(int) REG_ESPACE], __LC_MESSAGES);
14584
14585 }
14586
14587
14588
14589
14590
14591 re_comp_buf.newline_anchor = 1;
14592
14593 ret = re_compile_internal (&re_comp_buf, s, strlen (s), re_syntax_options);
14594
14595 if (!ret)
14596 return ((void *)0);
14597
14598
14599 return (char *) __dcgettext (_libc_intl_domainname, __re_error_msgid + __re_error_msgid_idx[(int) ret], __LC_MESSAGES);
14600}
14601
14602
14603static void free_mem (void) __attribute__ ((__used__)) __attribute__ ((section ("__libc_freeres_fn"))); static const void *const __elf_set___libc_subfreeres_element_free_mem__ __attribute__ ((used, section ("__libc_subfreeres"))) = &(free_mem); static void free_mem (void)
14604{
14605 __regfree (&re_comp_buf);
14606}
14607# 709 "regcomp.c"
14608static reg_errcode_t
14609re_compile_internal (regex_t *preg, const char * pattern, size_t length,
14610 reg_syntax_t syntax)
14611{
14612 reg_errcode_t err = REG_NOERROR;
14613 re_dfa_t *dfa;
14614 re_string_t regexp;
14615
14616
14617 preg->fastmap_accurate = 0;
14618 preg->syntax = syntax;
14619 preg->not_bol = preg->not_eol = 0;
14620 preg->used = 0;
14621 preg->re_nsub = 0;
14622 preg->can_be_null = 0;
14623 preg->regs_allocated = 0;
14624
14625
14626 dfa = (re_dfa_t *) preg->buffer;
14627 if (__builtin_expect (preg->allocated < sizeof (re_dfa_t), 0))
14628 {
14629
14630
14631
14632
14633 dfa = ((re_dfa_t *) realloc (preg->buffer, (1) * sizeof (re_dfa_t)));
14634 if (dfa == ((void *)0))
14635 return REG_ESPACE;
14636 preg->allocated = sizeof (re_dfa_t);
14637 preg->buffer = (unsigned char *) dfa;
14638 }
14639 preg->used = sizeof (re_dfa_t);
14640
14641 err = init_dfa (dfa, length);
14642 if (__builtin_expect (err != REG_NOERROR, 0))
14643 {
14644 free_dfa_content (dfa);
14645 preg->buffer = ((void *)0);
14646 preg->allocated = 0;
14647 return err;
14648 }
14649
14650
14651
14652
14653
14654
14655 ((dfa->lock) = (0), 0);
14656
14657 err = re_string_construct (&regexp, pattern, length, preg->translate,
14658 syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1), dfa);
14659 if (__builtin_expect (err != REG_NOERROR, 0))
14660 {
14661 re_compile_internal_free_return:
14662 free_workarea_compile (preg);
14663 re_string_destruct (&regexp);
14664 free_dfa_content (dfa);
14665 preg->buffer = ((void *)0);
14666 preg->allocated = 0;
14667 return err;
14668 }
14669
14670
14671 preg->re_nsub = 0;
14672 dfa->str_tree = parse (&regexp, preg, syntax, &err);
14673 if (__builtin_expect (dfa->str_tree == ((void *)0), 0))
14674 goto re_compile_internal_free_return;
14675
14676
14677 err = analyze (preg);
14678 if (__builtin_expect (err != REG_NOERROR, 0))
14679 goto re_compile_internal_free_return;
14680
14681
14682
14683 if (dfa->is_utf8 && !(syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && preg->translate == ((void *)0))
14684 optimize_utf8 (dfa);
14685
14686
14687
14688 err = create_initial_state (dfa);
14689
14690
14691 free_workarea_compile (preg);
14692 re_string_destruct (&regexp);
14693
14694 if (__builtin_expect (err != REG_NOERROR, 0))
14695 {
14696 free_dfa_content (dfa);
14697 preg->buffer = ((void *)0);
14698 preg->allocated = 0;
14699 }
14700
14701 return err;
14702}
14703
14704
14705
14706
14707static reg_errcode_t
14708init_dfa (re_dfa_t *dfa, size_t pat_len)
14709{
14710 unsigned int table_size;
14711
14712
14713
14714
14715 memset (dfa, '\0', sizeof (re_dfa_t));
14716
14717
14718 dfa->str_tree_storage_idx = ((1024 - sizeof (void *)) / sizeof (bin_tree_t));
14719
14720
14721 if (pat_len == (4294967295U))
14722 return REG_ESPACE;
14723
14724 dfa->nodes_alloc = pat_len + 1;
14725 dfa->nodes = ((re_token_t *) malloc ((dfa->nodes_alloc) * sizeof (re_token_t)));
14726
14727
14728 for (table_size = 1; ; table_size <<= 1)
14729 if (table_size > pat_len)
14730 break;
14731
14732 dfa->state_table = calloc (sizeof (struct re_state_table_entry), table_size);
14733 dfa->state_hash_mask = table_size - 1;
14734
14735 dfa->mb_cur_max = (((uint32_t) (*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_MB_CUR_MAX) & 0xffff)].word));
14736
14737 if (dfa->mb_cur_max == 6
14738 && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) && __builtin_constant_p ("UTF-8") && (__s1_len = strlen (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)), __s2_len = strlen ("UTF-8"), (!((size_t)(const void *)((((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) + 1) - (size_t)(const void *)(((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("UTF-8") + 1) - (size_t)(const void *)("UTF-8") == 1) || __s2_len >= 4)) ? __builtin_strcmp (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string), "UTF-8") : (__builtin_constant_p (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) && ((size_t)(const void *)((((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) + 1) - (size_t)(const void *)(((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) == 1) && (__s1_len = strlen (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)), __s1_len < 4) ? (__builtin_constant_p ("UTF-8") && ((size_t)(const void *)(("UTF-8") + 1) - (size_t)(const void *)("UTF-8") == 1) ? __builtin_strcmp (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string), "UTF-8") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("UTF-8"); register int __result = (((__const unsigned char *) (__const char *) (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("UTF-8") && ((size_t)(const void *)(("UTF-8") + 1) - (size_t)(const void *)("UTF-8") == 1) && (__s2_len = strlen ("UTF-8"), __s2_len < 4) ? (__builtin_constant_p (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) && ((size_t)(const void *)((((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) + 1) - (size_t)(const void *)(((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)) == 1) ? __builtin_strcmp (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string), "UTF-8") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("UTF-8"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("UTF-8"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("UTF-8"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("UTF-8"))[3]); } } __result; }))) : __builtin_strcmp (((*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_CODESET_NAME) & 0xffff)].string), "UTF-8")))); }) == 0)
14739 dfa->is_utf8 = 1;
14740 dfa->map_notascii = (((uint32_t) (*_nl_current_LC_CTYPE)->values[((int) (_NL_CTYPE_MAP_TO_NONASCII) & 0xffff)].word)
14741 != 0);
14742# 868 "regcomp.c"
14743 if (dfa->mb_cur_max > 1)
14744 {
14745 if (dfa->is_utf8)
14746 dfa->sb_char = (re_bitset_ptr_t) utf8_sb_map;
14747 else
14748 {
14749 int i, j, ch;
14750
14751 dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
14752 if (__builtin_expect (dfa->sb_char == ((void *)0), 0))
14753 return REG_ESPACE;
14754
14755
14756 for (i = 0, ch = 0; i < (256 / (sizeof (bitset_word_t) * 8)); ++i)
14757 for (j = 0; j < (sizeof (bitset_word_t) * 8); ++j, ++ch)
14758 {
14759 wint_t wch = __btowc (ch);
14760 if (wch != (0xffffffffu))
14761 dfa->sb_char[i] |= (bitset_word_t) 1 << j;
14762
14763
14764
14765
14766 }
14767 }
14768 }
14769
14770
14771 if (__builtin_expect (dfa->nodes == ((void *)0) || dfa->state_table == ((void *)0), 0))
14772 return REG_ESPACE;
14773 return REG_NOERROR;
14774}
14775
14776
14777
14778
14779
14780static void
14781
14782init_word_char (re_dfa_t *dfa)
14783{
14784 int i, j, ch;
14785 dfa->word_ops_used = 1;
14786 for (i = 0, ch = 0; i < (256 / (sizeof (bitset_word_t) * 8)); ++i)
14787 for (j = 0; j < (sizeof (bitset_word_t) * 8); ++j, ++ch)
14788 if (((*__ctype_b_loc ())[(int) ((ch))] & (unsigned short int) _ISalnum) || ch == '_')
14789 dfa->word_char[i] |= (bitset_word_t) 1 << j;
14790}
14791
14792
14793
14794static void
14795free_workarea_compile (regex_t *preg)
14796{
14797 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
14798 bin_tree_storage_t *storage, *next;
14799 for (storage = dfa->str_tree_storage; storage; storage = next)
14800 {
14801 next = storage->next;
14802 free (storage);
14803 }
14804 dfa->str_tree_storage = ((void *)0);
14805 dfa->str_tree_storage_idx = ((1024 - sizeof (void *)) / sizeof (bin_tree_t));
14806 dfa->str_tree = ((void *)0);
14807 free (dfa->org_indices);
14808 dfa->org_indices = ((void *)0);
14809}
14810
14811
14812
14813static reg_errcode_t
14814create_initial_state (re_dfa_t *dfa)
14815{
14816 int first, i;
14817 reg_errcode_t err;
14818 re_node_set init_nodes;
14819
14820
14821
14822 first = dfa->str_tree->first->node_idx;
14823 dfa->init_node = first;
14824 err = re_node_set_init_copy (&init_nodes, dfa->eclosures + first);
14825 if (__builtin_expect (err != REG_NOERROR, 0))
14826 return err;
14827
14828
14829
14830
14831
14832 if (dfa->nbackref > 0)
14833 for (i = 0; i < init_nodes.nelem; ++i)
14834 {
14835 int node_idx = init_nodes.elems[i];
14836 re_token_type_t type = dfa->nodes[node_idx].type;
14837
14838 int clexp_idx;
14839 if (type != OP_BACK_REF)
14840 continue;
14841 for (clexp_idx = 0; clexp_idx < init_nodes.nelem; ++clexp_idx)
14842 {
14843 re_token_t *clexp_node;
14844 clexp_node = dfa->nodes + init_nodes.elems[clexp_idx];
14845 if (clexp_node->type == OP_CLOSE_SUBEXP
14846 && clexp_node->opr.idx == dfa->nodes[node_idx].opr.idx)
14847 break;
14848 }
14849 if (clexp_idx == init_nodes.nelem)
14850 continue;
14851
14852 if (type == OP_BACK_REF)
14853 {
14854 int dest_idx = dfa->edests[node_idx].elems[0];
14855 if (!re_node_set_contains (&init_nodes, dest_idx))
14856 {
14857 re_node_set_merge (&init_nodes, dfa->eclosures + dest_idx);
14858 i = 0;
14859 }
14860 }
14861 }
14862
14863
14864 dfa->init_state = re_acquire_state_context (&err, dfa, &init_nodes, 0);
14865
14866 if (__builtin_expect (dfa->init_state == ((void *)0), 0))
14867 return err;
14868 if (dfa->init_state->has_constraint)
14869 {
14870 dfa->init_state_word = re_acquire_state_context (&err, dfa, &init_nodes,
14871 1);
14872 dfa->init_state_nl = re_acquire_state_context (&err, dfa, &init_nodes,
14873 (1 << 1));
14874 dfa->init_state_begbuf = re_acquire_state_context (&err, dfa,
14875 &init_nodes,
14876 (1 << 1)
14877 | ((1 << 1) << 1));
14878 if (__builtin_expect (dfa->init_state_word == ((void *)0) || dfa->init_state_nl == ((void *)0) || dfa->init_state_begbuf == ((void *)0), 0))
14879
14880 return err;
14881 }
14882 else
14883 dfa->init_state_word = dfa->init_state_nl
14884 = dfa->init_state_begbuf = dfa->init_state;
14885
14886 free ((&init_nodes)->elems);
14887 return REG_NOERROR;
14888}
14889
14890
14891
14892
14893
14894
14895static void
14896optimize_utf8 (re_dfa_t *dfa)
14897{
14898 int node, i, mb_chars = 0, has_period = 0;
14899
14900 for (node = 0; node < dfa->nodes_len; ++node)
14901 switch (dfa->nodes[node].type)
14902 {
14903 case CHARACTER:
14904 if (dfa->nodes[node].opr.c >= 0x80)
14905 mb_chars = 1;
14906 break;
14907 case ANCHOR:
14908 switch (dfa->nodes[node].opr.idx)
14909 {
14910 case LINE_FIRST:
14911 case LINE_LAST:
14912 case BUF_FIRST:
14913 case BUF_LAST:
14914 break;
14915 default:
14916
14917 return;
14918 }
14919 break;
14920 case OP_PERIOD:
14921 has_period = 1;
14922 break;
14923 case OP_BACK_REF:
14924 case OP_ALT:
14925 case END_OF_RE:
14926 case OP_DUP_ASTERISK:
14927 case OP_OPEN_SUBEXP:
14928 case OP_CLOSE_SUBEXP:
14929 break;
14930 case COMPLEX_BRACKET:
14931 return;
14932 case SIMPLE_BRACKET:
14933
14934 ((0x80 % (sizeof (bitset_word_t) * 8) == 0) ? (void) (0) : (__assert_fail ("0x80 % (sizeof (bitset_word_t) * 8) == 0", "regcomp.c", 1059, __PRETTY_FUNCTION__), (void) (0)));
14935 for (i = 0x80 / (sizeof (bitset_word_t) * 8); i < (256 / (sizeof (bitset_word_t) * 8)); ++i)
14936 if (dfa->nodes[node].opr.sbcset[i])
14937 return;
14938 break;
14939 default:
14940 abort ();
14941 }
14942
14943 if (mb_chars || has_period)
14944 for (node = 0; node < dfa->nodes_len; ++node)
14945 {
14946 if (dfa->nodes[node].type == CHARACTER
14947 && dfa->nodes[node].opr.c >= 0x80)
14948 dfa->nodes[node].mb_partial = 0;
14949 else if (dfa->nodes[node].type == OP_PERIOD)
14950 dfa->nodes[node].type = OP_UTF8_PERIOD;
14951 }
14952
14953
14954 dfa->mb_cur_max = 1;
14955 dfa->is_utf8 = 0;
14956 dfa->has_mb_node = dfa->nbackref > 0 || has_period;
14957}
14958
14959
14960
14961
14962
14963static reg_errcode_t
14964analyze (regex_t *preg)
14965{
14966 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
14967 reg_errcode_t ret;
14968
14969
14970 dfa->nexts = ((int *) malloc ((dfa->nodes_alloc) * sizeof (int)));
14971 dfa->org_indices = ((int *) malloc ((dfa->nodes_alloc) * sizeof (int)));
14972 dfa->edests = ((re_node_set *) malloc ((dfa->nodes_alloc) * sizeof (re_node_set)));
14973 dfa->eclosures = ((re_node_set *) malloc ((dfa->nodes_alloc) * sizeof (re_node_set)));
14974 if (__builtin_expect (dfa->nexts == ((void *)0) || dfa->org_indices == ((void *)0) || dfa->edests == ((void *)0) || dfa->eclosures == ((void *)0), 0))
14975
14976 return REG_ESPACE;
14977
14978 dfa->subexp_map = ((int *) malloc ((preg->re_nsub) * sizeof (int)));
14979 if (dfa->subexp_map != ((void *)0))
14980 {
14981 int i;
14982 for (i = 0; i < preg->re_nsub; i++)
14983 dfa->subexp_map[i] = i;
14984 preorder (dfa->str_tree, optimize_subexps, dfa);
14985 for (i = 0; i < preg->re_nsub; i++)
14986 if (dfa->subexp_map[i] != i)
14987 break;
14988 if (i == preg->re_nsub)
14989 {
14990 free (dfa->subexp_map);
14991 dfa->subexp_map = ((void *)0);
14992 }
14993 }
14994
14995 ret = postorder (dfa->str_tree, lower_subexps, preg);
14996 if (__builtin_expect (ret != REG_NOERROR, 0))
14997 return ret;
14998 ret = postorder (dfa->str_tree, calc_first, dfa);
14999 if (__builtin_expect (ret != REG_NOERROR, 0))
15000 return ret;
15001 preorder (dfa->str_tree, calc_next, dfa);
15002 ret = preorder (dfa->str_tree, link_nfa_nodes, dfa);
15003 if (__builtin_expect (ret != REG_NOERROR, 0))
15004 return ret;
15005 ret = calc_eclosure (dfa);
15006 if (__builtin_expect (ret != REG_NOERROR, 0))
15007 return ret;
15008
15009
15010
15011 if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
15012 || dfa->nbackref)
15013 {
15014 dfa->inveclosures = ((re_node_set *) malloc ((dfa->nodes_len) * sizeof (re_node_set)));
15015 if (__builtin_expect (dfa->inveclosures == ((void *)0), 0))
15016 return REG_ESPACE;
15017 ret = calc_inveclosure (dfa);
15018 }
15019
15020 return ret;
15021}
15022
15023
15024
15025
15026static reg_errcode_t
15027postorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
15028 void *extra)
15029{
15030 bin_tree_t *node, *prev;
15031
15032 for (node = root; ; )
15033 {
15034
15035
15036 while (node->left || node->right)
15037 if (node->left)
15038 node = node->left;
15039 else
15040 node = node->right;
15041
15042 do
15043 {
15044 reg_errcode_t err = fn (extra, node);
15045 if (__builtin_expect (err != REG_NOERROR, 0))
15046 return err;
15047 if (node->parent == ((void *)0))
15048 return REG_NOERROR;
15049 prev = node;
15050 node = node->parent;
15051 }
15052
15053 while (node->right == prev || node->right == ((void *)0));
15054 node = node->right;
15055 }
15056}
15057
15058static reg_errcode_t
15059preorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
15060 void *extra)
15061{
15062 bin_tree_t *node;
15063
15064 for (node = root; ; )
15065 {
15066 reg_errcode_t err = fn (extra, node);
15067 if (__builtin_expect (err != REG_NOERROR, 0))
15068 return err;
15069
15070
15071 if (node->left)
15072 node = node->left;
15073 else
15074 {
15075 bin_tree_t *prev = ((void *)0);
15076 while (node->right == prev || node->right == ((void *)0))
15077 {
15078 prev = node;
15079 node = node->parent;
15080 if (!node)
15081 return REG_NOERROR;
15082 }
15083 node = node->right;
15084 }
15085 }
15086}
15087
15088
15089
15090
15091static reg_errcode_t
15092optimize_subexps (void *extra, bin_tree_t *node)
15093{
15094 re_dfa_t *dfa = (re_dfa_t *) extra;
15095
15096 if (node->token.type == OP_BACK_REF && dfa->subexp_map)
15097 {
15098 int idx = node->token.opr.idx;
15099 node->token.opr.idx = dfa->subexp_map[idx];
15100 dfa->used_bkref_map |= 1 << node->token.opr.idx;
15101 }
15102
15103 else if (node->token.type == SUBEXP
15104 && node->left && node->left->token.type == SUBEXP)
15105 {
15106 int other_idx = node->left->token.opr.idx;
15107
15108 node->left = node->left->left;
15109 if (node->left)
15110 node->left->parent = node;
15111
15112 dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
15113 if (other_idx < (sizeof (bitset_word_t) * 8))
15114 dfa->used_bkref_map &= ~((bitset_word_t) 1 << other_idx);
15115 }
15116
15117 return REG_NOERROR;
15118}
15119
15120
15121
15122static reg_errcode_t
15123lower_subexps (void *extra, bin_tree_t *node)
15124{
15125 regex_t *preg = (regex_t *) extra;
15126 reg_errcode_t err = REG_NOERROR;
15127
15128 if (node->left && node->left->token.type == SUBEXP)
15129 {
15130 node->left = lower_subexp (&err, preg, node->left);
15131 if (node->left)
15132 node->left->parent = node;
15133 }
15134 if (node->right && node->right->token.type == SUBEXP)
15135 {
15136 node->right = lower_subexp (&err, preg, node->right);
15137 if (node->right)
15138 node->right->parent = node;
15139 }
15140
15141 return err;
15142}
15143
15144static bin_tree_t *
15145lower_subexp (reg_errcode_t *err, regex_t *preg, bin_tree_t *node)
15146{
15147 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
15148 bin_tree_t *body = node->left;
15149 bin_tree_t *op, *cls, *tree1, *tree;
15150
15151 if (preg->no_sub
15152
15153
15154
15155
15156 && node->left != ((void *)0)
15157 && (node->token.opr.idx >= (sizeof (bitset_word_t) * 8)
15158 || !(dfa->used_bkref_map
15159 & ((bitset_word_t) 1 << node->token.opr.idx))))
15160 return node->left;
15161
15162
15163
15164 op = create_tree (dfa, ((void *)0), ((void *)0), OP_OPEN_SUBEXP);
15165 cls = create_tree (dfa, ((void *)0), ((void *)0), OP_CLOSE_SUBEXP);
15166 tree1 = body ? create_tree (dfa, body, cls, CONCAT) : cls;
15167 tree = create_tree (dfa, op, tree1, CONCAT);
15168 if (__builtin_expect (tree == ((void *)0) || tree1 == ((void *)0) || op == ((void *)0) || cls == ((void *)0), 0))
15169 {
15170 *err = REG_ESPACE;
15171 return ((void *)0);
15172 }
15173
15174 op->token.opr.idx = cls->token.opr.idx = node->token.opr.idx;
15175 op->token.opt_subexp = cls->token.opt_subexp = node->token.opt_subexp;
15176 return tree;
15177}
15178
15179
15180
15181static reg_errcode_t
15182calc_first (void *extra, bin_tree_t *node)
15183{
15184 re_dfa_t *dfa = (re_dfa_t *) extra;
15185 if (node->token.type == CONCAT)
15186 {
15187 node->first = node->left->first;
15188 node->node_idx = node->left->node_idx;
15189 }
15190 else
15191 {
15192 node->first = node;
15193 node->node_idx = re_dfa_add_node (dfa, node->token);
15194 if (__builtin_expect (node->node_idx == -1, 0))
15195 return REG_ESPACE;
15196 }
15197 return REG_NOERROR;
15198}
15199
15200
15201static reg_errcode_t
15202calc_next (void *extra, bin_tree_t *node)
15203{
15204 switch (node->token.type)
15205 {
15206 case OP_DUP_ASTERISK:
15207 node->left->next = node;
15208 break;
15209 case CONCAT:
15210 node->left->next = node->right->first;
15211 node->right->next = node->next;
15212 break;
15213 default:
15214 if (node->left)
15215 node->left->next = node->next;
15216 if (node->right)
15217 node->right->next = node->next;
15218 break;
15219 }
15220 return REG_NOERROR;
15221}
15222
15223
15224static reg_errcode_t
15225link_nfa_nodes (void *extra, bin_tree_t *node)
15226{
15227 re_dfa_t *dfa = (re_dfa_t *) extra;
15228 int idx = node->node_idx;
15229 reg_errcode_t err = REG_NOERROR;
15230
15231 switch (node->token.type)
15232 {
15233 case CONCAT:
15234 break;
15235
15236 case END_OF_RE:
15237 ((node->next == ((void *)0)) ? (void) (0) : (__assert_fail ("node->next == ((void *)0)", "regcomp.c", 1362, __PRETTY_FUNCTION__), (void) (0)));
15238 break;
15239
15240 case OP_DUP_ASTERISK:
15241 case OP_ALT:
15242 {
15243 int left, right;
15244 dfa->has_plural_match = 1;
15245 if (node->left != ((void *)0))
15246 left = node->left->first->node_idx;
15247 else
15248 left = node->next->node_idx;
15249 if (node->right != ((void *)0))
15250 right = node->right->first->node_idx;
15251 else
15252 right = node->next->node_idx;
15253 ((left > -1) ? (void) (0) : (__assert_fail ("left > -1", "regcomp.c", 1378, __PRETTY_FUNCTION__), (void) (0)));
15254 ((right > -1) ? (void) (0) : (__assert_fail ("right > -1", "regcomp.c", 1379, __PRETTY_FUNCTION__), (void) (0)));
15255 err = re_node_set_init_2 (dfa->edests + idx, left, right);
15256 }
15257 break;
15258
15259 case ANCHOR:
15260 case OP_OPEN_SUBEXP:
15261 case OP_CLOSE_SUBEXP:
15262 err = re_node_set_init_1 (dfa->edests + idx, node->next->node_idx);
15263 break;
15264
15265 case OP_BACK_REF:
15266 dfa->nexts[idx] = node->next->node_idx;
15267 if (node->token.type == OP_BACK_REF)
15268 re_node_set_init_1 (dfa->edests + idx, dfa->nexts[idx]);
15269 break;
15270
15271 default:
15272 ((!((node->token.type) & 8)) ? (void) (0) : (__assert_fail ("!((node->token.type) & 8)", "regcomp.c", 1397, __PRETTY_FUNCTION__), (void) (0)));
15273 dfa->nexts[idx] = node->next->node_idx;
15274 break;
15275 }
15276
15277 return err;
15278}
15279
15280
15281
15282
15283
15284static reg_errcode_t
15285
15286duplicate_node_closure (re_dfa_t *dfa, int top_org_node, int top_clone_node,
15287 int root_node, unsigned int init_constraint)
15288{
15289 int org_node, clone_node, ret;
15290 unsigned int constraint = init_constraint;
15291 for (org_node = top_org_node, clone_node = top_clone_node;;)
15292 {
15293 int org_dest, clone_dest;
15294 if (dfa->nodes[org_node].type == OP_BACK_REF)
15295 {
15296
15297
15298
15299
15300 org_dest = dfa->nexts[org_node];
15301 ((dfa->edests + clone_node)->nelem = 0);
15302 clone_dest = duplicate_node (dfa, org_dest, constraint);
15303 if (__builtin_expect (clone_dest == -1, 0))
15304 return REG_ESPACE;
15305 dfa->nexts[clone_node] = dfa->nexts[org_node];
15306 ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
15307 if (__builtin_expect (ret < 0, 0))
15308 return REG_ESPACE;
15309 }
15310 else if (dfa->edests[org_node].nelem == 0)
15311 {
15312
15313
15314
15315 dfa->nexts[clone_node] = dfa->nexts[org_node];
15316 break;
15317 }
15318 else if (dfa->edests[org_node].nelem == 1)
15319 {
15320
15321
15322 org_dest = dfa->edests[org_node].elems[0];
15323 ((dfa->edests + clone_node)->nelem = 0);
15324 if (dfa->nodes[org_node].type == ANCHOR)
15325 {
15326
15327 if (org_node == root_node && clone_node != org_node)
15328 {
15329
15330
15331
15332 ret = re_node_set_insert (dfa->edests + clone_node,
15333 org_dest);
15334 if (__builtin_expect (ret < 0, 0))
15335 return REG_ESPACE;
15336 break;
15337 }
15338 constraint |= dfa->nodes[org_node].opr.ctx_type;
15339 }
15340 clone_dest = duplicate_node (dfa, org_dest, constraint);
15341 if (__builtin_expect (clone_dest == -1, 0))
15342 return REG_ESPACE;
15343 ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
15344 if (__builtin_expect (ret < 0, 0))
15345 return REG_ESPACE;
15346 }
15347 else
15348 {
15349
15350
15351 org_dest = dfa->edests[org_node].elems[0];
15352 ((dfa->edests + clone_node)->nelem = 0);
15353
15354 clone_dest = search_duplicated_node (dfa, org_dest, constraint);
15355 if (clone_dest == -1)
15356 {
15357
15358 reg_errcode_t err;
15359 clone_dest = duplicate_node (dfa, org_dest, constraint);
15360 if (__builtin_expect (clone_dest == -1, 0))
15361 return REG_ESPACE;
15362 ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
15363 if (__builtin_expect (ret < 0, 0))
15364 return REG_ESPACE;
15365 err = duplicate_node_closure (dfa, org_dest, clone_dest,
15366 root_node, constraint);
15367 if (__builtin_expect (err != REG_NOERROR, 0))
15368 return err;
15369 }
15370 else
15371 {
15372
15373
15374 ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
15375 if (__builtin_expect (ret < 0, 0))
15376 return REG_ESPACE;
15377 }
15378
15379 org_dest = dfa->edests[org_node].elems[1];
15380 clone_dest = duplicate_node (dfa, org_dest, constraint);
15381 if (__builtin_expect (clone_dest == -1, 0))
15382 return REG_ESPACE;
15383 ret = re_node_set_insert (dfa->edests + clone_node, clone_dest);
15384 if (__builtin_expect (ret < 0, 0))
15385 return REG_ESPACE;
15386 }
15387 org_node = org_dest;
15388 clone_node = clone_dest;
15389 }
15390 return REG_NOERROR;
15391}
15392
15393
15394
15395
15396static int
15397search_duplicated_node (const re_dfa_t *dfa, int org_node,
15398 unsigned int constraint)
15399{
15400 int idx;
15401 for (idx = dfa->nodes_len - 1; dfa->nodes[idx].duplicated && idx > 0; --idx)
15402 {
15403 if (org_node == dfa->org_indices[idx]
15404 && constraint == dfa->nodes[idx].constraint)
15405 return idx;
15406 }
15407 return -1;
15408}
15409
15410
15411
15412
15413
15414static int
15415duplicate_node (re_dfa_t *dfa, int org_idx, unsigned int constraint)
15416{
15417 int dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx]);
15418 if (__builtin_expect (dup_idx != -1, 1))
15419 {
15420 dfa->nodes[dup_idx].constraint = constraint;
15421 if (dfa->nodes[org_idx].type == ANCHOR)
15422 dfa->nodes[dup_idx].constraint |= dfa->nodes[org_idx].opr.ctx_type;
15423 dfa->nodes[dup_idx].duplicated = 1;
15424
15425
15426 dfa->org_indices[dup_idx] = org_idx;
15427 }
15428 return dup_idx;
15429}
15430
15431static reg_errcode_t
15432calc_inveclosure (re_dfa_t *dfa)
15433{
15434 int src, idx, ret;
15435 for (idx = 0; idx < dfa->nodes_len; ++idx)
15436 memset (dfa->inveclosures + idx, '\0', sizeof (re_node_set));
15437
15438 for (src = 0; src < dfa->nodes_len; ++src)
15439 {
15440 int *elems = dfa->eclosures[src].elems;
15441 for (idx = 0; idx < dfa->eclosures[src].nelem; ++idx)
15442 {
15443 ret = re_node_set_insert_last (dfa->inveclosures + elems[idx], src);
15444 if (__builtin_expect (ret == -1, 0))
15445 return REG_ESPACE;
15446 }
15447 }
15448
15449 return REG_NOERROR;
15450}
15451
15452
15453
15454static reg_errcode_t
15455calc_eclosure (re_dfa_t *dfa)
15456{
15457 int node_idx, incomplete;
15458
15459
15460
15461 incomplete = 0;
15462
15463 for (node_idx = 0; ; ++node_idx)
15464 {
15465 reg_errcode_t err;
15466 re_node_set eclosure_elem;
15467 if (node_idx == dfa->nodes_len)
15468 {
15469 if (!incomplete)
15470 break;
15471 incomplete = 0;
15472 node_idx = 0;
15473 }
15474
15475
15476
15477
15478
15479
15480 if (dfa->eclosures[node_idx].nelem != 0)
15481 continue;
15482
15483 err = calc_eclosure_iter (&eclosure_elem, dfa, node_idx, 1);
15484 if (__builtin_expect (err != REG_NOERROR, 0))
15485 return err;
15486
15487 if (dfa->eclosures[node_idx].nelem == 0)
15488 {
15489 incomplete = 1;
15490 free ((&eclosure_elem)->elems);
15491 }
15492 }
15493 return REG_NOERROR;
15494}
15495
15496
15497
15498static reg_errcode_t
15499calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, int node, int root)
15500{
15501 reg_errcode_t err;
15502 unsigned int constraint;
15503 int i, incomplete;
15504 re_node_set eclosure;
15505 incomplete = 0;
15506 err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1);
15507 if (__builtin_expect (err != REG_NOERROR, 0))
15508 return err;
15509
15510
15511
15512 dfa->eclosures[node].nelem = -1;
15513
15514 constraint = ((dfa->nodes[node].type == ANCHOR)
15515 ? dfa->nodes[node].opr.ctx_type : 0);
15516
15517
15518 if (constraint
15519 && dfa->edests[node].nelem
15520 && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
15521 {
15522 err = duplicate_node_closure (dfa, node, node, node, constraint);
15523 if (__builtin_expect (err != REG_NOERROR, 0))
15524 return err;
15525 }
15526
15527
15528 if (((dfa->nodes[node].type) & 8))
15529 for (i = 0; i < dfa->edests[node].nelem; ++i)
15530 {
15531 re_node_set eclosure_elem;
15532 int edest = dfa->edests[node].elems[i];
15533
15534
15535 if (dfa->eclosures[edest].nelem == -1)
15536 {
15537 incomplete = 1;
15538 continue;
15539 }
15540
15541
15542 if (dfa->eclosures[edest].nelem == 0)
15543 {
15544 err = calc_eclosure_iter (&eclosure_elem, dfa, edest, 0);
15545 if (__builtin_expect (err != REG_NOERROR, 0))
15546 return err;
15547 }
15548 else
15549 eclosure_elem = dfa->eclosures[edest];
15550
15551 re_node_set_merge (&eclosure, &eclosure_elem);
15552
15553
15554 if (dfa->eclosures[edest].nelem == 0)
15555 {
15556 incomplete = 1;
15557 free ((&eclosure_elem)->elems);
15558 }
15559 }
15560
15561
15562 re_node_set_insert (&eclosure, node);
15563 if (incomplete && !root)
15564 dfa->eclosures[node].nelem = 0;
15565 else
15566 dfa->eclosures[node] = eclosure;
15567 *new_set = eclosure;
15568 return REG_NOERROR;
15569}
15570
15571
15572
15573
15574
15575
15576static void
15577
15578fetch_token (re_token_t *result, re_string_t *input, reg_syntax_t syntax)
15579{
15580 ((input)->cur_idx += (peek_token (result, input, syntax)));
15581}
15582
15583
15584
15585
15586static int
15587
15588peek_token (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
15589{
15590 unsigned char c;
15591
15592 if (((input)->stop <= (input)->cur_idx))
15593 {
15594 token->type = END_OF_RE;
15595 return 0;
15596 }
15597
15598 c = ((input)->mbs[(input)->cur_idx + 0]);
15599 token->opr.c = c;
15600
15601 token->word_char = 0;
15602
15603 token->mb_partial = 0;
15604 if (input->mb_cur_max > 1 &&
15605 !((((input)->cur_idx)) == (input)->valid_len || (input)->wcs[((input)->cur_idx)] != (0xffffffffu)))
15606 {
15607 token->type = CHARACTER;
15608 token->mb_partial = 1;
15609 return 1;
15610 }
15611
15612 if (c == '\\')
15613 {
15614 unsigned char c2;
15615 if (((input)->cur_idx) + 1 >= ((input)->len))
15616 {
15617 token->type = BACK_SLASH;
15618 return 1;
15619 }
15620
15621 c2 = re_string_peek_byte_case (input, 1);
15622 token->opr.c = c2;
15623 token->type = CHARACTER;
15624
15625 if (input->mb_cur_max > 1)
15626 {
15627 wint_t wc = re_string_wchar_at (input,
15628 ((input)->cur_idx) + 1);
15629 token->word_char = (iswalnum (wc) || (wc) == L'_') != 0;
15630 }
15631 else
15632
15633 token->word_char = (((*__ctype_b_loc ())[(int) ((c2))] & (unsigned short int) _ISalnum) || (c2) == '_') != 0;
15634
15635 switch (c2)
15636 {
15637 case '|':
15638 if (!(syntax & ((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && !(syntax & (((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15639 token->type = OP_ALT;
15640 break;
15641 case '1': case '2': case '3': case '4': case '5':
15642 case '6': case '7': case '8': case '9':
15643 if (!(syntax & ((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15644 {
15645 token->type = OP_BACK_REF;
15646 token->opr.idx = c2 - '1';
15647 }
15648 break;
15649 case '<':
15650 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15651 {
15652 token->type = ANCHOR;
15653 token->opr.ctx_type = WORD_FIRST;
15654 }
15655 break;
15656 case '>':
15657 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15658 {
15659 token->type = ANCHOR;
15660 token->opr.ctx_type = WORD_LAST;
15661 }
15662 break;
15663 case 'b':
15664 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15665 {
15666 token->type = ANCHOR;
15667 token->opr.ctx_type = WORD_DELIM;
15668 }
15669 break;
15670 case 'B':
15671 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15672 {
15673 token->type = ANCHOR;
15674 token->opr.ctx_type = NOT_WORD_DELIM;
15675 }
15676 break;
15677 case 'w':
15678 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15679 token->type = OP_WORD;
15680 break;
15681 case 'W':
15682 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15683 token->type = OP_NOTWORD;
15684 break;
15685 case 's':
15686 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15687 token->type = OP_SPACE;
15688 break;
15689 case 'S':
15690 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15691 token->type = OP_NOTSPACE;
15692 break;
15693 case '`':
15694 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15695 {
15696 token->type = ANCHOR;
15697 token->opr.ctx_type = BUF_FIRST;
15698 }
15699 break;
15700 case '\'':
15701 if (!(syntax & (((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15702 {
15703 token->type = ANCHOR;
15704 token->opr.ctx_type = BUF_LAST;
15705 }
15706 break;
15707 case '(':
15708 if (!(syntax & (((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15709 token->type = OP_OPEN_SUBEXP;
15710 break;
15711 case ')':
15712 if (!(syntax & (((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15713 token->type = OP_CLOSE_SUBEXP;
15714 break;
15715 case '+':
15716 if (!(syntax & ((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && (syntax & (((unsigned long int) 1) << 1)))
15717 token->type = OP_DUP_PLUS;
15718 break;
15719 case '?':
15720 if (!(syntax & ((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && (syntax & (((unsigned long int) 1) << 1)))
15721 token->type = OP_DUP_QUESTION;
15722 break;
15723 case '{':
15724 if ((syntax & (((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && (!(syntax & ((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))))
15725 token->type = OP_OPEN_DUP_NUM;
15726 break;
15727 case '}':
15728 if ((syntax & (((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && (!(syntax & ((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))))
15729 token->type = OP_CLOSE_DUP_NUM;
15730 break;
15731 default:
15732 break;
15733 }
15734 return 2;
15735 }
15736
15737 token->type = CHARACTER;
15738
15739 if (input->mb_cur_max > 1)
15740 {
15741 wint_t wc = re_string_wchar_at (input, ((input)->cur_idx));
15742 token->word_char = (iswalnum (wc) || (wc) == L'_') != 0;
15743 }
15744 else
15745
15746 token->word_char = (((*__ctype_b_loc ())[(int) ((token->opr.c))] & (unsigned short int) _ISalnum) || (token->opr.c) == '_');
15747
15748 switch (c)
15749 {
15750 case '\n':
15751 if (syntax & (((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
15752 token->type = OP_ALT;
15753 break;
15754 case '|':
15755 if (!(syntax & ((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && (syntax & (((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15756 token->type = OP_ALT;
15757 break;
15758 case '*':
15759 token->type = OP_DUP_ASTERISK;
15760 break;
15761 case '+':
15762 if (!(syntax & ((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && !(syntax & (((unsigned long int) 1) << 1)))
15763 token->type = OP_DUP_PLUS;
15764 break;
15765 case '?':
15766 if (!(syntax & ((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && !(syntax & (((unsigned long int) 1) << 1)))
15767 token->type = OP_DUP_QUESTION;
15768 break;
15769 case '{':
15770 if ((syntax & (((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && (syntax & ((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15771 token->type = OP_OPEN_DUP_NUM;
15772 break;
15773 case '}':
15774 if ((syntax & (((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && (syntax & ((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
15775 token->type = OP_CLOSE_DUP_NUM;
15776 break;
15777 case '(':
15778 if (syntax & (((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
15779 token->type = OP_OPEN_SUBEXP;
15780 break;
15781 case ')':
15782 if (syntax & (((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
15783 token->type = OP_CLOSE_SUBEXP;
15784 break;
15785 case '[':
15786 token->type = OP_OPEN_BRACKET;
15787 break;
15788 case '.':
15789 token->type = OP_PERIOD;
15790 break;
15791 case '^':
15792 if (!(syntax & ((((((unsigned long int) 1) << 1) << 1) << 1) | (((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))) &&
15793 ((input)->cur_idx) != 0)
15794 {
15795 char prev = ((input)->mbs[(input)->cur_idx + -1]);
15796 if (!(syntax & (((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) || prev != '\n')
15797 break;
15798 }
15799 token->type = ANCHOR;
15800 token->opr.ctx_type = LINE_FIRST;
15801 break;
15802 case '$':
15803 if (!(syntax & (((((unsigned long int) 1) << 1) << 1) << 1)) &&
15804 ((input)->cur_idx) + 1 != ((input)->len))
15805 {
15806 re_token_t next;
15807 ((input)->cur_idx += (1));
15808 peek_token (&next, input, syntax);
15809 ((input)->cur_idx += (-1));
15810 if (next.type != OP_ALT && next.type != OP_CLOSE_SUBEXP)
15811 break;
15812 }
15813 token->type = ANCHOR;
15814 token->opr.ctx_type = LINE_LAST;
15815 break;
15816 default:
15817 break;
15818 }
15819 return 1;
15820}
15821
15822
15823
15824
15825static int
15826
15827peek_token_bracket (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
15828{
15829 unsigned char c;
15830 if (((input)->stop <= (input)->cur_idx))
15831 {
15832 token->type = END_OF_RE;
15833 return 0;
15834 }
15835 c = ((input)->mbs[(input)->cur_idx + 0]);
15836 token->opr.c = c;
15837
15838
15839 if (input->mb_cur_max > 1 &&
15840 !((((input)->cur_idx)) == (input)->valid_len || (input)->wcs[((input)->cur_idx)] != (0xffffffffu)))
15841 {
15842 token->type = CHARACTER;
15843 return 1;
15844 }
15845
15846
15847 if (c == '\\' && (syntax & ((unsigned long int) 1))
15848 && ((input)->cur_idx) + 1 < ((input)->len))
15849 {
15850
15851 unsigned char c2;
15852 ((input)->cur_idx += (1));
15853 c2 = ((input)->mbs[(input)->cur_idx + 0]);
15854 token->opr.c = c2;
15855 token->type = CHARACTER;
15856 return 1;
15857 }
15858 if (c == '[')
15859 {
15860 unsigned char c2;
15861 int token_len;
15862 if (((input)->cur_idx) + 1 < ((input)->len))
15863 c2 = ((input)->mbs[(input)->cur_idx + 1]);
15864 else
15865 c2 = 0;
15866 token->opr.c = c2;
15867 token_len = 2;
15868 switch (c2)
15869 {
15870 case '.':
15871 token->type = OP_OPEN_COLL_ELEM;
15872 break;
15873 case '=':
15874 token->type = OP_OPEN_EQUIV_CLASS;
15875 break;
15876 case ':':
15877 if (syntax & ((((unsigned long int) 1) << 1) << 1))
15878 {
15879 token->type = OP_OPEN_CHAR_CLASS;
15880 break;
15881 }
15882
15883 default:
15884 token->type = CHARACTER;
15885 token->opr.c = c;
15886 token_len = 1;
15887 break;
15888 }
15889 return token_len;
15890 }
15891 switch (c)
15892 {
15893 case '-':
15894 token->type = OP_CHARSET_RANGE;
15895 break;
15896 case ']':
15897 token->type = OP_CLOSE_BRACKET;
15898 break;
15899 case '^':
15900 token->type = OP_NON_MATCH_LIST;
15901 break;
15902 default:
15903 token->type = CHARACTER;
15904 }
15905 return 1;
15906}
15907# 2047 "regcomp.c"
15908static bin_tree_t *
15909parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax,
15910 reg_errcode_t *err)
15911{
15912 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
15913 bin_tree_t *tree, *eor, *root;
15914 re_token_t current_token;
15915 dfa->syntax = syntax;
15916 fetch_token (&current_token, regexp, syntax | (((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1));
15917 tree = parse_reg_exp (regexp, preg, &current_token, syntax, 0, err);
15918 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
15919 return ((void *)0);
15920 eor = create_tree (dfa, ((void *)0), ((void *)0), END_OF_RE);
15921 if (tree != ((void *)0))
15922 root = create_tree (dfa, tree, eor, CONCAT);
15923 else
15924 root = eor;
15925 if (__builtin_expect (eor == ((void *)0) || root == ((void *)0), 0))
15926 {
15927 *err = REG_ESPACE;
15928 return ((void *)0);
15929 }
15930 return root;
15931}
15932# 2081 "regcomp.c"
15933static bin_tree_t *
15934parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
15935 reg_syntax_t syntax, int nest, reg_errcode_t *err)
15936{
15937 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
15938 bin_tree_t *tree, *branch = ((void *)0);
15939 tree = parse_branch (regexp, preg, token, syntax, nest, err);
15940 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
15941 return ((void *)0);
15942
15943 while (token->type == OP_ALT)
15944 {
15945 fetch_token (token, regexp, syntax | (((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1));
15946 if (token->type != OP_ALT && token->type != END_OF_RE
15947 && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
15948 {
15949 branch = parse_branch (regexp, preg, token, syntax, nest, err);
15950 if (__builtin_expect (*err != REG_NOERROR && branch == ((void *)0), 0))
15951 return ((void *)0);
15952 }
15953 else
15954 branch = ((void *)0);
15955 tree = create_tree (dfa, tree, branch, OP_ALT);
15956 if (__builtin_expect (tree == ((void *)0), 0))
15957 {
15958 *err = REG_ESPACE;
15959 return ((void *)0);
15960 }
15961 }
15962 return tree;
15963}
15964# 2122 "regcomp.c"
15965static bin_tree_t *
15966parse_branch (re_string_t *regexp, regex_t *preg, re_token_t *token,
15967 reg_syntax_t syntax, int nest, reg_errcode_t *err)
15968{
15969 bin_tree_t *tree, *exp;
15970 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
15971 tree = parse_expression (regexp, preg, token, syntax, nest, err);
15972 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
15973 return ((void *)0);
15974
15975 while (token->type != OP_ALT && token->type != END_OF_RE
15976 && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
15977 {
15978 exp = parse_expression (regexp, preg, token, syntax, nest, err);
15979 if (__builtin_expect (*err != REG_NOERROR && exp == ((void *)0), 0))
15980 {
15981 return ((void *)0);
15982 }
15983 if (tree != ((void *)0) && exp != ((void *)0))
15984 {
15985 tree = create_tree (dfa, tree, exp, CONCAT);
15986 if (tree == ((void *)0))
15987 {
15988 *err = REG_ESPACE;
15989 return ((void *)0);
15990 }
15991 }
15992 else if (tree == ((void *)0))
15993 tree = exp;
15994
15995 }
15996 return tree;
15997}
15998
15999
16000
16001
16002
16003
16004
16005static bin_tree_t *
16006parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
16007 reg_syntax_t syntax, int nest, reg_errcode_t *err)
16008{
16009 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
16010 bin_tree_t *tree;
16011 switch (token->type)
16012 {
16013 case CHARACTER:
16014 tree = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16015 if (__builtin_expect (tree == ((void *)0), 0))
16016 {
16017 *err = REG_ESPACE;
16018 return ((void *)0);
16019 }
16020
16021 if (dfa->mb_cur_max > 1)
16022 {
16023 while (!((regexp)->stop <= (regexp)->cur_idx)
16024 && !((((regexp)->cur_idx)) == (regexp)->valid_len || (regexp)->wcs[((regexp)->cur_idx)] != (0xffffffffu)))
16025 {
16026 bin_tree_t *mbc_remain;
16027 fetch_token (token, regexp, syntax);
16028 mbc_remain = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16029 tree = create_tree (dfa, tree, mbc_remain, CONCAT);
16030 if (__builtin_expect (mbc_remain == ((void *)0) || tree == ((void *)0), 0))
16031 {
16032 *err = REG_ESPACE;
16033 return ((void *)0);
16034 }
16035 }
16036 }
16037
16038 break;
16039 case OP_OPEN_SUBEXP:
16040 tree = parse_sub_exp (regexp, preg, token, syntax, nest + 1, err);
16041 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
16042 return ((void *)0);
16043 break;
16044 case OP_OPEN_BRACKET:
16045 tree = parse_bracket_exp (regexp, dfa, token, syntax, err);
16046 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
16047 return ((void *)0);
16048 break;
16049 case OP_BACK_REF:
16050 if (!__builtin_expect (dfa->completed_bkref_map & (1 << token->opr.idx), 1))
16051 {
16052 *err = REG_ESUBREG;
16053 return ((void *)0);
16054 }
16055 dfa->used_bkref_map |= 1 << token->opr.idx;
16056 tree = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16057 if (__builtin_expect (tree == ((void *)0), 0))
16058 {
16059 *err = REG_ESPACE;
16060 return ((void *)0);
16061 }
16062 ++dfa->nbackref;
16063 dfa->has_mb_node = 1;
16064 break;
16065 case OP_OPEN_DUP_NUM:
16066 if (syntax & ((((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
16067 {
16068 *err = REG_BADRPT;
16069 return ((void *)0);
16070 }
16071
16072 case OP_DUP_ASTERISK:
16073 case OP_DUP_PLUS:
16074 case OP_DUP_QUESTION:
16075 if (syntax & (((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1))
16076 {
16077 *err = REG_BADRPT;
16078 return ((void *)0);
16079 }
16080 else if (syntax & ((((((unsigned long int) 1) << 1) << 1) << 1) << 1))
16081 {
16082 fetch_token (token, regexp, syntax);
16083 return parse_expression (regexp, preg, token, syntax, nest, err);
16084 }
16085
16086 case OP_CLOSE_SUBEXP:
16087 if ((token->type == OP_CLOSE_SUBEXP) &&
16088 !(syntax & (((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)))
16089 {
16090 *err = REG_ERPAREN;
16091 return ((void *)0);
16092 }
16093
16094 case OP_CLOSE_DUP_NUM:
16095
16096
16097
16098 token->type = CHARACTER;
16099
16100
16101 tree = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16102 if (__builtin_expect (tree == ((void *)0), 0))
16103 {
16104 *err = REG_ESPACE;
16105 return ((void *)0);
16106 }
16107 break;
16108 case ANCHOR:
16109 if ((token->opr.ctx_type
16110 & (WORD_DELIM | NOT_WORD_DELIM | WORD_FIRST | WORD_LAST))
16111 && dfa->word_ops_used == 0)
16112 init_word_char (dfa);
16113 if (token->opr.ctx_type == WORD_DELIM
16114 || token->opr.ctx_type == NOT_WORD_DELIM)
16115 {
16116 bin_tree_t *tree_first, *tree_last;
16117 if (token->opr.ctx_type == WORD_DELIM)
16118 {
16119 token->opr.ctx_type = WORD_FIRST;
16120 tree_first = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16121 token->opr.ctx_type = WORD_LAST;
16122 }
16123 else
16124 {
16125 token->opr.ctx_type = INSIDE_WORD;
16126 tree_first = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16127 token->opr.ctx_type = INSIDE_NOTWORD;
16128 }
16129 tree_last = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16130 tree = create_tree (dfa, tree_first, tree_last, OP_ALT);
16131 if (__builtin_expect (tree_first == ((void *)0) || tree_last == ((void *)0) || tree == ((void *)0), 0))
16132 {
16133 *err = REG_ESPACE;
16134 return ((void *)0);
16135 }
16136 }
16137 else
16138 {
16139 tree = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16140 if (__builtin_expect (tree == ((void *)0), 0))
16141 {
16142 *err = REG_ESPACE;
16143 return ((void *)0);
16144 }
16145 }
16146
16147
16148
16149
16150 fetch_token (token, regexp, syntax);
16151 return tree;
16152 case OP_PERIOD:
16153 tree = create_token_tree (dfa, ((void *)0), ((void *)0), token);
16154 if (__builtin_expect (tree == ((void *)0), 0))
16155 {
16156 *err = REG_ESPACE;
16157 return ((void *)0);
16158 }
16159 if (dfa->mb_cur_max > 1)
16160 dfa->has_mb_node = 1;
16161 break;
16162 case OP_WORD:
16163 case OP_NOTWORD:
16164 tree = build_charclass_op (dfa, regexp->trans,
16165 (const unsigned char *) "alnum",
16166 (const unsigned char *) "_",
16167 token->type == OP_NOTWORD, err);
16168 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
16169 return ((void *)0);
16170 break;
16171 case OP_SPACE:
16172 case OP_NOTSPACE:
16173 tree = build_charclass_op (dfa, regexp->trans,
16174 (const unsigned char *) "space",
16175 (const unsigned char *) "",
16176 token->type == OP_NOTSPACE, err);
16177 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
16178 return ((void *)0);
16179 break;
16180 case OP_ALT:
16181 case END_OF_RE:
16182 return ((void *)0);
16183 case BACK_SLASH:
16184 *err = REG_EESCAPE;
16185 return ((void *)0);
16186 default:
16187
16188
16189
16190
16191 return ((void *)0);
16192 }
16193 fetch_token (token, regexp, syntax);
16194
16195 while (token->type == OP_DUP_ASTERISK || token->type == OP_DUP_PLUS
16196 || token->type == OP_DUP_QUESTION || token->type == OP_OPEN_DUP_NUM)
16197 {
16198 tree = parse_dup_op (tree, regexp, dfa, token, syntax, err);
16199 if (__builtin_expect (*err != REG_NOERROR && tree == ((void *)0), 0))
16200 return ((void *)0);
16201
16202 if ((syntax & ((((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
16203 && (token->type == OP_DUP_ASTERISK
16204 || token->type == OP_OPEN_DUP_NUM))
16205 {
16206 *err = REG_BADRPT;
16207 return ((void *)0);
16208 }
16209 }
16210
16211 return tree;
16212}
16213# 2378 "regcomp.c"
16214static bin_tree_t *
16215parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
16216 reg_syntax_t syntax, int nest, reg_errcode_t *err)
16217{
16218 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
16219 bin_tree_t *tree;
16220 size_t cur_nsub;
16221 cur_nsub = preg->re_nsub++;
16222
16223 fetch_token (token, regexp, syntax | (((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1));
16224
16225
16226 if (token->type == OP_CLOSE_SUBEXP)
16227 tree = ((void *)0);
16228 else
16229 {
16230 tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
16231 if (__builtin_expect (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
16232 *err = REG_EPAREN;
16233 if (__builtin_expect (*err != REG_NOERROR, 0))
16234 return ((void *)0);
16235 }
16236
16237 if (cur_nsub <= '9' - '1')
16238 dfa->completed_bkref_map |= 1 << cur_nsub;
16239
16240 tree = create_tree (dfa, tree, ((void *)0), SUBEXP);
16241 if (__builtin_expect (tree == ((void *)0), 0))
16242 {
16243 *err = REG_ESPACE;
16244 return ((void *)0);
16245 }
16246 tree->token.opr.idx = cur_nsub;
16247 return tree;
16248}
16249
16250
16251
16252static bin_tree_t *
16253parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
16254 re_token_t *token, reg_syntax_t syntax, reg_errcode_t *err)
16255{
16256 bin_tree_t *tree = ((void *)0), *old_tree = ((void *)0);
16257 int i, start, end, start_idx = ((regexp)->cur_idx);
16258 re_token_t start_token = *token;
16259
16260 if (token->type == OP_OPEN_DUP_NUM)
16261 {
16262 end = 0;
16263 start = fetch_number (regexp, token, syntax);
16264 if (start == -1)
16265 {
16266 if (token->type == CHARACTER && token->opr.c == ',')
16267 start = 0;
16268 else
16269 {
16270 *err = REG_BADBR;
16271 return ((void *)0);
16272 }
16273 }
16274 if (__builtin_expect (start != -2, 1))
16275 {
16276
16277 end = ((token->type == OP_CLOSE_DUP_NUM) ? start
16278 : ((token->type == CHARACTER && token->opr.c == ',')
16279 ? fetch_number (regexp, token, syntax) : -2));
16280 }
16281 if (__builtin_expect (start == -2 || end == -2, 0))
16282 {
16283
16284 if (__builtin_expect (!(syntax & (((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)), 0))
16285 {
16286 if (token->type == END_OF_RE)
16287 *err = REG_EBRACE;
16288 else
16289 *err = REG_BADBR;
16290
16291 return ((void *)0);
16292 }
16293
16294
16295 ((regexp)->cur_idx = (start_idx));
16296 *token = start_token;
16297 token->type = CHARACTER;
16298
16299
16300 return elem;
16301 }
16302
16303 if (__builtin_expect (end != -1 && start > end, 0))
16304 {
16305
16306 *err = REG_BADBR;
16307 return ((void *)0);
16308 }
16309 }
16310 else
16311 {
16312 start = (token->type == OP_DUP_PLUS) ? 1 : 0;
16313 end = (token->type == OP_DUP_QUESTION) ? 1 : -1;
16314 }
16315
16316 fetch_token (token, regexp, syntax);
16317
16318 if (__builtin_expect (elem == ((void *)0), 0))
16319 return ((void *)0);
16320 if (__builtin_expect (start == 0 && end == 0, 0))
16321 {
16322 postorder (elem, free_tree, ((void *)0));
16323 return ((void *)0);
16324 }
16325
16326
16327 if (__builtin_expect (start > 0, 0))
16328 {
16329 tree = elem;
16330 for (i = 2; i <= start; ++i)
16331 {
16332 elem = duplicate_tree (elem, dfa);
16333 tree = create_tree (dfa, tree, elem, CONCAT);
16334 if (__builtin_expect (elem == ((void *)0) || tree == ((void *)0), 0))
16335 goto parse_dup_op_espace;
16336 }
16337
16338 if (start == end)
16339 return tree;
16340
16341
16342 elem = duplicate_tree (elem, dfa);
16343 old_tree = tree;
16344 }
16345 else
16346 old_tree = ((void *)0);
16347
16348 if (elem->token.type == SUBEXP)
16349 postorder (elem, mark_opt_subexp, (void *) (long) elem->token.opr.idx);
16350
16351 tree = create_tree (dfa, elem, ((void *)0), (end == -1 ? OP_DUP_ASTERISK : OP_ALT));
16352 if (__builtin_expect (tree == ((void *)0), 0))
16353 goto parse_dup_op_espace;
16354
16355
16356
16357
16358 for (i = start + 2; i <= end; ++i)
16359 {
16360 elem = duplicate_tree (elem, dfa);
16361 tree = create_tree (dfa, tree, elem, CONCAT);
16362 if (__builtin_expect (elem == ((void *)0) || tree == ((void *)0), 0))
16363 goto parse_dup_op_espace;
16364
16365 tree = create_tree (dfa, tree, ((void *)0), OP_ALT);
16366 if (__builtin_expect (tree == ((void *)0), 0))
16367 goto parse_dup_op_espace;
16368 }
16369
16370 if (old_tree)
16371 tree = create_tree (dfa, old_tree, tree, CONCAT);
16372
16373 return tree;
16374
16375 parse_dup_op_espace:
16376 *err = REG_ESPACE;
16377 return ((void *)0);
16378}
16379# 2700 "regcomp.c"
16380static bin_tree_t *
16381parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
16382 reg_syntax_t syntax, reg_errcode_t *err)
16383{
16384
16385 const unsigned char *collseqmb;
16386 const char *collseqwc;
16387 uint32_t nrules;
16388 int32_t table_size;
16389 const int32_t *symb_table;
16390 const unsigned char *extra;
16391
16392
16393
16394
16395
16396 auto inline int32_t
16397 __attribute__ ((always_inline))
16398 seek_collating_symbol_entry (name, name_len)
16399 const unsigned char *name;
16400 size_t name_len;
16401 {
16402 int32_t hash = elem_hash ((const char *) name, name_len);
16403 int32_t elem = hash % table_size;
16404 if (symb_table[2 * elem] != 0)
16405 {
16406 int32_t second = hash % (table_size - 2) + 1;
16407
16408 do
16409 {
16410
16411 if (symb_table[2 * elem] == hash
16412
16413 && name_len == extra[symb_table[2 * elem + 1]]
16414
16415 && memcmp (name, &extra[symb_table[2 * elem + 1] + 1],
16416 name_len) == 0)
16417 {
16418
16419 break;
16420 }
16421
16422
16423 elem += second;
16424 }
16425 while (symb_table[2 * elem] != 0);
16426 }
16427 return elem;
16428 }
16429
16430
16431
16432
16433
16434 auto inline unsigned int
16435 __attribute__ ((always_inline))
16436 lookup_collation_sequence_value (br_elem)
16437 bracket_elem_t *br_elem;
16438 {
16439 if (br_elem->type == SB_CHAR)
16440 {
16441
16442
16443
16444 if (nrules == 0)
16445 return collseqmb[br_elem->opr.ch];
16446 else
16447 {
16448 wint_t wc = __btowc (br_elem->opr.ch);
16449 return __collseq_table_lookup (collseqwc, wc);
16450 }
16451 }
16452 else if (br_elem->type == MB_CHAR)
16453 {
16454 return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
16455 }
16456 else if (br_elem->type == COLL_SYM)
16457 {
16458 size_t sym_name_len = strlen ((char *) br_elem->opr.name);
16459 if (nrules != 0)
16460 {
16461 int32_t elem, idx;
16462 elem = seek_collating_symbol_entry (br_elem->opr.name,
16463 sym_name_len);
16464 if (symb_table[2 * elem] != 0)
16465 {
16466
16467 idx = symb_table[2 * elem + 1];
16468
16469 idx += 1 + extra[idx];
16470
16471 idx += 1 + extra[idx];
16472
16473 idx = (idx + 3) & ~3;
16474
16475 idx += sizeof (unsigned int);
16476
16477 idx += sizeof (unsigned int) *
16478 (1 + *(unsigned int *) (extra + idx));
16479
16480 return *(unsigned int *) (extra + idx);
16481 }
16482 else if (symb_table[2 * elem] == 0 && sym_name_len == 1)
16483 {
16484
16485
16486 return collseqmb[br_elem->opr.name[0]];
16487 }
16488 }
16489 else if (sym_name_len == 1)
16490 return collseqmb[br_elem->opr.name[0]];
16491 }
16492 return (2147483647 * 2U + 1U);
16493 }
16494# 2822 "regcomp.c"
16495 auto inline reg_errcode_t
16496 __attribute__ ((always_inline))
16497 build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
16498 re_charset_t *mbcset;
16499 int *range_alloc;
16500 bitset_t sbcset;
16501 bracket_elem_t *start_elem, *end_elem;
16502 {
16503 unsigned int ch;
16504 uint32_t start_collseq;
16505 uint32_t end_collseq;
16506
16507
16508
16509 if (__builtin_expect (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS || end_elem->type == EQUIV_CLASS || end_elem->type == CHAR_CLASS, 0))
16510
16511
16512 return REG_ERANGE;
16513
16514 start_collseq = lookup_collation_sequence_value (start_elem);
16515 end_collseq = lookup_collation_sequence_value (end_elem);
16516
16517 if (__builtin_expect (start_collseq == (2147483647 * 2U + 1U) || end_collseq == (2147483647 * 2U + 1U), 0))
16518 return REG_ECOLLATE;
16519 if (__builtin_expect ((syntax & ((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) && start_collseq > end_collseq, 0))
16520 return REG_ERANGE;
16521
16522
16523
16524
16525
16526 if (nrules > 0 || dfa->mb_cur_max > 1)
16527 {
16528
16529 if (__builtin_expect (*range_alloc == mbcset->nranges, 0))
16530 {
16531
16532 uint32_t *new_array_start;
16533 uint32_t *new_array_end;
16534 int new_nranges;
16535
16536
16537 new_nranges = 2 * mbcset->nranges + 1;
16538 new_array_start = ((uint32_t *) realloc (mbcset->range_starts, (new_nranges) * sizeof (uint32_t)));
16539
16540 new_array_end = ((uint32_t *) realloc (mbcset->range_ends, (new_nranges) * sizeof (uint32_t)));
16541
16542
16543 if (__builtin_expect (new_array_start == ((void *)0) || new_array_end == ((void *)0), 0))
16544 return REG_ESPACE;
16545
16546 mbcset->range_starts = new_array_start;
16547 mbcset->range_ends = new_array_end;
16548 *range_alloc = new_nranges;
16549 }
16550
16551 mbcset->range_starts[mbcset->nranges] = start_collseq;
16552 mbcset->range_ends[mbcset->nranges++] = end_collseq;
16553 }
16554
16555
16556 for (ch = 0; ch < 256; ch++)
16557 {
16558 uint32_t ch_collseq;
16559
16560
16561
16562 if (nrules == 0)
16563 ch_collseq = collseqmb[ch];
16564 else
16565 ch_collseq = __collseq_table_lookup (collseqwc, __btowc (ch));
16566 if (start_collseq <= ch_collseq && ch_collseq <= end_collseq)
16567 (sbcset[ch / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << ch % (sizeof (bitset_word_t) * 8));
16568 }
16569 return REG_NOERROR;
16570 }
16571
16572
16573
16574
16575
16576
16577
16578 auto inline reg_errcode_t
16579 __attribute__ ((always_inline))
16580 build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
16581 re_charset_t *mbcset;
16582 int *coll_sym_alloc;
16583 bitset_t sbcset;
16584 const unsigned char *name;
16585 {
16586 int32_t elem, idx;
16587 size_t name_len = strlen ((const char *) name);
16588 if (nrules != 0)
16589 {
16590 elem = seek_collating_symbol_entry (name, name_len);
16591 if (symb_table[2 * elem] != 0)
16592 {
16593
16594 idx = symb_table[2 * elem + 1];
16595
16596 idx += 1 + extra[idx];
16597 }
16598 else if (symb_table[2 * elem] == 0 && name_len == 1)
16599 {
16600
16601
16602 (sbcset[name[0] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << name[0] % (sizeof (bitset_word_t) * 8));
16603 return REG_NOERROR;
16604 }
16605 else
16606 return REG_ECOLLATE;
16607
16608
16609
16610 if (__builtin_expect (*coll_sym_alloc == mbcset->ncoll_syms, 0))
16611 {
16612
16613
16614 int new_coll_sym_alloc = 2 * mbcset->ncoll_syms + 1;
16615
16616
16617 int32_t *new_coll_syms = ((int32_t *) realloc (mbcset->coll_syms, (new_coll_sym_alloc) * sizeof (int32_t)));
16618
16619 if (__builtin_expect (new_coll_syms == ((void *)0), 0))
16620 return REG_ESPACE;
16621 mbcset->coll_syms = new_coll_syms;
16622 *coll_sym_alloc = new_coll_sym_alloc;
16623 }
16624 mbcset->coll_syms[mbcset->ncoll_syms++] = idx;
16625 return REG_NOERROR;
16626 }
16627 else
16628 {
16629 if (__builtin_expect (name_len != 1, 0))
16630 return REG_ECOLLATE;
16631 else
16632 {
16633 (sbcset[name[0] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << name[0] % (sizeof (bitset_word_t) * 8));
16634 return REG_NOERROR;
16635 }
16636 }
16637 }
16638
16639
16640 re_token_t br_token;
16641 re_bitset_ptr_t sbcset;
16642
16643 re_charset_t *mbcset;
16644 int coll_sym_alloc = 0, range_alloc = 0, mbchar_alloc = 0;
16645 int equiv_class_alloc = 0, char_class_alloc = 0;
16646
16647 int non_match = 0;
16648 bin_tree_t *work_tree;
16649 int token_len;
16650 int first_round = 1;
16651
16652 collseqmb = (const unsigned char *)
16653 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_COLLSEQMB) & 0xffff)].string);
16654 nrules = ((uint32_t) (*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_NRULES) & 0xffff)].word);
16655 if (nrules)
16656 {
16657
16658
16659
16660 collseqwc = ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_COLLSEQWC) & 0xffff)].string);
16661 table_size = ((uint32_t) (*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_SYMB_HASH_SIZEMB) & 0xffff)].word);
16662 symb_table = (const int32_t *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_SYMB_TABLEMB) & 0xffff)].string);
16663
16664 extra = (const unsigned char *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_SYMB_EXTRAMB) & 0xffff)].string);
16665
16666 }
16667
16668 sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
16669
16670 mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
16671
16672
16673 if (__builtin_expect (sbcset == ((void *)0) || mbcset == ((void *)0), 0))
16674
16675
16676
16677 {
16678 *err = REG_ESPACE;
16679 return ((void *)0);
16680 }
16681
16682 token_len = peek_token_bracket (token, regexp, syntax);
16683 if (__builtin_expect (token->type == END_OF_RE, 0))
16684 {
16685 *err = REG_BADPAT;
16686 goto parse_bracket_exp_free_return;
16687 }
16688 if (token->type == OP_NON_MATCH_LIST)
16689 {
16690
16691 mbcset->non_match = 1;
16692
16693 non_match = 1;
16694 if (syntax & ((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
16695 (sbcset['\0' / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << '\0' % (sizeof (bitset_word_t) * 8));
16696 ((regexp)->cur_idx += (token_len));
16697 token_len = peek_token_bracket (token, regexp, syntax);
16698 if (__builtin_expect (token->type == END_OF_RE, 0))
16699 {
16700 *err = REG_BADPAT;
16701 goto parse_bracket_exp_free_return;
16702 }
16703 }
16704
16705
16706 if (token->type == OP_CLOSE_BRACKET)
16707 token->type = CHARACTER;
16708
16709 while (1)
16710 {
16711 bracket_elem_t start_elem, end_elem;
16712 unsigned char start_name_buf[32];
16713 unsigned char end_name_buf[32];
16714 reg_errcode_t ret;
16715 int token_len2 = 0, is_range_exp = 0;
16716 re_token_t token2;
16717
16718 start_elem.opr.name = start_name_buf;
16719 ret = parse_bracket_element (&start_elem, regexp, token, token_len, dfa,
16720 syntax, first_round);
16721 if (__builtin_expect (ret != REG_NOERROR, 0))
16722 {
16723 *err = ret;
16724 goto parse_bracket_exp_free_return;
16725 }
16726 first_round = 0;
16727
16728
16729 token_len = peek_token_bracket (token, regexp, syntax);
16730
16731
16732 if (start_elem.type != CHAR_CLASS && start_elem.type != EQUIV_CLASS)
16733 {
16734 if (__builtin_expect (token->type == END_OF_RE, 0))
16735 {
16736 *err = REG_EBRACK;
16737 goto parse_bracket_exp_free_return;
16738 }
16739 if (token->type == OP_CHARSET_RANGE)
16740 {
16741 ((regexp)->cur_idx += (token_len));
16742 token_len2 = peek_token_bracket (&token2, regexp, syntax);
16743 if (__builtin_expect (token2.type == END_OF_RE, 0))
16744 {
16745 *err = REG_EBRACK;
16746 goto parse_bracket_exp_free_return;
16747 }
16748 if (token2.type == OP_CLOSE_BRACKET)
16749 {
16750
16751 ((regexp)->cur_idx += (-token_len));
16752 token->type = CHARACTER;
16753 }
16754 else
16755 is_range_exp = 1;
16756 }
16757 }
16758
16759 if (is_range_exp == 1)
16760 {
16761 end_elem.opr.name = end_name_buf;
16762 ret = parse_bracket_element (&end_elem, regexp, &token2, token_len2,
16763 dfa, syntax, 1);
16764 if (__builtin_expect (ret != REG_NOERROR, 0))
16765 {
16766 *err = ret;
16767 goto parse_bracket_exp_free_return;
16768 }
16769
16770 token_len = peek_token_bracket (token, regexp, syntax);
16771
16772
16773 *err = build_range_exp (sbcset, mbcset, &range_alloc,
16774 &start_elem, &end_elem);
16775# 3111 "regcomp.c"
16776 if (__builtin_expect (*err != REG_NOERROR, 0))
16777 goto parse_bracket_exp_free_return;
16778 }
16779 else
16780 {
16781 switch (start_elem.type)
16782 {
16783 case SB_CHAR:
16784 (sbcset[start_elem.opr.ch / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << start_elem.opr.ch % (sizeof (bitset_word_t) * 8));
16785 break;
16786
16787 case MB_CHAR:
16788
16789 if (__builtin_expect (mbchar_alloc == mbcset->nmbchars, 0))
16790 {
16791 wchar_t *new_mbchars;
16792
16793
16794 mbchar_alloc = 2 * mbcset->nmbchars + 1;
16795
16796 new_mbchars = ((wchar_t *) realloc (mbcset->mbchars, (mbchar_alloc) * sizeof (wchar_t)));
16797
16798 if (__builtin_expect (new_mbchars == ((void *)0), 0))
16799 goto parse_bracket_exp_espace;
16800 mbcset->mbchars = new_mbchars;
16801 }
16802 mbcset->mbchars[mbcset->nmbchars++] = start_elem.opr.wch;
16803 break;
16804
16805 case EQUIV_CLASS:
16806 *err = build_equiv_class (sbcset,
16807
16808 mbcset, &equiv_class_alloc,
16809
16810 start_elem.opr.name);
16811 if (__builtin_expect (*err != REG_NOERROR, 0))
16812 goto parse_bracket_exp_free_return;
16813 break;
16814 case COLL_SYM:
16815 *err = build_collating_symbol (sbcset,
16816
16817 mbcset, &coll_sym_alloc,
16818
16819 start_elem.opr.name);
16820 if (__builtin_expect (*err != REG_NOERROR, 0))
16821 goto parse_bracket_exp_free_return;
16822 break;
16823 case CHAR_CLASS:
16824 *err = build_charclass (regexp->trans, sbcset,
16825
16826 mbcset, &char_class_alloc,
16827
16828 start_elem.opr.name, syntax);
16829 if (__builtin_expect (*err != REG_NOERROR, 0))
16830 goto parse_bracket_exp_free_return;
16831 break;
16832 default:
16833 ((0) ? (void) (0) : (__assert_fail ("0", "regcomp.c", 3168, __PRETTY_FUNCTION__), (void) (0)));
16834 break;
16835 }
16836 }
16837 if (__builtin_expect (token->type == END_OF_RE, 0))
16838 {
16839 *err = REG_EBRACK;
16840 goto parse_bracket_exp_free_return;
16841 }
16842 if (token->type == OP_CLOSE_BRACKET)
16843 break;
16844 }
16845
16846 ((regexp)->cur_idx += (token_len));
16847
16848
16849 if (non_match)
16850 bitset_not (sbcset);
16851
16852
16853
16854 if (dfa->mb_cur_max > 1)
16855 bitset_mask (sbcset, dfa->sb_char);
16856
16857 if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
16858 || mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
16859 || mbcset->non_match)))
16860 {
16861 bin_tree_t *mbc_tree;
16862 int sbc_idx;
16863
16864 dfa->has_mb_node = 1;
16865 br_token.type = COMPLEX_BRACKET;
16866 br_token.opr.mbcset = mbcset;
16867 mbc_tree = create_token_tree (dfa, ((void *)0), ((void *)0), &br_token);
16868 if (__builtin_expect (mbc_tree == ((void *)0), 0))
16869 goto parse_bracket_exp_espace;
16870 for (sbc_idx = 0; sbc_idx < (256 / (sizeof (bitset_word_t) * 8)); ++sbc_idx)
16871 if (sbcset[sbc_idx])
16872 break;
16873
16874
16875 if (sbc_idx < (256 / (sizeof (bitset_word_t) * 8)))
16876 {
16877
16878 br_token.type = SIMPLE_BRACKET;
16879 br_token.opr.sbcset = sbcset;
16880 work_tree = create_token_tree (dfa, ((void *)0), ((void *)0), &br_token);
16881 if (__builtin_expect (work_tree == ((void *)0), 0))
16882 goto parse_bracket_exp_espace;
16883
16884
16885 work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
16886 if (__builtin_expect (work_tree == ((void *)0), 0))
16887 goto parse_bracket_exp_espace;
16888 }
16889 else
16890 {
16891 free (sbcset);
16892 work_tree = mbc_tree;
16893 }
16894 }
16895 else
16896
16897 {
16898
16899 free_charset (mbcset);
16900
16901
16902 br_token.type = SIMPLE_BRACKET;
16903 br_token.opr.sbcset = sbcset;
16904 work_tree = create_token_tree (dfa, ((void *)0), ((void *)0), &br_token);
16905 if (__builtin_expect (work_tree == ((void *)0), 0))
16906 goto parse_bracket_exp_espace;
16907 }
16908 return work_tree;
16909
16910 parse_bracket_exp_espace:
16911 *err = REG_ESPACE;
16912 parse_bracket_exp_free_return:
16913 free (sbcset);
16914
16915 free_charset (mbcset);
16916
16917 return ((void *)0);
16918}
16919
16920
16921
16922static reg_errcode_t
16923parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp,
16924 re_token_t *token, int token_len, re_dfa_t *dfa,
16925 reg_syntax_t syntax, int accept_hyphen)
16926{
16927
16928 int cur_char_size;
16929 cur_char_size = re_string_char_size_at (regexp, ((regexp)->cur_idx));
16930 if (cur_char_size > 1)
16931 {
16932 elem->type = MB_CHAR;
16933 elem->opr.wch = re_string_wchar_at (regexp, ((regexp)->cur_idx));
16934 ((regexp)->cur_idx += (cur_char_size));
16935 return REG_NOERROR;
16936 }
16937
16938 ((regexp)->cur_idx += (token_len));
16939 if (token->type == OP_OPEN_COLL_ELEM || token->type == OP_OPEN_CHAR_CLASS
16940 || token->type == OP_OPEN_EQUIV_CLASS)
16941 return parse_bracket_symbol (elem, regexp, token);
16942 if (__builtin_expect (token->type == OP_CHARSET_RANGE, 0) && !accept_hyphen)
16943 {
16944
16945
16946 re_token_t token2;
16947 (void) peek_token_bracket (&token2, regexp, syntax);
16948 if (token2.type != OP_CLOSE_BRACKET)
16949
16950
16951 return REG_ERANGE;
16952 }
16953 elem->type = SB_CHAR;
16954 elem->opr.ch = token->opr.c;
16955 return REG_NOERROR;
16956}
16957
16958
16959
16960
16961
16962static reg_errcode_t
16963parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
16964 re_token_t *token)
16965{
16966 unsigned char ch, delim = token->opr.c;
16967 int i = 0;
16968 if (((regexp)->stop <= (regexp)->cur_idx))
16969 return REG_EBRACK;
16970 for (;; ++i)
16971 {
16972 if (i >= 32)
16973 return REG_EBRACK;
16974 if (token->type == OP_OPEN_CHAR_CLASS)
16975 ch = re_string_fetch_byte_case (regexp);
16976 else
16977 ch = ((regexp)->mbs[(regexp)->cur_idx++]);
16978 if (((regexp)->stop <= (regexp)->cur_idx))
16979 return REG_EBRACK;
16980 if (ch == delim && ((regexp)->mbs[(regexp)->cur_idx + 0]) == ']')
16981 break;
16982 elem->opr.name[i] = ch;
16983 }
16984 ((regexp)->cur_idx += (1));
16985 elem->opr.name[i] = '\0';
16986 switch (token->type)
16987 {
16988 case OP_OPEN_COLL_ELEM:
16989 elem->type = COLL_SYM;
16990 break;
16991 case OP_OPEN_EQUIV_CLASS:
16992 elem->type = EQUIV_CLASS;
16993 break;
16994 case OP_OPEN_CHAR_CLASS:
16995 elem->type = CHAR_CLASS;
16996 break;
16997 default:
16998 break;
16999 }
17000 return REG_NOERROR;
17001}
17002
17003
17004
17005
17006
17007
17008
17009static reg_errcode_t
17010
17011build_equiv_class (bitset_t sbcset, re_charset_t *mbcset,
17012 int *equiv_class_alloc, const unsigned char *name)
17013
17014
17015
17016{
17017
17018 uint32_t nrules = ((uint32_t) (*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_NRULES) & 0xffff)].word);
17019 if (nrules != 0)
17020 {
17021 const int32_t *table, *indirect;
17022 const unsigned char *weights, *extra, *cp;
17023 unsigned char char_buf[2];
17024 int32_t idx1, idx2;
17025 unsigned int ch;
17026 size_t len;
17027
17028# 1 "../locale/weight.h" 1
17029# 21 "../locale/weight.h"
17030auto inline int32_t
17031__attribute__ ((always_inline))
17032findidx (const unsigned char **cpp)
17033{
17034 int_fast32_t i = table[*(*cpp)++];
17035 const unsigned char *cp;
17036 const unsigned char *usrc;
17037
17038 if (i >= 0)
17039
17040 return i;
17041
17042
17043
17044 cp = &extra[-i];
17045 usrc = *cpp;
17046 while (1)
17047 {
17048 size_t nhere;
17049
17050
17051 i = *((const int32_t *) cp);
17052 cp += sizeof (int32_t);
17053
17054
17055
17056
17057 nhere = *cp++;
17058
17059 if (i >= 0)
17060 {
17061
17062
17063
17064
17065
17066 size_t cnt;
17067
17068 for (cnt = 0; cnt < nhere; ++cnt)
17069 if (cp[cnt] != usrc[cnt])
17070 break;
17071
17072 if (cnt == nhere)
17073 {
17074
17075 *cpp += nhere;
17076 return i;
17077 }
17078
17079
17080 cp += nhere;
17081 if ((1 + nhere) % __alignof__ (int32_t) != 0)
17082 cp += __alignof__ (int32_t) - (1 + nhere) % __alignof__ (int32_t);
17083 }
17084 else
17085 {
17086
17087
17088 size_t cnt;
17089 size_t offset = 0;
17090
17091 for (cnt = 0; cnt < nhere; ++cnt)
17092 if (cp[cnt] != usrc[cnt])
17093 break;
17094
17095 if (cnt != nhere)
17096 {
17097 if (cp[cnt] > usrc[cnt])
17098 {
17099
17100 cp += 2 * nhere;
17101 if ((1 + 2 * nhere) % __alignof__ (int32_t) != 0)
17102 cp += (__alignof__ (int32_t)
17103 - (1 + 2 * nhere) % __alignof__ (int32_t));
17104 continue;
17105 }
17106
17107
17108 for (cnt = 0; cnt < nhere; ++cnt)
17109 if (cp[nhere + cnt] != usrc[cnt])
17110 break;
17111
17112 if (cnt != nhere && cp[nhere + cnt] < usrc[cnt])
17113 {
17114
17115 cp += 2 * nhere;
17116 if ((1 + 2 * nhere) % __alignof__ (int32_t) != 0)
17117 cp += (__alignof__ (int32_t)
17118 - (1 + 2 * nhere) % __alignof__ (int32_t));
17119 continue;
17120 }
17121
17122
17123
17124 for (cnt = 0; cp[cnt] == usrc[cnt]; ++cnt);
17125
17126 do
17127 {
17128 offset <<= 8;
17129 offset += usrc[cnt] - cp[cnt];
17130 }
17131 while (++cnt < nhere);
17132 }
17133
17134 *cpp += nhere;
17135 return indirect[-i + offset];
17136 }
17137 }
17138
17139
17140 return 0x43219876;
17141}
17142# 3364 "regcomp.c" 2
17143
17144 cp = name;
17145 table = (const int32_t *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_TABLEMB) & 0xffff)].string);
17146 weights = (const unsigned char *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_WEIGHTMB) & 0xffff)].string);
17147
17148 extra = (const unsigned char *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_EXTRAMB) & 0xffff)].string);
17149
17150 indirect = (const int32_t *) ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_INDIRECTMB) & 0xffff)].string);
17151
17152 idx1 = findidx (&cp);
17153 if (__builtin_expect (idx1 == 0 || cp < name + strlen ((const char *) name), 0))
17154
17155 return REG_ECOLLATE;
17156
17157
17158 char_buf[1] = (unsigned char) '\0';
17159 len = weights[idx1];
17160 for (ch = 0; ch < 256; ++ch)
17161 {
17162 char_buf[0] = ch;
17163 cp = char_buf;
17164 idx2 = findidx (&cp);
17165
17166
17167
17168 if (idx2 == 0)
17169
17170 continue;
17171 if (len == weights[idx2])
17172 {
17173 int cnt = 0;
17174 while (cnt <= len &&
17175 weights[idx1 + 1 + cnt] == weights[idx2 + 1 + cnt])
17176 ++cnt;
17177
17178 if (cnt > len)
17179 (sbcset[ch / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << ch % (sizeof (bitset_word_t) * 8));
17180 }
17181 }
17182
17183 if (__builtin_expect (*equiv_class_alloc == mbcset->nequiv_classes, 0))
17184 {
17185
17186
17187 int new_equiv_class_alloc = 2 * mbcset->nequiv_classes + 1;
17188
17189 int32_t *new_equiv_classes = ((int32_t *) realloc (mbcset->equiv_classes, (new_equiv_class_alloc) * sizeof (int32_t)));
17190
17191
17192 if (__builtin_expect (new_equiv_classes == ((void *)0), 0))
17193 return REG_ESPACE;
17194 mbcset->equiv_classes = new_equiv_classes;
17195 *equiv_class_alloc = new_equiv_class_alloc;
17196 }
17197 mbcset->equiv_classes[mbcset->nequiv_classes++] = idx1;
17198 }
17199 else
17200
17201 {
17202 if (__builtin_expect (strlen ((const char *) name) != 1, 0))
17203 return REG_ECOLLATE;
17204 (sbcset[*name / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << *name % (sizeof (bitset_word_t) * 8));
17205 }
17206 return REG_NOERROR;
17207}
17208
17209
17210
17211
17212
17213
17214
17215static reg_errcode_t
17216
17217build_charclass (unsigned char * trans, bitset_t sbcset,
17218 re_charset_t *mbcset, int *char_class_alloc,
17219 const unsigned char *class_name, reg_syntax_t syntax)
17220
17221
17222
17223
17224{
17225 int i;
17226 const char *name = (const char *) class_name;
17227
17228
17229
17230 if ((syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
17231 && (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("upper") && (__s1_len = strlen (name), __s2_len = strlen ("upper"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("upper") + 1) - (size_t)(const void *)("upper") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "upper") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("upper") && ((size_t)(const void *)(("upper") + 1) - (size_t)(const void *)("upper") == 1) ? __builtin_strcmp (name, "upper") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("upper"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("upper") && ((size_t)(const void *)(("upper") + 1) - (size_t)(const void *)("upper") == 1) && (__s2_len = strlen ("upper"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "upper") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("upper"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("upper"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("upper"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("upper"))[3]); } } __result; }))) : __builtin_strcmp (name, "upper")))); }) == 0 || __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("lower") && (__s1_len = strlen (name), __s2_len = strlen ("lower"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("lower") + 1) - (size_t)(const void *)("lower") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "lower") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("lower") && ((size_t)(const void *)(("lower") + 1) - (size_t)(const void *)("lower") == 1) ? __builtin_strcmp (name, "lower") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("lower"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("lower") && ((size_t)(const void *)(("lower") + 1) - (size_t)(const void *)("lower") == 1) && (__s2_len = strlen ("lower"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "lower") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("lower"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("lower"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("lower"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("lower"))[3]); } } __result; }))) : __builtin_strcmp (name, "lower")))); }) == 0))
17232 name = "alpha";
17233
17234
17235
17236 if (__builtin_expect (*char_class_alloc == mbcset->nchar_classes, 0))
17237 {
17238
17239
17240 int new_char_class_alloc = 2 * mbcset->nchar_classes + 1;
17241
17242 wctype_t *new_char_classes = ((wctype_t *) realloc (mbcset->char_classes, (new_char_class_alloc) * sizeof (wctype_t)));
17243
17244 if (__builtin_expect (new_char_classes == ((void *)0), 0))
17245 return REG_ESPACE;
17246 mbcset->char_classes = new_char_classes;
17247 *char_class_alloc = new_char_class_alloc;
17248 }
17249 mbcset->char_classes[mbcset->nchar_classes++] = __wctype (name);
17250# 3489 "regcomp.c"
17251 if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("alnum") && (__s1_len = strlen (name), __s2_len = strlen ("alnum"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("alnum") + 1) - (size_t)(const void *)("alnum") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "alnum") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("alnum") && ((size_t)(const void *)(("alnum") + 1) - (size_t)(const void *)("alnum") == 1) ? __builtin_strcmp (name, "alnum") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("alnum"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("alnum") && ((size_t)(const void *)(("alnum") + 1) - (size_t)(const void *)("alnum") == 1) && (__s2_len = strlen ("alnum"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "alnum") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("alnum"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("alnum"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("alnum"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("alnum"))[3]); } } __result; }))) : __builtin_strcmp (name, "alnum")))); }) == 0)
17252 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISalnum)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISalnum)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17253 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("cntrl") && (__s1_len = strlen (name), __s2_len = strlen ("cntrl"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("cntrl") + 1) - (size_t)(const void *)("cntrl") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "cntrl") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("cntrl") && ((size_t)(const void *)(("cntrl") + 1) - (size_t)(const void *)("cntrl") == 1) ? __builtin_strcmp (name, "cntrl") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("cntrl"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("cntrl") && ((size_t)(const void *)(("cntrl") + 1) - (size_t)(const void *)("cntrl") == 1) && (__s2_len = strlen ("cntrl"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "cntrl") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("cntrl"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("cntrl"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("cntrl"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("cntrl"))[3]); } } __result; }))) : __builtin_strcmp (name, "cntrl")))); }) == 0)
17254 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _IScntrl)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _IScntrl)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17255 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("lower") && (__s1_len = strlen (name), __s2_len = strlen ("lower"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("lower") + 1) - (size_t)(const void *)("lower") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "lower") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("lower") && ((size_t)(const void *)(("lower") + 1) - (size_t)(const void *)("lower") == 1) ? __builtin_strcmp (name, "lower") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("lower"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("lower") && ((size_t)(const void *)(("lower") + 1) - (size_t)(const void *)("lower") == 1) && (__s2_len = strlen ("lower"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "lower") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("lower"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("lower"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("lower"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("lower"))[3]); } } __result; }))) : __builtin_strcmp (name, "lower")))); }) == 0)
17256 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISlower)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISlower)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17257 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("space") && (__s1_len = strlen (name), __s2_len = strlen ("space"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("space") + 1) - (size_t)(const void *)("space") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "space") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("space") && ((size_t)(const void *)(("space") + 1) - (size_t)(const void *)("space") == 1) ? __builtin_strcmp (name, "space") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("space"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("space") && ((size_t)(const void *)(("space") + 1) - (size_t)(const void *)("space") == 1) && (__s2_len = strlen ("space"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "space") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("space"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("space"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("space"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("space"))[3]); } } __result; }))) : __builtin_strcmp (name, "space")))); }) == 0)
17258 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISspace)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISspace)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17259 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("alpha") && (__s1_len = strlen (name), __s2_len = strlen ("alpha"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("alpha") + 1) - (size_t)(const void *)("alpha") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "alpha") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("alpha") && ((size_t)(const void *)(("alpha") + 1) - (size_t)(const void *)("alpha") == 1) ? __builtin_strcmp (name, "alpha") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("alpha"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("alpha") && ((size_t)(const void *)(("alpha") + 1) - (size_t)(const void *)("alpha") == 1) && (__s2_len = strlen ("alpha"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "alpha") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("alpha"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("alpha"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("alpha"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("alpha"))[3]); } } __result; }))) : __builtin_strcmp (name, "alpha")))); }) == 0)
17260 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISalpha)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISalpha)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17261 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("digit") && (__s1_len = strlen (name), __s2_len = strlen ("digit"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("digit") + 1) - (size_t)(const void *)("digit") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "digit") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("digit") && ((size_t)(const void *)(("digit") + 1) - (size_t)(const void *)("digit") == 1) ? __builtin_strcmp (name, "digit") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("digit"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("digit") && ((size_t)(const void *)(("digit") + 1) - (size_t)(const void *)("digit") == 1) && (__s2_len = strlen ("digit"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "digit") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("digit"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("digit"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("digit"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("digit"))[3]); } } __result; }))) : __builtin_strcmp (name, "digit")))); }) == 0)
17262 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (({ int __c = (i); __c >= '0' && __c <= '9'; })) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (({ int __c = (i); __c >= '0' && __c <= '9'; })) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17263 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("print") && (__s1_len = strlen (name), __s2_len = strlen ("print"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("print") + 1) - (size_t)(const void *)("print") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "print") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("print") && ((size_t)(const void *)(("print") + 1) - (size_t)(const void *)("print") == 1) ? __builtin_strcmp (name, "print") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("print"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("print") && ((size_t)(const void *)(("print") + 1) - (size_t)(const void *)("print") == 1) && (__s2_len = strlen ("print"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "print") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("print"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("print"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("print"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("print"))[3]); } } __result; }))) : __builtin_strcmp (name, "print")))); }) == 0)
17264 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISprint)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISprint)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17265 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("upper") && (__s1_len = strlen (name), __s2_len = strlen ("upper"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("upper") + 1) - (size_t)(const void *)("upper") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "upper") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("upper") && ((size_t)(const void *)(("upper") + 1) - (size_t)(const void *)("upper") == 1) ? __builtin_strcmp (name, "upper") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("upper"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("upper") && ((size_t)(const void *)(("upper") + 1) - (size_t)(const void *)("upper") == 1) && (__s2_len = strlen ("upper"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "upper") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("upper"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("upper"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("upper"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("upper"))[3]); } } __result; }))) : __builtin_strcmp (name, "upper")))); }) == 0)
17266 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISupper)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISupper)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17267 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("blank") && (__s1_len = strlen (name), __s2_len = strlen ("blank"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("blank") + 1) - (size_t)(const void *)("blank") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "blank") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("blank") && ((size_t)(const void *)(("blank") + 1) - (size_t)(const void *)("blank") == 1) ? __builtin_strcmp (name, "blank") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("blank"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("blank") && ((size_t)(const void *)(("blank") + 1) - (size_t)(const void *)("blank") == 1) && (__s2_len = strlen ("blank"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "blank") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("blank"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("blank"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("blank"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("blank"))[3]); } } __result; }))) : __builtin_strcmp (name, "blank")))); }) == 0)
17268 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISblank)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISblank)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17269 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("graph") && (__s1_len = strlen (name), __s2_len = strlen ("graph"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("graph") + 1) - (size_t)(const void *)("graph") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "graph") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("graph") && ((size_t)(const void *)(("graph") + 1) - (size_t)(const void *)("graph") == 1) ? __builtin_strcmp (name, "graph") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("graph"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("graph") && ((size_t)(const void *)(("graph") + 1) - (size_t)(const void *)("graph") == 1) && (__s2_len = strlen ("graph"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "graph") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("graph"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("graph"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("graph"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("graph"))[3]); } } __result; }))) : __builtin_strcmp (name, "graph")))); }) == 0)
17270 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISgraph)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISgraph)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17271 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("punct") && (__s1_len = strlen (name), __s2_len = strlen ("punct"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("punct") + 1) - (size_t)(const void *)("punct") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "punct") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("punct") && ((size_t)(const void *)(("punct") + 1) - (size_t)(const void *)("punct") == 1) ? __builtin_strcmp (name, "punct") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("punct"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("punct") && ((size_t)(const void *)(("punct") + 1) - (size_t)(const void *)("punct") == 1) && (__s2_len = strlen ("punct"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "punct") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("punct"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("punct"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("punct"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("punct"))[3]); } } __result; }))) : __builtin_strcmp (name, "punct")))); }) == 0)
17272 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISpunct)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISpunct)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17273 else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("xdigit") && (__s1_len = strlen (name), __s2_len = strlen ("xdigit"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("xdigit") + 1) - (size_t)(const void *)("xdigit") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "xdigit") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("xdigit") && ((size_t)(const void *)(("xdigit") + 1) - (size_t)(const void *)("xdigit") == 1) ? __builtin_strcmp (name, "xdigit") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("xdigit"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("xdigit") && ((size_t)(const void *)(("xdigit") + 1) - (size_t)(const void *)("xdigit") == 1) && (__s2_len = strlen ("xdigit"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "xdigit") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("xdigit"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("xdigit"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("xdigit"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("xdigit"))[3]); } } __result; }))) : __builtin_strcmp (name, "xdigit")))); }) == 0)
17274 do { if (__builtin_expect (trans != ((void *)0), 0)) { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISxdigit)) (sbcset[trans[i] / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << trans[i] % (sizeof (bitset_word_t) * 8)); } else { for (i = 0; i < 256; ++i) if (((*__ctype_b_loc ())[(int) ((i))] & (unsigned short int) _ISxdigit)) (sbcset[i / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << i % (sizeof (bitset_word_t) * 8)); } } while (0);
17275 else
17276 return REG_ECTYPE;
17277
17278 return REG_NOERROR;
17279}
17280
17281static bin_tree_t *
17282build_charclass_op (re_dfa_t *dfa, unsigned char * trans,
17283 const unsigned char *class_name,
17284 const unsigned char *extra, int non_match,
17285 reg_errcode_t *err)
17286{
17287 re_bitset_ptr_t sbcset;
17288
17289 re_charset_t *mbcset;
17290 int alloc = 0;
17291
17292 reg_errcode_t ret;
17293 re_token_t br_token;
17294 bin_tree_t *tree;
17295
17296 sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
17297
17298 mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
17299
17300
17301
17302 if (__builtin_expect (sbcset == ((void *)0) || mbcset == ((void *)0), 0))
17303
17304
17305
17306 {
17307 *err = REG_ESPACE;
17308 return ((void *)0);
17309 }
17310
17311 if (non_match)
17312 {
17313
17314
17315
17316
17317
17318 mbcset->non_match = 1;
17319
17320 }
17321
17322
17323 ret = build_charclass (trans, sbcset,
17324
17325 mbcset, &alloc,
17326
17327 class_name, 0);
17328
17329 if (__builtin_expect (ret != REG_NOERROR, 0))
17330 {
17331 free (sbcset);
17332
17333 free_charset (mbcset);
17334
17335 *err = ret;
17336 return ((void *)0);
17337 }
17338
17339 for (; *extra; extra++)
17340 (sbcset[*extra / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << *extra % (sizeof (bitset_word_t) * 8));
17341
17342
17343 if (non_match)
17344 bitset_not (sbcset);
17345
17346
17347
17348 if (dfa->mb_cur_max > 1)
17349 bitset_mask (sbcset, dfa->sb_char);
17350
17351
17352
17353 br_token.type = SIMPLE_BRACKET;
17354 br_token.opr.sbcset = sbcset;
17355 tree = create_token_tree (dfa, ((void *)0), ((void *)0), &br_token);
17356 if (__builtin_expect (tree == ((void *)0), 0))
17357 goto build_word_op_espace;
17358
17359
17360 if (dfa->mb_cur_max > 1)
17361 {
17362 bin_tree_t *mbc_tree;
17363
17364 br_token.type = COMPLEX_BRACKET;
17365 br_token.opr.mbcset = mbcset;
17366 dfa->has_mb_node = 1;
17367 mbc_tree = create_token_tree (dfa, ((void *)0), ((void *)0), &br_token);
17368 if (__builtin_expect (mbc_tree == ((void *)0), 0))
17369 goto build_word_op_espace;
17370
17371 tree = create_tree (dfa, tree, mbc_tree, OP_ALT);
17372 if (__builtin_expect (mbc_tree != ((void *)0), 1))
17373 return tree;
17374 }
17375 else
17376 {
17377 free_charset (mbcset);
17378 return tree;
17379 }
17380
17381
17382
17383
17384 build_word_op_espace:
17385 free (sbcset);
17386
17387 free_charset (mbcset);
17388
17389 *err = REG_ESPACE;
17390 return ((void *)0);
17391}
17392
17393
17394
17395
17396
17397
17398static int
17399fetch_number (re_string_t *input, re_token_t *token, reg_syntax_t syntax)
17400{
17401 int num = -1;
17402 unsigned char c;
17403 while (1)
17404 {
17405 fetch_token (token, input, syntax);
17406 c = token->opr.c;
17407 if (__builtin_expect (token->type == END_OF_RE, 0))
17408 return -2;
17409 if (token->type == OP_CLOSE_DUP_NUM || c == ',')
17410 break;
17411 num = ((token->type != CHARACTER || c < '0' || '9' < c || num == -2)
17412 ? -2 : ((num == -1) ? c - '0' : num * 10 + c - '0'));
17413 num = (num > (0x7fff)) ? -2 : num;
17414 }
17415 return num;
17416}
17417
17418
17419static void
17420free_charset (re_charset_t *cset)
17421{
17422 free (cset->mbchars);
17423
17424 free (cset->coll_syms);
17425 free (cset->equiv_classes);
17426 free (cset->range_starts);
17427 free (cset->range_ends);
17428
17429 free (cset->char_classes);
17430 free (cset);
17431}
17432
17433
17434
17435
17436
17437
17438static bin_tree_t *
17439create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
17440 re_token_type_t type)
17441{
17442 re_token_t t;
17443 t.type = type;
17444 return create_token_tree (dfa, left, right, &t);
17445}
17446
17447static bin_tree_t *
17448create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
17449 const re_token_t *token)
17450{
17451 bin_tree_t *tree;
17452 if (__builtin_expect (dfa->str_tree_storage_idx == ((1024 - sizeof (void *)) / sizeof (bin_tree_t)), 0))
17453 {
17454 bin_tree_storage_t *storage = ((bin_tree_storage_t *) malloc ((1) * sizeof (bin_tree_storage_t)));
17455
17456 if (storage == ((void *)0))
17457 return ((void *)0);
17458 storage->next = dfa->str_tree_storage;
17459 dfa->str_tree_storage = storage;
17460 dfa->str_tree_storage_idx = 0;
17461 }
17462 tree = &dfa->str_tree_storage->data[dfa->str_tree_storage_idx++];
17463
17464 tree->parent = ((void *)0);
17465 tree->left = left;
17466 tree->right = right;
17467 tree->token = *token;
17468 tree->token.duplicated = 0;
17469 tree->token.opt_subexp = 0;
17470 tree->first = ((void *)0);
17471 tree->next = ((void *)0);
17472 tree->node_idx = -1;
17473
17474 if (left != ((void *)0))
17475 left->parent = tree;
17476 if (right != ((void *)0))
17477 right->parent = tree;
17478 return tree;
17479}
17480
17481
17482
17483
17484static reg_errcode_t
17485mark_opt_subexp (void *extra, bin_tree_t *node)
17486{
17487 int idx = (int) (long) extra;
17488 if (node->token.type == SUBEXP && node->token.opr.idx == idx)
17489 node->token.opt_subexp = 1;
17490
17491 return REG_NOERROR;
17492}
17493
17494
17495
17496static void
17497free_token (re_token_t *node)
17498{
17499
17500 if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
17501 free_charset (node->opr.mbcset);
17502 else
17503
17504 if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
17505 free (node->opr.sbcset);
17506}
17507
17508
17509
17510
17511static reg_errcode_t
17512free_tree (void *extra, bin_tree_t *node)
17513{
17514 free_token (&node->token);
17515 return REG_NOERROR;
17516}
17517
17518
17519
17520
17521
17522
17523
17524static bin_tree_t *
17525duplicate_tree (const bin_tree_t *root, re_dfa_t *dfa)
17526{
17527 const bin_tree_t *node;
17528 bin_tree_t *dup_root;
17529 bin_tree_t **p_new = &dup_root, *dup_node = root->parent;
17530
17531 for (node = root; ; )
17532 {
17533
17534 *p_new = create_token_tree (dfa, ((void *)0), ((void *)0), &node->token);
17535 if (*p_new == ((void *)0))
17536 return ((void *)0);
17537 (*p_new)->parent = dup_node;
17538 (*p_new)->token.duplicated = 1;
17539 dup_node = *p_new;
17540
17541
17542 if (node->left)
17543 {
17544 node = node->left;
17545 p_new = &dup_node->left;
17546 }
17547 else
17548 {
17549 const bin_tree_t *prev = ((void *)0);
17550 while (node->right == prev || node->right == ((void *)0))
17551 {
17552 prev = node;
17553 node = node->parent;
17554 dup_node = dup_node->parent;
17555 if (!node)
17556 return dup_root;
17557 }
17558 node = node->right;
17559 p_new = &dup_node->right;
17560 }
17561 }
17562}
17563# 65 "regex.c" 2
17564# 1 "regexec.c" 1
17565# 21 "regexec.c"
17566static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
17567 int n) ;
17568static void match_ctx_clean (re_match_context_t *mctx) ;
17569static void match_ctx_free (re_match_context_t *cache) ;
17570static reg_errcode_t match_ctx_add_entry (re_match_context_t *cache, int node,
17571 int str_idx, int from, int to)
17572 ;
17573static int search_cur_bkref_entry (const re_match_context_t *mctx, int str_idx)
17574 ;
17575static reg_errcode_t match_ctx_add_subtop (re_match_context_t *mctx, int node,
17576 int str_idx) ;
17577static re_sub_match_last_t * match_ctx_add_sublast (re_sub_match_top_t *subtop,
17578 int node, int str_idx)
17579 ;
17580static void sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
17581 re_dfastate_t **limited_sts, int last_node,
17582 int last_str_idx)
17583 ;
17584static reg_errcode_t re_search_internal (const regex_t *preg,
17585 const char *string, int length,
17586 int start, int range, int stop,
17587 size_t nmatch, regmatch_t pmatch[],
17588 int eflags) ;
17589static int re_search_2_stub (struct re_pattern_buffer *bufp,
17590 const char *string1, int length1,
17591 const char *string2, int length2,
17592 int start, int range, struct re_registers *regs,
17593 int stop, int ret_len) ;
17594static int re_search_stub (struct re_pattern_buffer *bufp,
17595 const char *string, int length, int start,
17596 int range, int stop, struct re_registers *regs,
17597 int ret_len) ;
17598static unsigned re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
17599 int nregs, int regs_allocated) ;
17600static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx)
17601 ;
17602static int check_matching (re_match_context_t *mctx, int fl_longest_match,
17603 int *p_match_first) ;
17604static int check_halt_state_context (const re_match_context_t *mctx,
17605 const re_dfastate_t *state, int idx)
17606 ;
17607static void update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
17608 regmatch_t *prev_idx_match, int cur_node,
17609 int cur_idx, int nmatch) ;
17610static reg_errcode_t push_fail_stack (struct re_fail_stack_t *fs,
17611 int str_idx, int dest_node, int nregs,
17612 regmatch_t *regs,
17613 re_node_set *eps_via_nodes)
17614 ;
17615static reg_errcode_t set_regs (const regex_t *preg,
17616 const re_match_context_t *mctx,
17617 size_t nmatch, regmatch_t *pmatch,
17618 int fl_backtrack) ;
17619static reg_errcode_t free_fail_stack_return (struct re_fail_stack_t *fs)
17620 ;
17621
17622
17623static int sift_states_iter_mb (const re_match_context_t *mctx,
17624 re_sift_context_t *sctx,
17625 int node_idx, int str_idx, int max_str_idx)
17626 ;
17627
17628static reg_errcode_t sift_states_backward (const re_match_context_t *mctx,
17629 re_sift_context_t *sctx)
17630 ;
17631static reg_errcode_t build_sifted_states (const re_match_context_t *mctx,
17632 re_sift_context_t *sctx, int str_idx,
17633 re_node_set *cur_dest)
17634 ;
17635static reg_errcode_t update_cur_sifted_state (const re_match_context_t *mctx,
17636 re_sift_context_t *sctx,
17637 int str_idx,
17638 re_node_set *dest_nodes)
17639 ;
17640static reg_errcode_t add_epsilon_src_nodes (const re_dfa_t *dfa,
17641 re_node_set *dest_nodes,
17642 const re_node_set *candidates)
17643 ;
17644static int check_dst_limits (const re_match_context_t *mctx,
17645 re_node_set *limits,
17646 int dst_node, int dst_idx, int src_node,
17647 int src_idx) ;
17648static int check_dst_limits_calc_pos_1 (const re_match_context_t *mctx,
17649 int boundaries, int subexp_idx,
17650 int from_node, int bkref_idx)
17651 ;
17652static int check_dst_limits_calc_pos (const re_match_context_t *mctx,
17653 int limit, int subexp_idx,
17654 int node, int str_idx,
17655 int bkref_idx) ;
17656static reg_errcode_t check_subexp_limits (const re_dfa_t *dfa,
17657 re_node_set *dest_nodes,
17658 const re_node_set *candidates,
17659 re_node_set *limits,
17660 struct re_backref_cache_entry *bkref_ents,
17661 int str_idx) ;
17662static reg_errcode_t sift_states_bkref (const re_match_context_t *mctx,
17663 re_sift_context_t *sctx,
17664 int str_idx, const re_node_set *candidates)
17665 ;
17666static reg_errcode_t merge_state_array (const re_dfa_t *dfa,
17667 re_dfastate_t **dst,
17668 re_dfastate_t **src, int num)
17669 ;
17670static re_dfastate_t *find_recover_state (reg_errcode_t *err,
17671 re_match_context_t *mctx) ;
17672static re_dfastate_t *transit_state (reg_errcode_t *err,
17673 re_match_context_t *mctx,
17674 re_dfastate_t *state) ;
17675static re_dfastate_t *merge_state_with_log (reg_errcode_t *err,
17676 re_match_context_t *mctx,
17677 re_dfastate_t *next_state)
17678 ;
17679static reg_errcode_t check_subexp_matching_top (re_match_context_t *mctx,
17680 re_node_set *cur_nodes,
17681 int str_idx) ;
17682
17683
17684
17685
17686
17687
17688
17689static reg_errcode_t transit_state_mb (re_match_context_t *mctx,
17690 re_dfastate_t *pstate)
17691 ;
17692
17693static reg_errcode_t transit_state_bkref (re_match_context_t *mctx,
17694 const re_node_set *nodes)
17695 ;
17696static reg_errcode_t get_subexp (re_match_context_t *mctx,
17697 int bkref_node, int bkref_str_idx)
17698 ;
17699static reg_errcode_t get_subexp_sub (re_match_context_t *mctx,
17700 const re_sub_match_top_t *sub_top,
17701 re_sub_match_last_t *sub_last,
17702 int bkref_node, int bkref_str)
17703 ;
17704static int find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
17705 int subexp_idx, int type) ;
17706static reg_errcode_t check_arrival (re_match_context_t *mctx,
17707 state_array_t *path, int top_node,
17708 int top_str, int last_node, int last_str,
17709 int type) ;
17710static reg_errcode_t check_arrival_add_next_nodes (re_match_context_t *mctx,
17711 int str_idx,
17712 re_node_set *cur_nodes,
17713 re_node_set *next_nodes)
17714 ;
17715static reg_errcode_t check_arrival_expand_ecl (const re_dfa_t *dfa,
17716 re_node_set *cur_nodes,
17717 int ex_subexp, int type)
17718 ;
17719static reg_errcode_t check_arrival_expand_ecl_sub (const re_dfa_t *dfa,
17720 re_node_set *dst_nodes,
17721 int target, int ex_subexp,
17722 int type) ;
17723static reg_errcode_t expand_bkref_cache (re_match_context_t *mctx,
17724 re_node_set *cur_nodes, int cur_str,
17725 int subexp_num, int type)
17726 ;
17727static int build_trtable (const re_dfa_t *dfa,
17728 re_dfastate_t *state) ;
17729
17730static int check_node_accept_bytes (const re_dfa_t *dfa, int node_idx,
17731 const re_string_t *input, int idx)
17732 ;
17733
17734static unsigned int find_collation_sequence_value (const unsigned char *mbs,
17735 size_t name_len)
17736 ;
17737
17738
17739static int group_nodes_into_DFAstates (const re_dfa_t *dfa,
17740 const re_dfastate_t *state,
17741 re_node_set *states_node,
17742 bitset_t *states_ch) ;
17743static int check_node_accept (const re_match_context_t *mctx,
17744 const re_token_t *node, int idx)
17745 ;
17746static reg_errcode_t extend_buffers (re_match_context_t *mctx)
17747 ;
17748# 220 "regexec.c"
17749int
17750__regexec (preg, string, nmatch, pmatch, eflags)
17751 const regex_t *__restrict preg;
17752 const char *__restrict string;
17753 size_t nmatch;
17754 regmatch_t pmatch[];
17755 int eflags;
17756{
17757 reg_errcode_t err;
17758 int start, length;
17759 re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
17760
17761 if (eflags & ~(1 | (1 << 1) | (1 << 2)))
17762 return REG_BADPAT;
17763
17764 if (eflags & (1 << 2))
17765 {
17766 start = pmatch[0].rm_so;
17767 length = pmatch[0].rm_eo;
17768 }
17769 else
17770 {
17771 start = 0;
17772 length = strlen (string);
17773 }
17774
17775 ({ __lll_mutex_lock (&(dfa->lock)); 0; });
17776 if (preg->no_sub)
17777 err = re_search_internal (preg, string, length, start, length - start,
17778 length, 0, ((void *)0), eflags);
17779 else
17780 err = re_search_internal (preg, string, length, start, length - start,
17781 length, nmatch, pmatch, eflags);
17782 __lll_mutex_unlock(&(dfa->lock));
17783 return err != REG_NOERROR;
17784}
17785
17786
17787# 1 "../include/shlib-compat.h" 1
17788# 26 "../include/shlib-compat.h"
17789# 1 "/var/tmp/portage/glibc-2.5/work/build-default-hppa2.0-unknown-linux-gnu-nptl/abi-versions.h" 1
17790# 27 "../include/shlib-compat.h" 2
17791# 259 "regexec.c" 2
17792extern __typeof (__regexec) regexec __attribute__ ((weak, alias ("__regexec")));;
17793# 306 "regexec.c"
17794int
17795__re_match (bufp, string, length, start, regs)
17796 struct re_pattern_buffer *bufp;
17797 const char *string;
17798 int length, start;
17799 struct re_registers *regs;
17800{
17801 return re_search_stub (bufp, string, length, start, 0, length, regs, 1);
17802}
17803
17804extern __typeof (__re_match) re_match __attribute__ ((weak, alias ("__re_match")));
17805
17806
17807int
17808__re_search (bufp, string, length, start, range, regs)
17809 struct re_pattern_buffer *bufp;
17810 const char *string;
17811 int length, start, range;
17812 struct re_registers *regs;
17813{
17814 return re_search_stub (bufp, string, length, start, range, length, regs, 0);
17815}
17816
17817extern __typeof (__re_search) re_search __attribute__ ((weak, alias ("__re_search")));
17818
17819
17820int
17821__re_match_2 (bufp, string1, length1, string2, length2, start, regs, stop)
17822 struct re_pattern_buffer *bufp;
17823 const char *string1, *string2;
17824 int length1, length2, start, stop;
17825 struct re_registers *regs;
17826{
17827 return re_search_2_stub (bufp, string1, length1, string2, length2,
17828 start, 0, regs, stop, 1);
17829}
17830
17831extern __typeof (__re_match_2) re_match_2 __attribute__ ((weak, alias ("__re_match_2")));
17832
17833
17834int
17835__re_search_2 (bufp, string1, length1, string2, length2, start, range, regs, stop)
17836 struct re_pattern_buffer *bufp;
17837 const char *string1, *string2;
17838 int length1, length2, start, range, stop;
17839 struct re_registers *regs;
17840{
17841 return re_search_2_stub (bufp, string1, length1, string2, length2,
17842 start, range, regs, stop, 0);
17843}
17844
17845extern __typeof (__re_search_2) re_search_2 __attribute__ ((weak, alias ("__re_search_2")));
17846
17847
17848static int
17849re_search_2_stub (bufp, string1, length1, string2, length2, start, range, regs,
17850 stop, ret_len)
17851 struct re_pattern_buffer *bufp;
17852 const char *string1, *string2;
17853 int length1, length2, start, range, stop, ret_len;
17854 struct re_registers *regs;
17855{
17856 const char *str;
17857 int rval;
17858 int len = length1 + length2;
17859 int free_str = 0;
17860
17861 if (__builtin_expect (length1 < 0 || length2 < 0 || stop < 0, 0))
17862 return -2;
17863
17864
17865 if (length2 > 0)
17866 if (length1 > 0)
17867 {
17868 char *s = ((char *) malloc ((len) * sizeof (char)));
17869
17870 if (__builtin_expect (s == ((void *)0), 0))
17871 return -2;
17872
17873 memcpy (__builtin_mempcpy (s, string1, length1), string2, length2);
17874
17875
17876
17877
17878 str = s;
17879 free_str = 1;
17880 }
17881 else
17882 str = string2;
17883 else
17884 str = string1;
17885
17886 rval = re_search_stub (bufp, str, len, start, range, stop, regs,
17887 ret_len);
17888 if (free_str)
17889 free ((char *) str);
17890 return rval;
17891}
17892
17893
17894
17895
17896
17897
17898static int
17899re_search_stub (bufp, string, length, start, range, stop, regs, ret_len)
17900 struct re_pattern_buffer *bufp;
17901 const char *string;
17902 int length, start, range, stop, ret_len;
17903 struct re_registers *regs;
17904{
17905 reg_errcode_t result;
17906 regmatch_t *pmatch;
17907 int nregs, rval;
17908 int eflags = 0;
17909 re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
17910
17911
17912 if (__builtin_expect (start < 0 || start > length, 0))
17913 return -1;
17914 if (__builtin_expect (start + range > length, 0))
17915 range = length - start;
17916 else if (__builtin_expect (start + range < 0, 0))
17917 range = -start;
17918
17919 ({ __lll_mutex_lock (&(dfa->lock)); 0; });
17920
17921 eflags |= (bufp->not_bol) ? 1 : 0;
17922 eflags |= (bufp->not_eol) ? (1 << 1) : 0;
17923
17924
17925 if (range > 0 && bufp->fastmap != ((void *)0) && !bufp->fastmap_accurate)
17926 __re_compile_fastmap (bufp);
17927
17928 if (__builtin_expect (bufp->no_sub, 0))
17929 regs = ((void *)0);
17930
17931
17932 if (regs == ((void *)0))
17933 nregs = 1;
17934 else if (__builtin_expect (bufp->regs_allocated == 2 && regs->num_regs < bufp->re_nsub + 1, 0))
17935
17936 {
17937 nregs = regs->num_regs;
17938 if (__builtin_expect (nregs < 1, 0))
17939 {
17940
17941 regs = ((void *)0);
17942 nregs = 1;
17943 }
17944 }
17945 else
17946 nregs = bufp->re_nsub + 1;
17947 pmatch = ((regmatch_t *) malloc ((nregs) * sizeof (regmatch_t)));
17948 if (__builtin_expect (pmatch == ((void *)0), 0))
17949 {
17950 rval = -2;
17951 goto out;
17952 }
17953
17954 result = re_search_internal (bufp, string, length, start, range, stop,
17955 nregs, pmatch, eflags);
17956
17957 rval = 0;
17958
17959
17960 if (result != REG_NOERROR)
17961 rval = -1;
17962 else if (regs != ((void *)0))
17963 {
17964
17965 bufp->regs_allocated = re_copy_regs (regs, pmatch, nregs,
17966 bufp->regs_allocated);
17967 if (__builtin_expect (bufp->regs_allocated == 0, 0))
17968 rval = -2;
17969 }
17970
17971 if (__builtin_expect (rval == 0, 1))
17972 {
17973 if (ret_len)
17974 {
17975 ((pmatch[0].rm_so == start) ? (void) (0) : (__assert_fail ("pmatch[0].rm_so == start", "regexec.c", 487, __PRETTY_FUNCTION__), (void) (0)));
17976 rval = pmatch[0].rm_eo - start;
17977 }
17978 else
17979 rval = pmatch[0].rm_so;
17980 }
17981 free (pmatch);
17982 out:
17983 __lll_mutex_unlock(&(dfa->lock));
17984 return rval;
17985}
17986
17987static unsigned
17988re_copy_regs (regs, pmatch, nregs, regs_allocated)
17989 struct re_registers *regs;
17990 regmatch_t *pmatch;
17991 int nregs, regs_allocated;
17992{
17993 int rval = 1;
17994 int i;
17995 int need_regs = nregs + 1;
17996
17997
17998
17999
18000 if (regs_allocated == 0)
18001 {
18002 regs->start = ((regoff_t *) malloc ((need_regs) * sizeof (regoff_t)));
18003 regs->end = ((regoff_t *) malloc ((need_regs) * sizeof (regoff_t)));
18004 if (__builtin_expect (regs->start == ((void *)0), 0) || __builtin_expect (regs->end == ((void *)0), 0))
18005 return 0;
18006 regs->num_regs = need_regs;
18007 }
18008 else if (regs_allocated == 1)
18009 {
18010
18011
18012 if (__builtin_expect (need_regs > regs->num_regs, 0))
18013 {
18014 regoff_t *new_start = ((regoff_t *) realloc (regs->start, (need_regs) * sizeof (regoff_t)));
18015 regoff_t *new_end = ((regoff_t *) realloc (regs->end, (need_regs) * sizeof (regoff_t)));
18016 if (__builtin_expect (new_start == ((void *)0), 0) || __builtin_expect (new_end == ((void *)0), 0))
18017 return 0;
18018 regs->start = new_start;
18019 regs->end = new_end;
18020 regs->num_regs = need_regs;
18021 }
18022 }
18023 else
18024 {
18025 ((regs_allocated == 2) ? (void) (0) : (__assert_fail ("regs_allocated == 2", "regexec.c", 537, __PRETTY_FUNCTION__), (void) (0)));
18026
18027 ((regs->num_regs >= nregs) ? (void) (0) : (__assert_fail ("regs->num_regs >= nregs", "regexec.c", 539, __PRETTY_FUNCTION__), (void) (0)));
18028 rval = 2;
18029 }
18030
18031
18032 for (i = 0; i < nregs; ++i)
18033 {
18034 regs->start[i] = pmatch[i].rm_so;
18035 regs->end[i] = pmatch[i].rm_eo;
18036 }
18037 for ( ; i < regs->num_regs; ++i)
18038 regs->start[i] = regs->end[i] = -1;
18039
18040 return rval;
18041}
18042# 568 "regexec.c"
18043void
18044__re_set_registers (bufp, regs, num_regs, starts, ends)
18045 struct re_pattern_buffer *bufp;
18046 struct re_registers *regs;
18047 unsigned num_regs;
18048 regoff_t *starts, *ends;
18049{
18050 if (num_regs)
18051 {
18052 bufp->regs_allocated = 1;
18053 regs->num_regs = num_regs;
18054 regs->start = starts;
18055 regs->end = ends;
18056 }
18057 else
18058 {
18059 bufp->regs_allocated = 0;
18060 regs->num_regs = 0;
18061 regs->start = regs->end = (regoff_t *) 0;
18062 }
18063}
18064
18065extern __typeof (__re_set_registers) re_set_registers __attribute__ ((weak, alias ("__re_set_registers")));
18066
18067
18068
18069
18070
18071
18072int
18073
18074__attribute__ ((weak))
18075
18076re_exec (s)
18077 const char *s;
18078{
18079 return 0 == __regexec (&re_comp_buf, s, 0, ((void *)0), 0);
18080}
18081# 619 "regexec.c"
18082static reg_errcode_t
18083re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
18084 eflags)
18085 const regex_t *preg;
18086 const char *string;
18087 int length, start, range, stop, eflags;
18088 size_t nmatch;
18089 regmatch_t pmatch[];
18090{
18091 reg_errcode_t err;
18092 const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
18093 int left_lim, right_lim, incr;
18094 int fl_longest_match, match_first, match_kind, match_last = -1;
18095 int extra_nmatch;
18096 int sb, ch;
18097
18098 re_match_context_t mctx = { .dfa = dfa };
18099
18100
18101
18102 char *fastmap = (preg->fastmap != ((void *)0) && preg->fastmap_accurate
18103 && range && !preg->can_be_null) ? preg->fastmap : ((void *)0);
18104 unsigned char * t = preg->translate;
18105
18106
18107
18108
18109
18110
18111 extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
18112 nmatch -= extra_nmatch;
18113
18114
18115 if (__builtin_expect (preg->used == 0 || dfa->init_state == ((void *)0) || dfa->init_state_word == ((void *)0) || dfa->init_state_nl == ((void *)0) || dfa->init_state_begbuf == ((void *)0), 0))
18116
18117
18118 return REG_NOMATCH;
18119# 665 "regexec.c"
18120 if (dfa->init_state->nodes.nelem == 0
18121 && dfa->init_state_word->nodes.nelem == 0
18122 && (dfa->init_state_nl->nodes.nelem == 0
18123 || !preg->newline_anchor))
18124 {
18125 if (start != 0 && start + range != 0)
18126 return REG_NOMATCH;
18127 start = range = 0;
18128 }
18129
18130
18131 fl_longest_match = (nmatch != 0 || dfa->nbackref);
18132
18133 err = re_string_allocate (&mctx.input, string, length, dfa->nodes_len + 1,
18134 preg->translate, preg->syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1), dfa);
18135 if (__builtin_expect (err != REG_NOERROR, 0))
18136 goto free_return;
18137 mctx.input.stop = stop;
18138 mctx.input.raw_stop = stop;
18139 mctx.input.newline_anchor = preg->newline_anchor;
18140
18141 err = match_ctx_init (&mctx, eflags, dfa->nbackref * 2);
18142 if (__builtin_expect (err != REG_NOERROR, 0))
18143 goto free_return;
18144
18145
18146
18147
18148
18149 if (nmatch > 1 || dfa->has_mb_node)
18150 {
18151 mctx.state_log = ((re_dfastate_t * *) malloc ((mctx.input.bufs_len + 1) * sizeof (re_dfastate_t *)));
18152 if (__builtin_expect (mctx.state_log == ((void *)0), 0))
18153 {
18154 err = REG_ESPACE;
18155 goto free_return;
18156 }
18157 }
18158 else
18159 mctx.state_log = ((void *)0);
18160
18161 match_first = start;
18162 mctx.input.tip_context = (eflags & 1) ? ((1 << 1) << 1)
18163 : (1 << 1) | ((1 << 1) << 1);
18164
18165
18166 incr = (range < 0) ? -1 : 1;
18167 left_lim = (range < 0) ? start + range : start;
18168 right_lim = (range < 0) ? start : start + range;
18169 sb = dfa->mb_cur_max == 1;
18170 match_kind =
18171 (fastmap
18172 ? ((sb || !(preg->syntax & ((((((((((((((((((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) || t) ? 4 : 0)
18173 | (range >= 0 ? 2 : 0)
18174 | (t != ((void *)0) ? 1 : 0))
18175 : 8);
18176
18177 for (;; match_first += incr)
18178 {
18179 err = REG_NOMATCH;
18180 if (match_first < left_lim || right_lim < match_first)
18181 goto free_return;
18182
18183
18184
18185
18186
18187
18188 switch (match_kind)
18189 {
18190 case 8:
18191
18192 break;
18193
18194 case 7:
18195
18196 while (__builtin_expect (match_first < right_lim, 1)
18197 && !fastmap[t[(unsigned char) string[match_first]]])
18198 ++match_first;
18199 goto forward_match_found_start_or_reached_end;
18200
18201 case 6:
18202
18203 while (__builtin_expect (match_first < right_lim, 1)
18204 && !fastmap[(unsigned char) string[match_first]])
18205 ++match_first;
18206
18207 forward_match_found_start_or_reached_end:
18208 if (__builtin_expect (match_first == right_lim, 0))
18209 {
18210 ch = match_first >= length
18211 ? 0 : (unsigned char) string[match_first];
18212 if (!fastmap[t ? t[ch] : ch])
18213 goto free_return;
18214 }
18215 break;
18216
18217 case 4:
18218 case 5:
18219
18220 while (match_first >= left_lim)
18221 {
18222 ch = match_first >= length
18223 ? 0 : (unsigned char) string[match_first];
18224 if (fastmap[t ? t[ch] : ch])
18225 break;
18226 --match_first;
18227 }
18228 if (match_first < left_lim)
18229 goto free_return;
18230 break;
18231
18232 default:
18233
18234
18235
18236 for (;;)
18237 {
18238
18239
18240 unsigned int offset = match_first - mctx.input.raw_mbs_idx;
18241 if (__builtin_expect (offset >= (unsigned int) mctx.input.valid_raw_len, 0))
18242 {
18243 err = re_string_reconstruct (&mctx.input, match_first,
18244 eflags);
18245 if (__builtin_expect (err != REG_NOERROR, 0))
18246 goto free_return;
18247
18248 offset = match_first - mctx.input.raw_mbs_idx;
18249 }
18250
18251
18252 ch = (match_first >= length
18253 ? 0 : ((&mctx.input)->mbs[offset]));
18254 if (fastmap[ch])
18255 break;
18256 match_first += incr;
18257 if (match_first < left_lim || match_first > right_lim)
18258 {
18259 err = REG_NOMATCH;
18260 goto free_return;
18261 }
18262 }
18263 break;
18264 }
18265
18266
18267
18268 err = re_string_reconstruct (&mctx.input, match_first, eflags);
18269 if (__builtin_expect (err != REG_NOERROR, 0))
18270 goto free_return;
18271
18272
18273
18274
18275 if (!sb && !((0) == (&mctx.input)->valid_len || (&mctx.input)->wcs[0] != (0xffffffffu)))
18276 continue;
18277
18278
18279
18280
18281 mctx.state_log_top = mctx.nbkref_ents = mctx.max_mb_elem_len = 0;
18282 match_last = check_matching (&mctx, fl_longest_match,
18283 range >= 0 ? &match_first : ((void *)0));
18284 if (match_last != -1)
18285 {
18286 if (__builtin_expect (match_last == -2, 0))
18287 {
18288 err = REG_ESPACE;
18289 goto free_return;
18290 }
18291 else
18292 {
18293 mctx.match_last = match_last;
18294 if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
18295 {
18296 re_dfastate_t *pstate = mctx.state_log[match_last];
18297 mctx.last_node = check_halt_state_context (&mctx, pstate,
18298 match_last);
18299 }
18300 if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
18301 || dfa->nbackref)
18302 {
18303 err = prune_impossible_nodes (&mctx);
18304 if (err == REG_NOERROR)
18305 break;
18306 if (__builtin_expect (err != REG_NOMATCH, 0))
18307 goto free_return;
18308 match_last = -1;
18309 }
18310 else
18311 break;
18312 }
18313 }
18314
18315 match_ctx_clean (&mctx);
18316 }
18317
18318
18319
18320
18321
18322
18323
18324 if (nmatch > 0)
18325 {
18326 int reg_idx;
18327
18328
18329 for (reg_idx = 1; reg_idx < nmatch; ++reg_idx)
18330 pmatch[reg_idx].rm_so = pmatch[reg_idx].rm_eo = -1;
18331
18332
18333 pmatch[0].rm_so = 0;
18334 pmatch[0].rm_eo = mctx.match_last;
18335
18336 if (!preg->no_sub && nmatch > 1)
18337 {
18338 err = set_regs (preg, &mctx, nmatch, pmatch,
18339 dfa->has_plural_match && dfa->nbackref > 0);
18340 if (__builtin_expect (err != REG_NOERROR, 0))
18341 goto free_return;
18342 }
18343
18344
18345
18346
18347 for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
18348 if (pmatch[reg_idx].rm_so != -1)
18349 {
18350
18351 if (__builtin_expect (mctx.input.offsets_needed != 0, 0))
18352 {
18353 pmatch[reg_idx].rm_so =
18354 (pmatch[reg_idx].rm_so == mctx.input.valid_len
18355 ? mctx.input.valid_raw_len
18356 : mctx.input.offsets[pmatch[reg_idx].rm_so]);
18357 pmatch[reg_idx].rm_eo =
18358 (pmatch[reg_idx].rm_eo == mctx.input.valid_len
18359 ? mctx.input.valid_raw_len
18360 : mctx.input.offsets[pmatch[reg_idx].rm_eo]);
18361 }
18362
18363
18364
18365 pmatch[reg_idx].rm_so += match_first;
18366 pmatch[reg_idx].rm_eo += match_first;
18367 }
18368 for (reg_idx = 0; reg_idx < extra_nmatch; ++reg_idx)
18369 {
18370 pmatch[nmatch + reg_idx].rm_so = -1;
18371 pmatch[nmatch + reg_idx].rm_eo = -1;
18372 }
18373
18374 if (dfa->subexp_map)
18375 for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
18376 if (dfa->subexp_map[reg_idx] != reg_idx)
18377 {
18378 pmatch[reg_idx + 1].rm_so
18379 = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
18380 pmatch[reg_idx + 1].rm_eo
18381 = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
18382 }
18383 }
18384
18385 free_return:
18386 free (mctx.state_log);
18387 if (dfa->nbackref)
18388 match_ctx_free (&mctx);
18389 re_string_destruct (&mctx.input);
18390 return err;
18391}
18392
18393static reg_errcode_t
18394prune_impossible_nodes (mctx)
18395 re_match_context_t *mctx;
18396{
18397 const re_dfa_t *const dfa = mctx->dfa;
18398 int halt_node, match_last;
18399 reg_errcode_t ret;
18400 re_dfastate_t **sifted_states;
18401 re_dfastate_t **lim_states = ((void *)0);
18402 re_sift_context_t sctx;
18403
18404
18405
18406 match_last = mctx->match_last;
18407 halt_node = mctx->last_node;
18408 sifted_states = ((re_dfastate_t * *) malloc ((match_last + 1) * sizeof (re_dfastate_t *)));
18409 if (__builtin_expect (sifted_states == ((void *)0), 0))
18410 {
18411 ret = REG_ESPACE;
18412 goto free_return;
18413 }
18414 if (dfa->nbackref)
18415 {
18416 lim_states = ((re_dfastate_t * *) malloc ((match_last + 1) * sizeof (re_dfastate_t *)));
18417 if (__builtin_expect (lim_states == ((void *)0), 0))
18418 {
18419 ret = REG_ESPACE;
18420 goto free_return;
18421 }
18422 while (1)
18423 {
18424 memset (lim_states, '\0',
18425 sizeof (re_dfastate_t *) * (match_last + 1));
18426 sift_ctx_init (&sctx, sifted_states, lim_states, halt_node,
18427 match_last);
18428 ret = sift_states_backward (mctx, &sctx);
18429 free ((&sctx.limits)->elems);
18430 if (__builtin_expect (ret != REG_NOERROR, 0))
18431 goto free_return;
18432 if (sifted_states[0] != ((void *)0) || lim_states[0] != ((void *)0))
18433 break;
18434 do
18435 {
18436 --match_last;
18437 if (match_last < 0)
18438 {
18439 ret = REG_NOMATCH;
18440 goto free_return;
18441 }
18442 } while (mctx->state_log[match_last] == ((void *)0)
18443 || !mctx->state_log[match_last]->halt);
18444 halt_node = check_halt_state_context (mctx,
18445 mctx->state_log[match_last],
18446 match_last);
18447 }
18448 ret = merge_state_array (dfa, sifted_states, lim_states,
18449 match_last + 1);
18450 free (lim_states);
18451 lim_states = ((void *)0);
18452 if (__builtin_expect (ret != REG_NOERROR, 0))
18453 goto free_return;
18454 }
18455 else
18456 {
18457 sift_ctx_init (&sctx, sifted_states, lim_states, halt_node, match_last);
18458 ret = sift_states_backward (mctx, &sctx);
18459 free ((&sctx.limits)->elems);
18460 if (__builtin_expect (ret != REG_NOERROR, 0))
18461 goto free_return;
18462 }
18463 free (mctx->state_log);
18464 mctx->state_log = sifted_states;
18465 sifted_states = ((void *)0);
18466 mctx->last_node = halt_node;
18467 mctx->match_last = match_last;
18468 ret = REG_NOERROR;
18469 free_return:
18470 free (sifted_states);
18471 free (lim_states);
18472 return ret;
18473}
18474
18475
18476
18477
18478
18479static inline re_dfastate_t *
18480__attribute__ ((always_inline))
18481acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
18482 int idx)
18483{
18484 const re_dfa_t *const dfa = mctx->dfa;
18485 if (dfa->init_state->has_constraint)
18486 {
18487 unsigned int context;
18488 context = re_string_context_at (&mctx->input, idx - 1, mctx->eflags);
18489 if (((context) & 1))
18490 return dfa->init_state_word;
18491 else if (((context) == 0))
18492 return dfa->init_state;
18493 else if (((context) & ((1 << 1) << 1)) && ((context) & (1 << 1)))
18494 return dfa->init_state_begbuf;
18495 else if (((context) & (1 << 1)))
18496 return dfa->init_state_nl;
18497 else if (((context) & ((1 << 1) << 1)))
18498 {
18499
18500 return re_acquire_state_context (err, dfa,
18501 dfa->init_state->entrance_nodes,
18502 context);
18503 }
18504 else
18505
18506 return dfa->init_state;
18507 }
18508 else
18509 return dfa->init_state;
18510}
18511# 1066 "regexec.c"
18512static int
18513
18514check_matching (re_match_context_t *mctx, int fl_longest_match,
18515 int *p_match_first)
18516{
18517 const re_dfa_t *const dfa = mctx->dfa;
18518 reg_errcode_t err;
18519 int match = 0;
18520 int match_last = -1;
18521 int cur_str_idx = ((&mctx->input)->cur_idx);
18522 re_dfastate_t *cur_state;
18523 int at_init_state = p_match_first != ((void *)0);
18524 int next_start_idx = cur_str_idx;
18525
18526 err = REG_NOERROR;
18527 cur_state = acquire_init_state_context (&err, mctx, cur_str_idx);
18528
18529 if (__builtin_expect (cur_state == ((void *)0), 0))
18530 {
18531 ((err == REG_ESPACE) ? (void) (0) : (__assert_fail ("err == REG_ESPACE", "regexec.c", 1085, __PRETTY_FUNCTION__), (void) (0)));
18532 return -2;
18533 }
18534
18535 if (mctx->state_log != ((void *)0))
18536 {
18537 mctx->state_log[cur_str_idx] = cur_state;
18538
18539
18540
18541 if (__builtin_expect (dfa->nbackref, 0))
18542 {
18543 at_init_state = 0;
18544 err = check_subexp_matching_top (mctx, &cur_state->nodes, 0);
18545 if (__builtin_expect (err != REG_NOERROR, 0))
18546 return err;
18547
18548 if (cur_state->has_backref)
18549 {
18550 err = transit_state_bkref (mctx, &cur_state->nodes);
18551 if (__builtin_expect (err != REG_NOERROR, 0))
18552 return err;
18553 }
18554 }
18555 }
18556
18557
18558 if (__builtin_expect (cur_state->halt, 0))
18559 {
18560 if (!cur_state->has_constraint
18561 || check_halt_state_context (mctx, cur_state, cur_str_idx))
18562 {
18563 if (!fl_longest_match)
18564 return cur_str_idx;
18565 else
18566 {
18567 match_last = cur_str_idx;
18568 match = 1;
18569 }
18570 }
18571 }
18572
18573 while (!((&mctx->input)->stop <= (&mctx->input)->cur_idx))
18574 {
18575 re_dfastate_t *old_state = cur_state;
18576 int next_char_idx = ((&mctx->input)->cur_idx) + 1;
18577
18578 if (__builtin_expect (next_char_idx >= mctx->input.bufs_len, 0)
18579 || (__builtin_expect (next_char_idx >= mctx->input.valid_len, 0)
18580 && mctx->input.valid_len < mctx->input.len))
18581 {
18582 err = extend_buffers (mctx);
18583 if (__builtin_expect (err != REG_NOERROR, 0))
18584 {
18585 ((err == REG_ESPACE) ? (void) (0) : (__assert_fail ("err == REG_ESPACE", "regexec.c", 1139, __PRETTY_FUNCTION__), (void) (0)));
18586 return -2;
18587 }
18588 }
18589
18590 cur_state = transit_state (&err, mctx, cur_state);
18591 if (mctx->state_log != ((void *)0))
18592 cur_state = merge_state_with_log (&err, mctx, cur_state);
18593
18594 if (cur_state == ((void *)0))
18595 {
18596
18597
18598
18599 if (__builtin_expect (err != REG_NOERROR, 0))
18600 return -2;
18601
18602 if (mctx->state_log == ((void *)0)
18603 || (match && !fl_longest_match)
18604 || (cur_state = find_recover_state (&err, mctx)) == ((void *)0))
18605 break;
18606 }
18607
18608 if (__builtin_expect (at_init_state, 0))
18609 {
18610 if (old_state == cur_state)
18611 next_start_idx = next_char_idx;
18612 else
18613 at_init_state = 0;
18614 }
18615
18616 if (cur_state->halt)
18617 {
18618
18619
18620 if (!cur_state->has_constraint
18621 || check_halt_state_context (mctx, cur_state,
18622 ((&mctx->input)->cur_idx)))
18623 {
18624
18625 match_last = ((&mctx->input)->cur_idx);
18626 match = 1;
18627
18628
18629 p_match_first = ((void *)0);
18630 if (!fl_longest_match)
18631 break;
18632 }
18633 }
18634 }
18635
18636 if (p_match_first)
18637 *p_match_first += next_start_idx;
18638
18639 return match_last;
18640}
18641
18642
18643
18644static int
18645
18646check_halt_node_context (const re_dfa_t *dfa, int node, unsigned int context)
18647{
18648 re_token_type_t type = dfa->nodes[node].type;
18649 unsigned int constraint = dfa->nodes[node].constraint;
18650 if (type != END_OF_RE)
18651 return 0;
18652 if (!constraint)
18653 return 1;
18654 if (((((constraint) & 0x0004) && !((context) & 1)) || (((constraint) & 0x0008) && ((context) & 1)) || (((constraint) & 0x0020) && !((context) & (1 << 1))) || (((constraint) & 0x0080) && !((context) & (((1 << 1) << 1) << 1)))))
18655 return 0;
18656 return 1;
18657}
18658
18659
18660
18661
18662
18663static int
18664
18665check_halt_state_context (const re_match_context_t *mctx,
18666 const re_dfastate_t *state, int idx)
18667{
18668 int i;
18669 unsigned int context;
18670
18671
18672
18673 context = re_string_context_at (&mctx->input, idx, mctx->eflags);
18674 for (i = 0; i < state->nodes.nelem; ++i)
18675 if (check_halt_node_context (mctx->dfa, state->nodes.elems[i], context))
18676 return state->nodes.elems[i];
18677 return 0;
18678}
18679
18680
18681
18682
18683
18684
18685static int
18686
18687proceed_next_node (const re_match_context_t *mctx, int nregs, regmatch_t *regs,
18688 int *pidx, int node, re_node_set *eps_via_nodes,
18689 struct re_fail_stack_t *fs)
18690{
18691 const re_dfa_t *const dfa = mctx->dfa;
18692 int i, err;
18693 if (((dfa->nodes[node].type) & 8))
18694 {
18695 re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
18696 re_node_set *edests = &dfa->edests[node];
18697 int dest_node;
18698 err = re_node_set_insert (eps_via_nodes, node);
18699 if (__builtin_expect (err < 0, 0))
18700 return -2;
18701
18702 for (dest_node = -1, i = 0; i < edests->nelem; ++i)
18703 {
18704 int candidate = edests->elems[i];
18705 if (!re_node_set_contains (cur_nodes, candidate))
18706 continue;
18707 if (dest_node == -1)
18708 dest_node = candidate;
18709
18710 else
18711 {
18712
18713
18714 if (re_node_set_contains (eps_via_nodes, dest_node))
18715 return candidate;
18716
18717
18718 else if (fs != ((void *)0)
18719 && push_fail_stack (fs, *pidx, candidate, nregs, regs,
18720 eps_via_nodes))
18721 return -2;
18722
18723
18724 break;
18725 }
18726 }
18727 return dest_node;
18728 }
18729 else
18730 {
18731 int naccepted = 0;
18732 re_token_type_t type = dfa->nodes[node].type;
18733
18734
18735 if (dfa->nodes[node].accept_mb)
18736 naccepted = check_node_accept_bytes (dfa, node, &mctx->input, *pidx);
18737 else
18738
18739 if (type == OP_BACK_REF)
18740 {
18741 int subexp_idx = dfa->nodes[node].opr.idx + 1;
18742 naccepted = regs[subexp_idx].rm_eo - regs[subexp_idx].rm_so;
18743 if (fs != ((void *)0))
18744 {
18745 if (regs[subexp_idx].rm_so == -1 || regs[subexp_idx].rm_eo == -1)
18746 return -1;
18747 else if (naccepted)
18748 {
18749 char *buf = (char *) ((&mctx->input)->mbs);
18750 if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
18751 naccepted) != 0)
18752 return -1;
18753 }
18754 }
18755
18756 if (naccepted == 0)
18757 {
18758 int dest_node;
18759 err = re_node_set_insert (eps_via_nodes, node);
18760 if (__builtin_expect (err < 0, 0))
18761 return -2;
18762 dest_node = dfa->edests[node].elems[0];
18763 if (re_node_set_contains (&mctx->state_log[*pidx]->nodes,
18764 dest_node))
18765 return dest_node;
18766 }
18767 }
18768
18769 if (naccepted != 0
18770 || check_node_accept (mctx, dfa->nodes + node, *pidx))
18771 {
18772 int dest_node = dfa->nexts[node];
18773 *pidx = (naccepted == 0) ? *pidx + 1 : *pidx + naccepted;
18774 if (fs && (*pidx > mctx->match_last || mctx->state_log[*pidx] == ((void *)0)
18775 || !re_node_set_contains (&mctx->state_log[*pidx]->nodes,
18776 dest_node)))
18777 return -1;
18778 ((eps_via_nodes)->nelem = 0);
18779 return dest_node;
18780 }
18781 }
18782 return -1;
18783}
18784
18785static reg_errcode_t
18786
18787push_fail_stack (struct re_fail_stack_t *fs, int str_idx, int dest_node,
18788 int nregs, regmatch_t *regs, re_node_set *eps_via_nodes)
18789{
18790 reg_errcode_t err;
18791 int num = fs->num++;
18792 if (fs->num == fs->alloc)
18793 {
18794 struct re_fail_stack_ent_t *new_array;
18795 new_array = realloc (fs->stack, (sizeof (struct re_fail_stack_ent_t)
18796 * fs->alloc * 2));
18797 if (new_array == ((void *)0))
18798 return REG_ESPACE;
18799 fs->alloc *= 2;
18800 fs->stack = new_array;
18801 }
18802 fs->stack[num].idx = str_idx;
18803 fs->stack[num].node = dest_node;
18804 fs->stack[num].regs = ((regmatch_t *) malloc ((nregs) * sizeof (regmatch_t)));
18805 if (fs->stack[num].regs == ((void *)0))
18806 return REG_ESPACE;
18807 memcpy (fs->stack[num].regs, regs, sizeof (regmatch_t) * nregs);
18808 err = re_node_set_init_copy (&fs->stack[num].eps_via_nodes, eps_via_nodes);
18809 return err;
18810}
18811
18812static int
18813
18814pop_fail_stack (struct re_fail_stack_t *fs, int *pidx, int nregs,
18815 regmatch_t *regs, re_node_set *eps_via_nodes)
18816{
18817 int num = --fs->num;
18818 ((num >= 0) ? (void) (0) : (__assert_fail ("num >= 0", "regexec.c", 1372, __PRETTY_FUNCTION__), (void) (0)));
18819 *pidx = fs->stack[num].idx;
18820 memcpy (regs, fs->stack[num].regs, sizeof (regmatch_t) * nregs);
18821 free ((eps_via_nodes)->elems);
18822 free (fs->stack[num].regs);
18823 *eps_via_nodes = fs->stack[num].eps_via_nodes;
18824 return fs->stack[num].node;
18825}
18826
18827
18828
18829
18830
18831
18832static reg_errcode_t
18833
18834set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
18835 regmatch_t *pmatch, int fl_backtrack)
18836{
18837 const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
18838 int idx, cur_node;
18839 re_node_set eps_via_nodes;
18840 struct re_fail_stack_t *fs;
18841 struct re_fail_stack_t fs_body = { 0, 2, ((void *)0) };
18842 regmatch_t *prev_idx_match;
18843 int prev_idx_match_malloced = 0;
18844
18845
18846
18847
18848
18849 if (fl_backtrack)
18850 {
18851 fs = &fs_body;
18852 fs->stack = ((struct re_fail_stack_ent_t *) malloc ((fs->alloc) * sizeof (struct re_fail_stack_ent_t)));
18853 if (fs->stack == ((void *)0))
18854 return REG_ESPACE;
18855 }
18856 else
18857 fs = ((void *)0);
18858
18859 cur_node = dfa->init_node;
18860 memset (&eps_via_nodes, '\0', sizeof (re_node_set));
18861
18862 if (__libc_use_alloca (nmatch * sizeof (regmatch_t)))
18863 prev_idx_match = (regmatch_t *) __builtin_alloca (nmatch * sizeof (regmatch_t));
18864 else
18865 {
18866 prev_idx_match = ((regmatch_t *) malloc ((nmatch) * sizeof (regmatch_t)));
18867 if (prev_idx_match == ((void *)0))
18868 {
18869 free_fail_stack_return (fs);
18870 return REG_ESPACE;
18871 }
18872 prev_idx_match_malloced = 1;
18873 }
18874 memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
18875
18876 for (idx = pmatch[0].rm_so; idx <= pmatch[0].rm_eo ;)
18877 {
18878 update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
18879
18880 if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
18881 {
18882 int reg_idx;
18883 if (fs)
18884 {
18885 for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
18886 if (pmatch[reg_idx].rm_so > -1 && pmatch[reg_idx].rm_eo == -1)
18887 break;
18888 if (reg_idx == nmatch)
18889 {
18890 free ((&eps_via_nodes)->elems);
18891 if (prev_idx_match_malloced)
18892 free (prev_idx_match);
18893 return free_fail_stack_return (fs);
18894 }
18895 cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
18896 &eps_via_nodes);
18897 }
18898 else
18899 {
18900 free ((&eps_via_nodes)->elems);
18901 if (prev_idx_match_malloced)
18902 free (prev_idx_match);
18903 return REG_NOERROR;
18904 }
18905 }
18906
18907
18908 cur_node = proceed_next_node (mctx, nmatch, pmatch, &idx, cur_node,
18909 &eps_via_nodes, fs);
18910
18911 if (__builtin_expect (cur_node < 0, 0))
18912 {
18913 if (__builtin_expect (cur_node == -2, 0))
18914 {
18915 free ((&eps_via_nodes)->elems);
18916 if (prev_idx_match_malloced)
18917 free (prev_idx_match);
18918 free_fail_stack_return (fs);
18919 return REG_ESPACE;
18920 }
18921 if (fs)
18922 cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
18923 &eps_via_nodes);
18924 else
18925 {
18926 free ((&eps_via_nodes)->elems);
18927 if (prev_idx_match_malloced)
18928 free (prev_idx_match);
18929 return REG_NOMATCH;
18930 }
18931 }
18932 }
18933 free ((&eps_via_nodes)->elems);
18934 if (prev_idx_match_malloced)
18935 free (prev_idx_match);
18936 return free_fail_stack_return (fs);
18937}
18938
18939static reg_errcode_t
18940
18941free_fail_stack_return (struct re_fail_stack_t *fs)
18942{
18943 if (fs)
18944 {
18945 int fs_idx;
18946 for (fs_idx = 0; fs_idx < fs->num; ++fs_idx)
18947 {
18948 free ((&fs->stack[fs_idx].eps_via_nodes)->elems);
18949 free (fs->stack[fs_idx].regs);
18950 }
18951 free (fs->stack);
18952 }
18953 return REG_NOERROR;
18954}
18955
18956static void
18957
18958update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
18959 regmatch_t *prev_idx_match, int cur_node, int cur_idx, int nmatch)
18960{
18961 int type = dfa->nodes[cur_node].type;
18962 if (type == OP_OPEN_SUBEXP)
18963 {
18964 int reg_num = dfa->nodes[cur_node].opr.idx + 1;
18965
18966
18967 if (reg_num < nmatch)
18968 {
18969 pmatch[reg_num].rm_so = cur_idx;
18970 pmatch[reg_num].rm_eo = -1;
18971 }
18972 }
18973 else if (type == OP_CLOSE_SUBEXP)
18974 {
18975 int reg_num = dfa->nodes[cur_node].opr.idx + 1;
18976 if (reg_num < nmatch)
18977 {
18978
18979 if (pmatch[reg_num].rm_so < cur_idx)
18980 {
18981 pmatch[reg_num].rm_eo = cur_idx;
18982
18983
18984 memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
18985 }
18986 else
18987 {
18988 if (dfa->nodes[cur_node].opt_subexp
18989 && prev_idx_match[reg_num].rm_so != -1)
18990
18991
18992
18993
18994
18995 memcpy (pmatch, prev_idx_match, sizeof (regmatch_t) * nmatch);
18996 else
18997
18998
18999 pmatch[reg_num].rm_eo = cur_idx;
19000 }
19001 }
19002 }
19003}
19004# 1582 "regexec.c"
19005static reg_errcode_t
19006
19007sift_states_backward (const re_match_context_t *mctx, re_sift_context_t *sctx)
19008{
19009 reg_errcode_t err;
19010 int null_cnt = 0;
19011 int str_idx = sctx->last_str_idx;
19012 re_node_set cur_dest;
19013
19014
19015
19016
19017
19018
19019
19020 err = re_node_set_init_1 (&cur_dest, sctx->last_node);
19021 if (__builtin_expect (err != REG_NOERROR, 0))
19022 return err;
19023 err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
19024 if (__builtin_expect (err != REG_NOERROR, 0))
19025 goto free_return;
19026
19027
19028 while (str_idx > 0)
19029 {
19030
19031 null_cnt = (sctx->sifted_states[str_idx] == ((void *)0)) ? null_cnt + 1 : 0;
19032 if (null_cnt > mctx->max_mb_elem_len)
19033 {
19034 memset (sctx->sifted_states, '\0',
19035 sizeof (re_dfastate_t *) * str_idx);
19036 free ((&cur_dest)->elems);
19037 return REG_NOERROR;
19038 }
19039 ((&cur_dest)->nelem = 0);
19040 --str_idx;
19041
19042 if (mctx->state_log[str_idx])
19043 {
19044 err = build_sifted_states (mctx, sctx, str_idx, &cur_dest);
19045 if (__builtin_expect (err != REG_NOERROR, 0))
19046 goto free_return;
19047 }
19048
19049
19050
19051
19052
19053 err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
19054 if (__builtin_expect (err != REG_NOERROR, 0))
19055 goto free_return;
19056 }
19057 err = REG_NOERROR;
19058 free_return:
19059 free ((&cur_dest)->elems);
19060 return err;
19061}
19062
19063static reg_errcode_t
19064
19065build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
19066 int str_idx, re_node_set *cur_dest)
19067{
19068 const re_dfa_t *const dfa = mctx->dfa;
19069 const re_node_set *cur_src = &mctx->state_log[str_idx]->non_eps_nodes;
19070 int i;
19071# 1656 "regexec.c"
19072 for (i = 0; i < cur_src->nelem; i++)
19073 {
19074 int prev_node = cur_src->elems[i];
19075 int naccepted = 0;
19076 int ret;
19077
19078
19079
19080
19081
19082
19083
19084 if (dfa->nodes[prev_node].accept_mb)
19085 naccepted = sift_states_iter_mb (mctx, sctx, prev_node,
19086 str_idx, sctx->last_str_idx);
19087
19088
19089
19090
19091 if (!naccepted
19092 && check_node_accept (mctx, dfa->nodes + prev_node, str_idx)
19093 && ((sctx->sifted_states[str_idx + 1]) != ((void *)0) && re_node_set_contains (&(sctx->sifted_states[str_idx + 1])->nodes, dfa->nexts[prev_node])))
19094
19095 naccepted = 1;
19096
19097 if (naccepted == 0)
19098 continue;
19099
19100 if (sctx->limits.nelem)
19101 {
19102 int to_idx = str_idx + naccepted;
19103 if (check_dst_limits (mctx, &sctx->limits,
19104 dfa->nexts[prev_node], to_idx,
19105 prev_node, str_idx))
19106 continue;
19107 }
19108 ret = re_node_set_insert (cur_dest, prev_node);
19109 if (__builtin_expect (ret == -1, 0))
19110 return REG_ESPACE;
19111 }
19112
19113 return REG_NOERROR;
19114}
19115
19116
19117
19118static reg_errcode_t
19119
19120clean_state_log_if_needed (re_match_context_t *mctx, int next_state_log_idx)
19121{
19122 int top = mctx->state_log_top;
19123
19124 if (next_state_log_idx >= mctx->input.bufs_len
19125 || (next_state_log_idx >= mctx->input.valid_len
19126 && mctx->input.valid_len < mctx->input.len))
19127 {
19128 reg_errcode_t err;
19129 err = extend_buffers (mctx);
19130 if (__builtin_expect (err != REG_NOERROR, 0))
19131 return err;
19132 }
19133
19134 if (top < next_state_log_idx)
19135 {
19136 memset (mctx->state_log + top + 1, '\0',
19137 sizeof (re_dfastate_t *) * (next_state_log_idx - top));
19138 mctx->state_log_top = next_state_log_idx;
19139 }
19140 return REG_NOERROR;
19141}
19142
19143static reg_errcode_t
19144
19145merge_state_array (const re_dfa_t *dfa, re_dfastate_t **dst,
19146 re_dfastate_t **src, int num)
19147{
19148 int st_idx;
19149 reg_errcode_t err;
19150 for (st_idx = 0; st_idx < num; ++st_idx)
19151 {
19152 if (dst[st_idx] == ((void *)0))
19153 dst[st_idx] = src[st_idx];
19154 else if (src[st_idx] != ((void *)0))
19155 {
19156 re_node_set merged_set;
19157 err = re_node_set_init_union (&merged_set, &dst[st_idx]->nodes,
19158 &src[st_idx]->nodes);
19159 if (__builtin_expect (err != REG_NOERROR, 0))
19160 return err;
19161 dst[st_idx] = re_acquire_state (&err, dfa, &merged_set);
19162 free ((&merged_set)->elems);
19163 if (__builtin_expect (err != REG_NOERROR, 0))
19164 return err;
19165 }
19166 }
19167 return REG_NOERROR;
19168}
19169
19170static reg_errcode_t
19171
19172update_cur_sifted_state (const re_match_context_t *mctx,
19173 re_sift_context_t *sctx, int str_idx,
19174 re_node_set *dest_nodes)
19175{
19176 const re_dfa_t *const dfa = mctx->dfa;
19177 reg_errcode_t err = REG_NOERROR;
19178 const re_node_set *candidates;
19179 candidates = ((mctx->state_log[str_idx] == ((void *)0)) ? ((void *)0)
19180 : &mctx->state_log[str_idx]->nodes);
19181
19182 if (dest_nodes->nelem == 0)
19183 sctx->sifted_states[str_idx] = ((void *)0);
19184 else
19185 {
19186 if (candidates)
19187 {
19188
19189
19190 err = add_epsilon_src_nodes (dfa, dest_nodes, candidates);
19191 if (__builtin_expect (err != REG_NOERROR, 0))
19192 return err;
19193
19194
19195 if (sctx->limits.nelem)
19196 {
19197 err = check_subexp_limits (dfa, dest_nodes, candidates, &sctx->limits,
19198 mctx->bkref_ents, str_idx);
19199 if (__builtin_expect (err != REG_NOERROR, 0))
19200 return err;
19201 }
19202 }
19203
19204 sctx->sifted_states[str_idx] = re_acquire_state (&err, dfa, dest_nodes);
19205 if (__builtin_expect (err != REG_NOERROR, 0))
19206 return err;
19207 }
19208
19209 if (candidates && mctx->state_log[str_idx]->has_backref)
19210 {
19211 err = sift_states_bkref (mctx, sctx, str_idx, candidates);
19212 if (__builtin_expect (err != REG_NOERROR, 0))
19213 return err;
19214 }
19215 return REG_NOERROR;
19216}
19217
19218static reg_errcode_t
19219
19220add_epsilon_src_nodes (const re_dfa_t *dfa, re_node_set *dest_nodes,
19221 const re_node_set *candidates)
19222{
19223 reg_errcode_t err = REG_NOERROR;
19224 int i;
19225
19226 re_dfastate_t *state = re_acquire_state (&err, dfa, dest_nodes);
19227 if (__builtin_expect (err != REG_NOERROR, 0))
19228 return err;
19229
19230 if (!state->inveclosure.alloc)
19231 {
19232 err = re_node_set_alloc (&state->inveclosure, dest_nodes->nelem);
19233 if (__builtin_expect (err != REG_NOERROR, 0))
19234 return REG_ESPACE;
19235 for (i = 0; i < dest_nodes->nelem; i++)
19236 re_node_set_merge (&state->inveclosure,
19237 dfa->inveclosures + dest_nodes->elems[i]);
19238 }
19239 return re_node_set_add_intersect (dest_nodes, candidates,
19240 &state->inveclosure);
19241}
19242
19243static reg_errcode_t
19244
19245sub_epsilon_src_nodes (const re_dfa_t *dfa, int node, re_node_set *dest_nodes,
19246 const re_node_set *candidates)
19247{
19248 int ecl_idx;
19249 reg_errcode_t err;
19250 re_node_set *inv_eclosure = dfa->inveclosures + node;
19251 re_node_set except_nodes;
19252 memset (&except_nodes, '\0', sizeof (re_node_set));
19253 for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
19254 {
19255 int cur_node = inv_eclosure->elems[ecl_idx];
19256 if (cur_node == node)
19257 continue;
19258 if (((dfa->nodes[cur_node].type) & 8))
19259 {
19260 int edst1 = dfa->edests[cur_node].elems[0];
19261 int edst2 = ((dfa->edests[cur_node].nelem > 1)
19262 ? dfa->edests[cur_node].elems[1] : -1);
19263 if ((!re_node_set_contains (inv_eclosure, edst1)
19264 && re_node_set_contains (dest_nodes, edst1))
19265 || (edst2 > 0
19266 && !re_node_set_contains (inv_eclosure, edst2)
19267 && re_node_set_contains (dest_nodes, edst2)))
19268 {
19269 err = re_node_set_add_intersect (&except_nodes, candidates,
19270 dfa->inveclosures + cur_node);
19271 if (__builtin_expect (err != REG_NOERROR, 0))
19272 {
19273 free ((&except_nodes)->elems);
19274 return err;
19275 }
19276 }
19277 }
19278 }
19279 for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
19280 {
19281 int cur_node = inv_eclosure->elems[ecl_idx];
19282 if (!re_node_set_contains (&except_nodes, cur_node))
19283 {
19284 int idx = re_node_set_contains (dest_nodes, cur_node) - 1;
19285 re_node_set_remove_at (dest_nodes, idx);
19286 }
19287 }
19288 free ((&except_nodes)->elems);
19289 return REG_NOERROR;
19290}
19291
19292static int
19293
19294check_dst_limits (const re_match_context_t *mctx, re_node_set *limits,
19295 int dst_node, int dst_idx, int src_node, int src_idx)
19296{
19297 const re_dfa_t *const dfa = mctx->dfa;
19298 int lim_idx, src_pos, dst_pos;
19299
19300 int dst_bkref_idx = search_cur_bkref_entry (mctx, dst_idx);
19301 int src_bkref_idx = search_cur_bkref_entry (mctx, src_idx);
19302 for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
19303 {
19304 int subexp_idx;
19305 struct re_backref_cache_entry *ent;
19306 ent = mctx->bkref_ents + limits->elems[lim_idx];
19307 subexp_idx = dfa->nodes[ent->node].opr.idx;
19308
19309 dst_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
19310 subexp_idx, dst_node, dst_idx,
19311 dst_bkref_idx);
19312 src_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
19313 subexp_idx, src_node, src_idx,
19314 src_bkref_idx);
19315
19316
19317
19318
19319
19320 if (src_pos == dst_pos)
19321 continue;
19322 else
19323 return 1;
19324 }
19325 return 0;
19326}
19327
19328static int
19329
19330check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
19331 int subexp_idx, int from_node, int bkref_idx)
19332{
19333 const re_dfa_t *const dfa = mctx->dfa;
19334 const re_node_set *eclosures = dfa->eclosures + from_node;
19335 int node_idx;
19336
19337
19338
19339 for (node_idx = 0; node_idx < eclosures->nelem; ++node_idx)
19340 {
19341 int node = eclosures->elems[node_idx];
19342 switch (dfa->nodes[node].type)
19343 {
19344 case OP_BACK_REF:
19345 if (bkref_idx != -1)
19346 {
19347 struct re_backref_cache_entry *ent = mctx->bkref_ents + bkref_idx;
19348 do
19349 {
19350 int dst, cpos;
19351
19352 if (ent->node != node)
19353 continue;
19354
19355 if (subexp_idx < (sizeof (bitset_word_t) * 8)
19356 && !(ent->eps_reachable_subexps_map
19357 & ((bitset_word_t) 1 << subexp_idx)))
19358 continue;
19359
19360
19361
19362
19363
19364
19365
19366 dst = dfa->edests[node].elems[0];
19367 if (dst == from_node)
19368 {
19369 if (boundaries & 1)
19370 return -1;
19371 else
19372 return 0;
19373 }
19374
19375 cpos =
19376 check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
19377 dst, bkref_idx);
19378 if (cpos == -1 )
19379 return -1;
19380 if (cpos == 0 && (boundaries & 2))
19381 return 0;
19382
19383 if (subexp_idx < (sizeof (bitset_word_t) * 8))
19384 ent->eps_reachable_subexps_map
19385 &= ~((bitset_word_t) 1 << subexp_idx);
19386 }
19387 while (ent++->more);
19388 }
19389 break;
19390
19391 case OP_OPEN_SUBEXP:
19392 if ((boundaries & 1) && subexp_idx == dfa->nodes[node].opr.idx)
19393 return -1;
19394 break;
19395
19396 case OP_CLOSE_SUBEXP:
19397 if ((boundaries & 2) && subexp_idx == dfa->nodes[node].opr.idx)
19398 return 0;
19399 break;
19400
19401 default:
19402 break;
19403 }
19404 }
19405
19406 return (boundaries & 2) ? 1 : 0;
19407}
19408
19409static int
19410
19411check_dst_limits_calc_pos (const re_match_context_t *mctx, int limit,
19412 int subexp_idx, int from_node, int str_idx,
19413 int bkref_idx)
19414{
19415 struct re_backref_cache_entry *lim = mctx->bkref_ents + limit;
19416 int boundaries;
19417
19418
19419 if (str_idx < lim->subexp_from)
19420 return -1;
19421
19422 if (lim->subexp_to < str_idx)
19423 return 1;
19424
19425
19426 boundaries = (str_idx == lim->subexp_from);
19427 boundaries |= (str_idx == lim->subexp_to) << 1;
19428 if (boundaries == 0)
19429 return 0;
19430
19431
19432 return check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
19433 from_node, bkref_idx);
19434}
19435
19436
19437
19438
19439static reg_errcode_t
19440
19441check_subexp_limits (const re_dfa_t *dfa, re_node_set *dest_nodes,
19442 const re_node_set *candidates, re_node_set *limits,
19443 struct re_backref_cache_entry *bkref_ents, int str_idx)
19444{
19445 reg_errcode_t err;
19446 int node_idx, lim_idx;
19447
19448 for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
19449 {
19450 int subexp_idx;
19451 struct re_backref_cache_entry *ent;
19452 ent = bkref_ents + limits->elems[lim_idx];
19453
19454 if (str_idx <= ent->subexp_from || ent->str_idx < str_idx)
19455 continue;
19456
19457 subexp_idx = dfa->nodes[ent->node].opr.idx;
19458 if (ent->subexp_to == str_idx)
19459 {
19460 int ops_node = -1;
19461 int cls_node = -1;
19462 for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
19463 {
19464 int node = dest_nodes->elems[node_idx];
19465 re_token_type_t type = dfa->nodes[node].type;
19466 if (type == OP_OPEN_SUBEXP
19467 && subexp_idx == dfa->nodes[node].opr.idx)
19468 ops_node = node;
19469 else if (type == OP_CLOSE_SUBEXP
19470 && subexp_idx == dfa->nodes[node].opr.idx)
19471 cls_node = node;
19472 }
19473
19474
19475
19476 if (ops_node >= 0)
19477 {
19478 err = sub_epsilon_src_nodes (dfa, ops_node, dest_nodes,
19479 candidates);
19480 if (__builtin_expect (err != REG_NOERROR, 0))
19481 return err;
19482 }
19483
19484
19485 if (cls_node >= 0)
19486 for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
19487 {
19488 int node = dest_nodes->elems[node_idx];
19489 if (!re_node_set_contains (dfa->inveclosures + node,
19490 cls_node)
19491 && !re_node_set_contains (dfa->eclosures + node,
19492 cls_node))
19493 {
19494
19495
19496 err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
19497 candidates);
19498 if (__builtin_expect (err != REG_NOERROR, 0))
19499 return err;
19500 --node_idx;
19501 }
19502 }
19503 }
19504 else
19505 {
19506 for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
19507 {
19508 int node = dest_nodes->elems[node_idx];
19509 re_token_type_t type = dfa->nodes[node].type;
19510 if (type == OP_CLOSE_SUBEXP || type == OP_OPEN_SUBEXP)
19511 {
19512 if (subexp_idx != dfa->nodes[node].opr.idx)
19513 continue;
19514
19515
19516 err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
19517 candidates);
19518 if (__builtin_expect (err != REG_NOERROR, 0))
19519 return err;
19520 }
19521 }
19522 }
19523 }
19524 return REG_NOERROR;
19525}
19526
19527static reg_errcode_t
19528
19529sift_states_bkref (const re_match_context_t *mctx, re_sift_context_t *sctx,
19530 int str_idx, const re_node_set *candidates)
19531{
19532 const re_dfa_t *const dfa = mctx->dfa;
19533 reg_errcode_t err;
19534 int node_idx, node;
19535 re_sift_context_t local_sctx;
19536 int first_idx = search_cur_bkref_entry (mctx, str_idx);
19537
19538 if (first_idx == -1)
19539 return REG_NOERROR;
19540
19541 local_sctx.sifted_states = ((void *)0);
19542
19543 for (node_idx = 0; node_idx < candidates->nelem; ++node_idx)
19544 {
19545 int enabled_idx;
19546 re_token_type_t type;
19547 struct re_backref_cache_entry *entry;
19548 node = candidates->elems[node_idx];
19549 type = dfa->nodes[node].type;
19550
19551 if (node == sctx->last_node && str_idx == sctx->last_str_idx)
19552 continue;
19553 if (type != OP_BACK_REF)
19554 continue;
19555
19556 entry = mctx->bkref_ents + first_idx;
19557 enabled_idx = first_idx;
19558 do
19559 {
19560 int subexp_len;
19561 int to_idx;
19562 int dst_node;
19563 int ret;
19564 re_dfastate_t *cur_state;
19565
19566 if (entry->node != node)
19567 continue;
19568 subexp_len = entry->subexp_to - entry->subexp_from;
19569 to_idx = str_idx + subexp_len;
19570 dst_node = (subexp_len ? dfa->nexts[node]
19571 : dfa->edests[node].elems[0]);
19572
19573 if (to_idx > sctx->last_str_idx
19574 || sctx->sifted_states[to_idx] == ((void *)0)
19575 || !((sctx->sifted_states[to_idx]) != ((void *)0) && re_node_set_contains (&(sctx->sifted_states[to_idx])->nodes, dst_node))
19576 || check_dst_limits (mctx, &sctx->limits, node,
19577 str_idx, dst_node, to_idx))
19578 continue;
19579
19580 if (local_sctx.sifted_states == ((void *)0))
19581 {
19582 local_sctx = *sctx;
19583 err = re_node_set_init_copy (&local_sctx.limits, &sctx->limits);
19584 if (__builtin_expect (err != REG_NOERROR, 0))
19585 goto free_return;
19586 }
19587 local_sctx.last_node = node;
19588 local_sctx.last_str_idx = str_idx;
19589 ret = re_node_set_insert (&local_sctx.limits, enabled_idx);
19590 if (__builtin_expect (ret < 0, 0))
19591 {
19592 err = REG_ESPACE;
19593 goto free_return;
19594 }
19595 cur_state = local_sctx.sifted_states[str_idx];
19596 err = sift_states_backward (mctx, &local_sctx);
19597 if (__builtin_expect (err != REG_NOERROR, 0))
19598 goto free_return;
19599 if (sctx->limited_states != ((void *)0))
19600 {
19601 err = merge_state_array (dfa, sctx->limited_states,
19602 local_sctx.sifted_states,
19603 str_idx + 1);
19604 if (__builtin_expect (err != REG_NOERROR, 0))
19605 goto free_return;
19606 }
19607 local_sctx.sifted_states[str_idx] = cur_state;
19608 (re_node_set_remove_at (&local_sctx.limits, re_node_set_contains (&local_sctx.limits, enabled_idx) - 1));
19609
19610
19611 entry = mctx->bkref_ents + enabled_idx;
19612 }
19613 while (enabled_idx++, entry++->more);
19614 }
19615 err = REG_NOERROR;
19616 free_return:
19617 if (local_sctx.sifted_states != ((void *)0))
19618 {
19619 free ((&local_sctx.limits)->elems);
19620 }
19621
19622 return err;
19623}
19624
19625
19626
19627static int
19628
19629sift_states_iter_mb (const re_match_context_t *mctx, re_sift_context_t *sctx,
19630 int node_idx, int str_idx, int max_str_idx)
19631{
19632 const re_dfa_t *const dfa = mctx->dfa;
19633 int naccepted;
19634
19635 naccepted = check_node_accept_bytes (dfa, node_idx, &mctx->input, str_idx);
19636 if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
19637 !((sctx->sifted_states[str_idx + naccepted]) != ((void *)0) && re_node_set_contains (&(sctx->sifted_states[str_idx + naccepted])->nodes, dfa->nexts[node_idx])))
19638
19639
19640
19641
19642 naccepted = 0;
19643
19644
19645 return naccepted;
19646}
19647# 2241 "regexec.c"
19648static re_dfastate_t *
19649
19650transit_state (reg_errcode_t *err, re_match_context_t *mctx,
19651 re_dfastate_t *state)
19652{
19653 re_dfastate_t **trtable;
19654 unsigned char ch;
19655
19656
19657
19658 if (__builtin_expect (state->accept_mb, 0))
19659 {
19660 *err = transit_state_mb (mctx, state);
19661 if (__builtin_expect (*err != REG_NOERROR, 0))
19662 return ((void *)0);
19663 }
19664# 2267 "regexec.c"
19665 ch = ((&mctx->input)->mbs[(&mctx->input)->cur_idx++]);
19666 for (;;)
19667 {
19668 trtable = state->trtable;
19669 if (__builtin_expect (trtable != ((void *)0), 1))
19670 return trtable[ch];
19671
19672 trtable = state->word_trtable;
19673 if (__builtin_expect (trtable != ((void *)0), 1))
19674 {
19675 unsigned int context;
19676 context
19677 = re_string_context_at (&mctx->input,
19678 ((&mctx->input)->cur_idx) - 1,
19679 mctx->eflags);
19680 if (((context) & 1))
19681 return trtable[ch + 256];
19682 else
19683 return trtable[ch];
19684 }
19685
19686 if (!build_trtable (mctx->dfa, state))
19687 {
19688 *err = REG_ESPACE;
19689 return ((void *)0);
19690 }
19691
19692
19693 }
19694}
19695
19696
19697re_dfastate_t *
19698
19699merge_state_with_log (reg_errcode_t *err, re_match_context_t *mctx,
19700 re_dfastate_t *next_state)
19701{
19702 const re_dfa_t *const dfa = mctx->dfa;
19703 int cur_idx = ((&mctx->input)->cur_idx);
19704
19705 if (cur_idx > mctx->state_log_top)
19706 {
19707 mctx->state_log[cur_idx] = next_state;
19708 mctx->state_log_top = cur_idx;
19709 }
19710 else if (mctx->state_log[cur_idx] == 0)
19711 {
19712 mctx->state_log[cur_idx] = next_state;
19713 }
19714 else
19715 {
19716 re_dfastate_t *pstate;
19717 unsigned int context;
19718 re_node_set next_nodes, *log_nodes, *table_nodes = ((void *)0);
19719
19720
19721
19722
19723 pstate = mctx->state_log[cur_idx];
19724 log_nodes = pstate->entrance_nodes;
19725 if (next_state != ((void *)0))
19726 {
19727 table_nodes = next_state->entrance_nodes;
19728 *err = re_node_set_init_union (&next_nodes, table_nodes,
19729 log_nodes);
19730 if (__builtin_expect (*err != REG_NOERROR, 0))
19731 return ((void *)0);
19732 }
19733 else
19734 next_nodes = *log_nodes;
19735
19736
19737
19738 context = re_string_context_at (&mctx->input,
19739 ((&mctx->input)->cur_idx) - 1,
19740 mctx->eflags);
19741 next_state = mctx->state_log[cur_idx]
19742 = re_acquire_state_context (err, dfa, &next_nodes, context);
19743
19744
19745
19746 if (table_nodes != ((void *)0))
19747 free ((&next_nodes)->elems);
19748 }
19749
19750 if (__builtin_expect (dfa->nbackref, 0) && next_state != ((void *)0))
19751 {
19752
19753
19754
19755 *err = check_subexp_matching_top (mctx, &next_state->nodes,
19756 cur_idx);
19757 if (__builtin_expect (*err != REG_NOERROR, 0))
19758 return ((void *)0);
19759
19760
19761 if (next_state->has_backref)
19762 {
19763 *err = transit_state_bkref (mctx, &next_state->nodes);
19764 if (__builtin_expect (*err != REG_NOERROR, 0))
19765 return ((void *)0);
19766 next_state = mctx->state_log[cur_idx];
19767 }
19768 }
19769
19770 return next_state;
19771}
19772
19773
19774
19775
19776re_dfastate_t *
19777
19778find_recover_state (reg_errcode_t *err, re_match_context_t *mctx)
19779{
19780 re_dfastate_t *cur_state;
19781 do
19782 {
19783 int max = mctx->state_log_top;
19784 int cur_str_idx = ((&mctx->input)->cur_idx);
19785
19786 do
19787 {
19788 if (++cur_str_idx > max)
19789 return ((void *)0);
19790 ((&mctx->input)->cur_idx += (1));
19791 }
19792 while (mctx->state_log[cur_str_idx] == ((void *)0));
19793
19794 cur_state = merge_state_with_log (err, mctx, ((void *)0));
19795 }
19796 while (*err == REG_NOERROR && cur_state == ((void *)0));
19797 return cur_state;
19798}
19799# 2409 "regexec.c"
19800static reg_errcode_t
19801
19802check_subexp_matching_top (re_match_context_t *mctx, re_node_set *cur_nodes,
19803 int str_idx)
19804{
19805 const re_dfa_t *const dfa = mctx->dfa;
19806 int node_idx;
19807 reg_errcode_t err;
19808
19809
19810
19811
19812
19813
19814 for (node_idx = 0; node_idx < cur_nodes->nelem; ++node_idx)
19815 {
19816 int node = cur_nodes->elems[node_idx];
19817 if (dfa->nodes[node].type == OP_OPEN_SUBEXP
19818 && dfa->nodes[node].opr.idx < (sizeof (bitset_word_t) * 8)
19819 && (dfa->used_bkref_map
19820 & ((bitset_word_t) 1 << dfa->nodes[node].opr.idx)))
19821 {
19822 err = match_ctx_add_subtop (mctx, node, str_idx);
19823 if (__builtin_expect (err != REG_NOERROR, 0))
19824 return err;
19825 }
19826 }
19827 return REG_NOERROR;
19828}
19829# 2482 "regexec.c"
19830static reg_errcode_t
19831
19832transit_state_mb (re_match_context_t *mctx, re_dfastate_t *pstate)
19833{
19834 const re_dfa_t *const dfa = mctx->dfa;
19835 reg_errcode_t err;
19836 int i;
19837
19838 for (i = 0; i < pstate->nodes.nelem; ++i)
19839 {
19840 re_node_set dest_nodes, *new_nodes;
19841 int cur_node_idx = pstate->nodes.elems[i];
19842 int naccepted, dest_idx;
19843 unsigned int context;
19844 re_dfastate_t *dest_state;
19845
19846 if (!dfa->nodes[cur_node_idx].accept_mb)
19847 continue;
19848
19849 if (dfa->nodes[cur_node_idx].constraint)
19850 {
19851 context = re_string_context_at (&mctx->input,
19852 ((&mctx->input)->cur_idx),
19853 mctx->eflags);
19854 if (((((dfa->nodes[cur_node_idx].constraint) & 0x0004) && !((context) & 1)) || (((dfa->nodes[cur_node_idx].constraint) & 0x0008) && ((context) & 1)) || (((dfa->nodes[cur_node_idx].constraint) & 0x0020) && !((context) & (1 << 1))) || (((dfa->nodes[cur_node_idx].constraint) & 0x0080) && !((context) & (((1 << 1) << 1) << 1)))))
19855
19856 continue;
19857 }
19858
19859
19860 naccepted = check_node_accept_bytes (dfa, cur_node_idx, &mctx->input,
19861 ((&mctx->input)->cur_idx));
19862 if (naccepted == 0)
19863 continue;
19864
19865
19866 dest_idx = ((&mctx->input)->cur_idx) + naccepted;
19867 mctx->max_mb_elem_len = ((mctx->max_mb_elem_len < naccepted) ? naccepted
19868 : mctx->max_mb_elem_len);
19869 err = clean_state_log_if_needed (mctx, dest_idx);
19870 if (__builtin_expect (err != REG_NOERROR, 0))
19871 return err;
19872
19873
19874
19875 new_nodes = dfa->eclosures + dfa->nexts[cur_node_idx];
19876
19877 dest_state = mctx->state_log[dest_idx];
19878 if (dest_state == ((void *)0))
19879 dest_nodes = *new_nodes;
19880 else
19881 {
19882 err = re_node_set_init_union (&dest_nodes,
19883 dest_state->entrance_nodes, new_nodes);
19884 if (__builtin_expect (err != REG_NOERROR, 0))
19885 return err;
19886 }
19887 context = re_string_context_at (&mctx->input, dest_idx - 1,
19888 mctx->eflags);
19889 mctx->state_log[dest_idx]
19890 = re_acquire_state_context (&err, dfa, &dest_nodes, context);
19891 if (dest_state != ((void *)0))
19892 free ((&dest_nodes)->elems);
19893 if (__builtin_expect (mctx->state_log[dest_idx] == ((void *)0) && err != REG_NOERROR, 0))
19894 return err;
19895 }
19896 return REG_NOERROR;
19897}
19898
19899
19900static reg_errcode_t
19901
19902transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
19903{
19904 const re_dfa_t *const dfa = mctx->dfa;
19905 reg_errcode_t err;
19906 int i;
19907 int cur_str_idx = ((&mctx->input)->cur_idx);
19908
19909 for (i = 0; i < nodes->nelem; ++i)
19910 {
19911 int dest_str_idx, prev_nelem, bkc_idx;
19912 int node_idx = nodes->elems[i];
19913 unsigned int context;
19914 const re_token_t *node = dfa->nodes + node_idx;
19915 re_node_set *new_dest_nodes;
19916
19917
19918 if (node->type != OP_BACK_REF)
19919 continue;
19920
19921 if (node->constraint)
19922 {
19923 context = re_string_context_at (&mctx->input, cur_str_idx,
19924 mctx->eflags);
19925 if (((((node->constraint) & 0x0004) && !((context) & 1)) || (((node->constraint) & 0x0008) && ((context) & 1)) || (((node->constraint) & 0x0020) && !((context) & (1 << 1))) || (((node->constraint) & 0x0080) && !((context) & (((1 << 1) << 1) << 1)))))
19926 continue;
19927 }
19928
19929
19930
19931 bkc_idx = mctx->nbkref_ents;
19932 err = get_subexp (mctx, node_idx, cur_str_idx);
19933 if (__builtin_expect (err != REG_NOERROR, 0))
19934 goto free_return;
19935
19936
19937
19938
19939
19940
19941 for (; bkc_idx < mctx->nbkref_ents; ++bkc_idx)
19942 {
19943 int subexp_len;
19944 re_dfastate_t *dest_state;
19945 struct re_backref_cache_entry *bkref_ent;
19946 bkref_ent = mctx->bkref_ents + bkc_idx;
19947 if (bkref_ent->node != node_idx || bkref_ent->str_idx != cur_str_idx)
19948 continue;
19949 subexp_len = bkref_ent->subexp_to - bkref_ent->subexp_from;
19950 new_dest_nodes = (subexp_len == 0
19951 ? dfa->eclosures + dfa->edests[node_idx].elems[0]
19952 : dfa->eclosures + dfa->nexts[node_idx]);
19953 dest_str_idx = (cur_str_idx + bkref_ent->subexp_to
19954 - bkref_ent->subexp_from);
19955 context = re_string_context_at (&mctx->input, dest_str_idx - 1,
19956 mctx->eflags);
19957 dest_state = mctx->state_log[dest_str_idx];
19958 prev_nelem = ((mctx->state_log[cur_str_idx] == ((void *)0)) ? 0
19959 : mctx->state_log[cur_str_idx]->nodes.nelem);
19960
19961 if (dest_state == ((void *)0))
19962 {
19963 mctx->state_log[dest_str_idx]
19964 = re_acquire_state_context (&err, dfa, new_dest_nodes,
19965 context);
19966 if (__builtin_expect (mctx->state_log[dest_str_idx] == ((void *)0) && err != REG_NOERROR, 0))
19967
19968 goto free_return;
19969 }
19970 else
19971 {
19972 re_node_set dest_nodes;
19973 err = re_node_set_init_union (&dest_nodes,
19974 dest_state->entrance_nodes,
19975 new_dest_nodes);
19976 if (__builtin_expect (err != REG_NOERROR, 0))
19977 {
19978 free ((&dest_nodes)->elems);
19979 goto free_return;
19980 }
19981 mctx->state_log[dest_str_idx]
19982 = re_acquire_state_context (&err, dfa, &dest_nodes, context);
19983 free ((&dest_nodes)->elems);
19984 if (__builtin_expect (mctx->state_log[dest_str_idx] == ((void *)0) && err != REG_NOERROR, 0))
19985
19986 goto free_return;
19987 }
19988
19989
19990 if (subexp_len == 0
19991 && mctx->state_log[cur_str_idx]->nodes.nelem > prev_nelem)
19992 {
19993 err = check_subexp_matching_top (mctx, new_dest_nodes,
19994 cur_str_idx);
19995 if (__builtin_expect (err != REG_NOERROR, 0))
19996 goto free_return;
19997 err = transit_state_bkref (mctx, new_dest_nodes);
19998 if (__builtin_expect (err != REG_NOERROR, 0))
19999 goto free_return;
20000 }
20001 }
20002 }
20003 err = REG_NOERROR;
20004 free_return:
20005 return err;
20006}
20007
20008
20009
20010
20011
20012
20013
20014static reg_errcode_t
20015
20016get_subexp (re_match_context_t *mctx, int bkref_node, int bkref_str_idx)
20017{
20018 const re_dfa_t *const dfa = mctx->dfa;
20019 int subexp_num, sub_top_idx;
20020 const char *buf = (const char *) ((&mctx->input)->mbs);
20021
20022 int cache_idx = search_cur_bkref_entry (mctx, bkref_str_idx);
20023 if (cache_idx != -1)
20024 {
20025 const struct re_backref_cache_entry *entry
20026 = mctx->bkref_ents + cache_idx;
20027 do
20028 if (entry->node == bkref_node)
20029 return REG_NOERROR;
20030 while (entry++->more);
20031 }
20032
20033 subexp_num = dfa->nodes[bkref_node].opr.idx;
20034
20035
20036 for (sub_top_idx = 0; sub_top_idx < mctx->nsub_tops; ++sub_top_idx)
20037 {
20038 reg_errcode_t err;
20039 re_sub_match_top_t *sub_top = mctx->sub_tops[sub_top_idx];
20040 re_sub_match_last_t *sub_last;
20041 int sub_last_idx, sl_str, bkref_str_off;
20042
20043 if (dfa->nodes[sub_top->node].opr.idx != subexp_num)
20044 continue;
20045
20046 sl_str = sub_top->str_idx;
20047 bkref_str_off = bkref_str_idx;
20048
20049
20050 for (sub_last_idx = 0; sub_last_idx < sub_top->nlasts; ++sub_last_idx)
20051 {
20052 int sl_str_diff;
20053 sub_last = sub_top->lasts[sub_last_idx];
20054 sl_str_diff = sub_last->str_idx - sl_str;
20055
20056
20057 if (sl_str_diff > 0)
20058 {
20059 if (__builtin_expect (bkref_str_off + sl_str_diff > mctx->input.valid_len, 0))
20060 {
20061
20062 if (bkref_str_off + sl_str_diff > mctx->input.len)
20063 break;
20064
20065 err = clean_state_log_if_needed (mctx,
20066 bkref_str_off
20067 + sl_str_diff);
20068 if (__builtin_expect (err != REG_NOERROR, 0))
20069 return err;
20070 buf = (const char *) ((&mctx->input)->mbs);
20071 }
20072 if (memcmp (buf + bkref_str_off, buf + sl_str, sl_str_diff) != 0)
20073
20074 break;
20075 }
20076 bkref_str_off += sl_str_diff;
20077 sl_str += sl_str_diff;
20078 err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
20079 bkref_str_idx);
20080
20081
20082
20083 buf = (const char *) ((&mctx->input)->mbs);
20084
20085 if (err == REG_NOMATCH)
20086 continue;
20087 if (__builtin_expect (err != REG_NOERROR, 0))
20088 return err;
20089 }
20090
20091 if (sub_last_idx < sub_top->nlasts)
20092 continue;
20093 if (sub_last_idx > 0)
20094 ++sl_str;
20095
20096 for (; sl_str <= bkref_str_idx; ++sl_str)
20097 {
20098 int cls_node, sl_str_off;
20099 const re_node_set *nodes;
20100 sl_str_off = sl_str - sub_top->str_idx;
20101
20102
20103 if (sl_str_off > 0)
20104 {
20105 if (__builtin_expect (bkref_str_off >= mctx->input.valid_len, 0))
20106 {
20107
20108 if (bkref_str_off >= mctx->input.len)
20109 break;
20110
20111 err = extend_buffers (mctx);
20112 if (__builtin_expect (err != REG_NOERROR, 0))
20113 return err;
20114
20115 buf = (const char *) ((&mctx->input)->mbs);
20116 }
20117 if (buf [bkref_str_off++] != buf[sl_str - 1])
20118 break;
20119
20120 }
20121 if (mctx->state_log[sl_str] == ((void *)0))
20122 continue;
20123
20124 nodes = &mctx->state_log[sl_str]->nodes;
20125 cls_node = find_subexp_node (dfa, nodes, subexp_num,
20126 OP_CLOSE_SUBEXP);
20127 if (cls_node == -1)
20128 continue;
20129 if (sub_top->path == ((void *)0))
20130 {
20131 sub_top->path = calloc (sizeof (state_array_t),
20132 sl_str - sub_top->str_idx + 1);
20133 if (sub_top->path == ((void *)0))
20134 return REG_ESPACE;
20135 }
20136
20137
20138 err = check_arrival (mctx, sub_top->path, sub_top->node,
20139 sub_top->str_idx, cls_node, sl_str,
20140 OP_CLOSE_SUBEXP);
20141 if (err == REG_NOMATCH)
20142 continue;
20143 if (__builtin_expect (err != REG_NOERROR, 0))
20144 return err;
20145 sub_last = match_ctx_add_sublast (sub_top, cls_node, sl_str);
20146 if (__builtin_expect (sub_last == ((void *)0), 0))
20147 return REG_ESPACE;
20148 err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
20149 bkref_str_idx);
20150 if (err == REG_NOMATCH)
20151 continue;
20152 }
20153 }
20154 return REG_NOERROR;
20155}
20156
20157
20158
20159
20160
20161
20162
20163static reg_errcode_t
20164
20165get_subexp_sub (re_match_context_t *mctx, const re_sub_match_top_t *sub_top,
20166 re_sub_match_last_t *sub_last, int bkref_node, int bkref_str)
20167{
20168 reg_errcode_t err;
20169 int to_idx;
20170
20171 err = check_arrival (mctx, &sub_last->path, sub_last->node,
20172 sub_last->str_idx, bkref_node, bkref_str,
20173 OP_OPEN_SUBEXP);
20174 if (err != REG_NOERROR)
20175 return err;
20176 err = match_ctx_add_entry (mctx, bkref_node, bkref_str, sub_top->str_idx,
20177 sub_last->str_idx);
20178 if (__builtin_expect (err != REG_NOERROR, 0))
20179 return err;
20180 to_idx = bkref_str + sub_last->str_idx - sub_top->str_idx;
20181 return clean_state_log_if_needed (mctx, to_idx);
20182}
20183# 2844 "regexec.c"
20184static int
20185
20186find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
20187 int subexp_idx, int type)
20188{
20189 int cls_idx;
20190 for (cls_idx = 0; cls_idx < nodes->nelem; ++cls_idx)
20191 {
20192 int cls_node = nodes->elems[cls_idx];
20193 const re_token_t *node = dfa->nodes + cls_node;
20194 if (node->type == type
20195 && node->opr.idx == subexp_idx)
20196 return cls_node;
20197 }
20198 return -1;
20199}
20200
20201
20202
20203
20204
20205
20206static reg_errcode_t
20207
20208check_arrival (re_match_context_t *mctx, state_array_t *path, int top_node,
20209 int top_str, int last_node, int last_str, int type)
20210{
20211 const re_dfa_t *const dfa = mctx->dfa;
20212 reg_errcode_t err = REG_NOERROR;
20213 int subexp_num, backup_cur_idx, str_idx, null_cnt;
20214 re_dfastate_t *cur_state = ((void *)0);
20215 re_node_set *cur_nodes, next_nodes;
20216 re_dfastate_t **backup_state_log;
20217 unsigned int context;
20218
20219 subexp_num = dfa->nodes[top_node].opr.idx;
20220
20221 if (__builtin_expect (path->alloc < last_str + mctx->max_mb_elem_len + 1, 0))
20222 {
20223 re_dfastate_t **new_array;
20224 int old_alloc = path->alloc;
20225 path->alloc += last_str + mctx->max_mb_elem_len + 1;
20226 new_array = ((re_dfastate_t * *) realloc (path->array, (path->alloc) * sizeof (re_dfastate_t *)));
20227 if (__builtin_expect (new_array == ((void *)0), 0))
20228 {
20229 path->alloc = old_alloc;
20230 return REG_ESPACE;
20231 }
20232 path->array = new_array;
20233 memset (new_array + old_alloc, '\0',
20234 sizeof (re_dfastate_t *) * (path->alloc - old_alloc));
20235 }
20236
20237 str_idx = path->next_idx ?: top_str;
20238
20239
20240 backup_state_log = mctx->state_log;
20241 backup_cur_idx = mctx->input.cur_idx;
20242 mctx->state_log = path->array;
20243 mctx->input.cur_idx = str_idx;
20244
20245
20246 context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
20247 if (str_idx == top_str)
20248 {
20249 err = re_node_set_init_1 (&next_nodes, top_node);
20250 if (__builtin_expect (err != REG_NOERROR, 0))
20251 return err;
20252 err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
20253 if (__builtin_expect (err != REG_NOERROR, 0))
20254 {
20255 free ((&next_nodes)->elems);
20256 return err;
20257 }
20258 }
20259 else
20260 {
20261 cur_state = mctx->state_log[str_idx];
20262 if (cur_state && cur_state->has_backref)
20263 {
20264 err = re_node_set_init_copy (&next_nodes, &cur_state->nodes);
20265 if (__builtin_expect (err != REG_NOERROR, 0))
20266 return err;
20267 }
20268 else
20269 memset (&next_nodes, '\0', sizeof (re_node_set));
20270 }
20271 if (str_idx == top_str || (cur_state && cur_state->has_backref))
20272 {
20273 if (next_nodes.nelem)
20274 {
20275 err = expand_bkref_cache (mctx, &next_nodes, str_idx,
20276 subexp_num, type);
20277 if (__builtin_expect (err != REG_NOERROR, 0))
20278 {
20279 free ((&next_nodes)->elems);
20280 return err;
20281 }
20282 }
20283 cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
20284 if (__builtin_expect (cur_state == ((void *)0) && err != REG_NOERROR, 0))
20285 {
20286 free ((&next_nodes)->elems);
20287 return err;
20288 }
20289 mctx->state_log[str_idx] = cur_state;
20290 }
20291
20292 for (null_cnt = 0; str_idx < last_str && null_cnt <= mctx->max_mb_elem_len;)
20293 {
20294 ((&next_nodes)->nelem = 0);
20295 if (mctx->state_log[str_idx + 1])
20296 {
20297 err = re_node_set_merge (&next_nodes,
20298 &mctx->state_log[str_idx + 1]->nodes);
20299 if (__builtin_expect (err != REG_NOERROR, 0))
20300 {
20301 free ((&next_nodes)->elems);
20302 return err;
20303 }
20304 }
20305 if (cur_state)
20306 {
20307 err = check_arrival_add_next_nodes (mctx, str_idx,
20308 &cur_state->non_eps_nodes,
20309 &next_nodes);
20310 if (__builtin_expect (err != REG_NOERROR, 0))
20311 {
20312 free ((&next_nodes)->elems);
20313 return err;
20314 }
20315 }
20316 ++str_idx;
20317 if (next_nodes.nelem)
20318 {
20319 err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
20320 if (__builtin_expect (err != REG_NOERROR, 0))
20321 {
20322 free ((&next_nodes)->elems);
20323 return err;
20324 }
20325 err = expand_bkref_cache (mctx, &next_nodes, str_idx,
20326 subexp_num, type);
20327 if (__builtin_expect (err != REG_NOERROR, 0))
20328 {
20329 free ((&next_nodes)->elems);
20330 return err;
20331 }
20332 }
20333 context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
20334 cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
20335 if (__builtin_expect (cur_state == ((void *)0) && err != REG_NOERROR, 0))
20336 {
20337 free ((&next_nodes)->elems);
20338 return err;
20339 }
20340 mctx->state_log[str_idx] = cur_state;
20341 null_cnt = cur_state == ((void *)0) ? null_cnt + 1 : 0;
20342 }
20343 free ((&next_nodes)->elems);
20344 cur_nodes = (mctx->state_log[last_str] == ((void *)0) ? ((void *)0)
20345 : &mctx->state_log[last_str]->nodes);
20346 path->next_idx = str_idx;
20347
20348
20349 mctx->state_log = backup_state_log;
20350 mctx->input.cur_idx = backup_cur_idx;
20351
20352
20353 if (cur_nodes != ((void *)0) && re_node_set_contains (cur_nodes, last_node))
20354 return REG_NOERROR;
20355
20356 return REG_NOMATCH;
20357}
20358# 3027 "regexec.c"
20359static reg_errcode_t
20360
20361check_arrival_add_next_nodes (re_match_context_t *mctx, int str_idx,
20362 re_node_set *cur_nodes, re_node_set *next_nodes)
20363{
20364 const re_dfa_t *const dfa = mctx->dfa;
20365 int result;
20366 int cur_idx;
20367 reg_errcode_t err = REG_NOERROR;
20368 re_node_set union_set;
20369 memset (&union_set, '\0', sizeof (re_node_set));
20370 for (cur_idx = 0; cur_idx < cur_nodes->nelem; ++cur_idx)
20371 {
20372 int naccepted = 0;
20373 int cur_node = cur_nodes->elems[cur_idx];
20374
20375
20376
20377
20378
20379
20380 if (dfa->nodes[cur_node].accept_mb)
20381 {
20382 naccepted = check_node_accept_bytes (dfa, cur_node, &mctx->input,
20383 str_idx);
20384 if (naccepted > 1)
20385 {
20386 re_dfastate_t *dest_state;
20387 int next_node = dfa->nexts[cur_node];
20388 int next_idx = str_idx + naccepted;
20389 dest_state = mctx->state_log[next_idx];
20390 ((&union_set)->nelem = 0);
20391 if (dest_state)
20392 {
20393 err = re_node_set_merge (&union_set, &dest_state->nodes);
20394 if (__builtin_expect (err != REG_NOERROR, 0))
20395 {
20396 free ((&union_set)->elems);
20397 return err;
20398 }
20399 }
20400 result = re_node_set_insert (&union_set, next_node);
20401 if (__builtin_expect (result < 0, 0))
20402 {
20403 free ((&union_set)->elems);
20404 return REG_ESPACE;
20405 }
20406 mctx->state_log[next_idx] = re_acquire_state (&err, dfa,
20407 &union_set);
20408 if (__builtin_expect (mctx->state_log[next_idx] == ((void *)0) && err != REG_NOERROR, 0))
20409
20410 {
20411 free ((&union_set)->elems);
20412 return err;
20413 }
20414 }
20415 }
20416
20417 if (naccepted
20418 || check_node_accept (mctx, dfa->nodes + cur_node, str_idx))
20419 {
20420 result = re_node_set_insert (next_nodes, dfa->nexts[cur_node]);
20421 if (__builtin_expect (result < 0, 0))
20422 {
20423 free ((&union_set)->elems);
20424 return REG_ESPACE;
20425 }
20426 }
20427 }
20428 free ((&union_set)->elems);
20429 return REG_NOERROR;
20430}
20431
20432
20433
20434
20435
20436
20437
20438static reg_errcode_t
20439
20440check_arrival_expand_ecl (const re_dfa_t *dfa, re_node_set *cur_nodes,
20441 int ex_subexp, int type)
20442{
20443 reg_errcode_t err;
20444 int idx, outside_node;
20445 re_node_set new_nodes;
20446
20447
20448
20449 err = re_node_set_alloc (&new_nodes, cur_nodes->nelem);
20450 if (__builtin_expect (err != REG_NOERROR, 0))
20451 return err;
20452
20453
20454
20455 for (idx = 0; idx < cur_nodes->nelem; ++idx)
20456 {
20457 int cur_node = cur_nodes->elems[idx];
20458 const re_node_set *eclosure = dfa->eclosures + cur_node;
20459 outside_node = find_subexp_node (dfa, eclosure, ex_subexp, type);
20460 if (outside_node == -1)
20461 {
20462
20463 err = re_node_set_merge (&new_nodes, eclosure);
20464 if (__builtin_expect (err != REG_NOERROR, 0))
20465 {
20466 free ((&new_nodes)->elems);
20467 return err;
20468 }
20469 }
20470 else
20471 {
20472
20473 err = check_arrival_expand_ecl_sub (dfa, &new_nodes, cur_node,
20474 ex_subexp, type);
20475 if (__builtin_expect (err != REG_NOERROR, 0))
20476 {
20477 free ((&new_nodes)->elems);
20478 return err;
20479 }
20480 }
20481 }
20482 free ((cur_nodes)->elems);
20483 *cur_nodes = new_nodes;
20484 return REG_NOERROR;
20485}
20486
20487
20488
20489
20490
20491static reg_errcode_t
20492
20493check_arrival_expand_ecl_sub (const re_dfa_t *dfa, re_node_set *dst_nodes,
20494 int target, int ex_subexp, int type)
20495{
20496 int cur_node;
20497 for (cur_node = target; !re_node_set_contains (dst_nodes, cur_node);)
20498 {
20499 int err;
20500
20501 if (dfa->nodes[cur_node].type == type
20502 && dfa->nodes[cur_node].opr.idx == ex_subexp)
20503 {
20504 if (type == OP_CLOSE_SUBEXP)
20505 {
20506 err = re_node_set_insert (dst_nodes, cur_node);
20507 if (__builtin_expect (err == -1, 0))
20508 return REG_ESPACE;
20509 }
20510 break;
20511 }
20512 err = re_node_set_insert (dst_nodes, cur_node);
20513 if (__builtin_expect (err == -1, 0))
20514 return REG_ESPACE;
20515 if (dfa->edests[cur_node].nelem == 0)
20516 break;
20517 if (dfa->edests[cur_node].nelem == 2)
20518 {
20519 err = check_arrival_expand_ecl_sub (dfa, dst_nodes,
20520 dfa->edests[cur_node].elems[1],
20521 ex_subexp, type);
20522 if (__builtin_expect (err != REG_NOERROR, 0))
20523 return err;
20524 }
20525 cur_node = dfa->edests[cur_node].elems[0];
20526 }
20527 return REG_NOERROR;
20528}
20529
20530
20531
20532
20533
20534
20535static reg_errcode_t
20536
20537expand_bkref_cache (re_match_context_t *mctx, re_node_set *cur_nodes,
20538 int cur_str, int subexp_num, int type)
20539{
20540 const re_dfa_t *const dfa = mctx->dfa;
20541 reg_errcode_t err;
20542 int cache_idx_start = search_cur_bkref_entry (mctx, cur_str);
20543 struct re_backref_cache_entry *ent;
20544
20545 if (cache_idx_start == -1)
20546 return REG_NOERROR;
20547
20548 restart:
20549 ent = mctx->bkref_ents + cache_idx_start;
20550 do
20551 {
20552 int to_idx, next_node;
20553
20554
20555 if (!re_node_set_contains (cur_nodes, ent->node))
20556 continue;
20557
20558 to_idx = cur_str + ent->subexp_to - ent->subexp_from;
20559
20560
20561 if (to_idx == cur_str)
20562 {
20563
20564
20565 re_node_set new_dests;
20566 reg_errcode_t err2, err3;
20567 next_node = dfa->edests[ent->node].elems[0];
20568 if (re_node_set_contains (cur_nodes, next_node))
20569 continue;
20570 err = re_node_set_init_1 (&new_dests, next_node);
20571 err2 = check_arrival_expand_ecl (dfa, &new_dests, subexp_num, type);
20572 err3 = re_node_set_merge (cur_nodes, &new_dests);
20573 free ((&new_dests)->elems);
20574 if (__builtin_expect (err != REG_NOERROR || err2 != REG_NOERROR || err3 != REG_NOERROR, 0))
20575
20576 {
20577 err = (err != REG_NOERROR ? err
20578 : (err2 != REG_NOERROR ? err2 : err3));
20579 return err;
20580 }
20581
20582 goto restart;
20583 }
20584 else
20585 {
20586 re_node_set union_set;
20587 next_node = dfa->nexts[ent->node];
20588 if (mctx->state_log[to_idx])
20589 {
20590 int ret;
20591 if (re_node_set_contains (&mctx->state_log[to_idx]->nodes,
20592 next_node))
20593 continue;
20594 err = re_node_set_init_copy (&union_set,
20595 &mctx->state_log[to_idx]->nodes);
20596 ret = re_node_set_insert (&union_set, next_node);
20597 if (__builtin_expect (err != REG_NOERROR || ret < 0, 0))
20598 {
20599 free ((&union_set)->elems);
20600 err = err != REG_NOERROR ? err : REG_ESPACE;
20601 return err;
20602 }
20603 }
20604 else
20605 {
20606 err = re_node_set_init_1 (&union_set, next_node);
20607 if (__builtin_expect (err != REG_NOERROR, 0))
20608 return err;
20609 }
20610 mctx->state_log[to_idx] = re_acquire_state (&err, dfa, &union_set);
20611 free ((&union_set)->elems);
20612 if (__builtin_expect (mctx->state_log[to_idx] == ((void *)0) && err != REG_NOERROR, 0))
20613
20614 return err;
20615 }
20616 }
20617 while (ent++->more);
20618 return REG_NOERROR;
20619}
20620
20621
20622
20623
20624static int
20625
20626build_trtable (const re_dfa_t *dfa, re_dfastate_t *state)
20627{
20628 reg_errcode_t err;
20629 int i, j, ch, need_word_trtable = 0;
20630 bitset_word_t elem, mask;
20631 _Bool dests_node_malloced = 0;
20632 _Bool dest_states_malloced = 0;
20633 int ndests;
20634 re_dfastate_t **trtable;
20635 re_dfastate_t **dest_states = ((void *)0), **dest_states_word, **dest_states_nl;
20636 re_node_set follows, *dests_node;
20637 bitset_t *dests_ch;
20638 bitset_t acceptable;
20639
20640 struct dests_alloc
20641 {
20642 re_node_set dests_node[256];
20643 bitset_t dests_ch[256];
20644 } *dests_alloc;
20645
20646
20647
20648
20649
20650 if (__libc_use_alloca (sizeof (struct dests_alloc)))
20651 dests_alloc = (struct dests_alloc *) __builtin_alloca (sizeof (struct dests_alloc));
20652 else
20653 {
20654 dests_alloc = ((struct dests_alloc *) malloc ((1) * sizeof (struct dests_alloc)));
20655 if (__builtin_expect (dests_alloc == ((void *)0), 0))
20656 return 0;
20657 dests_node_malloced = 1;
20658 }
20659 dests_node = dests_alloc->dests_node;
20660 dests_ch = dests_alloc->dests_ch;
20661
20662
20663 state->word_trtable = state->trtable = ((void *)0);
20664
20665
20666
20667 ndests = group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch);
20668 if (__builtin_expect (ndests <= 0, 0))
20669 {
20670 if (dests_node_malloced)
20671 free (dests_alloc);
20672
20673 if (ndests == 0)
20674 {
20675 state->trtable = (re_dfastate_t **)
20676 calloc (sizeof (re_dfastate_t *), 256);
20677 return 1;
20678 }
20679 return 0;
20680 }
20681
20682 err = re_node_set_alloc (&follows, ndests + 1);
20683 if (__builtin_expect (err != REG_NOERROR, 0))
20684 goto out_free;
20685
20686 if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset_t)) * 256
20687 + ndests * 3 * sizeof (re_dfastate_t *)))
20688 dest_states = (re_dfastate_t **)
20689 __builtin_alloca (ndests * 3 * sizeof (re_dfastate_t *));
20690 else
20691 {
20692 dest_states = (re_dfastate_t **)
20693 malloc (ndests * 3 * sizeof (re_dfastate_t *));
20694 if (__builtin_expect (dest_states == ((void *)0), 0))
20695 {
20696out_free:
20697 if (dest_states_malloced)
20698 free (dest_states);
20699 free ((&follows)->elems);
20700 for (i = 0; i < ndests; ++i)
20701 free ((dests_node + i)->elems);
20702 if (dests_node_malloced)
20703 free (dests_alloc);
20704 return 0;
20705 }
20706 dest_states_malloced = 1;
20707 }
20708 dest_states_word = dest_states + ndests;
20709 dest_states_nl = dest_states_word + ndests;
20710 memset (acceptable, '\0', sizeof (bitset_t));
20711
20712
20713 for (i = 0; i < ndests; ++i)
20714 {
20715 int next_node;
20716 ((&follows)->nelem = 0);
20717
20718 for (j = 0; j < dests_node[i].nelem; ++j)
20719 {
20720 next_node = dfa->nexts[dests_node[i].elems[j]];
20721 if (next_node != -1)
20722 {
20723 err = re_node_set_merge (&follows, dfa->eclosures + next_node);
20724 if (__builtin_expect (err != REG_NOERROR, 0))
20725 goto out_free;
20726 }
20727 }
20728 dest_states[i] = re_acquire_state_context (&err, dfa, &follows, 0);
20729 if (__builtin_expect (dest_states[i] == ((void *)0) && err != REG_NOERROR, 0))
20730 goto out_free;
20731
20732
20733 if (dest_states[i]->has_constraint)
20734 {
20735 dest_states_word[i] = re_acquire_state_context (&err, dfa, &follows,
20736 1);
20737 if (__builtin_expect (dest_states_word[i] == ((void *)0) && err != REG_NOERROR, 0))
20738 goto out_free;
20739
20740 if (dest_states[i] != dest_states_word[i] && dfa->mb_cur_max > 1)
20741 need_word_trtable = 1;
20742
20743 dest_states_nl[i] = re_acquire_state_context (&err, dfa, &follows,
20744 (1 << 1));
20745 if (__builtin_expect (dest_states_nl[i] == ((void *)0) && err != REG_NOERROR, 0))
20746 goto out_free;
20747 }
20748 else
20749 {
20750 dest_states_word[i] = dest_states[i];
20751 dest_states_nl[i] = dest_states[i];
20752 }
20753 bitset_merge (acceptable, dests_ch[i]);
20754 }
20755
20756 if (!__builtin_expect (need_word_trtable, 0))
20757 {
20758
20759
20760
20761
20762 trtable = state->trtable =
20763 (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), 256);
20764 if (__builtin_expect (trtable == ((void *)0), 0))
20765 goto out_free;
20766
20767
20768 for (i = 0; i < (256 / (sizeof (bitset_word_t) * 8)); ++i)
20769 for (ch = i * (sizeof (bitset_word_t) * 8), elem = acceptable[i], mask = 1;
20770 elem;
20771 mask <<= 1, elem >>= 1, ++ch)
20772 if (__builtin_expect (elem & 1, 0))
20773 {
20774
20775
20776 for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
20777 ;
20778
20779
20780 if (dfa->word_char[i] & mask)
20781 trtable[ch] = dest_states_word[j];
20782 else
20783 trtable[ch] = dest_states[j];
20784 }
20785 }
20786 else
20787 {
20788
20789
20790
20791
20792
20793 trtable = state->word_trtable =
20794 (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), 2 * 256);
20795 if (__builtin_expect (trtable == ((void *)0), 0))
20796 goto out_free;
20797
20798
20799 for (i = 0; i < (256 / (sizeof (bitset_word_t) * 8)); ++i)
20800 for (ch = i * (sizeof (bitset_word_t) * 8), elem = acceptable[i], mask = 1;
20801 elem;
20802 mask <<= 1, elem >>= 1, ++ch)
20803 if (__builtin_expect (elem & 1, 0))
20804 {
20805
20806
20807 for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
20808 ;
20809
20810
20811 trtable[ch] = dest_states[j];
20812 trtable[ch + 256] = dest_states_word[j];
20813 }
20814 }
20815
20816
20817 if ((acceptable['\n' / (sizeof (bitset_word_t) * 8)] & ((bitset_word_t) 1 << '\n' % (sizeof (bitset_word_t) * 8))))
20818 {
20819
20820 for (j = 0; j < ndests; ++j)
20821 if ((dests_ch[j]['\n' / (sizeof (bitset_word_t) * 8)] & ((bitset_word_t) 1 << '\n' % (sizeof (bitset_word_t) * 8))))
20822 {
20823
20824 trtable['\n'] = dest_states_nl[j];
20825 if (need_word_trtable)
20826 trtable['\n' + 256] = dest_states_nl[j];
20827
20828
20829 break;
20830 }
20831 }
20832
20833 if (dest_states_malloced)
20834 free (dest_states);
20835
20836 free ((&follows)->elems);
20837 for (i = 0; i < ndests; ++i)
20838 free ((dests_node + i)->elems);
20839
20840 if (dests_node_malloced)
20841 free (dests_alloc);
20842
20843 return 1;
20844}
20845
20846
20847
20848
20849
20850
20851static int
20852
20853group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
20854 re_node_set *dests_node, bitset_t *dests_ch)
20855{
20856 reg_errcode_t err;
20857 int result;
20858 int i, j, k;
20859 int ndests;
20860 bitset_t accepts;
20861 const re_node_set *cur_nodes = &state->nodes;
20862 memset (accepts, '\0', sizeof (bitset_t));
20863 ndests = 0;
20864
20865
20866 for (i = 0; i < cur_nodes->nelem; ++i)
20867 {
20868 re_token_t *node = &dfa->nodes[cur_nodes->elems[i]];
20869 re_token_type_t type = node->type;
20870 unsigned int constraint = node->constraint;
20871
20872
20873 if (type == CHARACTER)
20874 (accepts[node->opr.c / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << node->opr.c % (sizeof (bitset_word_t) * 8));
20875 else if (type == SIMPLE_BRACKET)
20876 {
20877 bitset_merge (accepts, node->opr.sbcset);
20878 }
20879 else if (type == OP_PERIOD)
20880 {
20881
20882 if (dfa->mb_cur_max > 1)
20883 bitset_merge (accepts, dfa->sb_char);
20884 else
20885
20886 memset (accepts, '\xff', sizeof (bitset_t));
20887 if (!(dfa->syntax & ((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1)))
20888 (accepts['\n' / (sizeof (bitset_word_t) * 8)] &= ~((bitset_word_t) 1 << '\n' % (sizeof (bitset_word_t) * 8)));
20889 if (dfa->syntax & (((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
20890 (accepts['\0' / (sizeof (bitset_word_t) * 8)] &= ~((bitset_word_t) 1 << '\0' % (sizeof (bitset_word_t) * 8)));
20891 }
20892
20893 else if (type == OP_UTF8_PERIOD)
20894 {
20895 memset (accepts, '\xff', sizeof (bitset_t) / 2);
20896 if (!(dfa->syntax & ((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1)))
20897 (accepts['\n' / (sizeof (bitset_word_t) * 8)] &= ~((bitset_word_t) 1 << '\n' % (sizeof (bitset_word_t) * 8)));
20898 if (dfa->syntax & (((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))
20899 (accepts['\0' / (sizeof (bitset_word_t) * 8)] &= ~((bitset_word_t) 1 << '\0' % (sizeof (bitset_word_t) * 8)));
20900 }
20901
20902 else
20903 continue;
20904
20905
20906
20907 if (constraint)
20908 {
20909 if (constraint & 0x0020)
20910 {
20911 _Bool accepts_newline = (accepts['\n' / (sizeof (bitset_word_t) * 8)] & ((bitset_word_t) 1 << '\n' % (sizeof (bitset_word_t) * 8)));
20912 memset (accepts, '\0', sizeof (bitset_t));
20913 if (accepts_newline)
20914 (accepts['\n' / (sizeof (bitset_word_t) * 8)] |= (bitset_word_t) 1 << '\n' % (sizeof (bitset_word_t) * 8));
20915 else
20916 continue;
20917 }
20918 if (constraint & 0x0080)
20919 {
20920 memset (accepts, '\0', sizeof (bitset_t));
20921 continue;
20922 }
20923
20924 if (constraint & 0x0004)
20925 {
20926 bitset_word_t any_set = 0;
20927 if (type == CHARACTER && !node->word_char)
20928 {
20929 memset (accepts, '\0', sizeof (bitset_t));
20930 continue;
20931 }
20932
20933 if (dfa->mb_cur_max > 1)
20934 for (j = 0; j < (256 / (sizeof (bitset_word_t) * 8)); ++j)
20935 any_set |= (accepts[j] &= (dfa->word_char[j] | ~dfa->sb_char[j]));
20936 else
20937
20938 for (j = 0; j < (256 / (sizeof (bitset_word_t) * 8)); ++j)
20939 any_set |= (accepts[j] &= dfa->word_char[j]);
20940 if (!any_set)
20941 continue;
20942 }
20943 if (constraint & 0x0008)
20944 {
20945 bitset_word_t any_set = 0;
20946 if (type == CHARACTER && node->word_char)
20947 {
20948 memset (accepts, '\0', sizeof (bitset_t));
20949 continue;
20950 }
20951
20952 if (dfa->mb_cur_max > 1)
20953 for (j = 0; j < (256 / (sizeof (bitset_word_t) * 8)); ++j)
20954 any_set |= (accepts[j] &= ~(dfa->word_char[j] & dfa->sb_char[j]));
20955 else
20956
20957 for (j = 0; j < (256 / (sizeof (bitset_word_t) * 8)); ++j)
20958 any_set |= (accepts[j] &= ~dfa->word_char[j]);
20959 if (!any_set)
20960 continue;
20961 }
20962 }
20963
20964
20965
20966 for (j = 0; j < ndests; ++j)
20967 {
20968 bitset_t intersec;
20969 bitset_t remains;
20970
20971 bitset_word_t has_intersec, not_subset, not_consumed;
20972
20973
20974 if (type == CHARACTER && !(dests_ch[j][node->opr.c / (sizeof (bitset_word_t) * 8)] & ((bitset_word_t) 1 << node->opr.c % (sizeof (bitset_word_t) * 8))))
20975 continue;
20976
20977
20978 has_intersec = 0;
20979 for (k = 0; k < (256 / (sizeof (bitset_word_t) * 8)); ++k)
20980 has_intersec |= intersec[k] = accepts[k] & dests_ch[j][k];
20981
20982 if (!has_intersec)
20983 continue;
20984
20985
20986 not_subset = not_consumed = 0;
20987 for (k = 0; k < (256 / (sizeof (bitset_word_t) * 8)); ++k)
20988 {
20989 not_subset |= remains[k] = ~accepts[k] & dests_ch[j][k];
20990 not_consumed |= accepts[k] = accepts[k] & ~dests_ch[j][k];
20991 }
20992
20993
20994
20995 if (not_subset)
20996 {
20997 memcpy (dests_ch[ndests], remains, sizeof (bitset_t));
20998 memcpy (dests_ch[j], intersec, sizeof (bitset_t));
20999 err = re_node_set_init_copy (dests_node + ndests, &dests_node[j]);
21000 if (__builtin_expect (err != REG_NOERROR, 0))
21001 goto error_return;
21002 ++ndests;
21003 }
21004
21005
21006 result = re_node_set_insert (&dests_node[j], cur_nodes->elems[i]);
21007 if (__builtin_expect (result < 0, 0))
21008 goto error_return;
21009
21010
21011 if (!not_consumed)
21012 break;
21013 }
21014
21015 if (j == ndests)
21016 {
21017 memcpy (dests_ch[ndests], accepts, sizeof (bitset_t));
21018 err = re_node_set_init_1 (dests_node + ndests, cur_nodes->elems[i]);
21019 if (__builtin_expect (err != REG_NOERROR, 0))
21020 goto error_return;
21021 ++ndests;
21022 memset (accepts, '\0', sizeof (bitset_t));
21023 }
21024 }
21025 return ndests;
21026 error_return:
21027 for (j = 0; j < ndests; ++j)
21028 free ((dests_node + j)->elems);
21029 return -1;
21030}
21031# 3709 "regexec.c"
21032static int
21033
21034check_node_accept_bytes (const re_dfa_t *dfa, int node_idx,
21035 const re_string_t *input, int str_idx)
21036{
21037 const re_token_t *node = dfa->nodes + node_idx;
21038 int char_len, elem_len;
21039 int i;
21040
21041 if (__builtin_expect (node->type == OP_UTF8_PERIOD, 0))
21042 {
21043 unsigned char c = ((input)->mbs[str_idx]), d;
21044 if (__builtin_expect (c < 0xc2, 1))
21045 return 0;
21046
21047 if (str_idx + 2 > input->len)
21048 return 0;
21049
21050 d = ((input)->mbs[str_idx + 1]);
21051 if (c < 0xe0)
21052 return (d < 0x80 || d > 0xbf) ? 0 : 2;
21053 else if (c < 0xf0)
21054 {
21055 char_len = 3;
21056 if (c == 0xe0 && d < 0xa0)
21057 return 0;
21058 }
21059 else if (c < 0xf8)
21060 {
21061 char_len = 4;
21062 if (c == 0xf0 && d < 0x90)
21063 return 0;
21064 }
21065 else if (c < 0xfc)
21066 {
21067 char_len = 5;
21068 if (c == 0xf8 && d < 0x88)
21069 return 0;
21070 }
21071 else if (c < 0xfe)
21072 {
21073 char_len = 6;
21074 if (c == 0xfc && d < 0x84)
21075 return 0;
21076 }
21077 else
21078 return 0;
21079
21080 if (str_idx + char_len > input->len)
21081 return 0;
21082
21083 for (i = 1; i < char_len; ++i)
21084 {
21085 d = ((input)->mbs[str_idx + i]);
21086 if (d < 0x80 || d > 0xbf)
21087 return 0;
21088 }
21089 return char_len;
21090 }
21091
21092 char_len = re_string_char_size_at (input, str_idx);
21093 if (node->type == OP_PERIOD)
21094 {
21095 if (char_len <= 1)
21096 return 0;
21097
21098
21099
21100 if ((!(dfa->syntax & ((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1)) &&
21101 ((input)->mbs[str_idx]) == '\n') ||
21102 ((dfa->syntax & (((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1)) &&
21103 ((input)->mbs[str_idx]) == '\0'))
21104 return 0;
21105 return char_len;
21106 }
21107
21108 elem_len = re_string_elem_size_at (input, str_idx);
21109 if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
21110 return 0;
21111
21112 if (node->type == COMPLEX_BRACKET)
21113 {
21114 const re_charset_t *cset = node->opr.mbcset;
21115
21116 const unsigned char *pin
21117 = ((const unsigned char *) ((input)->mbs) + str_idx);
21118 int j;
21119 uint32_t nrules;
21120
21121 int match_len = 0;
21122 wchar_t wc = ((cset->nranges || cset->nchar_classes || cset->nmbchars)
21123 ? re_string_wchar_at (input, str_idx) : 0);
21124
21125
21126 for (i = 0; i < cset->nmbchars; ++i)
21127 if (wc == cset->mbchars[i])
21128 {
21129 match_len = char_len;
21130 goto check_node_accept_bytes_match;
21131 }
21132
21133 for (i = 0; i < cset->nchar_classes; ++i)
21134 {
21135 wctype_t wt = cset->char_classes[i];
21136 if (__iswctype (wc, wt))
21137 {
21138 match_len = char_len;
21139 goto check_node_accept_bytes_match;
21140 }
21141 }
21142
21143
21144 nrules = ((uint32_t) (*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_NRULES) & 0xffff)].word);
21145 if (nrules != 0)
21146 {
21147 unsigned int in_collseq = 0;
21148 const int32_t *table, *indirect;
21149 const unsigned char *weights, *extra;
21150 const char *collseqwc;
21151 int32_t idx;
21152
21153# 1 "../locale/weight.h" 1
21154# 21 "../locale/weight.h"
21155auto inline int32_t
21156__attribute__ ((always_inline))
21157findidx (const unsigned char **cpp)
21158{
21159 int_fast32_t i = table[*(*cpp)++];
21160 const unsigned char *cp;
21161 const unsigned char *usrc;
21162
21163 if (i >= 0)
21164
21165 return i;
21166
21167
21168
21169 cp = &extra[-i];
21170 usrc = *cpp;
21171 while (1)
21172 {
21173 size_t nhere;
21174
21175
21176 i = *((const int32_t *) cp);
21177 cp += sizeof (int32_t);
21178
21179
21180
21181
21182 nhere = *cp++;
21183
21184 if (i >= 0)
21185 {
21186
21187
21188
21189
21190
21191 size_t cnt;
21192
21193 for (cnt = 0; cnt < nhere; ++cnt)
21194 if (cp[cnt] != usrc[cnt])
21195 break;
21196
21197 if (cnt == nhere)
21198 {
21199
21200 *cpp += nhere;
21201 return i;
21202 }
21203
21204
21205 cp += nhere;
21206 if ((1 + nhere) % __alignof__ (int32_t) != 0)
21207 cp += __alignof__ (int32_t) - (1 + nhere) % __alignof__ (int32_t);
21208 }
21209 else
21210 {
21211
21212
21213 size_t cnt;
21214 size_t offset = 0;
21215
21216 for (cnt = 0; cnt < nhere; ++cnt)
21217 if (cp[cnt] != usrc[cnt])
21218 break;
21219
21220 if (cnt != nhere)
21221 {
21222 if (cp[cnt] > usrc[cnt])
21223 {
21224
21225 cp += 2 * nhere;
21226 if ((1 + 2 * nhere) % __alignof__ (int32_t) != 0)
21227 cp += (__alignof__ (int32_t)
21228 - (1 + 2 * nhere) % __alignof__ (int32_t));
21229 continue;
21230 }
21231
21232
21233 for (cnt = 0; cnt < nhere; ++cnt)
21234 if (cp[nhere + cnt] != usrc[cnt])
21235 break;
21236
21237 if (cnt != nhere && cp[nhere + cnt] < usrc[cnt])
21238 {
21239
21240 cp += 2 * nhere;
21241 if ((1 + 2 * nhere) % __alignof__ (int32_t) != 0)
21242 cp += (__alignof__ (int32_t)
21243 - (1 + 2 * nhere) % __alignof__ (int32_t));
21244 continue;
21245 }
21246
21247
21248
21249 for (cnt = 0; cp[cnt] == usrc[cnt]; ++cnt);
21250
21251 do
21252 {
21253 offset <<= 8;
21254 offset += usrc[cnt] - cp[cnt];
21255 }
21256 while (++cnt < nhere);
21257 }
21258
21259 *cpp += nhere;
21260 return indirect[-i + offset];
21261 }
21262 }
21263
21264
21265 return 0x43219876;
21266}
21267# 3831 "regexec.c" 2
21268
21269
21270 if (cset->ncoll_syms)
21271 extra = (const unsigned char *)
21272 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_SYMB_EXTRAMB) & 0xffff)].string);
21273 for (i = 0; i < cset->ncoll_syms; ++i)
21274 {
21275 const unsigned char *coll_sym = extra + cset->coll_syms[i];
21276
21277
21278 if (*coll_sym != elem_len)
21279 continue;
21280
21281 for (j = 0; j < *coll_sym; j++)
21282 if (pin[j] != coll_sym[1 + j])
21283 break;
21284 if (j == *coll_sym)
21285 {
21286
21287 match_len = j;
21288 goto check_node_accept_bytes_match;
21289 }
21290 }
21291
21292 if (cset->nranges)
21293 {
21294 if (elem_len <= char_len)
21295 {
21296 collseqwc = ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_COLLSEQWC) & 0xffff)].string);
21297 in_collseq = __collseq_table_lookup (collseqwc, wc);
21298 }
21299 else
21300 in_collseq = find_collation_sequence_value (pin, elem_len);
21301 }
21302
21303 for (i = 0; i < cset->nranges; ++i)
21304 if (cset->range_starts[i] <= in_collseq
21305 && in_collseq <= cset->range_ends[i])
21306 {
21307 match_len = elem_len;
21308 goto check_node_accept_bytes_match;
21309 }
21310
21311
21312 if (cset->nequiv_classes)
21313 {
21314 const unsigned char *cp = pin;
21315 table = (const int32_t *)
21316 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_TABLEMB) & 0xffff)].string);
21317 weights = (const unsigned char *)
21318 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_WEIGHTMB) & 0xffff)].string);
21319 extra = (const unsigned char *)
21320 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_EXTRAMB) & 0xffff)].string);
21321 indirect = (const int32_t *)
21322 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_INDIRECTMB) & 0xffff)].string);
21323 idx = findidx (&cp);
21324 if (idx > 0)
21325 for (i = 0; i < cset->nequiv_classes; ++i)
21326 {
21327 int32_t equiv_class_idx = cset->equiv_classes[i];
21328 size_t weight_len = weights[idx];
21329 if (weight_len == weights[equiv_class_idx])
21330 {
21331 int cnt = 0;
21332 while (cnt <= weight_len
21333 && (weights[equiv_class_idx + 1 + cnt]
21334 == weights[idx + 1 + cnt]))
21335 ++cnt;
21336 if (cnt > weight_len)
21337 {
21338 match_len = elem_len;
21339 goto check_node_accept_bytes_match;
21340 }
21341 }
21342 }
21343 }
21344 }
21345 else
21346
21347 {
21348
21349
21350 wchar_t cmp_buf[] = {L'\0', L'\0', wc, L'\0', L'\0', L'\0'};
21351
21352
21353
21354
21355 for (i = 0; i < cset->nranges; ++i)
21356 {
21357 cmp_buf[0] = cset->range_starts[i];
21358 cmp_buf[4] = cset->range_ends[i];
21359 if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
21360 && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0)
21361 {
21362 match_len = char_len;
21363 goto check_node_accept_bytes_match;
21364 }
21365 }
21366 }
21367 check_node_accept_bytes_match:
21368 if (!cset->non_match)
21369 return match_len;
21370 else
21371 {
21372 if (match_len > 0)
21373 return 0;
21374 else
21375 return (elem_len > char_len) ? elem_len : char_len;
21376 }
21377 }
21378 return 0;
21379}
21380
21381
21382static unsigned int
21383
21384find_collation_sequence_value (const unsigned char *mbs, size_t mbs_len)
21385{
21386 uint32_t nrules = ((uint32_t) (*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_NRULES) & 0xffff)].word);
21387 if (nrules == 0)
21388 {
21389 if (mbs_len == 1)
21390 {
21391
21392 const unsigned char *collseq = (const unsigned char *)
21393 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_COLLSEQMB) & 0xffff)].string);
21394 return collseq[mbs[0]];
21395 }
21396 return (2147483647 * 2U + 1U);
21397 }
21398 else
21399 {
21400 int32_t idx;
21401 const unsigned char *extra = (const unsigned char *)
21402 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_SYMB_EXTRAMB) & 0xffff)].string);
21403 int32_t extrasize = (const unsigned char *)
21404 ((*_nl_current_LC_COLLATE)->values[((int) (_NL_COLLATE_SYMB_EXTRAMB + 1) & 0xffff)].string) - extra;
21405
21406 for (idx = 0; idx < extrasize;)
21407 {
21408 int mbs_cnt, found = 0;
21409 int32_t elem_mbs_len;
21410
21411 idx = idx + extra[idx] + 1;
21412 elem_mbs_len = extra[idx++];
21413 if (mbs_len == elem_mbs_len)
21414 {
21415 for (mbs_cnt = 0; mbs_cnt < elem_mbs_len; ++mbs_cnt)
21416 if (extra[idx + mbs_cnt] != mbs[mbs_cnt])
21417 break;
21418 if (mbs_cnt == elem_mbs_len)
21419
21420 found = 1;
21421 }
21422
21423 idx += elem_mbs_len;
21424
21425 idx = (idx + 3) & ~3;
21426
21427 idx += sizeof (uint32_t);
21428
21429 idx = idx + sizeof (uint32_t) * (extra[idx] + 1);
21430
21431 if (found)
21432 return *(uint32_t *) (extra + idx);
21433
21434 idx += sizeof (uint32_t);
21435 }
21436 return (2147483647 * 2U + 1U);
21437 }
21438}
21439
21440
21441
21442
21443
21444
21445static int
21446
21447check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
21448 int idx)
21449{
21450 unsigned char ch;
21451 ch = ((&mctx->input)->mbs[idx]);
21452 switch (node->type)
21453 {
21454 case CHARACTER:
21455 if (node->opr.c != ch)
21456 return 0;
21457 break;
21458
21459 case SIMPLE_BRACKET:
21460 if (!(node->opr.sbcset[ch / (sizeof (bitset_word_t) * 8)] & ((bitset_word_t) 1 << ch % (sizeof (bitset_word_t) * 8))))
21461 return 0;
21462 break;
21463
21464
21465 case OP_UTF8_PERIOD:
21466 if (ch >= 0x80)
21467 return 0;
21468
21469
21470 case OP_PERIOD:
21471 if ((ch == '\n' && !(mctx->dfa->syntax & ((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1)))
21472 || (ch == '\0' && (mctx->dfa->syntax & (((((((((unsigned long int) 1) << 1) << 1) << 1) << 1) << 1) << 1) << 1))))
21473 return 0;
21474 break;
21475
21476 default:
21477 return 0;
21478 }
21479
21480 if (node->constraint)
21481 {
21482
21483
21484 unsigned int context = re_string_context_at (&mctx->input, idx,
21485 mctx->eflags);
21486 if (((((node->constraint) & 0x0004) && !((context) & 1)) || (((node->constraint) & 0x0008) && ((context) & 1)) || (((node->constraint) & 0x0020) && !((context) & (1 << 1))) || (((node->constraint) & 0x0080) && !((context) & (((1 << 1) << 1) << 1)))))
21487 return 0;
21488 }
21489
21490 return 1;
21491}
21492
21493
21494
21495static reg_errcode_t
21496
21497extend_buffers (re_match_context_t *mctx)
21498{
21499 reg_errcode_t ret;
21500 re_string_t *pstr = &mctx->input;
21501
21502
21503 ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
21504 if (__builtin_expect (ret != REG_NOERROR, 0))
21505 return ret;
21506
21507 if (mctx->state_log != ((void *)0))
21508 {
21509
21510
21511
21512
21513 re_dfastate_t **new_array = ((re_dfastate_t * *) realloc (mctx->state_log, (pstr->bufs_len + 1) * sizeof (re_dfastate_t *)));
21514
21515 if (__builtin_expect (new_array == ((void *)0), 0))
21516 return REG_ESPACE;
21517 mctx->state_log = new_array;
21518 }
21519
21520
21521 if (pstr->icase)
21522 {
21523
21524 if (pstr->mb_cur_max > 1)
21525 {
21526 ret = build_wcs_upper_buffer (pstr);
21527 if (__builtin_expect (ret != REG_NOERROR, 0))
21528 return ret;
21529 }
21530 else
21531
21532 build_upper_buffer (pstr);
21533 }
21534 else
21535 {
21536
21537 if (pstr->mb_cur_max > 1)
21538 build_wcs_buffer (pstr);
21539 else
21540
21541 {
21542 if (pstr->trans != ((void *)0))
21543 re_string_translate_buffer (pstr);
21544 }
21545 }
21546 return REG_NOERROR;
21547}
21548
21549
21550
21551
21552
21553
21554static reg_errcode_t
21555
21556match_ctx_init (re_match_context_t *mctx, int eflags, int n)
21557{
21558 mctx->eflags = eflags;
21559 mctx->match_last = -1;
21560 if (n > 0)
21561 {
21562 mctx->bkref_ents = ((struct re_backref_cache_entry *) malloc ((n) * sizeof (struct re_backref_cache_entry)));
21563 mctx->sub_tops = ((re_sub_match_top_t * *) malloc ((n) * sizeof (re_sub_match_top_t *)));
21564 if (__builtin_expect (mctx->bkref_ents == ((void *)0) || mctx->sub_tops == ((void *)0), 0))
21565 return REG_ESPACE;
21566 }
21567
21568
21569
21570
21571
21572 mctx->abkref_ents = n;
21573 mctx->max_mb_elem_len = 1;
21574 mctx->asub_tops = n;
21575 return REG_NOERROR;
21576}
21577
21578
21579
21580
21581
21582static void
21583
21584match_ctx_clean (re_match_context_t *mctx)
21585{
21586 int st_idx;
21587 for (st_idx = 0; st_idx < mctx->nsub_tops; ++st_idx)
21588 {
21589 int sl_idx;
21590 re_sub_match_top_t *top = mctx->sub_tops[st_idx];
21591 for (sl_idx = 0; sl_idx < top->nlasts; ++sl_idx)
21592 {
21593 re_sub_match_last_t *last = top->lasts[sl_idx];
21594 free (last->path.array);
21595 free (last);
21596 }
21597 free (top->lasts);
21598 if (top->path)
21599 {
21600 free (top->path->array);
21601 free (top->path);
21602 }
21603 free (top);
21604 }
21605
21606 mctx->nsub_tops = 0;
21607 mctx->nbkref_ents = 0;
21608}
21609
21610
21611
21612static void
21613
21614match_ctx_free (re_match_context_t *mctx)
21615{
21616
21617 match_ctx_clean (mctx);
21618 free (mctx->sub_tops);
21619 free (mctx->bkref_ents);
21620}
21621
21622
21623
21624
21625
21626
21627static reg_errcode_t
21628
21629match_ctx_add_entry (re_match_context_t *mctx, int node, int str_idx, int from,
21630 int to)
21631{
21632 if (mctx->nbkref_ents >= mctx->abkref_ents)
21633 {
21634 struct re_backref_cache_entry* new_entry;
21635 new_entry = ((struct re_backref_cache_entry *) realloc (mctx->bkref_ents, (mctx->abkref_ents * 2) * sizeof (struct re_backref_cache_entry)));
21636
21637 if (__builtin_expect (new_entry == ((void *)0), 0))
21638 {
21639 free (mctx->bkref_ents);
21640 return REG_ESPACE;
21641 }
21642 mctx->bkref_ents = new_entry;
21643 memset (mctx->bkref_ents + mctx->nbkref_ents, '\0',
21644 sizeof (struct re_backref_cache_entry) * mctx->abkref_ents);
21645 mctx->abkref_ents *= 2;
21646 }
21647 if (mctx->nbkref_ents > 0
21648 && mctx->bkref_ents[mctx->nbkref_ents - 1].str_idx == str_idx)
21649 mctx->bkref_ents[mctx->nbkref_ents - 1].more = 1;
21650
21651 mctx->bkref_ents[mctx->nbkref_ents].node = node;
21652 mctx->bkref_ents[mctx->nbkref_ents].str_idx = str_idx;
21653 mctx->bkref_ents[mctx->nbkref_ents].subexp_from = from;
21654 mctx->bkref_ents[mctx->nbkref_ents].subexp_to = to;
21655# 4227 "regexec.c"
21656 mctx->bkref_ents[mctx->nbkref_ents].eps_reachable_subexps_map
21657 = (from == to ? ~0 : 0);
21658
21659 mctx->bkref_ents[mctx->nbkref_ents++].more = 0;
21660 if (mctx->max_mb_elem_len < to - from)
21661 mctx->max_mb_elem_len = to - from;
21662 return REG_NOERROR;
21663}
21664
21665
21666
21667
21668static int
21669
21670search_cur_bkref_entry (const re_match_context_t *mctx, int str_idx)
21671{
21672 int left, right, mid, last;
21673 last = right = mctx->nbkref_ents;
21674 for (left = 0; left < right;)
21675 {
21676 mid = (left + right) / 2;
21677 if (mctx->bkref_ents[mid].str_idx < str_idx)
21678 left = mid + 1;
21679 else
21680 right = mid;
21681 }
21682 if (left < last && mctx->bkref_ents[left].str_idx == str_idx)
21683 return left;
21684 else
21685 return -1;
21686}
21687
21688
21689
21690
21691static reg_errcode_t
21692
21693match_ctx_add_subtop (re_match_context_t *mctx, int node, int str_idx)
21694{
21695
21696
21697
21698
21699 if (__builtin_expect (mctx->nsub_tops == mctx->asub_tops, 0))
21700 {
21701 int new_asub_tops = mctx->asub_tops * 2;
21702 re_sub_match_top_t **new_array = ((re_sub_match_top_t * *) realloc (mctx->sub_tops, (new_asub_tops) * sizeof (re_sub_match_top_t *)));
21703
21704
21705 if (__builtin_expect (new_array == ((void *)0), 0))
21706 return REG_ESPACE;
21707 mctx->sub_tops = new_array;
21708 mctx->asub_tops = new_asub_tops;
21709 }
21710 mctx->sub_tops[mctx->nsub_tops] = calloc (1, sizeof (re_sub_match_top_t));
21711 if (__builtin_expect (mctx->sub_tops[mctx->nsub_tops] == ((void *)0), 0))
21712 return REG_ESPACE;
21713 mctx->sub_tops[mctx->nsub_tops]->node = node;
21714 mctx->sub_tops[mctx->nsub_tops++]->str_idx = str_idx;
21715 return REG_NOERROR;
21716}
21717
21718
21719
21720
21721static re_sub_match_last_t *
21722
21723match_ctx_add_sublast (re_sub_match_top_t *subtop, int node, int str_idx)
21724{
21725 re_sub_match_last_t *new_entry;
21726 if (__builtin_expect (subtop->nlasts == subtop->alasts, 0))
21727 {
21728 int new_alasts = 2 * subtop->alasts + 1;
21729 re_sub_match_last_t **new_array = ((re_sub_match_last_t * *) realloc (subtop->lasts, (new_alasts) * sizeof (re_sub_match_last_t *)));
21730
21731
21732 if (__builtin_expect (new_array == ((void *)0), 0))
21733 return ((void *)0);
21734 subtop->lasts = new_array;
21735 subtop->alasts = new_alasts;
21736 }
21737 new_entry = calloc (1, sizeof (re_sub_match_last_t));
21738 if (__builtin_expect (new_entry != ((void *)0), 1))
21739 {
21740 subtop->lasts[subtop->nlasts] = new_entry;
21741 new_entry->node = node;
21742 new_entry->str_idx = str_idx;
21743 ++subtop->nlasts;
21744 }
21745 return new_entry;
21746}
21747
21748static void
21749
21750sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
21751 re_dfastate_t **limited_sts, int last_node, int last_str_idx)
21752{
21753 sctx->sifted_states = sifted_sts;
21754 sctx->limited_states = limited_sts;
21755 sctx->last_node = last_node;
21756 sctx->last_str_idx = last_str_idx;
21757 memset (&sctx->limits, '\0', sizeof (re_node_set));
21758}
21759# 66 "regex.c" 2