venture37

cpp -E proto_crypt.c

Aug 23rd, 2014
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 74.59 KB | None | 0 0
  1. cpp -E -I./proto -I./libcperciva/alg -I./libcperciva/datastruct -I./lib/dnsthread -I./libcperciva/util -I./libcperciva/cpusupport -I./libcperciva/events -I./libcperciva/network -I./libcperciva/crypto ./proto/proto_crypt.c
  2.  
  3. #line 48 "/usr/include/assert.h"
  4. extern void __assert(const char *, const char *, int);
  5. extern void __assert_c99(const char *, const char *, int, const char *);
  6. #line 45 "/usr/include/stdint.h"
  7. typedef signed char int8_t;
  8. typedef signed short int16_t;
  9. typedef signed int int32_t;
  10. #line 52
  11. typedef signed long long int64_t;
  12. #line 56
  13. typedef unsigned char uint8_t;
  14. typedef unsigned short uint16_t;
  15. typedef unsigned int uint32_t;
  16. #line 64
  17. typedef unsigned long long uint64_t;
  18. #line 74
  19. typedef int64_t intmax_t;
  20. typedef uint64_t uintmax_t;
  21. #line 86
  22. typedef signed long intptr_t;
  23. typedef unsigned long uintptr_t;
  24. #line 93
  25. typedef signed char int_least8_t;
  26. typedef signed short int_least16_t;
  27. typedef signed int int_least32_t;
  28. #line 100
  29. typedef signed long long int_least64_t;
  30. #line 104
  31. typedef unsigned char uint_least8_t;
  32. typedef unsigned short uint_least16_t;
  33. typedef unsigned int uint_least32_t;
  34. #line 111
  35. typedef unsigned long long uint_least64_t;
  36. #line 121
  37. typedef signed char int_fast8_t;
  38. typedef int16_t int_fast16_t;
  39. typedef int32_t int_fast32_t;
  40. typedef unsigned char uint_fast8_t;
  41. typedef uint16_t uint_fast16_t;
  42. typedef uint32_t uint_fast32_t;
  43.  
  44. typedef int64_t int_fast64_t;
  45. typedef uint64_t uint_fast64_t;
  46. #line 76 "/usr/include/stdio.h"
  47. typedef unsigned long size_t;
  48. #line 82
  49. typedef signed long ssize_t;
  50. #line 93
  51. typedef long fpos_t;
  52. #line 97
  53. typedef long long fpos64_t;
  54. #line 163
  55. typedef struct {
  56. unsigned char *_ptr;
  57. int _cnt;
  58. unsigned char *_base;
  59. unsigned char *_bufendp;
  60. short _flag;
  61. short _file;
  62. int __stdioid;
  63. char *__newbase;
  64. void *_lock;
  65. } FILE;
  66. #line 179
  67. extern FILE _iob[16];
  68. #line 192
  69. extern size_t fread(void *, size_t, size_t, FILE *);
  70. extern size_t fwrite(const void *, size_t, size_t,FILE *);
  71. #line 62 "/usr/include/va_list.h"
  72. typedef char *va_list;
  73. #line 203 "/usr/include/stdio.h"
  74. extern int vscanf(const char *, va_list);
  75. extern int vfscanf(FILE *, const char *, va_list);
  76. extern int vsscanf(const char *, const char *, va_list);
  77. #line 271
  78. extern int __flsbuf(unsigned char, FILE *);
  79. extern int __filbuf(FILE *);
  80. extern int ferror(FILE *);
  81. extern int feof(FILE *);
  82. extern void clearerr(FILE *);
  83. extern int putchar(int);
  84. extern int getchar(void);
  85. extern int putc(int, FILE *);
  86. extern int getc(FILE *);
  87. extern int remove(const char *);
  88. extern int rename(const char *, const char *);
  89.  
  90. extern int renameat(int, const char *, int, const char *);
  91.  
  92. extern FILE *tmpfile(void);
  93. extern char *tmpnam(char *);
  94. extern int fclose(FILE *);
  95. extern int fflush(FILE *);
  96. extern FILE * fopen(const char *, const char *);
  97. extern FILE * freopen(const char *, const char *, FILE *);
  98.  
  99. extern FILE * fmemopen(void *, size_t, const char *);
  100. extern FILE * open_memstream(char **, size_t *);
  101.  
  102. extern void setbuf(FILE *, char *);
  103. extern int setvbuf(FILE *, char *, int, size_t);
  104. extern int fprintf(FILE *, const char *, ...);
  105. extern int fscanf(FILE *, const char *, ...);
  106.  
  107. extern int dprintf(int, const char * , ...);
  108.  
  109. extern int printf(const char *, ...);
  110. extern int scanf(const char *, ...);
  111. extern int sprintf(char *, const char *, ...);
  112.  
  113. extern int snprintf(char *, size_t, const char *, ...);
  114.  
  115. extern int sscanf(const char *, const char *, ...);
  116. #line 311
  117. extern int vfprintf(FILE *, const char *, va_list);
  118. extern int vprintf(const char *, va_list);
  119. extern int vsprintf(char *, const char *, va_list);
  120.  
  121. extern int vsnprintf(char *, size_t, const char *, va_list);
  122. #line 318
  123. extern int vdprintf(int, const char *, va_list);
  124. #line 334
  125. extern int fgetc(FILE *);
  126. extern char * fgets(char *, int, FILE *);
  127. extern int fputc(int, FILE *);
  128. extern int fputs(const char *, FILE *);
  129. extern char *gets(char *);
  130. extern int puts(const char *);
  131. extern int ungetc(int, FILE *);
  132. extern int fgetpos(FILE *, fpos_t *);
  133. extern int fseek(FILE *, long int, int);
  134. extern int fsetpos(FILE *, const fpos_t *);
  135. extern long ftell(FILE *);
  136. extern void rewind(FILE *);
  137. extern void perror(const char *);
  138. #line 352
  139. extern int getc_unlocked(FILE *);
  140. extern int getchar_unlocked(void);
  141. extern int putc_unlocked(int, FILE *);
  142. extern int putchar_unlocked(int);
  143.  
  144. extern ssize_t getdelim(char **, size_t *, int, FILE *);
  145. extern ssize_t getline(char **, size_t *, FILE *);
  146. #line 58 "/usr/include/sys/inttypes.h"
  147. typedef struct {
  148. intmax_t quot;
  149. intmax_t rem;
  150. } imaxdiv_t;
  151. #line 64
  152. extern intmax_t __strtollmax(const char * , char ** , int);
  153.  
  154. static intmax_t
  155. strtoimax (const char * __nptr, char ** __endptr, int __base) {
  156. return __strtollmax (__nptr, __endptr, __base);
  157. }
  158. #line 89
  159. extern intmax_t imaxabs(intmax_t);
  160. extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
  161. extern uintmax_t strtoumax(const char * , char ** , int);
  162. #line 98
  163. typedef unsigned short wchar_t;
  164. #line 101
  165. extern intmax_t wcstoimax(const wchar_t * , wchar_t ** , int );
  166. extern uintmax_t wcstoumax(const wchar_t * , wchar_t ** , int);
  167. #line 112
  168. typedef int32_t intfast_t;
  169. typedef uint32_t uintfast_t;
  170. #line 563
  171. typedef signed long __long32_t;
  172. typedef unsigned long __ulong32_t;
  173. #line 577
  174. typedef signed int __long64_t;
  175. typedef unsigned int __ulong64_t;
  176. #line 590
  177. typedef signed int int32long64_t;
  178. typedef unsigned int uint32long64_t;
  179. #line 603
  180. typedef signed long long32int64_t;
  181. typedef unsigned long ulong32int64_t;
  182. #line 618
  183. typedef signed char int8;
  184. typedef signed short int16;
  185. typedef signed int int32;
  186. #line 625
  187. typedef signed long long int64;
  188. #line 629
  189. typedef unsigned char u_int8;
  190. typedef unsigned char u_int8_t;
  191. typedef unsigned short u_int16;
  192. typedef unsigned short u_int16_t;
  193. typedef unsigned int u_int32;
  194. typedef unsigned int u_int32_t;
  195. #line 640
  196. typedef unsigned long long u_int64;
  197. typedef unsigned long long u_int64_t;
  198. #line 88 "/usr/include/sys/types.h"
  199. typedef long ptrdiff_t;
  200. #line 102
  201. typedef unsigned int wctype_t;
  202. #line 128
  203. typedef int time_t;
  204. #line 135
  205. typedef int clock_t;
  206. #line 151
  207. typedef unsigned char uchar_t;
  208. #line 154
  209. typedef unsigned short ushort_t;
  210. typedef unsigned int uint_t;
  211. typedef unsigned long ulong_t;
  212. #line 166
  213. typedef int level_t;
  214. typedef __long64_t daddr_t;
  215. typedef int daddr32_t;
  216.  
  217. typedef int64_t daddr64_t;
  218.  
  219. typedef char * caddr_t;
  220. typedef __ulong64_t ino_t;
  221. typedef uint_t ino32_t;
  222.  
  223. typedef uint64_t ino64_t;
  224.  
  225. typedef short cnt_t;
  226. #line 183
  227. typedef __ulong64_t dev_t;
  228.  
  229. typedef uint_t dev32_t;
  230.  
  231. typedef uint64_t dev64_t;
  232.  
  233. typedef int chan_t;
  234. typedef int time32_t;
  235. typedef int pid32_t;
  236. typedef int tid32_t;
  237.  
  238. typedef uint64_t pid64_t;
  239. typedef uint64_t tid64_t;
  240.  
  241. typedef int64_t time64_t;
  242. #line 208
  243. typedef void * __ptr32;
  244. typedef char * __cptr32;
  245. #line 212
  246. typedef int soff_t;
  247. #line 219
  248. typedef long off_t;
  249. #line 224
  250. typedef long long off64_t;
  251. #line 227
  252. typedef long paddr_t;
  253. #line 232
  254. typedef int32long64_t key_t;
  255. #line 237
  256. typedef __long64_t timer_t;
  257.  
  258. typedef int timer32_t;
  259.  
  260. typedef int64_t timer64_t;
  261.  
  262. typedef short nlink_t;
  263. #line 248
  264. typedef uint_t mode_t;
  265. #line 254
  266. typedef uint_t uid_t;
  267. typedef uint_t gid_t;
  268. typedef uint_t rid_t;
  269. #line 259
  270. typedef ushort_t authnum_t;
  271. typedef __ptr32 mid_t;
  272. #line 264
  273. typedef int32long64_t pid_t;
  274. #line 267
  275. typedef __long64_t tid_t;
  276. typedef char slab_t[12];
  277. typedef long mtyp_t;
  278. typedef int boolean_t;
  279. typedef int crid_t;
  280. #line 277
  281. typedef __long64_t blkcnt_t;
  282. #line 283
  283. typedef __long64_t blksize_t;
  284. #line 288
  285. typedef int blkcnt32_t;
  286. typedef int blksize32_t;
  287.  
  288. typedef uint64_t blkcnt64_t;
  289. typedef uint64_t blksize64_t;
  290. #line 296
  291. typedef ulong_t fsblkcnt_t;
  292. typedef ulong_t fsfilcnt_t;
  293. #line 301
  294. typedef int wint_t;
  295. #line 305
  296. typedef uint32long64_t id_t;
  297. typedef unsigned int useconds_t;
  298. typedef signed int suseconds_t;
  299. #line 311
  300. typedef long long clockid_t;
  301. #line 320
  302. typedef struct sigset_t {
  303. #line 329
  304. unsigned int losigs;
  305. unsigned int hisigs;
  306. #line 336
  307. } sigset_t;
  308.  
  309. typedef struct {
  310.  
  311. unsigned int losigs, hisigs;
  312. #line 344
  313. } sigset32_t;
  314. #line 347
  315. typedef struct {
  316. uint64_t ss_set[4];
  317. } sigset64_t;
  318. #line 358
  319. typedef int signal_t;
  320. #line 363
  321. typedef struct fsid_t {
  322. #line 368
  323. unsigned int val[2];
  324. #line 373
  325. } fsid_t;
  326. #line 381
  327. typedef struct fsid64_t {
  328.  
  329. uint64_t val[2];
  330. #line 387
  331. } fsid64_t;
  332.  
  333. typedef void *pthread_attr_t;
  334. typedef void *pthread_condattr_t;
  335. typedef void *pthread_mutexattr_t;
  336. #line 394
  337. typedef void *pthread_rwlockattr_t;
  338. #line 398
  339. typedef void *pthread_barrierattr_t;
  340. #line 401
  341. typedef unsigned int pthread_t;
  342. typedef unsigned int pthread_key_t;
  343.  
  344. typedef struct
  345. {
  346. #line 409
  347. int __mt_word[13];
  348.  
  349. }
  350. pthread_mutex_t;
  351.  
  352. typedef struct
  353. {
  354. #line 419
  355. int __cv_word[11];
  356.  
  357. }
  358. pthread_cond_t;
  359.  
  360. typedef struct
  361. {
  362. #line 429
  363. int __on_word[28];
  364.  
  365. }
  366. pthread_once_t;
  367. #line 435
  368. typedef struct
  369. {
  370. #line 440
  371. int __sp_word[6];
  372.  
  373. }
  374. pthread_spinlock_t;
  375.  
  376. typedef struct
  377. {
  378. #line 450
  379. int __br_word[8];
  380.  
  381. }
  382. pthread_barrier_t;
  383. #line 457
  384. typedef struct
  385. {
  386. #line 462
  387. int __rw_word[52];
  388.  
  389. }
  390. pthread_rwlock_t;
  391. #line 469
  392. typedef void *trace_attr_t;
  393. typedef unsigned trace_event_id_t;
  394. typedef unsigned trace_id_t;
  395.  
  396. typedef uint64_t trace_event_set_t;
  397. #line 481
  398. typedef struct _quad { int val[2]; } quad;
  399. #line 38 "/usr/include/sys/vm_types.h"
  400. typedef long vmid_t;
  401. typedef ulong_t vmhandle_t;
  402. #line 45
  403. typedef int vmid32_t;
  404. typedef uint_t vmhandle32_t;
  405. #line 54
  406. typedef long32int64_t kvmid_t;
  407. typedef ulong32int64_t kvmhandle_t;
  408. #line 65
  409. typedef long long vmid64_t;
  410. typedef long long rpn64_t;
  411. typedef long long cnt64_t;
  412. typedef long long psize_t;
  413. #line 76
  414. typedef int32long64_t vmidx_t;
  415.  
  416. typedef uint32long64_t vmfkey_t;
  417.  
  418. typedef uint32long64_t vmprkey_t;
  419. typedef int32long64_t vmkey_t;
  420. typedef int32long64_t vmhwkey_t;
  421. typedef int vmhkey_t;
  422. typedef int32long64_t vpn_t;
  423. typedef int32long64_t rpn_t;
  424.  
  425. typedef unsigned long ptex_t;
  426. typedef unsigned long swhatx_t;
  427.  
  428. typedef uint32long64_t esid_t;
  429. #line 95
  430. typedef ushort_t aptx_t;
  431. #line 98
  432. typedef int pdtx_t;
  433. typedef short psx_t;
  434. typedef ushort_t pshift_t;
  435. typedef ushort_t sshift_t;
  436. #line 106
  437. typedef uint_t vm_mpss_t;
  438.  
  439. typedef int unidx_t;
  440. typedef int snidx_t;
  441. typedef int vmnodeidx_t;
  442.  
  443. typedef int kvpn_t;
  444.  
  445. typedef int krpn_t;
  446.  
  447. typedef int32long64_t vmsize_t;
  448.  
  449. typedef int32long64_t vmm_lock_t;
  450.  
  451. typedef uint_t amef_t;
  452. typedef int vmcbpx_t;
  453.  
  454. typedef uint32_t cnt32_t;
  455.  
  456. typedef unsigned long ureg_t;
  457. #line 144
  458. typedef struct
  459.  
  460. vmaddr_t
  461.  
  462. {
  463.  
  464. vmhandle_t srval;
  465. caddr_t offset;
  466. #line 156
  467. } vmaddr_t;
  468. #line 160
  469. typedef struct
  470.  
  471. adspace_t
  472.  
  473. {
  474.  
  475. ulong32int64_t alloc;
  476. vmhandle_t srval[16];
  477. #line 172
  478. } adspace_t;
  479. #line 189
  480. typedef struct
  481. adspace32_t
  482. {
  483. uint_t alloc;
  484. uint_t srval[16];
  485. } adspace32_t;
  486. #line 202
  487. typedef enum _MR_ATTR_TYPE {
  488. BadAttr = 0,
  489. VirtAddr = 1
  490. } MR_ATTR_TYPE;
  491.  
  492. typedef enum _MR_LABEL_TYPE {
  493. BadMem = 0,
  494. FreeMem = 1,
  495. IPLCB = 2,
  496. RMALLOC = 3,
  497. PM_HEAP = 4,
  498. RTAS_HEAP = 5,
  499. TCE_TABLE = 6,
  500. IO_SPACE = 7,
  501. HUGE_PAGE = 8
  502. } MR_LABEL_TYPE;
  503. #line 222
  504. typedef struct {
  505. unsigned long long mr_addr;
  506. unsigned long long mr_size;
  507. unsigned char mr_att;
  508. unsigned char mr_label;
  509. unsigned short mr_nodeid;
  510. unsigned short mr_flags;
  511. char reserved[2];
  512. } iplcb_map_reg_t;
  513. #line 263
  514. typedef vmhandle_t vmlpghandle_t;
  515. #line 48 "/usr/include/sys/m_types.h"
  516. typedef struct label_t
  517. {
  518. long __opaque[25];
  519. } label_t;
  520.  
  521. typedef int32long64_t ext_t;
  522. #line 534 "/usr/include/sys/types.h"
  523. typedef unsigned long long ptr64_t;
  524. #line 544
  525. typedef unsigned long long __ptr64;
  526. typedef unsigned long long __cptr64;
  527. #line 554
  528. typedef ushort_t UniChar;
  529. typedef uint_t UTF32Char;
  530. #line 560
  531. typedef uchar_t uchar;
  532. typedef ushort_t ushort;
  533. typedef uint_t uint;
  534. typedef ulong_t ulong;
  535.  
  536. typedef struct { int r[1]; } * physadr_t;
  537. typedef physadr_t physadr;
  538. #line 569
  539. typedef unsigned char u_char;
  540. typedef unsigned short u_short;
  541. typedef unsigned int u_int;
  542. typedef unsigned long u_long;
  543.  
  544. typedef int swblk_t;
  545. #line 579
  546. struct sigset {
  547. #line 583
  548. unsigned int losigs;
  549. unsigned int hisigs;
  550.  
  551. };
  552. #line 589
  553. struct fsid {
  554.  
  555. unsigned int val[2];
  556. #line 595
  557. };
  558. #line 604
  559. struct fileid {
  560. uint_t fid_len;
  561. ino32_t fid_ino;
  562. uint_t fid_gen;
  563. char fid_x[20 - (sizeof(ino32_t) + 2) - sizeof(uint_t)];
  564. };
  565. #line 625
  566. struct fid {
  567. uint_t fid_len;
  568. char fid_data[20];
  569. };
  570. typedef struct fid fid_t;
  571. #line 632
  572. struct fhandle {
  573. char x[32];
  574. };
  575. typedef struct fhandle fhandle_t;
  576.  
  577. struct filehandle {
  578. fsid_t fh_fsid;
  579. struct fileid fh_fid;
  580. };
  581. #line 649
  582. struct unique_id {
  583. __ulong32_t word1;
  584. __ulong32_t word2;
  585. __ulong32_t word3;
  586. __ulong32_t word4;
  587. };
  588. typedef struct unique_id unique_id_t;
  589. #line 681
  590. typedef long long offset_t;
  591. #line 691
  592. typedef long long ssize64_t;
  593. #line 697
  594. typedef long long longlong_t;
  595. typedef unsigned long long u_longlong_t;
  596. #line 701
  597. typedef unsigned int class_id_t;
  598. #line 705
  599. typedef uint_t liobn_t;
  600.  
  601. typedef unsigned long long unit_addr_t;
  602. #line 721
  603. typedef uint8_t eye_catch1b_t;
  604. typedef uint16_t eye_catch2b_t;
  605. typedef uint32_t eye_catch4b_t;
  606.  
  607. typedef uint64_t eye_catch8b_t;
  608. #line 733
  609. typedef unsigned long eye_catch_t;
  610. #line 738
  611. typedef unsigned long long size64_t;
  612. #line 480 "/usr/include/stdio.h"
  613. extern int fileno(FILE *);
  614. extern FILE *fdopen(int,const char *);
  615. extern char *ctermid(char *);
  616. extern FILE *popen(const char *, const char *);
  617. extern int pclose(FILE *);
  618. #line 487
  619. extern void flockfile(FILE *);
  620. extern void funlockfile(FILE *);
  621. extern int fseeko(FILE *, off_t, int);
  622. extern off_t ftello(FILE *);
  623. extern int ftrylockfile(FILE *);
  624. extern void funlockfile(FILE *);
  625. #line 508
  626. extern char *optarg;
  627. extern int opterr;
  628. extern int optind;
  629. extern int optopt;
  630. #line 527
  631. extern int getw(FILE *);
  632. extern int getopt(int, char * const [], const char*);
  633. extern char *cuserid(char *);
  634. extern int putw(int, FILE *);
  635.  
  636. extern char *tempnam(const char*, const char*);
  637. #line 234 "/usr/include/float.h"
  638. extern unsigned int SINFINITY;
  639. extern unsigned int _DBLINF[2];
  640. extern unsigned int SQNAN;
  641. extern unsigned int DQNAN[2];
  642. extern unsigned int SSNAN;
  643. extern unsigned int DSNAN[2];
  644. #line 265
  645. typedef unsigned short fprnd_t;
  646. #line 274
  647. fprnd_t fp_read_rnd(void);
  648. fprnd_t fp_swap_rnd(fprnd_t rnd);
  649. #line 546 "/usr/include/stdio.h"
  650. extern int fgetpos64(FILE *, fpos64_t *);
  651. extern FILE *fopen64(const char *, const char *);
  652. extern FILE *freopen64(const char *, const char *, FILE *);
  653. extern int fseeko64(FILE *, off64_t, int);
  654. extern int fsetpos64(FILE *, const fpos64_t *);
  655. extern off64_t ftello64(FILE *);
  656. #line 558
  657. extern void setbuffer(FILE *, char *, size_t);
  658. extern void setlinebuf(FILE *);
  659. #line 108 "/usr/include/stdlib.h"
  660. typedef struct div_t {
  661. int quot;
  662. int rem;
  663. } div_t;
  664.  
  665. typedef struct ldiv_t {
  666. long int quot;
  667. long int rem;
  668. } ldiv_t;
  669. #line 123
  670. extern size_t __getmbcurmax (void);
  671. extern int __getmaxdispwidth (void);
  672. #line 134
  673. extern double strtod(const char * , char ** ); extern long int strtol(const char * , char ** ,
  674. int);
  675. extern unsigned long int strtoul(const char * , char ** , int);
  676. #line 147
  677. extern void _Exit(int);
  678. extern float strtof(const char * , char ** );
  679. #line 156
  680. typedef struct lldiv_t {
  681. long long int quot;
  682. long long int rem ;
  683. } lldiv_t;
  684. #line 169
  685. extern long long int atoll(const char *);
  686. extern long long int llabs( long long int );
  687. extern lldiv_t lldiv( long long int, long long int );
  688.  
  689. extern long long int strtoll(
  690. const char * ,
  691. char ** ,
  692. int );
  693. extern unsigned long long int strtoull(
  694. const char * ,
  695. char ** ,
  696. int );
  697. #line 190
  698. static long double
  699. strtold(const char * __a, char ** __b) {
  700. return ((long double)strtod (__a, __b));
  701. }
  702. #line 209
  703. extern int mblen(const char *, size_t);
  704. extern size_t mbstowcs(wchar_t * , const char * , size_t);
  705. extern int mbtowc(wchar_t * , const char * , size_t);
  706. extern size_t wcstombs(char * , const wchar_t * , size_t);
  707. extern int wctomb(char *, const wchar_t);
  708. #line 265
  709. extern double atof(const char *);
  710. extern int atoi(const char *);
  711. extern long int atol(const char *);
  712. extern int rand(void);
  713. extern void srand(unsigned int);
  714. extern void *calloc(size_t, size_t);
  715. extern void free(void *);
  716. extern void *malloc(size_t);
  717. extern void *realloc(void *, size_t);
  718. extern void abort(void);
  719. extern int atexit(void (*)(void));
  720. extern void exit(int);
  721. extern char *getenv(const char *);
  722. extern int system(const char *);
  723. extern void *bsearch(const void *, const void *, size_t, size_t, int(*)(const void *,const void *));
  724. extern void qsort(void *, size_t, size_t, int(*)(const void *,const void *));
  725. #line 291
  726. extern int abs(int);
  727. extern struct div_t div(int, int);
  728. extern long int labs(long int);
  729. extern struct ldiv_t ldiv(long int, long int);
  730. #line 315
  731. extern int posix_memalign(void **,size_t,size_t);
  732. #line 93 "/usr/include/sys/time.h"
  733. struct timeval {
  734. time_t tv_sec;
  735.  
  736. suseconds_t tv_usec;
  737. #line 100
  738. };
  739. #line 105
  740. struct timeval32 {
  741. int32_t tv_sec;
  742. int32_t tv_usec;
  743. };
  744. #line 115
  745. struct timeval64 {
  746. int64_t tv_sec;
  747. int32_t tv_usec;
  748. #line 121
  749. };
  750. #line 128
  751. struct timezone {
  752. int tz_minuteswest;
  753. int tz_dsttime;
  754. };
  755. #line 145
  756. struct itimerval {
  757. struct timeval it_interval;
  758. struct timeval it_value;
  759. };
  760. #line 159
  761. extern int getitimer(int, struct itimerval *);
  762. extern int setitimer(int, const struct itimerval *, struct itimerval *);
  763. extern int gettimeofday(struct timeval *, void *);
  764.  
  765. extern int settimeofday(struct timeval *, struct timezone *);
  766.  
  767. extern int utimes(const char *, const struct timeval *);
  768. #line 183
  769. typedef struct
  770.  
  771. fd_set
  772.  
  773. {
  774. long fds_bits[(65534/(sizeof(long) * 8)+1)];
  775. } fd_set;
  776. #line 195
  777. struct timespec {
  778. time_t tv_sec;
  779. long tv_nsec;
  780. };
  781. #line 204
  782. extern int pselect(int, void *, void *, void *, const struct timespec *, const sigset_t *);
  783. #line 224
  784. extern int __fd_select(int, fd_set *, fd_set *,
  785. fd_set *, struct timeval *);
  786. static int select(int __fds,
  787. fd_set * __readlist,
  788. fd_set * __writelist,
  789. fd_set * __exceptlist,
  790. struct timeval * __timeout)
  791. {
  792. return __fd_select(__fds, __readlist, __writelist,
  793. __exceptlist, __timeout);
  794. }
  795. #line 363
  796. struct timestruc_t {
  797. time_t tv_sec;
  798. suseconds_t tv_nsec;
  799. };
  800. #line 372
  801. struct timestruc32_t {
  802. int32_t tv_sec;
  803. int32_t tv_nsec;
  804. };
  805. #line 380
  806. struct timestruc64_t {
  807. int64_t tv_sec;
  808. int32_t tv_nsec;
  809. };
  810. #line 395
  811. struct itimerstruc_t {
  812. struct timestruc_t it_interval;
  813. struct timestruc_t it_value;
  814. };
  815. #line 404
  816. struct itimerstruc32_t {
  817. struct timestruc32_t it_interval;
  818. struct timestruc32_t it_value;
  819. };
  820. #line 412
  821. struct itimerstruc64_t {
  822. struct timestruc64_t it_interval;
  823. struct timestruc64_t it_value;
  824. };
  825. #line 427
  826. typedef struct timebasestruct {
  827. int flag;
  828. unsigned int tb_high;
  829. unsigned int tb_low;
  830. } timebasestruct_t;
  831.  
  832. int read_real_time(timebasestruct_t *, size_t);
  833. int read_wall_time(timebasestruct_t *, size_t);
  834. int time_base_to_time(timebasestruct_t *, size_t);
  835. #line 85 "/usr/include/sys/resource.h"
  836. typedef unsigned long rlim_t;
  837. struct rlimit {
  838. rlim_t rlim_cur;
  839. rlim_t rlim_max;
  840. };
  841. #line 96
  842. typedef unsigned int rlim32_t;
  843.  
  844. struct rlimit32 {
  845. rlim32_t rlim_cur;
  846. rlim32_t rlim_max;
  847. };
  848. #line 110
  849. typedef unsigned long long rlim64_t;
  850. struct rlimit64 {
  851. rlim64_t rlim_cur;
  852. rlim64_t rlim_max;
  853. };
  854. #line 155
  855. struct rusage
  856. {
  857. struct timeval ru_utime;
  858. struct timeval ru_stime;
  859. long ru_maxrss;
  860. long ru_ixrss;
  861. long ru_idrss;
  862. long ru_isrss;
  863. long ru_minflt;
  864. long ru_majflt;
  865. long ru_nswap;
  866. long ru_inblock;
  867. long ru_oublock;
  868. long ru_msgsnd;
  869. long ru_msgrcv;
  870. long ru_nsignals;
  871. long ru_nvcsw;
  872. long ru_nivcsw;
  873.  
  874. };
  875. #line 180
  876. struct rusage32
  877. {
  878. struct timeval32 ru_utime;
  879. struct timeval32 ru_stime;
  880. signed int ru_maxrss;
  881. signed int ru_ixrss;
  882. signed int ru_idrss;
  883. signed int ru_isrss;
  884. signed int ru_minflt;
  885. signed int ru_majflt;
  886. signed int ru_nswap;
  887. signed int ru_inblock;
  888. signed int ru_oublock;
  889. signed int ru_msgsnd;
  890. signed int ru_msgrcv;
  891. signed int ru_nsignals;
  892. signed int ru_nvcsw;
  893. signed int ru_nivcsw;
  894. };
  895. #line 208
  896. struct rusage64
  897. {
  898. #line 214
  899. struct timeval ru_utime;
  900. struct timeval ru_stime;
  901.  
  902. long long ru_maxrss;
  903. long long ru_ixrss;
  904. long long ru_idrss;
  905. long long ru_isrss;
  906. long long ru_minflt;
  907. long long ru_majflt;
  908. long long ru_nswap;
  909. long long ru_inblock;
  910. long long ru_oublock;
  911. long long ru_msgsnd;
  912. long long ru_msgrcv;
  913. long long ru_nsignals;
  914. long long ru_nvcsw;
  915. long long ru_nivcsw;
  916. };
  917. #line 237
  918. struct trusage64
  919. {
  920. struct timeval64 ru_utime;
  921. struct timeval64 ru_stime;
  922. longlong_t ru_maxrss;
  923. longlong_t ru_ixrss;
  924. longlong_t ru_idrss;
  925. longlong_t ru_isrss;
  926. longlong_t ru_minflt;
  927. longlong_t ru_majflt;
  928. longlong_t ru_nswap;
  929. longlong_t ru_inblock;
  930. longlong_t ru_oublock;
  931. longlong_t ru_msgsnd;
  932. longlong_t ru_msgrcv;
  933. longlong_t ru_nsignals;
  934. longlong_t ru_nvcsw;
  935. longlong_t ru_nivcsw;
  936. };
  937. #line 261
  938. struct trusage32
  939. {
  940. struct timeval32 ru_utime;
  941. struct timeval32 ru_stime;
  942. signed int ru_maxrss;
  943. signed int ru_ixrss;
  944. signed int ru_idrss;
  945. signed int ru_isrss;
  946. signed int ru_minflt;
  947. signed int ru_majflt;
  948. signed int ru_nswap;
  949. signed int ru_inblock;
  950. signed int ru_oublock;
  951. signed int ru_msgsnd;
  952. signed int ru_msgrcv;
  953. signed int ru_nsignals;
  954. signed int ru_nvcsw;
  955. signed int ru_nivcsw;
  956. };
  957. #line 350
  958. extern int getpriority(int, id_t);
  959. extern int setpriority(int, id_t, int);
  960. extern int getrlimit(int, struct rlimit *);
  961. extern int setrlimit(int, const struct rlimit *);
  962. #line 356
  963. extern int getrlimit64(int, struct rlimit64 *);
  964. extern int setrlimit64(int, const struct rlimit64 *);
  965. #line 365
  966. extern int getrusage(int, struct rusage *);
  967.  
  968. extern int getrusage64(int, struct rusage64 *);
  969. #line 103 "/usr/include/sys/signal.h"
  970. extern void (*signal(int, void (*)(int)))(int);
  971. #line 111
  972. extern int raise(int);
  973. #line 114
  974. typedef volatile int sig_atomic_t;
  975. #line 248
  976. union sigval
  977. {
  978. #line 253
  979. void * sival_ptr;
  980.  
  981. int sival_int;
  982. };
  983. #line 269
  984. typedef struct {
  985. int si_signo;
  986. int si_errno;
  987. int si_code;
  988. #line 283
  989. pid_t si_pid;
  990. #line 286
  991. uid_t si_uid;
  992. #line 310
  993. void *si_addr;
  994. int si_status;
  995. #line 314
  996. long si_band;
  997. #line 317
  998. union sigval si_value;
  999. #line 322
  1000. int __si_flags;
  1001. #line 326
  1002. int __pad[6];
  1003. #line 330
  1004. } siginfo_t;
  1005. #line 338
  1006. struct sigaction {
  1007. union {
  1008. #line 346
  1009. void (*__su_handler)(int);
  1010. #line 350
  1011. void (*__su_sigaction) (int, siginfo_t *, void *);
  1012. #line 354
  1013. } sa_union;
  1014. sigset_t sa_mask;
  1015. int sa_flags;
  1016. };
  1017. #line 49 "/usr/include/sys/mstsave.h"
  1018. struct
  1019.  
  1020. mstsave
  1021. #line 55
  1022. {
  1023.  
  1024. struct mstsave *prev;
  1025. label_t *kjmpbuf;
  1026. char *stackfix;
  1027. char intpri;
  1028. char backt;
  1029. char rsvd[2];
  1030. pid_t curid;
  1031.  
  1032. int excp_type;
  1033. ulong_t iar;
  1034. ulong_t msr;
  1035. ulong_t cr;
  1036. ulong_t lr;
  1037. ulong_t ctr;
  1038. ulong_t xer;
  1039. ulong_t mq;
  1040. ulong_t tid;
  1041. ulong_t fpscr;
  1042. char fpeu;
  1043. char fpinfo;
  1044. uchar fpscr24_31;
  1045. char pad[1];
  1046. ulong_t except[5];
  1047. char pad1[4];
  1048. ulong_t o_iar;
  1049. ulong_t o_toc;
  1050. ulong_t o_arg1;
  1051. ulong_t excbranch;
  1052. #line 88
  1053. ulong_t fpscrx;
  1054. ulong_t o_vaddr;
  1055. ulong_t cachealign[7];
  1056. adspace_t as;
  1057. ulong_t gpr[32];
  1058. double fpr[32];
  1059. #line 133
  1060. };
  1061. #line 140
  1062. struct mstsave32
  1063. {
  1064. __ptr32 prev;
  1065. __ptr32 kjmpbuf;
  1066. __cptr32 stackfix;
  1067. char intpri;
  1068. char backt;
  1069. char rsvd[2];
  1070. int curid;
  1071.  
  1072. int excp_type;
  1073. uint_t iar;
  1074. uint_t msr;
  1075. uint_t cr;
  1076. uint_t lr;
  1077. uint_t ctr;
  1078. uint_t xer;
  1079. uint_t mq;
  1080. uint_t tid;
  1081. uint_t fpscr;
  1082. char fpeu;
  1083. char fpinfo;
  1084. uchar_t fpscr24_31;
  1085. char pad[1];
  1086. uint_t except[5];
  1087. char pad1[4];
  1088. uint_t o_iar;
  1089. uint_t o_toc;
  1090. uint_t o_arg1;
  1091. uint_t excbranch;
  1092. #line 173
  1093. uint_t fpscrx;
  1094. uint_t o_vaddr;
  1095. uint_t cachealign[7];
  1096. adspace32_t as;
  1097. uint_t gpr[32];
  1098. double fpr[32];
  1099. };
  1100. #line 236
  1101. extern char __pmap_stack[];
  1102. #line 66 "/usr/include/sys/context.h"
  1103. typedef struct {
  1104. #line 71
  1105. void *ss_sp;
  1106. size_t ss_size;
  1107. #line 75
  1108. int ss_flags;
  1109.  
  1110. int __pad[4];
  1111.  
  1112. } stack_t;
  1113. #line 87
  1114. typedef struct {
  1115. unsigned long long ss_sp;
  1116. unsigned long long ss_size;
  1117. int ss_flags;
  1118. int __pad[4];
  1119. } stack64_t;
  1120. #line 98
  1121. typedef struct {
  1122. __ptr32 ss_sp;
  1123. uint_t ss_size;
  1124. int ss_flags;
  1125.  
  1126. int __pad[4];
  1127.  
  1128. } stack32_t;
  1129. #line 135
  1130. struct __context64 {
  1131. unsigned long long gpr[32];
  1132. unsigned long long msr;
  1133. unsigned long long iar;
  1134. unsigned long long lr;
  1135. unsigned long long ctr;
  1136. unsigned int cr;
  1137. unsigned int xer;
  1138. unsigned int fpscr;
  1139. unsigned int fpscrx;
  1140. unsigned long long except[1];
  1141. double fpr[32];
  1142. char fpeu;
  1143. char fpinfo;
  1144. char fpscr24_31;
  1145. char pad[1];
  1146. int excp_type;
  1147. };
  1148. #line 188
  1149. struct sigcontext64 {
  1150. int sc_onstack;
  1151. sigset64_t sc_mask;
  1152. int sc_uerror;
  1153. struct __context64 sc_context;
  1154. };
  1155. #line 268
  1156. typedef struct {
  1157. unsigned int __v[4];
  1158. } __vmxreg_t;
  1159.  
  1160. typedef struct __vmx_context {
  1161. __vmxreg_t __vr[32];
  1162. unsigned int __pad1[3];
  1163. unsigned int __vscr;
  1164. unsigned int __vrsave;
  1165. unsigned int __pad2[3];
  1166. } __vmx_context_t;
  1167. #line 319
  1168. typedef struct __vsx_context {
  1169.  
  1170. unsigned long long __vsr_dw1[32];
  1171. #line 329
  1172. } __vsx_context_t;
  1173. #line 361
  1174. typedef struct __extctx {
  1175. unsigned int __flags;
  1176. unsigned int __rsvd1[3];
  1177. __vmx_context_t __vmx;
  1178.  
  1179. unsigned int __ukeys[2];
  1180. #line 369
  1181. __vsx_context_t __vsx;
  1182. char __reserved[(4096 - sizeof(__vmx_context_t) - (7 * sizeof(int)) - (sizeof(__vsx_context_t)))];
  1183. #line 373
  1184. int __extctx_magic;
  1185. #line 377
  1186. } __extctx_t;
  1187. #line 384
  1188. struct __jmpbuf {
  1189.  
  1190. struct mstsave jmp_context;
  1191. #line 390
  1192. };
  1193. #line 417
  1194. struct __jmpbuf32 {
  1195. struct mstsave32 jmp_context;
  1196. };
  1197. #line 427
  1198. struct __sigcontext {
  1199.  
  1200. int sc_onstack;
  1201. #line 433
  1202. sigset_t sc_mask;
  1203.  
  1204. int sc_uerror;
  1205. struct __jmpbuf sc_jmpbuf;
  1206. #line 447
  1207. };
  1208. #line 456
  1209. typedef struct __jmpbuf mcontext_t;
  1210.  
  1211. typedef struct ucontext_t {
  1212. int __sc_onstack;
  1213. #line 464
  1214. sigset_t uc_sigmask;
  1215. #line 467
  1216. int __sc_uerror;
  1217. mcontext_t uc_mcontext;
  1218. #line 472
  1219. struct ucontext_t *uc_link;
  1220. #line 475
  1221. stack_t uc_stack;
  1222. #line 479
  1223. __extctx_t *__extctx;
  1224. #line 482
  1225. int __extctx_magic;
  1226. #line 488
  1227. int __pad[2];
  1228. #line 496
  1229. } ucontext_t;
  1230. #line 500
  1231. typedef struct __jmpbuf32 mcontext32_t;
  1232.  
  1233. typedef struct ucontext32_t {
  1234. int __sc_onstack;
  1235. sigset32_t uc_sigmask;
  1236.  
  1237. int __sc_uerror;
  1238. mcontext32_t uc_mcontext;
  1239. __ptr32 uc_link;
  1240.  
  1241. stack32_t uc_stack;
  1242. __ptr32 __extctx;
  1243.  
  1244. int __extctx_magic;
  1245. #line 516
  1246. int __pad[2];
  1247. #line 523
  1248. } ucontext32_t;
  1249. #line 384 "/usr/include/sys/signal.h"
  1250. struct sigstack {
  1251. void *ss_sp;
  1252. int ss_onstack;
  1253. };
  1254. #line 478
  1255. extern int sigmask(int);
  1256. #line 664
  1257. struct sigevent {
  1258. union sigval sigev_value;
  1259. int sigev_signo;
  1260. int sigev_notify;
  1261. #line 672
  1262. void (*sigev_notify_function)(union sigval);
  1263. pthread_attr_t * sigev_notify_attributes;
  1264.  
  1265. };
  1266. #line 697
  1267. struct osigevent {
  1268. #line 701
  1269. void *sevt_value;
  1270.  
  1271. signal_t sevt_signo;
  1272. };
  1273. #line 1006
  1274. struct sigvec {
  1275. #line 1018
  1276. union {
  1277. #line 1025
  1278. void (*sv_handler)(int);
  1279. #line 1029
  1280. void (*sv_sigaction) (int, siginfo_t *, void *);
  1281. } sv_union;
  1282. int sv_mask;
  1283. int sv_flags;
  1284.  
  1285. };
  1286. #line 1093
  1287. extern int sigblock(int);
  1288. extern int siglocalmask(int, const sigset_t *);
  1289. extern int sigvec(int, struct sigvec *, struct sigvec *);
  1290. #line 1103
  1291. extern int siggetmask(void);
  1292. extern int sigsetmask(int);
  1293. #line 1148
  1294. extern int kill(pid_t, int);
  1295. extern int sigprocmask(int, const sigset_t *, sigset_t *);
  1296. extern int sigsuspend(const sigset_t *);
  1297. #line 1156
  1298. extern int sigwait(const sigset_t *, int *);
  1299. #line 1160
  1300. extern int sigaction(int, const struct sigaction *, struct sigaction *);
  1301.  
  1302. extern int sigemptyset(sigset_t *);
  1303. extern int sigfillset(sigset_t *);
  1304. extern int sigaddset(sigset_t *, int);
  1305. extern int sigdelset(sigset_t *, int);
  1306. extern int sigismember(const sigset_t *, int);
  1307. extern int sigpending(sigset_t *);
  1308. #line 1171
  1309. extern void (*bsd_signal (int, void (*)(int)))(int);
  1310.  
  1311. extern int killpg(pid_t, int);
  1312. extern int sighold(int);
  1313. extern int sigignore(int);
  1314. extern int siginterrupt(int, int);
  1315. extern int sigpause(int);
  1316. extern int sigrelse(int);
  1317. extern void (*sigset(int, void(*)(int)))(int);
  1318.  
  1319. extern int sigaltstack(const stack_t *, stack_t *);
  1320.  
  1321. extern int sigstack(struct sigstack *, struct sigstack *);
  1322. #line 1188
  1323. extern int pthread_kill(pthread_t, int);
  1324. extern int pthread_sigmask(int, const sigset_t *, sigset_t *);
  1325. extern int sigqueue(pid_t, int, const union sigval);
  1326. struct timespec;
  1327. extern int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *);
  1328. extern int sigwaitinfo(const sigset_t *, siginfo_t *);
  1329. #line 144 "/usr/include/sys/wait.h"
  1330. typedef enum {P_ALL, P_PID, P_PGID} idtype_t;
  1331. #line 162
  1332. extern pid_t wait(int *);
  1333.  
  1334. extern pid_t waitpid(pid_t, int *, int);
  1335. #line 178
  1336. extern int waitid(idtype_t, id_t, siginfo_t *, int);
  1337. #line 183
  1338. extern pid_t wait3(int *, int, struct rusage *);
  1339. #line 188
  1340. extern pid_t kwaitpid(int *, pid_t, int, struct rusage *, siginfo_t *);
  1341.  
  1342. extern pid_t kwaitpid64(int *, pid_t, int, struct rusage64 *, siginfo_t *);
  1343. #line 194
  1344. extern pid_t wait364(int *, int, struct rusage64 *);
  1345. #line 208
  1346. extern pid_t wait4(pid_t, int *, int, struct rusage *);
  1347. #line 414 "/usr/include/stdlib.h"
  1348. extern double drand48(void);
  1349. extern double erand48(unsigned short[]);
  1350. extern long jrand48(unsigned short[]);
  1351. extern void lcong48(unsigned short int *);
  1352. extern long lrand48(void);
  1353. extern long mrand48(void);
  1354. extern long nrand48(unsigned short[]);
  1355. extern unsigned short *seed48(unsigned short[]);
  1356. extern void setkey(const char *);
  1357. extern void srand48(long);
  1358.  
  1359. extern int putenv(char *);
  1360. #line 443
  1361. extern int rand_r(unsigned int *);
  1362. #line 467
  1363. extern long a64l(const char *);
  1364. extern char *ecvt(double, int, int *, int *);
  1365. extern char *fcvt(double, int, int *, int *);
  1366. extern char *gcvt(double, int, char *);
  1367. extern int getsubopt(char **, char *const *, char **);
  1368. extern int grantpt(int);
  1369. extern char *initstate(unsigned, char *, size_t);
  1370. extern char *l64a(long);
  1371. extern char *mktemp(char *);
  1372. extern int mkstemp(char *);
  1373.  
  1374. extern char *mkdtemp(char *);
  1375. #line 484
  1376. extern int mkstemp64(char *);
  1377.  
  1378. extern char *ptsname(int);
  1379. extern long random(void);
  1380. extern char *realpath(const char *, char *);
  1381. extern char *setstate(const char *);
  1382. extern void srandom(unsigned);
  1383. extern int unlockpt(int);
  1384. #line 507
  1385. extern int posix_openpt (int);
  1386. extern int setenv (const char *, const char *, int);
  1387. extern int unsetenv (const char *);
  1388. #line 41 "/usr/include/sys/localedef.h"
  1389. struct __LC_locale;
  1390. struct _LC_locale_objhdl;
  1391. #line 52 "/usr/include/sys/lc_core.h"
  1392. typedef struct {
  1393.  
  1394. unsigned short
  1395. __type_id,
  1396. __magic;
  1397. unsigned long
  1398. __version;
  1399.  
  1400. size_t __size;
  1401.  
  1402. } _LC_object_t;
  1403. #line 102
  1404. typedef struct {
  1405.  
  1406. _LC_object_t __hdr;
  1407. #line 108
  1408. int __catgets;
  1409. int __catclose;
  1410. #line 112
  1411. int __compress;
  1412. int __decompress;
  1413. int __start_compress;
  1414. int __end_compress;
  1415. #line 118
  1416. int __init;
  1417. void *__data;
  1418. } _LC_core_car_t;
  1419.  
  1420. typedef struct {
  1421.  
  1422. _LC_object_t __hdr;
  1423. #line 127
  1424. int __nl_langinfo;
  1425. #line 130
  1426. int __mbtowc;
  1427. int __mbstowcs;
  1428. int __wctomb;
  1429. int __wcstombs;
  1430. #line 136
  1431. int __mblen;
  1432. #line 139
  1433. int __wcswidth;
  1434. int __wcwidth;
  1435. #line 143
  1436. int __mbtopc;
  1437. int __mbstopcs;
  1438. int __pctomb;
  1439. int __pcstombs;
  1440. #line 149
  1441. int __csid;
  1442. int __wcsid;
  1443. #line 153
  1444. int __init;
  1445. void *__data;
  1446. } _LC_core_charmap_t;
  1447. #line 158
  1448. typedef struct {
  1449.  
  1450. _LC_object_t __hdr;
  1451. #line 163
  1452. int __towupper;
  1453. int __towlower;
  1454. #line 167
  1455. int __get_wctype;
  1456. int __is_wctype;
  1457. #line 171
  1458. int __init;
  1459. void *__data;
  1460. } _LC_core_ctype_t;
  1461.  
  1462. typedef struct {
  1463.  
  1464. _LC_object_t __hdr;
  1465. #line 180
  1466. int __strcoll;
  1467. int __strxfrm;
  1468. #line 184
  1469. int __wcscoll;
  1470. int __wcsxfrm;
  1471. #line 188
  1472. int __fnmatch;
  1473. #line 191
  1474. int __regcomp;
  1475. int __regerror;
  1476. int __regexec;
  1477. int __regfree;
  1478. #line 197
  1479. int __init;
  1480. void *__data;
  1481. } _LC_core_collate_t;
  1482. #line 202
  1483. typedef struct {
  1484.  
  1485. _LC_object_t __hdr;
  1486. #line 207
  1487. int __nl_langinfo;
  1488. #line 210
  1489. int __strftime;
  1490. int __strptime;
  1491. #line 214
  1492. int __wcsftime;
  1493. #line 217
  1494. int __init;
  1495. void *__data;
  1496. } _LC_core_time_t;
  1497. #line 222
  1498. typedef struct {
  1499.  
  1500. _LC_object_t __hdr;
  1501. #line 227
  1502. int __nl_langinfo;
  1503. #line 230
  1504. int __strfmon;
  1505. #line 233
  1506. int __init;
  1507. void *__data;
  1508. } _LC_core_monetary_t;
  1509. #line 238
  1510. typedef struct {
  1511.  
  1512. _LC_object_t __hdr;
  1513. #line 243
  1514. int __nl_langinfo;
  1515. #line 246
  1516. int __init;
  1517. void *__data;
  1518. } _LC_core_numeric_t;
  1519. #line 251
  1520. typedef struct {
  1521.  
  1522. _LC_object_t __hdr;
  1523. #line 256
  1524. int __nl_langinfo;
  1525. #line 259
  1526. int __rpmatch;
  1527. #line 262
  1528. int __init;
  1529. void *__data;
  1530. } _LC_core_resp_t;
  1531.  
  1532. typedef struct {
  1533.  
  1534. _LC_object_t __hdr;
  1535. #line 271
  1536. int __nl_langinfo;
  1537. int __localeconv;
  1538. #line 275
  1539. int __init;
  1540. void *__data;
  1541. } _LC_core_locale_t;
  1542. #line 54 "/usr/include/locale.h"
  1543. struct lconv {
  1544. char *decimal_point;
  1545. char *thousands_sep;
  1546. char *grouping;
  1547. char *int_curr_symbol;
  1548. char *currency_symbol;
  1549. char *mon_decimal_point;
  1550. char *mon_thousands_sep;
  1551. char *mon_grouping;
  1552. char *positive_sign;
  1553. char *negative_sign;
  1554. char int_frac_digits;
  1555. char frac_digits;
  1556. char p_cs_precedes;
  1557. char p_sep_by_space;
  1558. char n_cs_precedes;
  1559. char n_sep_by_space;
  1560. char p_sign_posn;
  1561. char n_sign_posn;
  1562. #line 75
  1563. char *left_parenthesis;
  1564. char *right_parenthesis;
  1565. #line 83
  1566. char int_p_cs_precedes;
  1567. char int_p_sep_by_space;
  1568. char int_n_cs_precedes;
  1569. char int_n_sep_by_space;
  1570. char int_p_sign_posn;
  1571. char int_n_sign_posn;
  1572. #line 97
  1573. } ;
  1574. #line 120
  1575. typedef void* locale_t;
  1576. #line 136
  1577. struct lconv *localeconv(void);
  1578. char *setlocale(int, const char *);
  1579.  
  1580. locale_t newlocale(int, const char *, locale_t);
  1581. locale_t duplocale(locale_t);
  1582. locale_t uselocale(locale_t);
  1583. void freelocale(locale_t);
  1584. #line 150
  1585. typedef struct lconv lconv;
  1586. #line 39 "/usr/include/sys/localedef31.h"
  1587. typedef struct coldesc {
  1588. short cd_stroff;
  1589. short cd_repoff;
  1590. short cd_cval;
  1591. short cd_cuniq;
  1592. } coldesc_t;
  1593. #line 49
  1594. typedef struct collation_table {
  1595. short lc_version;
  1596. short lc_length;
  1597. char *lc_locale_name;
  1598. int len_collate;
  1599. short *lc_collate;
  1600. int len_coluniq;
  1601. short *lc_coluniq;
  1602. int len_coldesc;
  1603. coldesc_t *lc_coldesc;
  1604. int len_strings;
  1605. wchar_t *lc_strings;
  1606. int high_cvalue;
  1607. } col_t;
  1608. #line 70
  1609. typedef struct char_classification_table {
  1610. short lc_version;
  1611. short lc_length;
  1612. short lc_code_type;
  1613. short mb_cur_max;
  1614. short mb_cur_min;
  1615. short lc_dsp_width;
  1616. char *lc_locale_name;
  1617. int len_caseconv;
  1618. wchar_t *lc_caseconv;
  1619. int len_ctype;
  1620. unsigned short *lc_ctype;
  1621. } ctype_t;
  1622. #line 88
  1623. typedef struct lc_monetary_table {
  1624. short lc_version;
  1625. short lc_length;
  1626. char *lc_locale_name;
  1627. char *int_curr_symbol;
  1628. char *currency_symbol;
  1629. char *mon_decimal_point;
  1630. char *mon_thousands_sep;
  1631. char *mon_grouping;
  1632. char *positive_sign;
  1633. char *negative_sign;
  1634. char int_frac_digits;
  1635. char frac_digits;
  1636. char p_cs_precedes;
  1637. char p_sep_by_space;
  1638. char n_cs_precedes;
  1639. char n_sep_by_space;
  1640. char p_sign_posn;
  1641. char n_sign_posn;
  1642. } mon_t;
  1643. #line 113
  1644. typedef struct numeric_table {
  1645. short lc_version;
  1646. short lc_length;
  1647. char *lc_locale_name;
  1648. char *decimal_point;
  1649. char *thousands_sep;
  1650. char *grouping;
  1651. } num_t;
  1652. #line 126
  1653. typedef struct lc_messages_table {
  1654. short lc_version;
  1655. short lc_length;
  1656. char *lc_locale_name;
  1657. char *messages;
  1658. char *yes_string;
  1659. char *no_string;
  1660. } msg_t;
  1661. #line 139
  1662. typedef struct lc_time_table {
  1663. short lc_version;
  1664. short lc_length;
  1665. char *lc_locale_name;
  1666. char *t_fmt;
  1667. char *d_fmt;
  1668. char *nlldate;
  1669. char *d_t_fmt;
  1670. char *abday;
  1671. char *day;
  1672. char *abmon;
  1673. char *mon;
  1674. #line 155
  1675. char *misc;
  1676. char *tstrs;
  1677. char *tunits;
  1678. #line 161
  1679. char *year;
  1680. char *am_pm;
  1681. } tim_t;
  1682. #line 170
  1683. typedef struct wchar_mapping_table {
  1684. short lc_version;
  1685. short lc_length;
  1686. char *lc_identifier;
  1687. } map_t;
  1688. #line 183
  1689. typedef struct localeinfo_table {
  1690. char lc_mag0, lc_mag1;
  1691. short lc_version;
  1692. short lc_code_type;
  1693. short lc_length;
  1694. col_t *lc_coltbl;
  1695. ctype_t *lc_chrtbl;
  1696. mon_t *lc_montbl;
  1697. num_t *lc_numtbl;
  1698. tim_t *lc_timtbl;
  1699. msg_t *lc_msgtbl;
  1700. map_t *lc_maptbl;
  1701. } loc_t;
  1702. #line 68 "/usr/include/sys/localedef.h"
  1703. typedef struct {
  1704.  
  1705. _LC_core_charmap_t core;
  1706.  
  1707. char *cm_csname;
  1708.  
  1709. size_t cm_mb_cur_max;
  1710. size_t cm_mb_cur_min;
  1711.  
  1712. unsigned char
  1713. cm_max_disp_width;
  1714. #line 81
  1715. unsigned
  1716. char *cm_cstab;
  1717.  
  1718. struct __LC_locale
  1719. *loc_rec;
  1720.  
  1721. void *__meth_ptr;
  1722. void *__data_ptr;
  1723.  
  1724. } _LC_charmap_t;
  1725.  
  1726. typedef struct _LC_charmap_objhdl _LC_charmap_objhdl_t;
  1727.  
  1728. struct _LC_charmap_objhdl {
  1729. _LC_charmap_t *obj;
  1730. #line 98
  1731. void *(**meth)();
  1732. #line 101
  1733. struct _LC_locale_objhdl *loc_hdl;
  1734. #line 104
  1735. };
  1736. #line 112
  1737. typedef struct {
  1738.  
  1739. _LC_core_monetary_t core;
  1740.  
  1741. char *int_curr_symbol;
  1742. char *currency_symbol;
  1743. char *mon_decimal_point;
  1744. char *mon_thousands_sep;
  1745. char *mon_grouping;
  1746. char *positive_sign;
  1747. char *negative_sign;
  1748. signed char int_frac_digits;
  1749. signed char frac_digits;
  1750. signed char p_cs_precedes;
  1751. signed char p_sep_by_space;
  1752. signed char n_cs_precedes;
  1753. signed char n_sep_by_space;
  1754. signed char p_sign_posn;
  1755. signed char n_sign_posn;
  1756. char *debit_sign;
  1757. char *credit_sign;
  1758. char *left_parenthesis;
  1759. char *right_parenthesis;
  1760.  
  1761. struct __LC_locale
  1762. *loc_rec;
  1763.  
  1764. void *__meth_ptr;
  1765. void *__data_ptr;
  1766. #line 143
  1767. signed char int_p_cs_precedes;
  1768. signed char int_p_sep_by_space;
  1769. signed char int_n_cs_precedes;
  1770. signed char int_n_sep_by_space;
  1771. signed char int_p_sign_posn;
  1772. signed char int_n_sign_posn;
  1773. #line 158
  1774. } _LC_monetary_t;
  1775.  
  1776. typedef struct _LC_monetary_objhdl _LC_monetary_objhdl_t;
  1777. struct _LC_monetary_objhdl {
  1778. _LC_monetary_t *obj;
  1779. #line 165
  1780. void *(**meth)();
  1781. #line 168
  1782. struct _LC_locale_objhdl *loc_hdl;
  1783. #line 171
  1784. };
  1785. #line 178
  1786. typedef struct {
  1787.  
  1788. _LC_core_numeric_t core;
  1789.  
  1790. char *decimal_point;
  1791. char *thousands_sep;
  1792. char *grouping;
  1793.  
  1794. struct __LC_locale
  1795. *loc_rec;
  1796.  
  1797. void *__meth_ptr;
  1798. void *__data_ptr;
  1799.  
  1800. } _LC_numeric_t;
  1801.  
  1802. typedef struct _LC_numeric_objhdl _LC_numeric_objhdl_t;
  1803. struct _LC_numeric_objhdl {
  1804. _LC_numeric_t *obj;
  1805. #line 199
  1806. void *(**meth)();
  1807. #line 202
  1808. struct _LC_locale_objhdl *loc_hdl;
  1809. #line 205
  1810. };
  1811. #line 213
  1812. typedef struct {
  1813.  
  1814. _LC_core_resp_t core;
  1815.  
  1816. char *yesexpr;
  1817. char *noexpr;
  1818. char *yesstr;
  1819. char *nostr;
  1820.  
  1821. struct __LC_locale
  1822. *loc_rec;
  1823.  
  1824. void *__meth_ptr;
  1825. void *__data_ptr;
  1826.  
  1827. } _LC_resp_t;
  1828.  
  1829. typedef struct _LC_resp_objhdl _LC_resp_objhdl_t;
  1830. struct _LC_resp_objhdl {
  1831. _LC_resp_t *obj;
  1832. #line 235
  1833. void *(**meth)();
  1834. #line 238
  1835. struct _LC_locale_objhdl *loc_hdl;
  1836. #line 241
  1837. };
  1838. #line 249
  1839. typedef struct {
  1840.  
  1841. _LC_core_time_t core;
  1842.  
  1843. char *d_fmt;
  1844. char *t_fmt;
  1845. char *d_t_fmt;
  1846. char *t_fmt_ampm;
  1847. char *abday[7];
  1848. char *day[7];
  1849. char *abmon[12];
  1850. char *mon[12];
  1851. char *am_pm[2];
  1852. char *era;
  1853. char *era_year;
  1854. char *era_d_fmt;
  1855. char *alt_digits;
  1856. char *era_d_t_fmt;
  1857. char *era_t_fmt;
  1858.  
  1859. struct __LC_locale
  1860. *loc_rec;
  1861.  
  1862. void *__meth_ptr;
  1863. void *__data_ptr;
  1864.  
  1865. } _LC_time_t;
  1866.  
  1867. typedef struct _LC_time_objhdl _LC_time_objhdl_t;
  1868. struct _LC_time_objhdl {
  1869. _LC_time_t *obj;
  1870. #line 282
  1871. void *(**meth)();
  1872. #line 285
  1873. struct _LC_locale_objhdl *loc_hdl;
  1874. #line 288
  1875. };
  1876. #line 295
  1877. typedef struct {
  1878. unsigned
  1879. short n[4+1];
  1880. } _LC_weight_t;
  1881. #line 305
  1882. typedef struct {
  1883.  
  1884. char *ce_sym;
  1885. _LC_weight_t ce_wgt;
  1886.  
  1887. } _LC_collel_t;
  1888. #line 317
  1889. typedef struct {
  1890. _LC_weight_t ct_wgt;
  1891. #line 321
  1892. _LC_collel_t *ct_collel;
  1893.  
  1894. } _LC_coltbl_t;
  1895. #line 336
  1896. typedef struct {
  1897. char *tgt_wgt_str[4+1];
  1898. #line 340
  1899. } _LC_subs_t;
  1900. #line 348
  1901. typedef struct {
  1902.  
  1903. _LC_core_collate_t core;
  1904.  
  1905. unsigned
  1906. char co_nord;
  1907.  
  1908. _LC_weight_t co_sort;
  1909. #line 358
  1910. wchar_t co_wc_min;
  1911. wchar_t co_wc_max;
  1912.  
  1913. wchar_t co_col_min;
  1914. wchar_t co_col_max;
  1915.  
  1916. _LC_coltbl_t *co_coltbl;
  1917.  
  1918. unsigned
  1919. int co_nsubs;
  1920. _LC_subs_t *co_subs;
  1921.  
  1922. unsigned
  1923. short co_special;
  1924. #line 376
  1925. struct __LC_locale
  1926. *loc_rec;
  1927.  
  1928. void *__meth_ptr;
  1929. void *__data_ptr;
  1930.  
  1931. } _LC_collate_t;
  1932.  
  1933. typedef struct _LC_collate_objhdl _LC_collate_objhdl_t;
  1934. struct _LC_collate_objhdl {
  1935. _LC_collate_t *obj;
  1936. #line 389
  1937. void *(**meth)();
  1938. #line 392
  1939. struct _LC_locale_objhdl *loc_hdl;
  1940. #line 395
  1941. };
  1942. #line 409
  1943. typedef struct {
  1944.  
  1945. char *name;
  1946. unsigned
  1947. int mask;
  1948.  
  1949. } _LC_classnm_t;
  1950. #line 423
  1951. typedef struct {
  1952.  
  1953. _LC_core_ctype_t core;
  1954. #line 428
  1955. wchar_t min_wc;
  1956. wchar_t max_wc;
  1957. #line 432
  1958. wchar_t *upper;
  1959. wchar_t *lower;
  1960. #line 436
  1961. unsigned
  1962. int *mask;
  1963. unsigned
  1964. int *qmask;
  1965. unsigned
  1966. char *qidx;
  1967. #line 444
  1968. unsigned
  1969. char nclasses;
  1970. _LC_classnm_t *classnms;
  1971.  
  1972. struct __LC_locale
  1973. *loc_rec;
  1974.  
  1975. void *__meth_ptr;
  1976. void *__data_ptr;
  1977.  
  1978. } _LC_ctype_t;
  1979.  
  1980. typedef struct _LC_ctype_objhdl _LC_ctype_objhdl_t;
  1981. struct _LC_ctype_objhdl {
  1982. _LC_ctype_t *obj;
  1983. #line 461
  1984. void *(**meth)();
  1985. #line 464
  1986. struct _LC_locale_objhdl *loc_hdl;
  1987. #line 467
  1988. };
  1989. #line 482
  1990. typedef struct __LC_locale {
  1991.  
  1992. _LC_core_locale_t core;
  1993.  
  1994. char *nl_info[63];
  1995. struct lconv *nl_lconv;
  1996.  
  1997. _LC_charmap_objhdl_t lc_charmap;
  1998. _LC_collate_objhdl_t lc_collate;
  1999. _LC_ctype_objhdl_t lc_ctype;
  2000. _LC_monetary_objhdl_t lc_monetary;
  2001. _LC_numeric_objhdl_t lc_numeric;
  2002. _LC_resp_objhdl_t lc_resp;
  2003. _LC_time_objhdl_t lc_time;
  2004.  
  2005. struct __LC_locale *loc_rec;
  2006. #line 500
  2007. void *__meth_ptr;
  2008. void *__data_ptr;
  2009.  
  2010. char *__nl_yesstr;
  2011. char *__nl_nostr;
  2012. char *__nl_crncystr;
  2013.  
  2014. } _LC_locale_t;
  2015.  
  2016. typedef struct _LC_locale_objhdl _LC_locale_objhdl_t;
  2017. struct _LC_locale_objhdl {
  2018. _LC_locale_t *obj;
  2019. #line 514
  2020. void *(**meth)();
  2021. #line 517
  2022. struct _LC_locale_objhdl *loc_hdl;
  2023. #line 520
  2024. };
  2025. #line 529
  2026. typedef struct _LC_object_handle _LC_object_handle_t;
  2027. struct _LC_object_handle {
  2028. union {
  2029. _LC_object_t lc_object;
  2030. _LC_locale_objhdl_t lc_locale;
  2031. _LC_charmap_objhdl_t lc_charmap;
  2032. _LC_collate_objhdl_t lc_collate;
  2033. _LC_ctype_objhdl_t lc_ctype;
  2034. _LC_monetary_objhdl_t lc_monetary;
  2035. _LC_numeric_objhdl_t lc_numeric;
  2036. _LC_resp_objhdl_t lc_resp;
  2037. _LC_time_objhdl_t lc_time;
  2038. } obj;
  2039. #line 544
  2040. void *(**meth)();
  2041. #line 547
  2042. struct _LC_locale_objhdl *loc_hdl;
  2043. #line 550
  2044. };
  2045. #line 553
  2046. typedef struct {
  2047. _LC_object_t hdr;
  2048. _LC_locale_objhdl_t handle;
  2049. } _LC_load_object_t;
  2050. #line 563
  2051. typedef struct _LC_thread_locale {
  2052. _LC_charmap_objhdl_t *__lc_charmap_ptr;
  2053. _LC_collate_objhdl_t *__lc_collate_ptr;
  2054. _LC_ctype_objhdl_t *__lc_ctype_ptr;
  2055. _LC_monetary_objhdl_t *__lc_monetary_ptr;
  2056. _LC_numeric_objhdl_t *__lc_numeric_ptr;
  2057. _LC_resp_objhdl_t *__lc_resp_ptr;
  2058. _LC_time_objhdl_t *__lc_time_ptr;
  2059. _LC_locale_objhdl_t *__lc_locale_ptr;
  2060. int __lc_isiso1;
  2061.  
  2062. } _LC_thread_locale_t;
  2063.  
  2064. typedef _LC_thread_locale_t* __locale_t;
  2065. extern locale_t cur_locale;
  2066. #line 583
  2067. extern _LC_charmap_objhdl_t *__lc_charmap_ptr;
  2068. extern _LC_collate_objhdl_t *__lc_collate_ptr;
  2069. extern _LC_ctype_objhdl_t *__lc_ctype_ptr;
  2070. extern _LC_monetary_objhdl_t *__lc_monetary_ptr;
  2071. extern _LC_numeric_objhdl_t *__lc_numeric_ptr;
  2072. extern _LC_resp_objhdl_t *__lc_resp_ptr;
  2073. extern _LC_time_objhdl_t *__lc_time_ptr;
  2074. extern _LC_locale_objhdl_t *__lc_locale_ptr;
  2075. #line 593
  2076. extern _LC_charmap_objhdl_t __lc_charmap;
  2077. extern _LC_collate_objhdl_t __lc_collate;
  2078. extern _LC_ctype_objhdl_t __lc_ctype;
  2079. extern _LC_monetary_objhdl_t __lc_monetary;
  2080. extern _LC_numeric_objhdl_t __lc_numeric;
  2081. extern _LC_resp_objhdl_t __lc_resp;
  2082. extern _LC_time_objhdl_t __lc_time;
  2083. extern _LC_locale_objhdl_t __lc_locale;
  2084.  
  2085. extern _LC_charmap_objhdl_t *__get_lc_charmap_ptr();
  2086. extern _LC_collate_objhdl_t *__get_lc_collate_ptr();
  2087. extern _LC_ctype_objhdl_t *__get_lc_ctype_ptr();
  2088. extern _LC_monetary_objhdl_t *__get_lc_monetary_ptr();
  2089. extern _LC_numeric_objhdl_t *__get_lc_numeric_ptr();
  2090. extern _LC_resp_objhdl_t *__get_lc_resp_ptr();
  2091. extern _LC_time_objhdl_t *__get_lc_time_ptr();
  2092. extern _LC_locale_objhdl_t *__get_lc_locale_ptr();
  2093. extern int __get_lc_isiso1();
  2094.  
  2095. extern int __n_pthreads;
  2096. #line 603 "/usr/include/stdlib.h"
  2097. extern char *optarg;
  2098. extern int optind;
  2099. extern int opterr;
  2100. #line 620
  2101. extern float atoff(char *);
  2102. extern void imul_dbl(long, long, long *);
  2103. extern void umul_dbl(unsigned long, unsigned long, unsigned long *);
  2104. extern int on_exit(void (*)(int, void *), void *);
  2105. extern int unatexit(void (*)(void));
  2106. #line 649
  2107. extern double wcstod(const wchar_t *, wchar_t **);
  2108. extern long int wcstol(const wchar_t *, wchar_t **, int);
  2109. extern unsigned long int wcstoul(const wchar_t *, wchar_t **, int);
  2110.  
  2111. extern int rpmatch(const char *);
  2112. extern int clearenv(void);
  2113. extern int getopt(int, char* const*, const char*);
  2114. extern char *getpass(const char *);
  2115.  
  2116. extern int ttyslot(void);
  2117. extern void *valloc(size_t);
  2118. #line 698
  2119. extern void *vec_malloc(size_t);
  2120. extern void *vec_calloc(size_t, size_t);
  2121. #line 133 "/usr/include/string.h"
  2122. extern void *memchr(const void *, int, size_t);
  2123.  
  2124. extern void *memcpy(void * , const void * , size_t);
  2125. extern void *memset(void *, int, size_t);
  2126. extern size_t strcspn(const char *, const char *);
  2127. extern size_t strlen(const char *);
  2128. extern size_t strspn(const char *, const char *);
  2129. #line 185
  2130. extern char *strchr(const char *, int);
  2131. extern char *strpbrk(const char *, const char *);
  2132. extern char *strrchr(const char *, int);
  2133. extern char *strstr(const char *, const char *);
  2134. #line 191
  2135. extern void *memmove(void *, const void *, size_t);
  2136. extern char *strcpy(char * , const char * );
  2137. extern char *strncpy(char * , const char * , size_t);
  2138. extern char *strcat(char * , const char * );
  2139. extern char *strncat(char * , const char * , size_t);
  2140. extern int memcmp(const void *, const void *,size_t);
  2141. extern int strcmp(const char *, const char *);
  2142. extern int strncmp(const char *,const char *,size_t);
  2143. extern int strncollen(const char *, const int );
  2144. extern char *strtok(char * , const char * );
  2145. extern char *strerror(int);
  2146. extern int strcoll(const char *, const char *);
  2147. extern size_t strxfrm(char * , const char * , size_t);
  2148.  
  2149. extern int strcoll_l(const char *, const char *, locale_t);
  2150. extern size_t strxfrm_l(char * , const char * , size_t, locale_t);
  2151.  
  2152. extern char *strtok_r(char *, const char *, char **);
  2153.  
  2154. extern int strerror_r(int, char *, size_t);
  2155. #line 222
  2156. extern void *memccpy(void * , const void * , int, size_t);
  2157. #line 231
  2158. extern char *strdup(const char *);
  2159. #line 292
  2160. extern wchar_t *wcschr(const wchar_t *, wchar_t);
  2161. extern wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
  2162. extern wchar_t *wcsrchr(const wchar_t *, wchar_t);
  2163. #line 297
  2164. extern char *index(const char *, int);
  2165. extern char *rindex(const char *, int);
  2166.  
  2167. extern void swab(const void *, void *, ssize_t);
  2168. extern wchar_t *wcscat(wchar_t *, const wchar_t *);
  2169. extern int wcscmp(const wchar_t *, const wchar_t *);
  2170. extern wchar_t *wcscpy(wchar_t *, const wchar_t *);
  2171. extern size_t wcscspn(const wchar_t *, const wchar_t *);
  2172. extern size_t wcslen(const wchar_t *);
  2173. extern wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t);
  2174. extern int wcsncmp(const wchar_t *, const wchar_t *, size_t);
  2175. extern wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t);
  2176. extern size_t wcsspn(const wchar_t *, const wchar_t *);
  2177. extern wchar_t *wcswcs(const wchar_t *, const wchar_t *);
  2178. extern int wcswidth(const wchar_t *, size_t);
  2179. extern int wcwidth(wchar_t);
  2180. extern int wcscoll(const wchar_t *, const wchar_t *);
  2181. extern size_t wcsxfrm(wchar_t *, const wchar_t *, size_t);
  2182.  
  2183. extern int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
  2184. extern size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t, locale_t);
  2185.  
  2186. extern char *__linux_strerror_r(int, char *, size_t);
  2187. extern char * strndup(const char *, size_t);
  2188. extern size_t strnlen(const char *, size_t);
  2189. extern char * strsep(char **, const char *);
  2190. extern void * memmem(const void *, size_t, const void *, size_t);
  2191. extern char * stpcpy(char *, const char *);
  2192. extern char * stpncpy(char *, const char *, size_t);
  2193. extern char * strsignal(int);
  2194. #line 332
  2195. extern int strcasecmp(const char *, const char *);
  2196. extern int strncasecmp(const char *, const char *, size_t);
  2197. #line 8 "./libcperciva/crypto/crypto_aes.h"
  2198. struct crypto_aes_key;
  2199. #line 15
  2200. struct crypto_aes_key * crypto_aes_key_expand(const uint8_t *, size_t);
  2201. #line 22
  2202. void crypto_aes_encrypt_block(const uint8_t *, uint8_t *,
  2203. const struct crypto_aes_key *);
  2204. #line 29
  2205. void crypto_aes_key_free(struct crypto_aes_key *);
  2206. #line 8 "./libcperciva/crypto/crypto_aesctr.h"
  2207. struct crypto_aes_key;
  2208. #line 16
  2209. struct crypto_aesctr * crypto_aesctr_init(const struct crypto_aes_key *,
  2210. uint64_t);
  2211. #line 25
  2212. void crypto_aesctr_stream(struct crypto_aesctr *, const uint8_t *,
  2213. uint8_t *, size_t);
  2214. #line 32
  2215. void crypto_aesctr_free(struct crypto_aesctr *);
  2216. #line 38
  2217. void crypto_aesctr_buf(const struct crypto_aes_key *, uint64_t,
  2218. const uint8_t *, uint8_t *, size_t);
  2219. #line 12 "./libcperciva/crypto/crypto_verify_bytes.h"
  2220. uint8_t crypto_verify_bytes(const uint8_t *, const uint8_t *, size_t);
  2221. #line 23 "./libcperciva/alg/sha256.h"
  2222. typedef struct {
  2223. uint32_t state[8];
  2224. uint64_t count;
  2225. uint8_t buf[64];
  2226. } libcperciva_SHA256_CTX;
  2227. #line 33
  2228. void libcperciva_SHA256_Init(libcperciva_SHA256_CTX *);
  2229. #line 39
  2230. void libcperciva_SHA256_Update(libcperciva_SHA256_CTX *, const void *, size_t);
  2231. #line 46
  2232. void libcperciva_SHA256_Final(uint8_t[32], libcperciva_SHA256_CTX *);
  2233. #line 52
  2234. void libcperciva_SHA256_Buf(const void *, size_t, uint8_t[32]);
  2235. #line 55
  2236. typedef struct {
  2237. libcperciva_SHA256_CTX ictx;
  2238. libcperciva_SHA256_CTX octx;
  2239. } libcperciva_HMAC_SHA256_CTX;
  2240. #line 65
  2241. void libcperciva_HMAC_SHA256_Init(libcperciva_HMAC_SHA256_CTX *, const void *, size_t);
  2242. #line 71
  2243. void libcperciva_HMAC_SHA256_Update(libcperciva_HMAC_SHA256_CTX *, const void *, size_t);
  2244. #line 78
  2245. void libcperciva_HMAC_SHA256_Final(uint8_t[32], libcperciva_HMAC_SHA256_CTX *);
  2246. #line 85
  2247. void libcperciva_HMAC_SHA256_Buf(const void *, size_t, const void *, size_t, uint8_t[32]);
  2248. #line 92
  2249. void PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t,
  2250. uint64_t, uint8_t *, size_t);
  2251. #line 20 "./libcperciva/util/sysendian.h"
  2252. static inline uint16_t
  2253. libcperciva_be16dec(const void * pp)
  2254. {
  2255. const uint8_t * p = (uint8_t const *)pp;
  2256.  
  2257. return ((uint16_t)(p[1]) + ((uint16_t)(p[0]) << 8));
  2258. }
  2259.  
  2260. static inline void
  2261. libcperciva_be16enc(void * pp, uint16_t x)
  2262. {
  2263. uint8_t * p = (uint8_t *)pp;
  2264.  
  2265. p[1] = x & 0xff;
  2266. p[0] = (x >> 8) & 0xff;
  2267. }
  2268.  
  2269. static inline uint32_t
  2270. libcperciva_be32dec(const void * pp)
  2271. {
  2272. const uint8_t * p = (uint8_t const *)pp;
  2273.  
  2274. return ((uint32_t)(p[3]) + ((uint32_t)(p[2]) << 8) +
  2275. ((uint32_t)(p[1]) << 16) + ((uint32_t)(p[0]) << 24));
  2276. }
  2277.  
  2278. static inline void
  2279. libcperciva_be32enc(void * pp, uint32_t x)
  2280. {
  2281. uint8_t * p = (uint8_t *)pp;
  2282.  
  2283. p[3] = x & 0xff;
  2284. p[2] = (x >> 8) & 0xff;
  2285. p[1] = (x >> 16) & 0xff;
  2286. p[0] = (x >> 24) & 0xff;
  2287. }
  2288.  
  2289. static inline uint64_t
  2290. libcperciva_be64dec(const void * pp)
  2291. {
  2292. const uint8_t * p = (uint8_t const *)pp;
  2293.  
  2294. return ((uint64_t)(p[7]) + ((uint64_t)(p[6]) << 8) +
  2295. ((uint64_t)(p[5]) << 16) + ((uint64_t)(p[4]) << 24) +
  2296. ((uint64_t)(p[3]) << 32) + ((uint64_t)(p[2]) << 40) +
  2297. ((uint64_t)(p[1]) << 48) + ((uint64_t)(p[0]) << 56));
  2298. }
  2299.  
  2300. static inline void
  2301. libcperciva_be64enc(void * pp, uint64_t x)
  2302. {
  2303. uint8_t * p = (uint8_t *)pp;
  2304.  
  2305. p[7] = x & 0xff;
  2306. p[6] = (x >> 8) & 0xff;
  2307. p[5] = (x >> 16) & 0xff;
  2308. p[4] = (x >> 24) & 0xff;
  2309. p[3] = (x >> 32) & 0xff;
  2310. p[2] = (x >> 40) & 0xff;
  2311. p[1] = (x >> 48) & 0xff;
  2312. p[0] = (x >> 56) & 0xff;
  2313. }
  2314.  
  2315. static inline uint16_t
  2316. libcperciva_le16dec(const void * pp)
  2317. {
  2318. const uint8_t * p = (uint8_t const *)pp;
  2319.  
  2320. return ((uint16_t)(p[0]) + ((uint16_t)(p[1]) << 8));
  2321. }
  2322.  
  2323. static inline void
  2324. libcperciva_le16enc(void * pp, uint16_t x)
  2325. {
  2326. uint8_t * p = (uint8_t *)pp;
  2327.  
  2328. p[0] = x & 0xff;
  2329. p[1] = (x >> 8) & 0xff;
  2330. }
  2331.  
  2332. static inline uint32_t
  2333. libcperciva_le32dec(const void * pp)
  2334. {
  2335. const uint8_t * p = (uint8_t const *)pp;
  2336.  
  2337. return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) +
  2338. ((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24));
  2339. }
  2340.  
  2341. static inline void
  2342. libcperciva_le32enc(void * pp, uint32_t x)
  2343. {
  2344. uint8_t * p = (uint8_t *)pp;
  2345.  
  2346. p[0] = x & 0xff;
  2347. p[1] = (x >> 8) & 0xff;
  2348. p[2] = (x >> 16) & 0xff;
  2349. p[3] = (x >> 24) & 0xff;
  2350. }
  2351.  
  2352. static inline uint64_t
  2353. libcperciva_le64dec(const void * pp)
  2354. {
  2355. const uint8_t * p = (uint8_t const *)pp;
  2356.  
  2357. return ((uint64_t)(p[0]) + ((uint64_t)(p[1]) << 8) +
  2358. ((uint64_t)(p[2]) << 16) + ((uint64_t)(p[3]) << 24) +
  2359. ((uint64_t)(p[4]) << 32) + ((uint64_t)(p[5]) << 40) +
  2360. ((uint64_t)(p[6]) << 48) + ((uint64_t)(p[7]) << 56));
  2361. }
  2362.  
  2363. static inline void
  2364. libcperciva_le64enc(void * pp, uint64_t x)
  2365. {
  2366. uint8_t * p = (uint8_t *)pp;
  2367.  
  2368. p[0] = x & 0xff;
  2369. p[1] = (x >> 8) & 0xff;
  2370. p[2] = (x >> 16) & 0xff;
  2371. p[3] = (x >> 24) & 0xff;
  2372. p[4] = (x >> 32) & 0xff;
  2373. p[5] = (x >> 40) & 0xff;
  2374. p[6] = (x >> 48) & 0xff;
  2375. p[7] = (x >> 56) & 0xff;
  2376. }
  2377. #line 62 "/usr/include/errno.h"
  2378. extern int errno;
  2379. #line 70
  2380. extern char *sys_errlist[];
  2381. extern int sys_nerr;
  2382. #line 14 "./libcperciva/util/warnp.h"
  2383. void warnp_setprogname(const char *);
  2384. #line 21
  2385. void libcperciva_warn(const char *, ...);
  2386. void libcperciva_warnx(const char *, ...);
  2387. #line 93 "/usr/include/sys/access.h"
  2388. extern char *acl_get(char *);
  2389. extern char *acl_fget(int);
  2390. extern int acl_chg(char *, int, int, int);
  2391. extern int acl_fchg(int, int, int, int);
  2392. extern int acl_put(char *, char *, int);
  2393. extern int acl_fput(int, char *, int);
  2394. extern int acl_set(char *, int, int, int);
  2395. extern int acl_fset(int, int, int, int);
  2396. extern int accessx(char *, int, int);
  2397.  
  2398. extern int accessxat(int, char *, int, int);
  2399. #line 156 "/usr/include/unistd.h"
  2400. extern int access(const char *, int);
  2401.  
  2402. extern int faccessat(int, const char *, int, int);
  2403.  
  2404. extern unsigned int alarm(unsigned int);
  2405. extern int chdir(const char *);
  2406. extern int chown(const char *, uid_t, gid_t);
  2407.  
  2408. extern int fchownat(int, const char *, uid_t, gid_t, int);
  2409.  
  2410. extern int close(int);
  2411. extern char *ctermid(char *);
  2412. extern int dup(int);
  2413. extern int dup2(int, int);
  2414. extern int execl(const char *, const char *, ...);
  2415. extern int execv(const char *, char *const []);
  2416. extern int execle(const char *, const char *, ...);
  2417. extern int execve(const char *, char *const [], char *const []);
  2418.  
  2419. extern int fexecve(int, char *const [], char *const []);
  2420.  
  2421. extern int execlp(const char *, const char *, ...);
  2422. extern int execvp(const char *, char *const []);
  2423. extern void _exit(int);
  2424. extern pid_t fork(void);
  2425. extern long fpathconf(int, int);
  2426. extern char *getcwd(char *, size_t);
  2427. extern gid_t getegid(void);
  2428. extern uid_t geteuid(void);
  2429. extern gid_t getgid(void);
  2430. extern int getgroups(int, gid_t []);
  2431. extern char *getlogin(void);
  2432.  
  2433. extern pid_t getpgrp(void);
  2434.  
  2435. extern pid_t getpid(void);
  2436. extern pid_t getppid(void);
  2437. extern uid_t getuid(void);
  2438. extern int isatty(int);
  2439. extern int link(const char *, const char *);
  2440.  
  2441. extern int linkat(int, const char *, int, const char *, int);
  2442.  
  2443. extern off_t lseek(int, off_t, int);
  2444.  
  2445. extern off64_t lseek64(int, off64_t, int);
  2446.  
  2447. extern long pathconf(const char *, int);
  2448. extern int pause(void);
  2449. extern int pipe(int []);
  2450.  
  2451. extern int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
  2452.  
  2453. extern ssize_t read(int, void *, size_t);
  2454. extern int rmdir(const char *);
  2455. extern int setgid(gid_t);
  2456. extern int setpgid(pid_t, pid_t);
  2457. extern pid_t setsid(void);
  2458. extern int setuid(uid_t);
  2459. extern unsigned int sleep(unsigned int);
  2460. extern long sysconf(int);
  2461. extern pid_t tcgetpgrp(int);
  2462. extern int tcsetpgrp(int, pid_t);
  2463. extern char *ttyname(int);
  2464. extern int unlink(const char *);
  2465.  
  2466. extern int unlinkat(int, const char *, int);
  2467.  
  2468. extern ssize_t write(int, const void *, size_t);
  2469. #line 318
  2470. extern char *optarg;
  2471. extern int optind, opterr, optopt;
  2472. #line 334
  2473. extern size_t confstr(int, char*, size_t);
  2474. extern char *crypt(const char *, const char *);
  2475. extern void encrypt(char *, int);
  2476. extern int fsync(int);
  2477. extern int getopt(int, char* const*, const char*);
  2478. extern int nice(int);
  2479. extern void swab(const void *, void *, ssize_t);
  2480. extern int fdatasync(int);
  2481.  
  2482. extern char *getpass(const char *);
  2483. extern int chroot(const char *);
  2484. #line 76 "/usr/include/sys/stat.h"
  2485. typedef struct st_timespec {
  2486. time_t tv_sec;
  2487. int tv_nsec;
  2488. } st_timespec_t;
  2489. #line 84
  2490. struct stat
  2491. {
  2492. dev_t st_dev;
  2493. #line 91
  2494. ino_t st_ino;
  2495. #line 96
  2496. mode_t st_mode;
  2497.  
  2498. nlink_t st_nlink;
  2499. ushort_t st_flag;
  2500. #line 106
  2501. uid_t st_uid;
  2502. gid_t st_gid;
  2503. #line 110
  2504. dev_t st_rdev;
  2505. #line 114
  2506. off_t st_size;
  2507. #line 119
  2508. st_timespec_t st_atim;
  2509. st_timespec_t st_mtim;
  2510. st_timespec_t st_ctim;
  2511. #line 130
  2512. blksize_t st_blksize;
  2513. blkcnt_t st_blocks;
  2514. #line 134
  2515. int st_vfstype;
  2516. uint_t st_vfs;
  2517. uint_t st_type;
  2518. uint_t st_gen;
  2519. #line 140
  2520. uint_t st_reserved[9];
  2521. #line 145
  2522. };
  2523. #line 204
  2524. struct timespec64 {
  2525. time64_t tv_sec;
  2526. int32_t tv_nsec;
  2527. int32_t tv_pad;
  2528. };
  2529. #line 215
  2530. struct stat64
  2531. {
  2532. dev_t st_dev;
  2533. #line 222
  2534. ino_t st_ino;
  2535. mode_t st_mode;
  2536. nlink_t st_nlink;
  2537. ushort_t st_flag;
  2538. uid_t st_uid;
  2539. gid_t st_gid;
  2540. dev_t st_rdev;
  2541. #line 231
  2542. soff_t st_ssize;
  2543.  
  2544. st_timespec_t st_atim;
  2545. st_timespec_t st_mtim;
  2546. st_timespec_t st_ctim;
  2547. #line 244
  2548. blksize_t st_blksize;
  2549. blkcnt_t st_blocks;
  2550. #line 248
  2551. int st_vfstype;
  2552. uint_t st_vfs;
  2553. uint_t st_type;
  2554. uint_t st_gen;
  2555. uint_t st_reserved[10];
  2556. #line 256
  2557. off64_t st_size;
  2558.  
  2559. };
  2560. #line 264
  2561. struct stat64x
  2562. {
  2563. dev64_t st_dev;
  2564. #line 272
  2565. ino64_t st_ino;
  2566. mode_t st_mode;
  2567. nlink_t st_nlink;
  2568. ushort_t st_flag;
  2569. uid_t st_uid;
  2570. gid_t st_gid;
  2571. dev64_t st_rdev;
  2572. #line 286
  2573. off64_t st_size;
  2574. #line 290
  2575. struct timespec64 st_atim;
  2576. struct timespec64 st_mtim;
  2577. struct timespec64 st_ctim;
  2578. #line 304
  2579. blksize64_t st_blksize;
  2580. blkcnt64_t st_blocks;
  2581. #line 308
  2582. int32_t st_vfstype;
  2583. uint32_t st_vfs;
  2584. uint32_t st_type;
  2585. uint32_t st_gen;
  2586. uint32_t st_reserved[11];
  2587. };
  2588. #line 324
  2589. extern int stat64x(const char *, struct stat64x *);
  2590. extern int fstat64x(int, struct stat64x *);
  2591. extern int lstat64x(const char *, struct stat64x *);
  2592.  
  2593. extern int stat64xat(int, const char *, struct stat64x *, int);
  2594. #line 359
  2595. extern mode_t umask(mode_t);
  2596. #line 407
  2597. extern int mkdir(const char *, mode_t);
  2598.  
  2599. extern int mkdirat(int, const char *, mode_t);
  2600.  
  2601. extern int stat(const char *, struct stat *);
  2602. extern int fstat(int, struct stat *);
  2603.  
  2604. extern int fstatat(int, const char *, struct stat *, int);
  2605. #line 417
  2606. extern int stat64(const char *, struct stat64 *);
  2607. extern int fstat64(int, struct stat64 *);
  2608.  
  2609. extern int stat64at(int,const char *, struct stat64 *, int);
  2610. #line 424
  2611. extern int chmod(const char *, mode_t);
  2612.  
  2613. extern int fchmodat(int, const char *, mode_t, int);
  2614. #line 430
  2615. extern int fchmod(int, mode_t);
  2616. extern int lstat(const char *, struct stat *);
  2617.  
  2618. extern int lstat64(const char *, struct stat64 *);
  2619. #line 436
  2620. extern int mknod(const char *, mode_t, dev_t);
  2621.  
  2622. extern int mknodat(int, const char *, mode_t, dev_t);
  2623. #line 445
  2624. extern int mkfifo(const char *, mode_t);
  2625.  
  2626. extern int mkfifoat(int, const char *, mode_t);
  2627. extern int futimens(int, const struct timespec *);
  2628. extern int utimensat(int, const char *, const struct timespec *,
  2629. int);
  2630. #line 499
  2631. int statx(char *, struct stat *, int, int);
  2632. int fstatx(int, struct stat *, int, int);
  2633.  
  2634. int statxat(int, char *, struct stat *, int, int);
  2635. #line 62 "/usr/include/sys/lockf.h"
  2636. extern int lockf (int, int, off_t);
  2637.  
  2638. extern int lockf64 (int, int, off64_t);
  2639. #line 872 "/usr/include/unistd.h"
  2640. extern int brk(void *);
  2641. extern int getpagesize(void);
  2642.  
  2643. extern int __fd_getdtablesize(void);
  2644. static int getdtablesize()
  2645. {
  2646. return __fd_getdtablesize();
  2647. }
  2648. #line 886
  2649. extern void *sbrk(intptr_t);
  2650. #line 891
  2651. extern int fchdir(int);
  2652. extern int fchown(int, uid_t, gid_t);
  2653. extern int ftruncate(int, off_t);
  2654.  
  2655. extern int ftruncate64(int, off64_t);
  2656.  
  2657. extern int gethostname(char *, size_t);
  2658. extern long gethostid(void);
  2659. extern pid_t getpgid(pid_t);
  2660. extern pid_t getsid(pid_t);
  2661.  
  2662. extern char *getwd(char *);
  2663.  
  2664. extern int lchown(const char *, uid_t, gid_t);
  2665. #line 934
  2666. extern int readlink(const char *, char *, size_t);
  2667.  
  2668. extern int readlinkat(int, const char *, char *, size_t);
  2669. #line 941
  2670. extern pid_t setpgrp(void);
  2671.  
  2672. extern int setregid(gid_t, gid_t);
  2673. extern int setreuid(uid_t, uid_t);
  2674. extern int symlink(const char *, const char *);
  2675.  
  2676. extern int symlinkat(const char *, int, const char *);
  2677.  
  2678. extern void sync(void);
  2679. extern int truncate(const char *, off_t);
  2680.  
  2681. extern int truncate64(const char *, off64_t);
  2682. #line 955
  2683. extern useconds_t ualarm(useconds_t, useconds_t);
  2684. extern int usleep(useconds_t);
  2685. extern pid_t vfork(void);
  2686. #line 960
  2687. extern int getlogin_r(char *, size_t);
  2688. extern int ttyname_r(int, char *, size_t);
  2689. #line 968
  2690. extern ssize_t pread(int, void *, size_t, off_t);
  2691. extern ssize_t pwrite(int, const void *, size_t, off_t);
  2692.  
  2693. extern ssize_t pread64(int, void *, size_t, off64_t);
  2694. extern ssize_t pwrite64(int, const void *, size_t, off64_t);
  2695. #line 982
  2696. extern char **environ;
  2697. #line 988
  2698. extern pid_t f_fork(void);
  2699. #line 1022
  2700. extern char * cuserid(char *);
  2701. extern int setegid(gid_t);
  2702. extern int seteuid(uid_t);
  2703. extern int setrgid(gid_t);
  2704. extern int setruid(uid_t);
  2705.  
  2706. extern int ioctl(int, int, ...);
  2707. #line 1035
  2708. extern int setgroups(int, gid_t []);
  2709. extern int setroles(rid_t [], int);
  2710. extern int getroles(pid_t, rid_t [], int);
  2711.  
  2712. extern int open64x(char *, int64_t, mode_t, ext_t);
  2713.  
  2714. extern int open64xat(int, char *, int64_t, mode_t, ext_t);
  2715. #line 1044
  2716. extern ssize_t read64x(int, char *, ssize_t, long);
  2717. extern ssize_t write64x(int, char *, ssize_t, long);
  2718.  
  2719. extern int readx(int, char*, unsigned, long);
  2720. extern int writex(int, char*, unsigned, long);
  2721. #line 1054
  2722. extern off_t fclear(int, off_t);
  2723. extern int fsync_range(int, int, off_t, off_t);
  2724.  
  2725. extern off64_t fclear64(int, off64_t);
  2726. extern int fsync_range64(int, int, off64_t, off64_t);
  2727.  
  2728. extern offset_t llseek(int, offset_t, int);
  2729. extern char * getusershell(void);
  2730. extern void setusershell(void);
  2731. extern void endusershell(void);
  2732. extern char * get_current_dir_name(void);
  2733. extern int sysfs(int, ...);
  2734. extern int finfo(const char *, int, void *, int32long64_t);
  2735. extern int ffinfo(int, int, void *, int32long64_t);
  2736. #line 15 "./libcperciva/crypto/crypto_dh.h"
  2737. int crypto_dh_generate_pub(uint8_t[256],
  2738. const uint8_t[32]);
  2739. #line 24
  2740. int crypto_dh_generate(uint8_t[256], uint8_t[32]);
  2741. #line 33
  2742. int crypto_dh_compute(const uint8_t[256],
  2743. const uint8_t[32], uint8_t[256]);
  2744. #line 41
  2745. int crypto_dh_sanitycheck(const uint8_t[256]);
  2746. #line 9 "./proto/proto_crypt.h"
  2747. struct proto_keys;
  2748. struct proto_secret;
  2749. #line 28
  2750. struct proto_secret * proto_crypt_secret(const char *);
  2751. #line 37
  2752. void proto_crypt_dhmac(const struct proto_secret *,
  2753. const uint8_t[32], const uint8_t[32],
  2754. uint8_t[32], uint8_t[32], int);
  2755. #line 48
  2756. int proto_crypt_dh_validate(const uint8_t[(256 + 32)],
  2757. const uint8_t[32], int);
  2758. #line 57
  2759. int proto_crypt_dh_generate(uint8_t[(256 + 32)], uint8_t[32],
  2760. const uint8_t[32], int);
  2761. #line 69
  2762. int proto_crypt_mkkeys(const struct proto_secret *,
  2763. const uint8_t[32], const uint8_t[32],
  2764. const uint8_t[(256 + 32)], const uint8_t[32], int, int,
  2765. struct proto_keys **, struct proto_keys **);
  2766. #line 85
  2767. void proto_crypt_enc(uint8_t *, size_t, uint8_t[(1024 + 4 + 32 )],
  2768. struct proto_keys *);
  2769. #line 94
  2770. ssize_t proto_crypt_dec(uint8_t[(1024 + 4 + 32 )], uint8_t *, struct proto_keys *);
  2771. #line 100
  2772. void proto_crypt_free(struct proto_keys *);
  2773. #line 16 "./proto/proto_crypt.c"
  2774. struct proto_secret {
  2775. uint8_t K[32];
  2776. };
  2777.  
  2778. struct proto_keys {
  2779. struct crypto_aes_key * k_aes;
  2780. uint8_t k_hmac[32];
  2781. uint64_t pnum;
  2782. };
  2783. #line 30
  2784. static struct proto_keys *
  2785. mkkeypair(uint8_t kbuf[64])
  2786. {
  2787. struct proto_keys * k;
  2788. #line 36
  2789. if ((k = malloc(sizeof(struct proto_keys))) == 0)
  2790. goto err0;
  2791. #line 40
  2792. if ((k->k_aes = crypto_aes_key_expand(&kbuf[0], 32)) == 0)
  2793. goto err1;
  2794. #line 44
  2795. __memcpy(k->k_hmac,&kbuf[32],32);
  2796. #line 47
  2797. k->pnum = 0;
  2798. #line 50
  2799. return (k);
  2800.  
  2801. err1:
  2802. free(k);
  2803. err0:
  2804.  
  2805. return (0);
  2806. }
  2807. #line 63
  2808. struct proto_secret *
  2809. proto_crypt_secret(const char * filename)
  2810. {
  2811. libcperciva_SHA256_CTX ctx;
  2812. FILE * f;
  2813. struct proto_secret * K;
  2814. uint8_t buf[4096];
  2815. size_t lenread;
  2816. #line 73
  2817. if ((K = malloc(sizeof(struct proto_secret))) == 0)
  2818. goto err0;
  2819. #line 77
  2820. if ((f = fopen(filename, "r")) == 0) {
  2821. do { ; if (errno != 0) { libcperciva_warn("Cannot open file: %s", filename); errno = 0; } else libcperciva_warnx("Cannot open file: %s", filename); } while (0);
  2822. goto err1;
  2823. }
  2824. #line 83
  2825. libcperciva_SHA256_Init(&ctx);
  2826. #line 86
  2827. while ((lenread = fread(buf, 1, 4096, f)) > 0)
  2828. libcperciva_SHA256_Update(&ctx, buf, lenread);
  2829. #line 90
  2830. if (!((f)->_flag & 0020)) {
  2831. do { ; if (errno != 0) { libcperciva_warn("Error reading file: %s", filename); errno = 0; } else libcperciva_warnx("Error reading file: %s", filename); } while (0);
  2832. goto err2;
  2833. }
  2834. #line 96
  2835. fclose(f);
  2836. #line 99
  2837. libcperciva_SHA256_Final(K->K, &ctx);
  2838. #line 102
  2839. return (K);
  2840.  
  2841. err2:
  2842. fclose(f);
  2843. err1:
  2844. free(K);
  2845. err0:
  2846.  
  2847. return (0);
  2848. }
  2849. #line 120
  2850. void
  2851. proto_crypt_dhmac(const struct proto_secret * K,
  2852. const uint8_t nonce_l[32],
  2853. const uint8_t nonce_r[32],
  2854. uint8_t dhmac_l[32], uint8_t dhmac_r[32],
  2855. int decr)
  2856. {
  2857. uint8_t nonce_CS[32 * 2];
  2858. uint8_t dk_1[32 * 2];
  2859. const uint8_t * nonce_c, * nonce_s;
  2860. uint8_t * dhmac_c, * dhmac_s;
  2861. #line 133
  2862. nonce_c = decr ? nonce_r : nonce_l;
  2863. dhmac_c = decr ? dhmac_r : dhmac_l;
  2864. nonce_s = decr ? nonce_l : nonce_r;
  2865. dhmac_s = decr ? dhmac_l : dhmac_r;
  2866. #line 139
  2867. __memcpy(&nonce_CS[0],nonce_c,32);
  2868. __memcpy(&nonce_CS[32],nonce_s,32);
  2869. #line 143
  2870. PBKDF2_SHA256(K->K, 32, nonce_CS, 32 * 2, 1,
  2871. dk_1, 32 * 2);
  2872. #line 147
  2873. __memcpy(dhmac_c,&dk_1[0],32);
  2874. __memcpy(dhmac_s,&dk_1[32],32);
  2875. }
  2876. #line 156
  2877. static int
  2878. is_not_one(const uint8_t * x, size_t len)
  2879. {
  2880. size_t i;
  2881. char y;
  2882.  
  2883. for (i = 0, y = 0; i < len - 1; i++) {
  2884. y |= x[i];
  2885. }
  2886.  
  2887. return (y | (x[len - 1] - 1));
  2888. }
  2889. #line 176
  2890. int
  2891. proto_crypt_dh_validate(const uint8_t yh_r[(256 + 32)],
  2892. const uint8_t dhmac_r[32], int requirefps)
  2893. {
  2894. uint8_t hbuf[32];
  2895. #line 183
  2896. libcperciva_HMAC_SHA256_Buf(dhmac_r, 32, yh_r, 256,
  2897. hbuf);
  2898. #line 187
  2899. if (crypto_verify_bytes(&yh_r[256], hbuf, 32))
  2900. return (1);
  2901. #line 191
  2902. if (crypto_dh_sanitycheck(&yh_r[0]))
  2903. return (1);
  2904. #line 195
  2905. if (requirefps) {
  2906. if (! is_not_one(&yh_r[0], 256))
  2907. return (1);
  2908. }
  2909. #line 201
  2910. return (0);
  2911. }
  2912. #line 210
  2913. int
  2914. proto_crypt_dh_generate(uint8_t yh_l[(256 + 32)], uint8_t x[32],
  2915. const uint8_t dhmac_l[32], int nofps)
  2916. {
  2917. #line 216
  2918. if (nofps) {
  2919.  
  2920. __memset(yh_l,0,256 - 1);
  2921. yh_l[256 - 1] = 1;
  2922. } else {
  2923.  
  2924. if (crypto_dh_generate(yh_l, x))
  2925. goto err0;
  2926. }
  2927. #line 227
  2928. libcperciva_HMAC_SHA256_Buf(dhmac_l, 32, yh_l, 256,
  2929. &yh_l[256]);
  2930. #line 231
  2931. return (0);
  2932.  
  2933. err0:
  2934.  
  2935. return (-1);
  2936. }
  2937. #line 247
  2938. int
  2939. proto_crypt_mkkeys(const struct proto_secret * K,
  2940. const uint8_t nonce_l[32],
  2941. const uint8_t nonce_r[32],
  2942. const uint8_t yh_r[(256 + 32)], const uint8_t x[32],
  2943. int nofps, int decr,
  2944. struct proto_keys ** eh_c, struct proto_keys ** eh_s)
  2945. {
  2946. uint8_t nonce_y[32 * 2 + 256];
  2947. uint8_t dk_2[128];
  2948. const uint8_t * nonce_c, * nonce_s;
  2949. #line 260
  2950. nonce_c = decr ? nonce_r : nonce_l;
  2951. nonce_s = decr ? nonce_l : nonce_r;
  2952. __memcpy(&nonce_y[0],nonce_c,32);
  2953. __memcpy(&nonce_y[32],nonce_s,32);
  2954. #line 266
  2955. if (nofps) {
  2956. #line 269
  2957. __memset(&nonce_y[32 * 2],0,256 - 1);
  2958. nonce_y[32 * 2 + 256 - 1] = 1;
  2959. } else {
  2960.  
  2961. if (crypto_dh_compute(yh_r, x,
  2962. &nonce_y[32 * 2]))
  2963. goto err0;
  2964. }
  2965. #line 279
  2966. PBKDF2_SHA256(K->K, 32, nonce_y,
  2967. 32 * 2 + 256, 1, dk_2, 128);
  2968. #line 283
  2969. if ((*eh_c = mkkeypair(&dk_2[0])) == 0)
  2970. goto err0;
  2971. if ((*eh_s = mkkeypair(&dk_2[64])) == 0)
  2972. goto err1;
  2973. #line 289
  2974. return (0);
  2975.  
  2976. err1:
  2977. proto_crypt_free(*eh_c);
  2978. err0:
  2979.  
  2980. return (-1);
  2981. }
  2982. #line 303
  2983. void
  2984. proto_crypt_enc(uint8_t * ibuf, size_t len, uint8_t obuf[(1024 + 4 + 32 )],
  2985. struct proto_keys * k)
  2986. {
  2987. libcperciva_HMAC_SHA256_CTX ctx;
  2988. uint8_t pnum_exp[8];
  2989. #line 311
  2990. ((len <= 1024) ? ((void)0) : __assert("len <= PCRYPT_MAXDSZ", "./proto/proto_crypt.c", 311));
  2991. #line 314
  2992. __memcpy(obuf,ibuf,len);
  2993. #line 317
  2994. __memset(&obuf[len],0,1024 - len);
  2995. #line 320
  2996. libcperciva_be32enc(&obuf[1024], len);
  2997. #line 323
  2998. crypto_aesctr_buf(k->k_aes, k->pnum, obuf, obuf, 1024 + 4);
  2999. #line 326
  3000. libcperciva_be64enc(pnum_exp, k->pnum);
  3001. libcperciva_HMAC_SHA256_Init(&ctx, k->k_hmac, 32);
  3002. libcperciva_HMAC_SHA256_Update(&ctx, obuf, 1024 + 4);
  3003. libcperciva_HMAC_SHA256_Update(&ctx, pnum_exp, 8);
  3004. libcperciva_HMAC_SHA256_Final(&obuf[1024 + 4], &ctx);
  3005. #line 333
  3006. k->pnum += 1;
  3007. }
  3008. #line 342
  3009. ssize_t proto_crypt_dec(uint8_t ibuf[(1024 + 4 + 32 )], uint8_t * obuf,
  3010. struct proto_keys * k)
  3011. {
  3012. libcperciva_HMAC_SHA256_CTX ctx;
  3013. uint8_t hbuf[32];
  3014. uint8_t pnum_exp[8];
  3015. size_t len;
  3016. #line 351
  3017. libcperciva_be64enc(pnum_exp, k->pnum);
  3018. libcperciva_HMAC_SHA256_Init(&ctx, k->k_hmac, 32);
  3019. libcperciva_HMAC_SHA256_Update(&ctx, ibuf, 1024 + 4);
  3020. libcperciva_HMAC_SHA256_Update(&ctx, pnum_exp, 8);
  3021. libcperciva_HMAC_SHA256_Final(hbuf, &ctx);
  3022. if (crypto_verify_bytes(hbuf, &ibuf[1024 + 4], 32))
  3023. return (-1);
  3024. #line 360
  3025. crypto_aesctr_buf(k->k_aes, k->pnum, ibuf, ibuf, 1024 + 4);
  3026. #line 363
  3027. k->pnum += 1;
  3028. #line 366
  3029. len = libcperciva_be32dec(&ibuf[1024]);
  3030. #line 369
  3031. if ((len == 0) || (len > 1024))
  3032. return (-1);
  3033. #line 373
  3034. __memcpy(obuf,ibuf,len);
  3035. #line 376
  3036. return (len);
  3037. }
  3038. #line 383
  3039. void
  3040. proto_crypt_free(struct proto_keys * k)
  3041. {
  3042. #line 388
  3043. crypto_aes_key_free(k->k_aes);
  3044. #line 391
  3045. free(k);
  3046. }
Advertisement
Add Comment
Please, Sign In to add comment