venture37

xlc -P proto_crypt.c

Aug 23rd, 2014
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 77.21 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. extern void __assert(const char *, const char *, int);
  22. extern void __assert_c99(const char *, const char *, int, const char *);
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116. typedef signed char int8_t;
  117. typedef signed short int16_t;
  118. typedef signed int int32_t;
  119. typedef signed long long int64_t;
  120.  
  121. typedef unsigned char uint8_t;
  122. typedef unsigned short uint16_t;
  123. typedef unsigned int uint32_t;
  124. typedef unsigned long long uint64_t;
  125.  
  126.  
  127. typedef int64_t intmax_t;
  128. typedef uint64_t uintmax_t;
  129.  
  130.  
  131. typedef signed long intptr_t;
  132. typedef unsigned long uintptr_t;
  133.  
  134.  
  135. typedef signed char int_least8_t;
  136. typedef signed short int_least16_t;
  137. typedef signed int int_least32_t;
  138. typedef signed long long int_least64_t;
  139.  
  140. typedef unsigned char uint_least8_t;
  141. typedef unsigned short uint_least16_t;
  142. typedef unsigned int uint_least32_t;
  143. typedef unsigned long long uint_least64_t;
  144.  
  145.  
  146.  
  147.  
  148. typedef signed char int_fast8_t;
  149. typedef int16_t int_fast16_t;
  150. typedef int32_t int_fast32_t;
  151. typedef unsigned char uint_fast8_t;
  152. typedef uint16_t uint_fast16_t;
  153. typedef uint32_t uint_fast32_t;
  154. typedef int64_t int_fast64_t;
  155. typedef uint64_t uint_fast64_t;
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214. typedef unsigned long size_t;
  215.  
  216. typedef signed long ssize_t;
  217.  
  218.  
  219.  
  220. typedef long fpos_t;
  221.  
  222. typedef long long fpos64_t;
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237. typedef struct {
  238. unsigned char *_ptr;
  239. int _cnt;
  240. unsigned char *_base;
  241. unsigned char *_bufendp;
  242. short _flag;
  243. short _file;
  244. int __stdioid;
  245. char *__newbase;
  246. void *_lock;
  247. } FILE;
  248.  
  249. extern FILE _iob[16];
  250.  
  251.  
  252. extern size_t fread(void *restrict, size_t, size_t, FILE *restrict);
  253. extern size_t fwrite(const void *restrict, size_t, size_t,FILE *restrict);
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276. typedef char *va_list;
  277.  
  278. extern int vscanf(const char *restrict, va_list);
  279. extern int vfscanf(FILE *restrict, const char *restrict, va_list);
  280. extern int vsscanf(const char *restrict, const char *restrict, va_list);
  281.  
  282.  
  283. extern int __flsbuf(unsigned char, FILE *);
  284. extern int __filbuf(FILE *);
  285. extern int ferror(FILE *);
  286. extern int feof(FILE *);
  287. extern void clearerr(FILE *);
  288. extern int putchar(int);
  289. extern int getchar(void);
  290. extern int putc(int, FILE *);
  291. extern int getc(FILE *);
  292. extern int remove(const char *);
  293. extern int rename(const char *, const char *);
  294. extern int renameat(int, const char *, int, const char *);
  295. extern FILE *tmpfile(void);
  296. extern char *tmpnam(char *);
  297. extern int fclose(FILE *);
  298. extern int fflush(FILE *);
  299. extern FILE * fopen(const char *restrict, const char *restrict);
  300. extern FILE * freopen(const char *restrict, const char *restrict, FILE *restrict);
  301. extern FILE * fmemopen(void *restrict, size_t, const char *restrict);
  302. extern FILE * open_memstream(char **, size_t *);
  303. extern void setbuf(FILE *restrict, char *restrict);
  304. extern int setvbuf(FILE *restrict, char *restrict, int, size_t);
  305. extern int fprintf(FILE *restrict, const char *restrict, ...);
  306. extern int fscanf(FILE *restrict, const char *restrict, ...);
  307. extern int dprintf(int, const char * restrict, ...);
  308. extern int printf(const char *restrict, ...);
  309. extern int scanf(const char *restrict, ...);
  310. extern int sprintf(char *restrict, const char *restrict, ...);
  311. extern int snprintf(char *restrict, size_t, const char *restrict, ...);
  312. extern int sscanf(const char *restrict, const char *restrict, ...);
  313.  
  314. extern int vfprintf(FILE *restrict, const char *restrict, va_list);
  315. extern int vprintf(const char *restrict, va_list);
  316. extern int vsprintf(char *restrict, const char *restrict, va_list);
  317. extern int vsnprintf(char *restrict, size_t, const char *restrict, va_list);
  318. extern int vdprintf(int, const char *restrict, va_list);
  319.  
  320. extern int fgetc(FILE *);
  321. extern char * fgets(char *restrict, int, FILE *restrict);
  322. extern int fputc(int, FILE *);
  323. extern int fputs(const char *restrict, FILE *restrict);
  324. extern char *gets(char *);
  325. extern int puts(const char *);
  326. extern int ungetc(int, FILE *);
  327. extern int fgetpos(FILE *restrict, fpos_t *restrict);
  328. extern int fseek(FILE *, long int, int);
  329. extern int fsetpos(FILE *, const fpos_t *);
  330. extern long ftell(FILE *);
  331. extern void rewind(FILE *);
  332. extern void perror(const char *);
  333.  
  334.  
  335. extern int getc_unlocked(FILE *);
  336. extern int getchar_unlocked(void);
  337. extern int putc_unlocked(int, FILE *);
  338. extern int putchar_unlocked(int);
  339. extern ssize_t getdelim(char **, size_t *, int, FILE *);
  340. extern ssize_t getline(char **, size_t *, FILE *);
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427. typedef struct {
  428. intmax_t quot;
  429. intmax_t rem;
  430. } imaxdiv_t;
  431.  
  432. extern intmax_t __strtollmax(const char * restrict, char ** restrict, int);
  433. static intmax_t
  434. strtoimax (const char * restrict __nptr, char ** restrict __endptr, int __base) {
  435. return __strtollmax (__nptr, __endptr, __base);
  436. }
  437.  
  438. extern intmax_t imaxabs(intmax_t);
  439. extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
  440. extern uintmax_t strtoumax(const char * restrict, char ** restrict, int);
  441.  
  442. typedef unsigned short wchar_t;
  443. extern intmax_t wcstoimax(const wchar_t * restrict, wchar_t ** restrict, int );
  444. extern uintmax_t wcstoumax(const wchar_t * restrict, wchar_t ** restrict, int);
  445.  
  446.  
  447. typedef int32_t intfast_t;
  448. typedef uint32_t uintfast_t;
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505. typedef signed long __long32_t;
  506. typedef unsigned long __ulong32_t;
  507.  
  508.  
  509. typedef signed int __long64_t;
  510. typedef unsigned int __ulong64_t;
  511.  
  512.  
  513. typedef signed int int32long64_t;
  514. typedef unsigned int uint32long64_t;
  515.  
  516.  
  517. typedef signed long long32int64_t;
  518. typedef unsigned long ulong32int64_t;
  519.  
  520.  
  521.  
  522.  
  523. typedef signed char int8;
  524. typedef signed short int16;
  525. typedef signed int int32;
  526. typedef signed long long int64;
  527.  
  528. typedef unsigned char u_int8;
  529. typedef unsigned char u_int8_t;
  530. typedef unsigned short u_int16;
  531. typedef unsigned short u_int16_t;
  532. typedef unsigned int u_int32;
  533. typedef unsigned int u_int32_t;
  534. typedef unsigned long long u_int64;
  535. typedef unsigned long long u_int64_t;
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567. typedef long ptrdiff_t;
  568.  
  569.  
  570. typedef unsigned int wctype_t;
  571.  
  572.  
  573. typedef int time_t;
  574.  
  575. typedef int clock_t;
  576.  
  577.  
  578.  
  579.  
  580. typedef unsigned char uchar_t;
  581.  
  582. typedef unsigned short ushort_t;
  583. typedef unsigned int uint_t;
  584. typedef unsigned long ulong_t;
  585.  
  586.  
  587.  
  588. typedef int level_t;
  589. typedef __long64_t daddr_t;
  590. typedef int daddr32_t;
  591. typedef int64_t daddr64_t;
  592. typedef char * caddr_t;
  593. typedef __ulong64_t ino_t;
  594. typedef uint_t ino32_t;
  595. typedef uint64_t ino64_t;
  596. typedef short cnt_t;
  597. typedef __ulong64_t dev_t;
  598. typedef uint_t dev32_t;
  599. typedef uint64_t dev64_t;
  600. typedef int chan_t;
  601. typedef int time32_t;
  602. typedef int pid32_t;
  603. typedef int tid32_t;
  604. typedef uint64_t pid64_t;
  605. typedef uint64_t tid64_t;
  606. typedef int64_t time64_t;
  607.  
  608.  
  609. typedef void * __ptr32;
  610. typedef char * __cptr32;
  611.  
  612. typedef int soff_t;
  613.  
  614. typedef long off_t;
  615.  
  616. typedef long long off64_t;
  617.  
  618. typedef long paddr_t;
  619.  
  620.  
  621. typedef int32long64_t key_t;
  622.  
  623. typedef __long64_t timer_t;
  624. typedef int timer32_t;
  625. typedef int64_t timer64_t;
  626. typedef short nlink_t;
  627.  
  628.  
  629. typedef uint_t mode_t;
  630.  
  631.  
  632. typedef uint_t uid_t;
  633. typedef uint_t gid_t;
  634. typedef uint_t rid_t;
  635.  
  636. typedef ushort_t authnum_t;
  637. typedef __ptr32 mid_t;
  638.  
  639. typedef int32long64_t pid_t;
  640.  
  641. typedef __long64_t tid_t;
  642. typedef char slab_t[12];
  643. typedef long mtyp_t;
  644. typedef int boolean_t;
  645. typedef int crid_t;
  646.  
  647. typedef __long64_t blkcnt_t;
  648. typedef __long64_t blksize_t;
  649.  
  650. typedef int blkcnt32_t;
  651. typedef int blksize32_t;
  652. typedef uint64_t blkcnt64_t;
  653. typedef uint64_t blksize64_t;
  654.  
  655.  
  656. typedef ulong_t fsblkcnt_t;
  657. typedef ulong_t fsfilcnt_t;
  658.  
  659. typedef int wint_t;
  660.  
  661. typedef uint32long64_t id_t;
  662. typedef unsigned int useconds_t;
  663. typedef signed int suseconds_t;
  664. typedef long long clockid_t;
  665.  
  666.  
  667.  
  668. typedef struct sigset_t {
  669. unsigned int losigs;
  670. unsigned int hisigs;
  671. } sigset_t;
  672.  
  673. typedef struct {
  674. unsigned int losigs, hisigs;
  675. } sigset32_t;
  676.  
  677. typedef struct {
  678. uint64_t ss_set[4];
  679. } sigset64_t;
  680.  
  681. typedef int signal_t;
  682.  
  683.  
  684. typedef struct fsid_t {
  685. unsigned int val[2];
  686. } fsid_t;
  687.  
  688.  
  689. typedef struct fsid64_t {
  690. uint64_t val[2];
  691. } fsid64_t;
  692.  
  693. typedef void *pthread_attr_t;
  694. typedef void *pthread_condattr_t;
  695. typedef void *pthread_mutexattr_t;
  696.  
  697. typedef void *pthread_rwlockattr_t;
  698.  
  699. typedef void *pthread_barrierattr_t;
  700.  
  701. typedef unsigned int pthread_t;
  702. typedef unsigned int pthread_key_t;
  703.  
  704. typedef struct
  705. {
  706. int __mt_word[13];
  707. }
  708. pthread_mutex_t;
  709.  
  710. typedef struct
  711. {
  712. int __cv_word[11];
  713. }
  714. pthread_cond_t;
  715.  
  716. typedef struct
  717. {
  718. int __on_word[28];
  719. }
  720. pthread_once_t;
  721.  
  722. typedef struct
  723. {
  724. int __sp_word[6];
  725. }
  726. pthread_spinlock_t;
  727.  
  728. typedef struct
  729. {
  730. int __br_word[8];
  731. }
  732. pthread_barrier_t;
  733.  
  734. typedef struct
  735. {
  736. int __rw_word[52];
  737. }
  738. pthread_rwlock_t;
  739.  
  740.  
  741. typedef void *trace_attr_t;
  742. typedef unsigned trace_event_id_t;
  743. typedef unsigned trace_id_t;
  744. typedef uint64_t trace_event_set_t;
  745.  
  746.  
  747. typedef struct _quad { int val[2]; } quad;
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796. typedef long vmid_t;
  797. typedef ulong_t vmhandle_t;
  798. typedef int vmid32_t;
  799. typedef uint_t vmhandle32_t;
  800.  
  801.  
  802. typedef long32int64_t kvmid_t;
  803. typedef ulong32int64_t kvmhandle_t;
  804.  
  805. typedef long long vmid64_t;
  806. typedef long long rpn64_t;
  807. typedef long long cnt64_t;
  808. typedef long long psize_t;
  809.  
  810. typedef int32long64_t vmidx_t;
  811.  
  812. typedef uint32long64_t vmfkey_t;
  813.  
  814. typedef uint32long64_t vmprkey_t;
  815. typedef int32long64_t vmkey_t;
  816. typedef int32long64_t vmhwkey_t;
  817. typedef int vmhkey_t;
  818. typedef int32long64_t vpn_t;
  819. typedef int32long64_t rpn_t;
  820.  
  821. typedef unsigned long ptex_t;
  822. typedef unsigned long swhatx_t;
  823.  
  824. typedef uint32long64_t esid_t;
  825.  
  826. typedef ushort_t aptx_t;
  827.  
  828. typedef int pdtx_t;
  829. typedef short psx_t;
  830. typedef ushort_t pshift_t;
  831. typedef ushort_t sshift_t;
  832.  
  833.  
  834. typedef uint_t vm_mpss_t;
  835.  
  836. typedef int unidx_t;
  837. typedef int snidx_t;
  838. typedef int vmnodeidx_t;
  839.  
  840. typedef int kvpn_t;
  841. typedef int krpn_t;
  842. typedef int32long64_t vmsize_t;
  843.  
  844. typedef int32long64_t vmm_lock_t;
  845.  
  846. typedef uint_t amef_t;
  847. typedef int vmcbpx_t;
  848.  
  849. typedef uint32_t cnt32_t;
  850.  
  851. typedef unsigned long ureg_t;
  852.  
  853.  
  854.  
  855. typedef struct
  856. vmaddr_t
  857. {
  858. vmhandle_t srval;
  859. caddr_t offset;
  860. } vmaddr_t;
  861.  
  862.  
  863. typedef struct
  864. adspace_t
  865. {
  866. ulong32int64_t alloc;
  867. vmhandle_t srval[16];
  868. } adspace_t;
  869.  
  870.  
  871.  
  872. typedef struct
  873. adspace32_t
  874. {
  875. uint_t alloc;
  876. uint_t srval[16];
  877. } adspace32_t;
  878.  
  879.  
  880.  
  881. typedef enum _MR_ATTR_TYPE {
  882. BadAttr = 0,
  883. VirtAddr = 1
  884. } MR_ATTR_TYPE;
  885.  
  886. typedef enum _MR_LABEL_TYPE {
  887. BadMem = 0,
  888. FreeMem = 1,
  889. IPLCB = 2,
  890. RMALLOC = 3,
  891. PM_HEAP = 4,
  892. RTAS_HEAP = 5,
  893. TCE_TABLE = 6,
  894. IO_SPACE = 7,
  895. HUGE_PAGE = 8
  896. } MR_LABEL_TYPE;
  897.  
  898.  
  899.  
  900. typedef struct {
  901. unsigned long long mr_addr;
  902. unsigned long long mr_size;
  903. unsigned char mr_att;
  904. unsigned char mr_label;
  905. unsigned short mr_nodeid;
  906. unsigned short mr_flags;
  907. char reserved[2];
  908. } iplcb_map_reg_t;
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915. typedef vmhandle_t vmlpghandle_t;
  916.  
  917.  
  918.  
  919.  
  920. typedef struct label_t
  921. {
  922. long __opaque[25];
  923. } label_t;
  924.  
  925. typedef int32long64_t ext_t;
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933. typedef unsigned long long ptr64_t;
  934.  
  935. typedef unsigned long long __ptr64;
  936. typedef unsigned long long __cptr64;
  937.  
  938.  
  939.  
  940.  
  941. typedef ushort_t UniChar;
  942. typedef uint_t UTF32Char;
  943.  
  944.  
  945. typedef uchar_t uchar;
  946. typedef ushort_t ushort;
  947. typedef uint_t uint;
  948. typedef ulong_t ulong;
  949.  
  950. typedef struct { int r[1]; } * physadr_t;
  951. typedef physadr_t physadr;
  952.  
  953.  
  954. typedef unsigned char u_char;
  955. typedef unsigned short u_short;
  956. typedef unsigned int u_int;
  957. typedef unsigned long u_long;
  958.  
  959. typedef int swblk_t;
  960.  
  961.  
  962.  
  963. struct sigset {
  964. unsigned int losigs;
  965. unsigned int hisigs;
  966. };
  967.  
  968.  
  969. struct fsid {
  970. unsigned int val[2];
  971. };
  972.  
  973.  
  974.  
  975. struct fileid {
  976. uint_t fid_len;
  977. ino32_t fid_ino;
  978. uint_t fid_gen;
  979. char fid_x[20 - (sizeof(ino32_t) + 2) - sizeof(uint_t)];
  980. };
  981.  
  982.  
  983. struct fid {
  984. uint_t fid_len;
  985. char fid_data[20];
  986. };
  987. typedef struct fid fid_t;
  988.  
  989.  
  990. struct fhandle {
  991. char x[32];
  992. };
  993. typedef struct fhandle fhandle_t;
  994.  
  995. struct filehandle {
  996. fsid_t fh_fsid;
  997. struct fileid fh_fid;
  998. };
  999.  
  1000.  
  1001.  
  1002. struct unique_id {
  1003. __ulong32_t word1;
  1004. __ulong32_t word2;
  1005. __ulong32_t word3;
  1006. __ulong32_t word4;
  1007. };
  1008. typedef struct unique_id unique_id_t;
  1009.  
  1010.  
  1011. typedef long long offset_t;
  1012.  
  1013. typedef long long ssize64_t;
  1014.  
  1015. typedef long long longlong_t;
  1016. typedef unsigned long long u_longlong_t;
  1017.  
  1018. typedef unsigned int class_id_t;
  1019.  
  1020.  
  1021.  
  1022. typedef uint_t liobn_t;
  1023. typedef unsigned long long unit_addr_t;
  1024.  
  1025.  
  1026. typedef uint8_t eye_catch1b_t;
  1027. typedef uint16_t eye_catch2b_t;
  1028. typedef uint32_t eye_catch4b_t;
  1029. typedef uint64_t eye_catch8b_t;
  1030.  
  1031.  
  1032. typedef unsigned long eye_catch_t;
  1033.  
  1034.  
  1035. typedef unsigned long long size64_t;
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041. extern int fileno(FILE *);
  1042. extern FILE *fdopen(int,const char *);
  1043. extern char *ctermid(char *);
  1044. extern FILE *popen(const char *, const char *);
  1045. extern int pclose(FILE *);
  1046.  
  1047. extern void flockfile(FILE *);
  1048. extern void funlockfile(FILE *);
  1049. extern int fseeko(FILE *, off_t, int);
  1050. extern off_t ftello(FILE *);
  1051. extern int ftrylockfile(FILE *);
  1052. extern void funlockfile(FILE *);
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080. extern char *optarg;
  1081. extern int opterr;
  1082. extern int optind;
  1083. extern int optopt;
  1084.  
  1085.  
  1086. extern int getw(FILE *);
  1087. extern int getopt(int, char * const [], const char*);
  1088. extern char *cuserid(char *);
  1089. extern int putw(int, FILE *);
  1090. extern char *tempnam(const char*, const char*);
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233. extern unsigned int SINFINITY;
  1234. extern unsigned int _DBLINF[2];
  1235. extern unsigned int SQNAN;
  1236. extern unsigned int DQNAN[2];
  1237. extern unsigned int SSNAN;
  1238. extern unsigned int DSNAN[2];
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244. typedef unsigned short fprnd_t;
  1245.  
  1246.  
  1247. fprnd_t fp_read_rnd(void);
  1248. fprnd_t fp_swap_rnd(fprnd_t rnd);
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303. extern int fgetpos64(FILE *, fpos64_t *);
  1304. extern FILE *fopen64(const char *, const char *);
  1305. extern FILE *freopen64(const char *, const char *, FILE *);
  1306. extern int fseeko64(FILE *, off64_t, int);
  1307. extern int fsetpos64(FILE *, const fpos64_t *);
  1308. extern off64_t ftello64(FILE *);
  1309.  
  1310. extern void setbuffer(FILE *, char *, size_t);
  1311. extern void setlinebuf(FILE *);
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359. # pragma info(none)
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395. typedef struct div_t {
  1396. int quot;
  1397. int rem;
  1398. } div_t;
  1399.  
  1400. typedef struct ldiv_t {
  1401. long int quot;
  1402. long int rem;
  1403. } ldiv_t;
  1404.  
  1405.  
  1406.  
  1407. extern size_t __getmbcurmax (void);
  1408. extern int __getmaxdispwidth (void);
  1409.  
  1410.  
  1411. extern double strtod(const char * restrict, char ** restrict); extern long int strtol(const char * restrict, char ** restrict,
  1412. int);
  1413. extern unsigned long int strtoul(const char * restrict, char ** restrict, int);
  1414.  
  1415.  
  1416. extern void _Exit(int);
  1417. extern float strtof(const char * restrict, char ** restrict);
  1418.  
  1419.  
  1420.  
  1421. typedef struct lldiv_t {
  1422. long long int quot;
  1423. long long int rem ;
  1424. } lldiv_t;
  1425.  
  1426. extern long long int atoll(const char *);
  1427. extern long long int llabs( long long int );
  1428. extern lldiv_t lldiv( long long int, long long int );
  1429. extern long long int strtoll(
  1430. const char * restrict,
  1431. char ** restrict,
  1432. int );
  1433. extern unsigned long long int strtoull(
  1434. const char * restrict,
  1435. char ** restrict,
  1436. int );
  1437.  
  1438.  
  1439. static long double
  1440. strtold(const char * restrict __a, char ** restrict __b) {
  1441. return ((long double)strtod (__a, __b));
  1442. }
  1443.  
  1444.  
  1445.  
  1446. extern int mblen(const char *, size_t);
  1447. extern size_t mbstowcs(wchar_t * restrict, const char * restrict, size_t);
  1448. extern int mbtowc(wchar_t * restrict, const char * restrict, size_t);
  1449. extern size_t wcstombs(char * restrict, const wchar_t * restrict, size_t);
  1450. extern int wctomb(char *, const wchar_t);
  1451.  
  1452.  
  1453.  
  1454. extern double atof(const char *);
  1455. extern int atoi(const char *);
  1456. extern long int atol(const char *);
  1457. extern int rand(void);
  1458. extern void srand(unsigned int);
  1459. extern void *calloc(size_t, size_t);
  1460. extern void free(void *);
  1461. extern void *malloc(size_t);
  1462. extern void *realloc(void *, size_t);
  1463. extern void abort(void);
  1464. extern int atexit(void (*)(void));
  1465. extern void exit(int);
  1466. extern char *getenv(const char *);
  1467. extern int system(const char *);
  1468. extern void *bsearch(const void *, const void *, size_t, size_t, int(*)(const void *,const void *));
  1469. extern void qsort(void *, size_t, size_t, int(*)(const void *,const void *));
  1470.  
  1471.  
  1472.  
  1473. extern int abs(int);
  1474. extern struct div_t div(int, int);
  1475. extern long int labs(long int);
  1476. extern struct ldiv_t ldiv(long int, long int);
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482. extern int posix_memalign(void **,size_t,size_t);
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621. struct timeval {
  1622. time_t tv_sec;
  1623. suseconds_t tv_usec;
  1624. };
  1625.  
  1626.  
  1627. struct timeval32 {
  1628. int32_t tv_sec;
  1629. int32_t tv_usec;
  1630. };
  1631.  
  1632.  
  1633. struct timeval64 {
  1634. int64_t tv_sec;
  1635. int32_t tv_usec;
  1636. };
  1637.  
  1638.  
  1639. struct timezone {
  1640. int tz_minuteswest;
  1641. int tz_dsttime;
  1642. };
  1643.  
  1644.  
  1645.  
  1646. struct itimerval {
  1647. struct timeval it_interval;
  1648. struct timeval it_value;
  1649. };
  1650.  
  1651. extern int getitimer(int, struct itimerval *);
  1652. extern int setitimer(int, const struct itimerval *restrict, struct itimerval *restrict);
  1653. extern int gettimeofday(struct timeval *restrict, void *restrict);
  1654. extern int settimeofday(struct timeval *, struct timezone *);
  1655. extern int utimes(const char *, const struct timeval *);
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662. typedef struct
  1663. fd_set
  1664. {
  1665. long fds_bits[(65534/(sizeof(long) * 8)+1)];
  1666. } fd_set;
  1667.  
  1668.  
  1669. struct timespec {
  1670. time_t tv_sec;
  1671. long tv_nsec;
  1672. };
  1673.  
  1674. extern int pselect(int, void *restrict, void *restrict, void *restrict, const struct timespec *restrict, const sigset_t *restrict);
  1675.  
  1676.  
  1677. extern int __fd_select(int, fd_set *restrict, fd_set *restrict,
  1678. fd_set *restrict, struct timeval *restrict);
  1679. static int select(int __fds,
  1680. fd_set *restrict __readlist,
  1681. fd_set *restrict __writelist,
  1682. fd_set *restrict __exceptlist,
  1683. struct timeval *restrict __timeout)
  1684. {
  1685. return __fd_select(__fds, __readlist, __writelist,
  1686. __exceptlist, __timeout);
  1687. }
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711. struct timestruc_t {
  1712. time_t tv_sec;
  1713. suseconds_t tv_nsec;
  1714. };
  1715.  
  1716.  
  1717.  
  1718. struct timestruc32_t {
  1719. int32_t tv_sec;
  1720. int32_t tv_nsec;
  1721. };
  1722.  
  1723.  
  1724. struct timestruc64_t {
  1725. int64_t tv_sec;
  1726. int32_t tv_nsec;
  1727. };
  1728.  
  1729.  
  1730.  
  1731.  
  1732. struct itimerstruc_t {
  1733. struct timestruc_t it_interval;
  1734. struct timestruc_t it_value;
  1735. };
  1736.  
  1737.  
  1738.  
  1739. struct itimerstruc32_t {
  1740. struct timestruc32_t it_interval;
  1741. struct timestruc32_t it_value;
  1742. };
  1743.  
  1744.  
  1745. struct itimerstruc64_t {
  1746. struct timestruc64_t it_interval;
  1747. struct timestruc64_t it_value;
  1748. };
  1749.  
  1750.  
  1751.  
  1752.  
  1753. typedef struct timebasestruct {
  1754. int flag;
  1755. unsigned int tb_high;
  1756. unsigned int tb_low;
  1757. } timebasestruct_t;
  1758.  
  1759. int read_real_time(timebasestruct_t *, size_t);
  1760. int read_wall_time(timebasestruct_t *, size_t);
  1761. int time_base_to_time(timebasestruct_t *, size_t);
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791. typedef unsigned long rlim_t;
  1792. struct rlimit {
  1793. rlim_t rlim_cur;
  1794. rlim_t rlim_max;
  1795. };
  1796.  
  1797.  
  1798.  
  1799. typedef unsigned int rlim32_t;
  1800.  
  1801. struct rlimit32 {
  1802. rlim32_t rlim_cur;
  1803. rlim32_t rlim_max;
  1804. };
  1805.  
  1806.  
  1807. typedef unsigned long long rlim64_t;
  1808. struct rlimit64 {
  1809. rlim64_t rlim_cur;
  1810. rlim64_t rlim_max;
  1811. };
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819. struct rusage
  1820. {
  1821. struct timeval ru_utime;
  1822. struct timeval ru_stime;
  1823. long ru_maxrss;
  1824. long ru_ixrss;
  1825. long ru_idrss;
  1826. long ru_isrss;
  1827. long ru_minflt;
  1828. long ru_majflt;
  1829. long ru_nswap;
  1830. long ru_inblock;
  1831. long ru_oublock;
  1832. long ru_msgsnd;
  1833. long ru_msgrcv;
  1834. long ru_nsignals;
  1835. long ru_nvcsw;
  1836. long ru_nivcsw;
  1837.  
  1838. };
  1839.  
  1840.  
  1841. struct rusage32
  1842. {
  1843. struct timeval32 ru_utime;
  1844. struct timeval32 ru_stime;
  1845. signed int ru_maxrss;
  1846. signed int ru_ixrss;
  1847. signed int ru_idrss;
  1848. signed int ru_isrss;
  1849. signed int ru_minflt;
  1850. signed int ru_majflt;
  1851. signed int ru_nswap;
  1852. signed int ru_inblock;
  1853. signed int ru_oublock;
  1854. signed int ru_msgsnd;
  1855. signed int ru_msgrcv;
  1856. signed int ru_nsignals;
  1857. signed int ru_nvcsw;
  1858. signed int ru_nivcsw;
  1859. };
  1860.  
  1861.  
  1862. struct rusage64
  1863. {
  1864. struct timeval ru_utime;
  1865. struct timeval ru_stime;
  1866. long long ru_maxrss;
  1867. long long ru_ixrss;
  1868. long long ru_idrss;
  1869. long long ru_isrss;
  1870. long long ru_minflt;
  1871. long long ru_majflt;
  1872. long long ru_nswap;
  1873. long long ru_inblock;
  1874. long long ru_oublock;
  1875. long long ru_msgsnd;
  1876. long long ru_msgrcv;
  1877. long long ru_nsignals;
  1878. long long ru_nvcsw;
  1879. long long ru_nivcsw;
  1880. };
  1881.  
  1882.  
  1883. struct trusage64
  1884. {
  1885. struct timeval64 ru_utime;
  1886. struct timeval64 ru_stime;
  1887. longlong_t ru_maxrss;
  1888. longlong_t ru_ixrss;
  1889. longlong_t ru_idrss;
  1890. longlong_t ru_isrss;
  1891. longlong_t ru_minflt;
  1892. longlong_t ru_majflt;
  1893. longlong_t ru_nswap;
  1894. longlong_t ru_inblock;
  1895. longlong_t ru_oublock;
  1896. longlong_t ru_msgsnd;
  1897. longlong_t ru_msgrcv;
  1898. longlong_t ru_nsignals;
  1899. longlong_t ru_nvcsw;
  1900. longlong_t ru_nivcsw;
  1901. };
  1902.  
  1903.  
  1904. struct trusage32
  1905. {
  1906. struct timeval32 ru_utime;
  1907. struct timeval32 ru_stime;
  1908. signed int ru_maxrss;
  1909. signed int ru_ixrss;
  1910. signed int ru_idrss;
  1911. signed int ru_isrss;
  1912. signed int ru_minflt;
  1913. signed int ru_majflt;
  1914. signed int ru_nswap;
  1915. signed int ru_inblock;
  1916. signed int ru_oublock;
  1917. signed int ru_msgsnd;
  1918. signed int ru_msgrcv;
  1919. signed int ru_nsignals;
  1920. signed int ru_nvcsw;
  1921. signed int ru_nivcsw;
  1922. };
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931. extern int getpriority(int, id_t);
  1932. extern int setpriority(int, id_t, int);
  1933. extern int getrlimit(int, struct rlimit *);
  1934. extern int setrlimit(int, const struct rlimit *);
  1935.  
  1936. extern int getrlimit64(int, struct rlimit64 *);
  1937. extern int setrlimit64(int, const struct rlimit64 *);
  1938.  
  1939. extern int getrusage(int, struct rusage *);
  1940. extern int getrusage64(int, struct rusage64 *);
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979. extern void (*signal(int, void (*)(int)))(int);
  1980.  
  1981.  
  1982. extern int raise(int);
  1983.  
  1984. typedef volatile int sig_atomic_t;
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004. union sigval
  2005. {
  2006. void * sival_ptr;
  2007. int sival_int;
  2008. };
  2009.  
  2010.  
  2011.  
  2012. typedef struct {
  2013. int si_signo;
  2014. int si_errno;
  2015. int si_code;
  2016.  
  2017.  
  2018. pid_t si_pid;
  2019.  
  2020. uid_t si_uid;
  2021.  
  2022.  
  2023.  
  2024. void *si_addr;
  2025. int si_status;
  2026.  
  2027. long si_band;
  2028.  
  2029. union sigval si_value;
  2030.  
  2031. int __si_flags;
  2032. int __pad[6];
  2033.  
  2034. } siginfo_t;
  2035.  
  2036.  
  2037.  
  2038.  
  2039. struct sigaction {
  2040. union {
  2041. void (*__su_handler)(int);
  2042. void (*__su_sigaction) (int, siginfo_t *, void *);
  2043. } sa_union;
  2044. sigset_t sa_mask;
  2045. int sa_flags;
  2046. };
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174. struct
  2175. mstsave
  2176. {
  2177. struct mstsave *prev;
  2178. label_t *kjmpbuf;
  2179. char *stackfix;
  2180. char intpri;
  2181. char backt;
  2182. char rsvd[2];
  2183. pid_t curid;
  2184.  
  2185. int excp_type;
  2186. ulong_t iar;
  2187. ulong_t msr;
  2188. ulong_t cr;
  2189. ulong_t lr;
  2190. ulong_t ctr;
  2191. ulong_t xer;
  2192. ulong_t mq;
  2193. ulong_t tid;
  2194. ulong_t fpscr;
  2195. char fpeu;
  2196. char fpinfo;
  2197. uchar fpscr24_31;
  2198. char pad[1];
  2199. ulong_t except[5];
  2200. char pad1[4];
  2201. ulong_t o_iar;
  2202. ulong_t o_toc;
  2203. ulong_t o_arg1;
  2204. ulong_t excbranch;
  2205. ulong_t fpscrx;
  2206. ulong_t o_vaddr;
  2207. ulong_t cachealign[7];
  2208. adspace_t as;
  2209. ulong_t gpr[32];
  2210. double fpr[32];
  2211. };
  2212.  
  2213.  
  2214. struct mstsave32
  2215. {
  2216. __ptr32 prev;
  2217. __ptr32 kjmpbuf;
  2218. __cptr32 stackfix;
  2219. char intpri;
  2220. char backt;
  2221. char rsvd[2];
  2222. int curid;
  2223.  
  2224. int excp_type;
  2225. uint_t iar;
  2226. uint_t msr;
  2227. uint_t cr;
  2228. uint_t lr;
  2229. uint_t ctr;
  2230. uint_t xer;
  2231. uint_t mq;
  2232. uint_t tid;
  2233. uint_t fpscr;
  2234. char fpeu;
  2235. char fpinfo;
  2236. uchar_t fpscr24_31;
  2237. char pad[1];
  2238. uint_t except[5];
  2239. char pad1[4];
  2240. uint_t o_iar;
  2241. uint_t o_toc;
  2242. uint_t o_arg1;
  2243. uint_t excbranch;
  2244. uint_t fpscrx;
  2245. uint_t o_vaddr;
  2246. uint_t cachealign[7];
  2247. adspace32_t as;
  2248. uint_t gpr[32];
  2249. double fpr[32];
  2250. };
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271. extern char __pmap_stack[];
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288. typedef struct {
  2289. void *ss_sp;
  2290. size_t ss_size;
  2291.  
  2292. int ss_flags;
  2293.  
  2294. int __pad[4];
  2295.  
  2296. } stack_t;
  2297.  
  2298.  
  2299. typedef struct {
  2300. unsigned long long ss_sp;
  2301. unsigned long long ss_size;
  2302. int ss_flags;
  2303. int __pad[4];
  2304. } stack64_t;
  2305.  
  2306.  
  2307. typedef struct {
  2308. __ptr32 ss_sp;
  2309. uint_t ss_size;
  2310. int ss_flags;
  2311.  
  2312. int __pad[4];
  2313.  
  2314. } stack32_t;
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322. struct __context64 {
  2323. unsigned long long gpr[32];
  2324. unsigned long long msr;
  2325. unsigned long long iar;
  2326. unsigned long long lr;
  2327. unsigned long long ctr;
  2328. unsigned int cr;
  2329. unsigned int xer;
  2330. unsigned int fpscr;
  2331. unsigned int fpscrx;
  2332. unsigned long long except[1];
  2333. double fpr[32];
  2334. char fpeu;
  2335. char fpinfo;
  2336. char fpscr24_31;
  2337. char pad[1];
  2338. int excp_type;
  2339. };
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345. struct sigcontext64 {
  2346. int sc_onstack;
  2347. sigset64_t sc_mask;
  2348. int sc_uerror;
  2349. struct __context64 sc_context;
  2350. };
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360. typedef struct {
  2361. unsigned int __v[4];
  2362. } __vmxreg_t;
  2363.  
  2364. typedef struct __vmx_context {
  2365. __vmxreg_t __vr[32];
  2366. unsigned int __pad1[3];
  2367. unsigned int __vscr;
  2368. unsigned int __vrsave;
  2369. unsigned int __pad2[3];
  2370. } __vmx_context_t;
  2371.  
  2372.  
  2373.  
  2374. typedef struct __vsx_context {
  2375. unsigned long long __vsr_dw1[32];
  2376. } __vsx_context_t;
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.  
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390. typedef struct __extctx {
  2391. unsigned int __flags;
  2392. unsigned int __rsvd1[3];
  2393. __vmx_context_t __vmx;
  2394.  
  2395. unsigned int __ukeys[2];
  2396.  
  2397.  
  2398. __vsx_context_t __vsx;
  2399. char __reserved[(4096 - sizeof(__vmx_context_t) - (7 * sizeof(int)) - (sizeof(__vsx_context_t)))];
  2400.  
  2401.  
  2402. int __extctx_magic;
  2403.  
  2404.  
  2405.  
  2406. } __extctx_t;
  2407.  
  2408.  
  2409. struct __jmpbuf {
  2410. struct mstsave jmp_context;
  2411. };
  2412.  
  2413.  
  2414.  
  2415. struct __jmpbuf32 {
  2416. struct mstsave32 jmp_context;
  2417. };
  2418.  
  2419.  
  2420. struct __sigcontext {
  2421. int sc_onstack;
  2422. sigset_t sc_mask;
  2423. int sc_uerror;
  2424. struct __jmpbuf sc_jmpbuf;
  2425. };
  2426.  
  2427.  
  2428.  
  2429. typedef struct __jmpbuf mcontext_t;
  2430.  
  2431. typedef struct ucontext_t {
  2432. int __sc_onstack;
  2433. sigset_t uc_sigmask;
  2434. int __sc_uerror;
  2435. mcontext_t uc_mcontext;
  2436. struct ucontext_t *uc_link;
  2437.  
  2438. stack_t uc_stack;
  2439. __extctx_t *__extctx;
  2440.  
  2441. int __extctx_magic;
  2442. int __pad[2];
  2443. } ucontext_t;
  2444.  
  2445.  
  2446. typedef struct __jmpbuf32 mcontext32_t;
  2447.  
  2448. typedef struct ucontext32_t {
  2449. int __sc_onstack;
  2450. sigset32_t uc_sigmask;
  2451. int __sc_uerror;
  2452. mcontext32_t uc_mcontext;
  2453. __ptr32 uc_link;
  2454.  
  2455. stack32_t uc_stack;
  2456. __ptr32 __extctx;
  2457.  
  2458. int __extctx_magic;
  2459. int __pad[2];
  2460. } ucontext32_t;
  2461.  
  2462.  
  2463.  
  2464. struct sigstack {
  2465. void *ss_sp;
  2466. int ss_onstack;
  2467. };
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486. extern int sigmask(int);
  2487.  
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517. struct sigevent {
  2518. union sigval sigev_value;
  2519. int sigev_signo;
  2520. int sigev_notify;
  2521. void (*sigev_notify_function)(union sigval);
  2522. pthread_attr_t * sigev_notify_attributes;
  2523. };
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531. struct osigevent {
  2532. void *sevt_value;
  2533. signal_t sevt_signo;
  2534. };
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590. struct sigvec {
  2591.  
  2592.  
  2593. union {
  2594. void (*sv_handler)(int);
  2595.  
  2596. void (*sv_sigaction) (int, siginfo_t *, void *);
  2597. } sv_union;
  2598. int sv_mask;
  2599. int sv_flags;
  2600. };
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607. extern int sigblock(int);
  2608. extern int siglocalmask(int, const sigset_t *);
  2609. extern int sigvec(int, struct sigvec *, struct sigvec *);
  2610.  
  2611. extern int siggetmask(void);
  2612. extern int sigsetmask(int);
  2613.  
  2614.  
  2615.  
  2616.  
  2617. extern int kill(pid_t, int);
  2618. extern int sigprocmask(int, const sigset_t *restrict, sigset_t *restrict);
  2619. extern int sigsuspend(const sigset_t *);
  2620.  
  2621. extern int sigwait(const sigset_t *restrict, int *restrict);
  2622.  
  2623. extern int sigaction(int, const struct sigaction *restrict, struct sigaction *restrict);
  2624. extern int sigemptyset(sigset_t *);
  2625. extern int sigfillset(sigset_t *);
  2626. extern int sigaddset(sigset_t *, int);
  2627. extern int sigdelset(sigset_t *, int);
  2628. extern int sigismember(const sigset_t *, int);
  2629. extern int sigpending(sigset_t *);
  2630.  
  2631. extern void (*bsd_signal (int, void (*)(int)))(int);
  2632. extern int killpg(pid_t, int);
  2633. extern int sighold(int);
  2634. extern int sigignore(int);
  2635. extern int siginterrupt(int, int);
  2636. extern int sigpause(int);
  2637. extern int sigrelse(int);
  2638. extern void (*sigset(int, void(*)(int)))(int);
  2639. extern int sigaltstack(const stack_t *restrict, stack_t *restrict);
  2640. extern int sigstack(struct sigstack *, struct sigstack *);
  2641.  
  2642. extern int pthread_kill(pthread_t, int);
  2643. extern int pthread_sigmask(int, const sigset_t *, sigset_t *);
  2644. extern int sigqueue(pid_t, int, const union sigval);
  2645. struct timespec;
  2646. extern int sigtimedwait(const sigset_t *restrict, siginfo_t *restrict, const struct timespec *restrict);
  2647. extern int sigwaitinfo(const sigset_t *restrict, siginfo_t *restrict);
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675. typedef enum {P_ALL, P_PID, P_PGID} idtype_t;
  2676.  
  2677.  
  2678.  
  2679. extern pid_t wait(int *);
  2680. extern pid_t waitpid(pid_t, int *, int);
  2681.  
  2682.  
  2683. extern int waitid(idtype_t, id_t, siginfo_t *, int);
  2684. extern pid_t wait3(int *, int, struct rusage *);
  2685.  
  2686. extern pid_t kwaitpid(int *, pid_t, int, struct rusage *, siginfo_t *);
  2687. extern pid_t kwaitpid64(int *, pid_t, int, struct rusage64 *, siginfo_t *);
  2688. extern pid_t wait364(int *, int, struct rusage64 *);
  2689.  
  2690.  
  2691.  
  2692. extern pid_t wait4(pid_t, int *, int, struct rusage *);
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701. extern double drand48(void);
  2702. extern double erand48(unsigned short[]);
  2703. extern long jrand48(unsigned short[]);
  2704. extern void lcong48(unsigned short int *);
  2705. extern long lrand48(void);
  2706. extern long mrand48(void);
  2707. extern long nrand48(unsigned short[]);
  2708. extern unsigned short *seed48(unsigned short[]);
  2709. extern void setkey(const char *);
  2710. extern void srand48(long);
  2711. extern int putenv(char *);
  2712.  
  2713.  
  2714.  
  2715. extern int rand_r(unsigned int *);
  2716.  
  2717. extern long a64l(const char *);
  2718. extern char *ecvt(double, int, int *, int *);
  2719. extern char *fcvt(double, int, int *, int *);
  2720. extern char *gcvt(double, int, char *);
  2721. extern int getsubopt(char **, char *const *, char **);
  2722. extern int grantpt(int);
  2723. extern char *initstate(unsigned, char *, size_t);
  2724. extern char *l64a(long);
  2725. extern char *mktemp(char *);
  2726. extern int mkstemp(char *);
  2727. extern char *mkdtemp(char *);
  2728. extern int mkstemp64(char *);
  2729. extern char *ptsname(int);
  2730. extern long random(void);
  2731. extern char *realpath(const char *, char *);
  2732. extern char *setstate(const char *);
  2733. extern void srandom(unsigned);
  2734. extern int unlockpt(int);
  2735.  
  2736. extern int posix_openpt (int);
  2737. extern int setenv (const char *, const char *, int);
  2738. extern int unsetenv (const char *);
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776. struct __LC_locale;
  2777. struct _LC_locale_objhdl;
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.  
  2821.  
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840. typedef struct {
  2841.  
  2842. unsigned short
  2843. __type_id,
  2844. __magic;
  2845. unsigned long
  2846. __version;
  2847.  
  2848. size_t __size;
  2849.  
  2850. } _LC_object_t;
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866. typedef struct {
  2867.  
  2868. _LC_object_t __hdr;
  2869.  
  2870.  
  2871.  
  2872. int __catgets;
  2873. int __catclose;
  2874.  
  2875.  
  2876. int __compress;
  2877. int __decompress;
  2878. int __start_compress;
  2879. int __end_compress;
  2880.  
  2881.  
  2882. int __init;
  2883. void *__data;
  2884. } _LC_core_car_t;
  2885.  
  2886. typedef struct {
  2887.  
  2888. _LC_object_t __hdr;
  2889.  
  2890.  
  2891. int __nl_langinfo;
  2892.  
  2893.  
  2894. int __mbtowc;
  2895. int __mbstowcs;
  2896. int __wctomb;
  2897. int __wcstombs;
  2898.  
  2899.  
  2900. int __mblen;
  2901.  
  2902.  
  2903. int __wcswidth;
  2904. int __wcwidth;
  2905.  
  2906.  
  2907. int __mbtopc;
  2908. int __mbstopcs;
  2909. int __pctomb;
  2910. int __pcstombs;
  2911.  
  2912.  
  2913. int __csid;
  2914. int __wcsid;
  2915.  
  2916.  
  2917. int __init;
  2918. void *__data;
  2919. } _LC_core_charmap_t;
  2920.  
  2921.  
  2922. typedef struct {
  2923.  
  2924. _LC_object_t __hdr;
  2925.  
  2926.  
  2927. int __towupper;
  2928. int __towlower;
  2929.  
  2930.  
  2931. int __get_wctype;
  2932. int __is_wctype;
  2933.  
  2934.  
  2935. int __init;
  2936. void *__data;
  2937. } _LC_core_ctype_t;
  2938.  
  2939. typedef struct {
  2940.  
  2941. _LC_object_t __hdr;
  2942.  
  2943.  
  2944. int __strcoll;
  2945. int __strxfrm;
  2946.  
  2947.  
  2948. int __wcscoll;
  2949. int __wcsxfrm;
  2950.  
  2951.  
  2952. int __fnmatch;
  2953.  
  2954.  
  2955. int __regcomp;
  2956. int __regerror;
  2957. int __regexec;
  2958. int __regfree;
  2959.  
  2960.  
  2961. int __init;
  2962. void *__data;
  2963. } _LC_core_collate_t;
  2964.  
  2965.  
  2966. typedef struct {
  2967.  
  2968. _LC_object_t __hdr;
  2969.  
  2970.  
  2971. int __nl_langinfo;
  2972.  
  2973.  
  2974. int __strftime;
  2975. int __strptime;
  2976.  
  2977.  
  2978. int __wcsftime;
  2979.  
  2980.  
  2981. int __init;
  2982. void *__data;
  2983. } _LC_core_time_t;
  2984.  
  2985.  
  2986. typedef struct {
  2987.  
  2988. _LC_object_t __hdr;
  2989.  
  2990.  
  2991. int __nl_langinfo;
  2992.  
  2993.  
  2994. int __strfmon;
  2995.  
  2996.  
  2997. int __init;
  2998. void *__data;
  2999. } _LC_core_monetary_t;
  3000.  
  3001.  
  3002. typedef struct {
  3003.  
  3004. _LC_object_t __hdr;
  3005.  
  3006.  
  3007. int __nl_langinfo;
  3008.  
  3009.  
  3010. int __init;
  3011. void *__data;
  3012. } _LC_core_numeric_t;
  3013.  
  3014.  
  3015. typedef struct {
  3016.  
  3017. _LC_object_t __hdr;
  3018.  
  3019.  
  3020. int __nl_langinfo;
  3021.  
  3022.  
  3023. int __rpmatch;
  3024.  
  3025.  
  3026. int __init;
  3027. void *__data;
  3028. } _LC_core_resp_t;
  3029.  
  3030. typedef struct {
  3031.  
  3032. _LC_object_t __hdr;
  3033.  
  3034.  
  3035. int __nl_langinfo;
  3036. int __localeconv;
  3037.  
  3038.  
  3039. int __init;
  3040. void *__data;
  3041. } _LC_core_locale_t;
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073. struct lconv {
  3074. char *decimal_point;
  3075. char *thousands_sep;
  3076. char *grouping;
  3077. char *int_curr_symbol;
  3078. char *currency_symbol;
  3079. char *mon_decimal_point;
  3080. char *mon_thousands_sep;
  3081. char *mon_grouping;
  3082. char *positive_sign;
  3083. char *negative_sign;
  3084. char int_frac_digits;
  3085. char frac_digits;
  3086. char p_cs_precedes;
  3087. char p_sep_by_space;
  3088. char n_cs_precedes;
  3089. char n_sep_by_space;
  3090. char p_sign_posn;
  3091. char n_sign_posn;
  3092.  
  3093. char *left_parenthesis;
  3094. char *right_parenthesis;
  3095.  
  3096. char int_p_cs_precedes;
  3097. char int_p_sep_by_space;
  3098. char int_n_cs_precedes;
  3099. char int_n_sep_by_space;
  3100. char int_p_sign_posn;
  3101. char int_n_sign_posn;
  3102. } ;
  3103.  
  3104.  
  3105.  
  3106.  
  3107. typedef void* locale_t;
  3108.  
  3109.  
  3110.  
  3111. struct lconv *localeconv(void);
  3112. char *setlocale(int, const char *);
  3113. locale_t newlocale(int, const char *, locale_t);
  3114. locale_t duplocale(locale_t);
  3115. locale_t uselocale(locale_t);
  3116. void freelocale(locale_t);
  3117.  
  3118.  
  3119.  
  3120. typedef struct lconv lconv;
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145. typedef struct coldesc {
  3146. short cd_stroff;
  3147. short cd_repoff;
  3148. short cd_cval;
  3149. short cd_cuniq;
  3150. } coldesc_t;
  3151.  
  3152.  
  3153. typedef struct collation_table {
  3154. short lc_version;
  3155. short lc_length;
  3156. char *lc_locale_name;
  3157. int len_collate;
  3158. short *lc_collate;
  3159. int len_coluniq;
  3160. short *lc_coluniq;
  3161. int len_coldesc;
  3162. coldesc_t *lc_coldesc;
  3163. int len_strings;
  3164. wchar_t *lc_strings;
  3165. int high_cvalue;
  3166. } col_t;
  3167.  
  3168.  
  3169.  
  3170. typedef struct char_classification_table {
  3171. short lc_version;
  3172. short lc_length;
  3173. short lc_code_type;
  3174. short mb_cur_max;
  3175. short mb_cur_min;
  3176. short lc_dsp_width;
  3177. char *lc_locale_name;
  3178. int len_caseconv;
  3179. wchar_t *lc_caseconv;
  3180. int len_ctype;
  3181. unsigned short *lc_ctype;
  3182. } ctype_t;
  3183.  
  3184.  
  3185. typedef struct lc_monetary_table {
  3186. short lc_version;
  3187. short lc_length;
  3188. char *lc_locale_name;
  3189. char *int_curr_symbol;
  3190. char *currency_symbol;
  3191. char *mon_decimal_point;
  3192. char *mon_thousands_sep;
  3193. char *mon_grouping;
  3194. char *positive_sign;
  3195. char *negative_sign;
  3196. char int_frac_digits;
  3197. char frac_digits;
  3198. char p_cs_precedes;
  3199. char p_sep_by_space;
  3200. char n_cs_precedes;
  3201. char n_sep_by_space;
  3202. char p_sign_posn;
  3203. char n_sign_posn;
  3204. } mon_t;
  3205.  
  3206.  
  3207. typedef struct numeric_table {
  3208. short lc_version;
  3209. short lc_length;
  3210. char *lc_locale_name;
  3211. char *decimal_point;
  3212. char *thousands_sep;
  3213. char *grouping;
  3214. } num_t;
  3215.  
  3216.  
  3217. typedef struct lc_messages_table {
  3218. short lc_version;
  3219. short lc_length;
  3220. char *lc_locale_name;
  3221. char *messages;
  3222. char *yes_string;
  3223. char *no_string;
  3224. } msg_t;
  3225.  
  3226.  
  3227. typedef struct lc_time_table {
  3228. short lc_version;
  3229. short lc_length;
  3230. char *lc_locale_name;
  3231. char *t_fmt;
  3232. char *d_fmt;
  3233. char *nlldate;
  3234. char *d_t_fmt;
  3235. char *abday;
  3236. char *day;
  3237. char *abmon;
  3238. char *mon;
  3239.  
  3240. char *misc;
  3241. char *tstrs;
  3242. char *tunits;
  3243.  
  3244. char *year;
  3245. char *am_pm;
  3246. } tim_t;
  3247.  
  3248.  
  3249.  
  3250. typedef struct wchar_mapping_table {
  3251. short lc_version;
  3252. short lc_length;
  3253. char *lc_identifier;
  3254. } map_t;
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260. typedef struct localeinfo_table {
  3261. char lc_mag0, lc_mag1;
  3262. short lc_version;
  3263. short lc_code_type;
  3264. short lc_length;
  3265. col_t *lc_coltbl;
  3266. ctype_t *lc_chrtbl;
  3267. mon_t *lc_montbl;
  3268. num_t *lc_numtbl;
  3269. tim_t *lc_timtbl;
  3270. msg_t *lc_msgtbl;
  3271. map_t *lc_maptbl;
  3272. } loc_t;
  3273.  
  3274.  
  3275.  
  3276.  
  3277. typedef struct {
  3278.  
  3279. _LC_core_charmap_t core;
  3280.  
  3281. char *cm_csname;
  3282.  
  3283. size_t cm_mb_cur_max;
  3284. size_t cm_mb_cur_min;
  3285.  
  3286. unsigned char
  3287. cm_max_disp_width;
  3288.  
  3289.  
  3290. unsigned
  3291. char *cm_cstab;
  3292.  
  3293. struct __LC_locale
  3294. *loc_rec;
  3295.  
  3296. void *__meth_ptr;
  3297. void *__data_ptr;
  3298.  
  3299. } _LC_charmap_t;
  3300.  
  3301. typedef struct _LC_charmap_objhdl _LC_charmap_objhdl_t;
  3302.  
  3303. struct _LC_charmap_objhdl {
  3304. _LC_charmap_t *obj;
  3305.  
  3306. void *(**meth)();
  3307.  
  3308. struct _LC_locale_objhdl *loc_hdl;
  3309.  
  3310.  
  3311. };
  3312.  
  3313.  
  3314.  
  3315. typedef struct {
  3316.  
  3317. _LC_core_monetary_t core;
  3318.  
  3319. char *int_curr_symbol;
  3320. char *currency_symbol;
  3321. char *mon_decimal_point;
  3322. char *mon_thousands_sep;
  3323. char *mon_grouping;
  3324. char *positive_sign;
  3325. char *negative_sign;
  3326. signed char int_frac_digits;
  3327. signed char frac_digits;
  3328. signed char p_cs_precedes;
  3329. signed char p_sep_by_space;
  3330. signed char n_cs_precedes;
  3331. signed char n_sep_by_space;
  3332. signed char p_sign_posn;
  3333. signed char n_sign_posn;
  3334. char *debit_sign;
  3335. char *credit_sign;
  3336. char *left_parenthesis;
  3337. char *right_parenthesis;
  3338.  
  3339. struct __LC_locale
  3340. *loc_rec;
  3341.  
  3342. void *__meth_ptr;
  3343. void *__data_ptr;
  3344.  
  3345. signed char int_p_cs_precedes;
  3346. signed char int_p_sep_by_space;
  3347. signed char int_n_cs_precedes;
  3348. signed char int_n_sep_by_space;
  3349. signed char int_p_sign_posn;
  3350. signed char int_n_sign_posn;
  3351.  
  3352. } _LC_monetary_t;
  3353.  
  3354. typedef struct _LC_monetary_objhdl _LC_monetary_objhdl_t;
  3355. struct _LC_monetary_objhdl {
  3356. _LC_monetary_t *obj;
  3357.  
  3358. void *(**meth)();
  3359.  
  3360. struct _LC_locale_objhdl *loc_hdl;
  3361.  
  3362.  
  3363. };
  3364.  
  3365.  
  3366. typedef struct {
  3367.  
  3368. _LC_core_numeric_t core;
  3369.  
  3370. char *decimal_point;
  3371. char *thousands_sep;
  3372. char *grouping;
  3373.  
  3374. struct __LC_locale
  3375. *loc_rec;
  3376.  
  3377. void *__meth_ptr;
  3378. void *__data_ptr;
  3379.  
  3380. } _LC_numeric_t;
  3381.  
  3382. typedef struct _LC_numeric_objhdl _LC_numeric_objhdl_t;
  3383. struct _LC_numeric_objhdl {
  3384. _LC_numeric_t *obj;
  3385.  
  3386. void *(**meth)();
  3387.  
  3388. struct _LC_locale_objhdl *loc_hdl;
  3389.  
  3390.  
  3391. };
  3392.  
  3393.  
  3394.  
  3395. typedef struct {
  3396.  
  3397. _LC_core_resp_t core;
  3398.  
  3399. char *yesexpr;
  3400. char *noexpr;
  3401. char *yesstr;
  3402. char *nostr;
  3403.  
  3404. struct __LC_locale
  3405. *loc_rec;
  3406.  
  3407. void *__meth_ptr;
  3408. void *__data_ptr;
  3409.  
  3410. } _LC_resp_t;
  3411.  
  3412. typedef struct _LC_resp_objhdl _LC_resp_objhdl_t;
  3413. struct _LC_resp_objhdl {
  3414. _LC_resp_t *obj;
  3415.  
  3416. void *(**meth)();
  3417.  
  3418. struct _LC_locale_objhdl *loc_hdl;
  3419.  
  3420.  
  3421. };
  3422.  
  3423.  
  3424.  
  3425. typedef struct {
  3426.  
  3427. _LC_core_time_t core;
  3428.  
  3429. char *d_fmt;
  3430. char *t_fmt;
  3431. char *d_t_fmt;
  3432. char *t_fmt_ampm;
  3433. char *abday[7];
  3434. char *day[7];
  3435. char *abmon[12];
  3436. char *mon[12];
  3437. char *am_pm[2];
  3438. char *era;
  3439. char *era_year;
  3440. char *era_d_fmt;
  3441. char *alt_digits;
  3442. char *era_d_t_fmt;
  3443. char *era_t_fmt;
  3444.  
  3445. struct __LC_locale
  3446. *loc_rec;
  3447.  
  3448. void *__meth_ptr;
  3449. void *__data_ptr;
  3450.  
  3451. } _LC_time_t;
  3452.  
  3453. typedef struct _LC_time_objhdl _LC_time_objhdl_t;
  3454. struct _LC_time_objhdl {
  3455. _LC_time_t *obj;
  3456.  
  3457. void *(**meth)();
  3458.  
  3459. struct _LC_locale_objhdl *loc_hdl;
  3460.  
  3461.  
  3462. };
  3463.  
  3464.  
  3465.  
  3466. typedef struct {
  3467. unsigned
  3468. short n[4+1];
  3469. } _LC_weight_t;
  3470.  
  3471.  
  3472.  
  3473. typedef struct {
  3474.  
  3475. char *ce_sym;
  3476. _LC_weight_t ce_wgt;
  3477.  
  3478. } _LC_collel_t;
  3479.  
  3480.  
  3481.  
  3482. typedef struct {
  3483. _LC_weight_t ct_wgt;
  3484.  
  3485.  
  3486. _LC_collel_t *ct_collel;
  3487.  
  3488. } _LC_coltbl_t;
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  
  3497. typedef struct {
  3498. char *tgt_wgt_str[4+1];
  3499.  
  3500.  
  3501. } _LC_subs_t;
  3502.  
  3503.  
  3504.  
  3505. typedef struct {
  3506.  
  3507. _LC_core_collate_t core;
  3508.  
  3509. unsigned
  3510. char co_nord;
  3511.  
  3512. _LC_weight_t co_sort;
  3513.  
  3514.  
  3515. wchar_t co_wc_min;
  3516. wchar_t co_wc_max;
  3517.  
  3518. wchar_t co_col_min;
  3519. wchar_t co_col_max;
  3520.  
  3521. _LC_coltbl_t *co_coltbl;
  3522.  
  3523. unsigned
  3524. int co_nsubs;
  3525. _LC_subs_t *co_subs;
  3526.  
  3527. unsigned
  3528. short co_special;
  3529.  
  3530.  
  3531.  
  3532.  
  3533. struct __LC_locale
  3534. *loc_rec;
  3535.  
  3536. void *__meth_ptr;
  3537. void *__data_ptr;
  3538.  
  3539. } _LC_collate_t;
  3540.  
  3541. typedef struct _LC_collate_objhdl _LC_collate_objhdl_t;
  3542. struct _LC_collate_objhdl {
  3543. _LC_collate_t *obj;
  3544.  
  3545. void *(**meth)();
  3546.  
  3547. struct _LC_locale_objhdl *loc_hdl;
  3548.  
  3549.  
  3550. };
  3551.  
  3552.  
  3553.  
  3554.  
  3555. typedef struct {
  3556.  
  3557. char *name;
  3558. unsigned
  3559. int mask;
  3560.  
  3561. } _LC_classnm_t;
  3562.  
  3563.  
  3564.  
  3565. typedef struct {
  3566.  
  3567. _LC_core_ctype_t core;
  3568.  
  3569.  
  3570. wchar_t min_wc;
  3571. wchar_t max_wc;
  3572.  
  3573.  
  3574. wchar_t *upper;
  3575. wchar_t *lower;
  3576.  
  3577.  
  3578. unsigned
  3579. int *mask;
  3580. unsigned
  3581. int *qmask;
  3582. unsigned
  3583. char *qidx;
  3584.  
  3585.  
  3586. unsigned
  3587. char nclasses;
  3588. _LC_classnm_t *classnms;
  3589.  
  3590. struct __LC_locale
  3591. *loc_rec;
  3592.  
  3593. void *__meth_ptr;
  3594. void *__data_ptr;
  3595.  
  3596. } _LC_ctype_t;
  3597.  
  3598. typedef struct _LC_ctype_objhdl _LC_ctype_objhdl_t;
  3599. struct _LC_ctype_objhdl {
  3600. _LC_ctype_t *obj;
  3601.  
  3602. void *(**meth)();
  3603.  
  3604. struct _LC_locale_objhdl *loc_hdl;
  3605.  
  3606.  
  3607. };
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614. typedef struct __LC_locale {
  3615.  
  3616. _LC_core_locale_t core;
  3617.  
  3618. char *nl_info[63];
  3619. struct lconv *nl_lconv;
  3620.  
  3621. _LC_charmap_objhdl_t lc_charmap;
  3622. _LC_collate_objhdl_t lc_collate;
  3623. _LC_ctype_objhdl_t lc_ctype;
  3624. _LC_monetary_objhdl_t lc_monetary;
  3625. _LC_numeric_objhdl_t lc_numeric;
  3626. _LC_resp_objhdl_t lc_resp;
  3627. _LC_time_objhdl_t lc_time;
  3628.  
  3629. struct __LC_locale *loc_rec;
  3630.  
  3631.  
  3632. void *__meth_ptr;
  3633. void *__data_ptr;
  3634.  
  3635. char *__nl_yesstr;
  3636. char *__nl_nostr;
  3637. char *__nl_crncystr;
  3638.  
  3639. } _LC_locale_t;
  3640.  
  3641. typedef struct _LC_locale_objhdl _LC_locale_objhdl_t;
  3642. struct _LC_locale_objhdl {
  3643. _LC_locale_t *obj;
  3644.  
  3645. void *(**meth)();
  3646.  
  3647. struct _LC_locale_objhdl *loc_hdl;
  3648.  
  3649.  
  3650. };
  3651.  
  3652.  
  3653.  
  3654. typedef struct _LC_object_handle _LC_object_handle_t;
  3655. struct _LC_object_handle {
  3656. union {
  3657. _LC_object_t lc_object;
  3658. _LC_locale_objhdl_t lc_locale;
  3659. _LC_charmap_objhdl_t lc_charmap;
  3660. _LC_collate_objhdl_t lc_collate;
  3661. _LC_ctype_objhdl_t lc_ctype;
  3662. _LC_monetary_objhdl_t lc_monetary;
  3663. _LC_numeric_objhdl_t lc_numeric;
  3664. _LC_resp_objhdl_t lc_resp;
  3665. _LC_time_objhdl_t lc_time;
  3666. } obj;
  3667.  
  3668. void *(**meth)();
  3669.  
  3670. struct _LC_locale_objhdl *loc_hdl;
  3671.  
  3672.  
  3673. };
  3674.  
  3675.  
  3676. typedef struct {
  3677. _LC_object_t hdr;
  3678. _LC_locale_objhdl_t handle;
  3679. } _LC_load_object_t;
  3680.  
  3681.  
  3682.  
  3683.  
  3684. typedef struct _LC_thread_locale {
  3685. _LC_charmap_objhdl_t *__lc_charmap_ptr;
  3686. _LC_collate_objhdl_t *__lc_collate_ptr;
  3687. _LC_ctype_objhdl_t *__lc_ctype_ptr;
  3688. _LC_monetary_objhdl_t *__lc_monetary_ptr;
  3689. _LC_numeric_objhdl_t *__lc_numeric_ptr;
  3690. _LC_resp_objhdl_t *__lc_resp_ptr;
  3691. _LC_time_objhdl_t *__lc_time_ptr;
  3692. _LC_locale_objhdl_t *__lc_locale_ptr;
  3693. int __lc_isiso1;
  3694.  
  3695. } _LC_thread_locale_t;
  3696.  
  3697. typedef _LC_thread_locale_t* __locale_t;
  3698. extern locale_t cur_locale;
  3699.  
  3700.  
  3701.  
  3702. extern _LC_charmap_objhdl_t *__lc_charmap_ptr;
  3703. extern _LC_collate_objhdl_t *__lc_collate_ptr;
  3704. extern _LC_ctype_objhdl_t *__lc_ctype_ptr;
  3705. extern _LC_monetary_objhdl_t *__lc_monetary_ptr;
  3706. extern _LC_numeric_objhdl_t *__lc_numeric_ptr;
  3707. extern _LC_resp_objhdl_t *__lc_resp_ptr;
  3708. extern _LC_time_objhdl_t *__lc_time_ptr;
  3709. extern _LC_locale_objhdl_t *__lc_locale_ptr;
  3710.  
  3711.  
  3712. extern _LC_charmap_objhdl_t __lc_charmap;
  3713. extern _LC_collate_objhdl_t __lc_collate;
  3714. extern _LC_ctype_objhdl_t __lc_ctype;
  3715. extern _LC_monetary_objhdl_t __lc_monetary;
  3716. extern _LC_numeric_objhdl_t __lc_numeric;
  3717. extern _LC_resp_objhdl_t __lc_resp;
  3718. extern _LC_time_objhdl_t __lc_time;
  3719. extern _LC_locale_objhdl_t __lc_locale;
  3720.  
  3721. extern _LC_charmap_objhdl_t *__get_lc_charmap_ptr();
  3722. extern _LC_collate_objhdl_t *__get_lc_collate_ptr();
  3723. extern _LC_ctype_objhdl_t *__get_lc_ctype_ptr();
  3724. extern _LC_monetary_objhdl_t *__get_lc_monetary_ptr();
  3725. extern _LC_numeric_objhdl_t *__get_lc_numeric_ptr();
  3726. extern _LC_resp_objhdl_t *__get_lc_resp_ptr();
  3727. extern _LC_time_objhdl_t *__get_lc_time_ptr();
  3728. extern _LC_locale_objhdl_t *__get_lc_locale_ptr();
  3729. extern int __get_lc_isiso1();
  3730.  
  3731. extern int __n_pthreads;
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744. extern char *optarg;
  3745. extern int optind;
  3746. extern int opterr;
  3747.  
  3748.  
  3749.  
  3750.  
  3751. extern float atoff(char *);
  3752. extern void imul_dbl(long, long, long *);
  3753. extern void umul_dbl(unsigned long, unsigned long, unsigned long *);
  3754. extern int on_exit(void (*)(int, void *), void *);
  3755. extern int unatexit(void (*)(void));
  3756.  
  3757.  
  3758. extern double wcstod(const wchar_t *, wchar_t **);
  3759. extern long int wcstol(const wchar_t *, wchar_t **, int);
  3760. extern unsigned long int wcstoul(const wchar_t *, wchar_t **, int);
  3761.  
  3762. extern int rpmatch(const char *);
  3763. extern int clearenv(void);
  3764. extern int getopt(int, char* const*, const char*);
  3765. extern char *getpass(const char *);
  3766. extern int ttyslot(void);
  3767. extern void *valloc(size_t);
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774. extern void *vec_malloc(size_t);
  3775. extern void *vec_calloc(size_t, size_t);
  3776.  
  3777.  
  3778.  
  3779.  
  3780.  
  3781.  
  3782.  
  3783.  
  3784.  
  3785.  
  3786. # pragma info(restore)
  3787.  
  3788.  
  3789.  
  3790.  
  3791.  
  3792.  
  3793.  
  3794.  
  3795.  
  3796.  
  3797.  
  3798.  
  3799.  
  3800.  
  3801.  
  3802.  
  3803.  
  3804.  
  3805. # pragma info(none)
  3806.  
  3807.  
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.  
  3842. extern void *memchr(const void *, int, size_t);
  3843. extern void *memcpy(void * restrict, const void * restrict, size_t);
  3844. extern void *memset(void *, int, size_t);
  3845. extern size_t strcspn(const char *, const char *);
  3846. extern size_t strlen(const char *);
  3847. extern size_t strspn(const char *, const char *);
  3848.  
  3849.  
  3850. extern char *strchr(const char *, int);
  3851. extern char *strpbrk(const char *, const char *);
  3852. extern char *strrchr(const char *, int);
  3853. extern char *strstr(const char *, const char *);
  3854.  
  3855. extern void *memmove(void *, const void *, size_t);
  3856. extern char *strcpy(char * restrict, const char * restrict);
  3857. extern char *strncpy(char * restrict, const char * restrict, size_t);
  3858. extern char *strcat(char * restrict, const char * restrict);
  3859. extern char *strncat(char * restrict, const char * restrict, size_t);
  3860. extern int memcmp(const void *, const void *,size_t);
  3861. extern int strcmp(const char *, const char *);
  3862. extern int strncmp(const char *,const char *,size_t);
  3863. extern int strncollen(const char *, const int );
  3864. extern char *strtok(char * restrict, const char * restrict);
  3865. extern char *strerror(int);
  3866. extern int strcoll(const char *, const char *);
  3867. extern size_t strxfrm(char * restrict, const char * restrict, size_t);
  3868. extern int strcoll_l(const char *, const char *, locale_t);
  3869. extern size_t strxfrm_l(char * restrict, const char * restrict, size_t, locale_t);
  3870. extern char *strtok_r(char *, const char *, char **);
  3871. extern int strerror_r(int, char *, size_t);
  3872.  
  3873.  
  3874. extern void *memccpy(void * restrict, const void * restrict, int, size_t);
  3875.  
  3876.  
  3877.  
  3878. extern char *strdup(const char *);
  3879.  
  3880.  
  3881.  
  3882.  
  3883. extern wchar_t *wcschr(const wchar_t *, wchar_t);
  3884. extern wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
  3885. extern wchar_t *wcsrchr(const wchar_t *, wchar_t);
  3886. extern char *index(const char *, int);
  3887. extern char *rindex(const char *, int);
  3888. extern void swab(const void *, void *, ssize_t);
  3889. extern wchar_t *wcscat(wchar_t *, const wchar_t *);
  3890. extern int wcscmp(const wchar_t *, const wchar_t *);
  3891. extern wchar_t *wcscpy(wchar_t *, const wchar_t *);
  3892. extern size_t wcscspn(const wchar_t *, const wchar_t *);
  3893. extern size_t wcslen(const wchar_t *);
  3894. extern wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t);
  3895. extern int wcsncmp(const wchar_t *, const wchar_t *, size_t);
  3896. extern wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t);
  3897. extern size_t wcsspn(const wchar_t *, const wchar_t *);
  3898. extern wchar_t *wcswcs(const wchar_t *, const wchar_t *);
  3899. extern int wcswidth(const wchar_t *, size_t);
  3900. extern int wcwidth(wchar_t);
  3901. extern int wcscoll(const wchar_t *, const wchar_t *);
  3902. extern size_t wcsxfrm(wchar_t *, const wchar_t *, size_t);
  3903. extern int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
  3904. extern size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t, locale_t);
  3905. extern char *__linux_strerror_r(int, char *, size_t);
  3906. extern char * strndup(const char *, size_t);
  3907. extern size_t strnlen(const char *, size_t);
  3908. extern char * strsep(char **, const char *);
  3909. extern void * memmem(const void *, size_t, const void *, size_t);
  3910. extern char * stpcpy(char *, const char *);
  3911. extern char * stpncpy(char *, const char *, size_t);
  3912. extern char * strsignal(int);
  3913. extern int strcasecmp(const char *, const char *);
  3914. extern int strncasecmp(const char *, const char *, size_t);
  3915.  
  3916.  
  3917.  
  3918.  
  3919.  
  3920.  
  3921.  
  3922.  
  3923.  
  3924.  
  3925.  
  3926.  
  3927.  
  3928.  
  3929. # pragma info(restore)
  3930.  
  3931.  
  3932.  
  3933.  
  3934.  
  3935.  
  3936.  
  3937.  
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.  
  3968.  
  3969.  
  3970.  
  3971.  
  3972.  
  3973.  
  3974.  
  3975.  
  3976.  
  3977.  
  3978.  
  3979.  
  3980.  
  3981.  
  3982.  
  3983.  
  3984.  
  3985.  
  3986.  
  3987.  
  3988. struct crypto_aes_key;
  3989.  
  3990.  
  3991. struct crypto_aes_key * crypto_aes_key_expand(const uint8_t *, size_t);
  3992.  
  3993.  
  3994. void crypto_aes_encrypt_block(const uint8_t *, uint8_t *,
  3995. const struct crypto_aes_key *);
  3996.  
  3997.  
  3998. void crypto_aes_key_free(struct crypto_aes_key *);
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.  
  4035.  
  4036.  
  4037.  
  4038. struct crypto_aes_key;
  4039.  
  4040.  
  4041. struct crypto_aesctr * crypto_aesctr_init(const struct crypto_aes_key *,
  4042. uint64_t);
  4043.  
  4044.  
  4045. void crypto_aesctr_stream(struct crypto_aesctr *, const uint8_t *,
  4046. uint8_t *, size_t);
  4047.  
  4048.  
  4049. void crypto_aesctr_free(struct crypto_aesctr *);
  4050.  
  4051.  
  4052. void crypto_aesctr_buf(const struct crypto_aes_key *, uint64_t,
  4053. const uint8_t *, uint8_t *, size_t);
  4054.  
  4055.  
  4056.  
  4057.  
  4058.  
  4059.  
  4060.  
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093. uint8_t crypto_verify_bytes(const uint8_t *, const uint8_t *, size_t);
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.  
  4100.  
  4101.  
  4102.  
  4103.  
  4104.  
  4105.  
  4106.  
  4107.  
  4108.  
  4109.  
  4110.  
  4111.  
  4112.  
  4113.  
  4114.  
  4115.  
  4116.  
  4117.  
  4118.  
  4119.  
  4120.  
  4121.  
  4122.  
  4123.  
  4124.  
  4125.  
  4126.  
  4127.  
  4128.  
  4129.  
  4130.  
  4131.  
  4132.  
  4133.  
  4134.  
  4135. typedef struct {
  4136. uint32_t state[8];
  4137. uint64_t count;
  4138. uint8_t buf[64];
  4139. } libcperciva_SHA256_CTX;
  4140.  
  4141.  
  4142. void libcperciva_SHA256_Init(libcperciva_SHA256_CTX *);
  4143.  
  4144.  
  4145. void libcperciva_SHA256_Update(libcperciva_SHA256_CTX *, const void *, size_t);
  4146.  
  4147.  
  4148. void libcperciva_SHA256_Final(uint8_t[32], libcperciva_SHA256_CTX *);
  4149.  
  4150.  
  4151. void libcperciva_SHA256_Buf(const void *, size_t, uint8_t[32]);
  4152.  
  4153.  
  4154. typedef struct {
  4155. libcperciva_SHA256_CTX ictx;
  4156. libcperciva_SHA256_CTX octx;
  4157. } libcperciva_HMAC_SHA256_CTX;
  4158.  
  4159.  
  4160. void libcperciva_HMAC_SHA256_Init(libcperciva_HMAC_SHA256_CTX *, const void *, size_t);
  4161.  
  4162.  
  4163. void libcperciva_HMAC_SHA256_Update(libcperciva_HMAC_SHA256_CTX *, const void *, size_t);
  4164.  
  4165.  
  4166. void libcperciva_HMAC_SHA256_Final(uint8_t[32], libcperciva_HMAC_SHA256_CTX *);
  4167.  
  4168.  
  4169. void libcperciva_HMAC_SHA256_Buf(const void *, size_t, const void *, size_t, uint8_t[32]);
  4170.  
  4171.  
  4172. void PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t,
  4173. uint64_t, uint8_t *, size_t);
  4174.  
  4175.  
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196. static inline uint16_t
  4197. libcperciva_be16dec(const void * pp)
  4198. {
  4199. const uint8_t * p = (uint8_t const *)pp;
  4200.  
  4201. return ((uint16_t)(p[1]) + ((uint16_t)(p[0]) << 8));
  4202. }
  4203.  
  4204. static inline void
  4205. libcperciva_be16enc(void * pp, uint16_t x)
  4206. {
  4207. uint8_t * p = (uint8_t *)pp;
  4208.  
  4209. p[1] = x & 0xff;
  4210. p[0] = (x >> 8) & 0xff;
  4211. }
  4212.  
  4213. static inline uint32_t
  4214. libcperciva_be32dec(const void * pp)
  4215. {
  4216. const uint8_t * p = (uint8_t const *)pp;
  4217.  
  4218. return ((uint32_t)(p[3]) + ((uint32_t)(p[2]) << 8) +
  4219. ((uint32_t)(p[1]) << 16) + ((uint32_t)(p[0]) << 24));
  4220. }
  4221.  
  4222. static inline void
  4223. libcperciva_be32enc(void * pp, uint32_t x)
  4224. {
  4225. uint8_t * p = (uint8_t *)pp;
  4226.  
  4227. p[3] = x & 0xff;
  4228. p[2] = (x >> 8) & 0xff;
  4229. p[1] = (x >> 16) & 0xff;
  4230. p[0] = (x >> 24) & 0xff;
  4231. }
  4232.  
  4233. static inline uint64_t
  4234. libcperciva_be64dec(const void * pp)
  4235. {
  4236. const uint8_t * p = (uint8_t const *)pp;
  4237.  
  4238. return ((uint64_t)(p[7]) + ((uint64_t)(p[6]) << 8) +
  4239. ((uint64_t)(p[5]) << 16) + ((uint64_t)(p[4]) << 24) +
  4240. ((uint64_t)(p[3]) << 32) + ((uint64_t)(p[2]) << 40) +
  4241. ((uint64_t)(p[1]) << 48) + ((uint64_t)(p[0]) << 56));
  4242. }
  4243.  
  4244. static inline void
  4245. libcperciva_be64enc(void * pp, uint64_t x)
  4246. {
  4247. uint8_t * p = (uint8_t *)pp;
  4248.  
  4249. p[7] = x & 0xff;
  4250. p[6] = (x >> 8) & 0xff;
  4251. p[5] = (x >> 16) & 0xff;
  4252. p[4] = (x >> 24) & 0xff;
  4253. p[3] = (x >> 32) & 0xff;
  4254. p[2] = (x >> 40) & 0xff;
  4255. p[1] = (x >> 48) & 0xff;
  4256. p[0] = (x >> 56) & 0xff;
  4257. }
  4258.  
  4259. static inline uint16_t
  4260. libcperciva_le16dec(const void * pp)
  4261. {
  4262. const uint8_t * p = (uint8_t const *)pp;
  4263.  
  4264. return ((uint16_t)(p[0]) + ((uint16_t)(p[1]) << 8));
  4265. }
  4266.  
  4267. static inline void
  4268. libcperciva_le16enc(void * pp, uint16_t x)
  4269. {
  4270. uint8_t * p = (uint8_t *)pp;
  4271.  
  4272. p[0] = x & 0xff;
  4273. p[1] = (x >> 8) & 0xff;
  4274. }
  4275.  
  4276. static inline uint32_t
  4277. libcperciva_le32dec(const void * pp)
  4278. {
  4279. const uint8_t * p = (uint8_t const *)pp;
  4280.  
  4281. return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) +
  4282. ((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24));
  4283. }
  4284.  
  4285. static inline void
  4286. libcperciva_le32enc(void * pp, uint32_t x)
  4287. {
  4288. uint8_t * p = (uint8_t *)pp;
  4289.  
  4290. p[0] = x & 0xff;
  4291. p[1] = (x >> 8) & 0xff;
  4292. p[2] = (x >> 16) & 0xff;
  4293. p[3] = (x >> 24) & 0xff;
  4294. }
  4295.  
  4296. static inline uint64_t
  4297. libcperciva_le64dec(const void * pp)
  4298. {
  4299. const uint8_t * p = (uint8_t const *)pp;
  4300.  
  4301. return ((uint64_t)(p[0]) + ((uint64_t)(p[1]) << 8) +
  4302. ((uint64_t)(p[2]) << 16) + ((uint64_t)(p[3]) << 24) +
  4303. ((uint64_t)(p[4]) << 32) + ((uint64_t)(p[5]) << 40) +
  4304. ((uint64_t)(p[6]) << 48) + ((uint64_t)(p[7]) << 56));
  4305. }
  4306.  
  4307. static inline void
  4308. libcperciva_le64enc(void * pp, uint64_t x)
  4309. {
  4310. uint8_t * p = (uint8_t *)pp;
  4311.  
  4312. p[0] = x & 0xff;
  4313. p[1] = (x >> 8) & 0xff;
  4314. p[2] = (x >> 16) & 0xff;
  4315. p[3] = (x >> 24) & 0xff;
  4316. p[4] = (x >> 32) & 0xff;
  4317. p[5] = (x >> 40) & 0xff;
  4318. p[6] = (x >> 48) & 0xff;
  4319. p[7] = (x >> 56) & 0xff;
  4320. }
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344.  
  4345.  
  4346.  
  4347.  
  4348.  
  4349.  
  4350.  
  4351.  
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  
  4361.  
  4362.  
  4363.  
  4364.  
  4365.  
  4366. extern int errno;
  4367.  
  4368.  
  4369.  
  4370.  
  4371. extern char *sys_errlist[];
  4372. extern int sys_nerr;
  4373.  
  4374.  
  4375.  
  4376.  
  4377.  
  4378.  
  4379.  
  4380.  
  4381.  
  4382.  
  4383.  
  4384.  
  4385.  
  4386.  
  4387.  
  4388.  
  4389.  
  4390.  
  4391.  
  4392.  
  4393.  
  4394.  
  4395.  
  4396.  
  4397.  
  4398.  
  4399.  
  4400.  
  4401.  
  4402.  
  4403.  
  4404.  
  4405.  
  4406.  
  4407.  
  4408.  
  4409.  
  4410.  
  4411.  
  4412.  
  4413.  
  4414.  
  4415.  
  4416.  
  4417.  
  4418.  
  4419.  
  4420.  
  4421.  
  4422. void warnp_setprogname(const char *);
  4423.  
  4424.  
  4425. void libcperciva_warn(const char *, ...);
  4426. void libcperciva_warnx(const char *, ...);
  4427.  
  4428.  
  4429.  
  4430.  
  4431.  
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.  
  4444.  
  4445.  
  4446.  
  4447.  
  4448.  
  4449.  
  4450.  
  4451.  
  4452.  
  4453.  
  4454.  
  4455.  
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473.  
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508.  
  4509.  
  4510.  
  4511.  
  4512.  
  4513.  
  4514.  
  4515.  
  4516.  
  4517.  
  4518.  
  4519.  
  4520.  
  4521.  
  4522.  
  4523.  
  4524.  
  4525.  
  4526.  
  4527.  
  4528.  
  4529.  
  4530.  
  4531.  
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.  
  4568.  
  4569.  
  4570.  
  4571.  
  4572. extern char *acl_get(char *);
  4573. extern char *acl_fget(int);
  4574. extern int acl_chg(char *, int, int, int);
  4575. extern int acl_fchg(int, int, int, int);
  4576. extern int acl_put(char *, char *, int);
  4577. extern int acl_fput(int, char *, int);
  4578. extern int acl_set(char *, int, int, int);
  4579. extern int acl_fset(int, int, int, int);
  4580. extern int accessx(char *, int, int);
  4581. extern int accessxat(int, char *, int, int);
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588.  
  4589.  
  4590.  
  4591.  
  4592. extern int access(const char *, int);
  4593. extern int faccessat(int, const char *, int, int);
  4594. extern unsigned int alarm(unsigned int);
  4595. extern int chdir(const char *);
  4596. extern int chown(const char *, uid_t, gid_t);
  4597. extern int fchownat(int, const char *, uid_t, gid_t, int);
  4598. extern int close(int);
  4599. extern char *ctermid(char *);
  4600. extern int dup(int);
  4601. extern int dup2(int, int);
  4602. extern int execl(const char *, const char *, ...);
  4603. extern int execv(const char *, char *const []);
  4604. extern int execle(const char *, const char *, ...);
  4605. extern int execve(const char *, char *const [], char *const []);
  4606. extern int fexecve(int, char *const [], char *const []);
  4607. extern int execlp(const char *, const char *, ...);
  4608. extern int execvp(const char *, char *const []);
  4609. extern void _exit(int);
  4610. extern pid_t fork(void);
  4611. extern long fpathconf(int, int);
  4612. extern char *getcwd(char *, size_t);
  4613. extern gid_t getegid(void);
  4614. extern uid_t geteuid(void);
  4615. extern gid_t getgid(void);
  4616. extern int getgroups(int, gid_t []);
  4617. extern char *getlogin(void);
  4618. extern pid_t getpgrp(void);
  4619. extern pid_t getpid(void);
  4620. extern pid_t getppid(void);
  4621. extern uid_t getuid(void);
  4622. extern int isatty(int);
  4623. extern int link(const char *, const char *);
  4624. extern int linkat(int, const char *, int, const char *, int);
  4625. extern off_t lseek(int, off_t, int);
  4626. extern off64_t lseek64(int, off64_t, int);
  4627. extern long pathconf(const char *, int);
  4628. extern int pause(void);
  4629. extern int pipe(int []);
  4630. extern int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
  4631. extern ssize_t read(int, void *, size_t);
  4632. extern int rmdir(const char *);
  4633. extern int setgid(gid_t);
  4634. extern int setpgid(pid_t, pid_t);
  4635. extern pid_t setsid(void);
  4636. extern int setuid(uid_t);
  4637. extern unsigned int sleep(unsigned int);
  4638. extern long sysconf(int);
  4639. extern pid_t tcgetpgrp(int);
  4640. extern int tcsetpgrp(int, pid_t);
  4641. extern char *ttyname(int);
  4642. extern int unlink(const char *);
  4643. extern int unlinkat(int, const char *, int);
  4644. extern ssize_t write(int, const void *, size_t);
  4645.  
  4646.  
  4647.  
  4648.  
  4649.  
  4650.  
  4651.  
  4652.  
  4653.  
  4654.  
  4655.  
  4656.  
  4657.  
  4658.  
  4659.  
  4660.  
  4661.  
  4662. extern char *optarg;
  4663. extern int optind, opterr, optopt;
  4664.  
  4665. extern size_t confstr(int, char*, size_t);
  4666. extern char *crypt(const char *, const char *);
  4667. extern void encrypt(char *, int);
  4668. extern int fsync(int);
  4669. extern int getopt(int, char* const*, const char*);
  4670. extern int nice(int);
  4671. extern void swab(const void *, void *, ssize_t);
  4672. extern int fdatasync(int);
  4673. extern char *getpass(const char *);
  4674. extern int chroot(const char *);
  4675.  
  4676.  
  4677.  
  4678.  
  4679.  
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.  
  4694.  
  4695.  
  4696.  
  4697.  
  4698.  
  4699.  
  4700.  
  4701.  
  4702.  
  4703.  
  4704.  
  4705.  
  4706.  
  4707.  
  4708.  
  4709.  
  4710.  
  4711.  
  4712.  
  4713.  
  4714.  
  4715.  
  4716.  
  4717.  
  4718.  
  4719.  
  4720.  
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726.  
  4727.  
  4728.  
  4729.  
  4730.  
  4731.  
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.  
  4744.  
  4745.  
  4746.  
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.  
  4762.  
  4763.  
  4764.  
  4765.  
  4766.  
  4767.  
  4768.  
  4769.  
  4770.  
  4771.  
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792.  
  4793.  
  4794.  
  4795.  
  4796.  
  4797.  
  4798.  
  4799.  
  4800.  
  4801.  
  4802.  
  4803.  
  4804.  
  4805.  
  4806.  
  4807.  
  4808.  
  4809.  
  4810.  
  4811.  
  4812.  
  4813.  
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  
  4823.  
  4824.  
  4825.  
  4826.  
  4827.  
  4828.  
  4829.  
  4830.  
  4831.  
  4832.  
  4833.  
  4834.  
  4835.  
  4836.  
  4837.  
  4838.  
  4839.  
  4840.  
  4841.  
  4842.  
  4843.  
  4844.  
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851.  
  4852.  
  4853.  
  4854.  
  4855.  
  4856.  
  4857.  
  4858.  
  4859.  
  4860.  
  4861.  
  4862.  
  4863.  
  4864.  
  4865.  
  4866.  
  4867.  
  4868.  
  4869.  
  4870.  
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876.  
  4877.  
  4878.  
  4879.  
  4880.  
  4881.  
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891.  
  4892.  
  4893.  
  4894.  
  4895.  
  4896.  
  4897.  
  4898.  
  4899.  
  4900.  
  4901.  
  4902.  
  4903.  
  4904.  
  4905.  
  4906.  
  4907.  
  4908.  
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.  
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928.  
  4929.  
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947. typedef struct st_timespec {
  4948. time_t tv_sec;
  4949. int tv_nsec;
  4950. } st_timespec_t;
  4951.  
  4952.  
  4953. struct stat
  4954. {
  4955. dev_t st_dev;
  4956. ino_t st_ino;
  4957. mode_t st_mode;
  4958. nlink_t st_nlink;
  4959. ushort_t st_flag;
  4960. uid_t st_uid;
  4961. gid_t st_gid;
  4962.  
  4963. dev_t st_rdev;
  4964. off_t st_size;
  4965. st_timespec_t st_atim;
  4966. st_timespec_t st_mtim;
  4967. st_timespec_t st_ctim;
  4968. blksize_t st_blksize;
  4969. blkcnt_t st_blocks;
  4970. int st_vfstype;
  4971. uint_t st_vfs;
  4972. uint_t st_type;
  4973. uint_t st_gen;
  4974.  
  4975.  
  4976. uint_t st_reserved[9];
  4977. };
  4978.  
  4979.  
  4980.  
  4981.  
  4982.  
  4983. struct timespec64 {
  4984. time64_t tv_sec;
  4985. int32_t tv_nsec;
  4986. int32_t tv_pad;
  4987. };
  4988.  
  4989.  
  4990. struct stat64
  4991. {
  4992. dev_t st_dev;
  4993. ino_t st_ino;
  4994. mode_t st_mode;
  4995. nlink_t st_nlink;
  4996. ushort_t st_flag;
  4997. uid_t st_uid;
  4998. gid_t st_gid;
  4999. dev_t st_rdev;
  5000. soff_t st_ssize;
  5001. st_timespec_t st_atim;
  5002. st_timespec_t st_mtim;
  5003. st_timespec_t st_ctim;
  5004. blksize_t st_blksize;
  5005. blkcnt_t st_blocks;
  5006. int st_vfstype;
  5007. uint_t st_vfs;
  5008. uint_t st_type;
  5009. uint_t st_gen;
  5010. uint_t st_reserved[10];
  5011. off64_t st_size;
  5012. };
  5013.  
  5014.  
  5015. struct stat64x
  5016. {
  5017. dev64_t st_dev;
  5018. ino64_t st_ino;
  5019. mode_t st_mode;
  5020. nlink_t st_nlink;
  5021. ushort_t st_flag;
  5022. uid_t st_uid;
  5023. gid_t st_gid;
  5024. dev64_t st_rdev;
  5025. off64_t st_size;
  5026.  
  5027. struct timespec64 st_atim;
  5028. struct timespec64 st_mtim;
  5029. struct timespec64 st_ctim;
  5030. blksize64_t st_blksize;
  5031. blkcnt64_t st_blocks;
  5032. int32_t st_vfstype;
  5033. uint32_t st_vfs;
  5034. uint32_t st_type;
  5035. uint32_t st_gen;
  5036. uint32_t st_reserved[11];
  5037. };
  5038.  
  5039.  
  5040. extern int stat64x(const char *restrict, struct stat64x *restrict);
  5041. extern int fstat64x(int, struct stat64x *restrict);
  5042. extern int lstat64x(const char *restrict, struct stat64x *restrict);
  5043. extern int stat64xat(int, const char *restrict, struct stat64x *restrict, int);
  5044.  
  5045.  
  5046.  
  5047.  
  5048. extern mode_t umask(mode_t);
  5049.  
  5050.  
  5051. extern int mkdir(const char *, mode_t);
  5052. extern int mkdirat(int, const char *, mode_t);
  5053. extern int stat(const char *restrict, struct stat *restrict);
  5054. extern int fstat(int, struct stat *);
  5055. extern int fstatat(int, const char *restrict, struct stat *restrict, int);
  5056. extern int stat64(const char *restrict, struct stat64 *restrict);
  5057. extern int fstat64(int, struct stat64 *);
  5058. extern int stat64at(int,const char *restrict, struct stat64 *restrict, int);
  5059.  
  5060. extern int chmod(const char *, mode_t);
  5061. extern int fchmodat(int, const char *, mode_t, int);
  5062.  
  5063. extern int fchmod(int, mode_t);
  5064. extern int lstat(const char *restrict, struct stat *restrict);
  5065. extern int lstat64(const char *restrict, struct stat64 *restrict);
  5066.  
  5067. extern int mknod(const char *, mode_t, dev_t);
  5068. extern int mknodat(int, const char *, mode_t, dev_t);
  5069.  
  5070.  
  5071.  
  5072. extern int mkfifo(const char *, mode_t);
  5073. extern int mkfifoat(int, const char *, mode_t);
  5074. extern int futimens(int, const struct timespec *);
  5075. extern int utimensat(int, const char *, const struct timespec *,
  5076. int);
  5077.  
  5078.  
  5079.  
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.  
  5090.  
  5091.  
  5092. int statx(char *, struct stat *, int, int);
  5093. int fstatx(int, struct stat *, int, int);
  5094. int statxat(int, char *, struct stat *, int, int);
  5095.  
  5096.  
  5097.  
  5098.  
  5099.  
  5100.  
  5101. extern int lockf (int, int, off_t);
  5102. extern int lockf64 (int, int, off64_t);
  5103.  
  5104.  
  5105.  
  5106.  
  5107. extern int brk(void *);
  5108. extern int getpagesize(void);
  5109. extern int __fd_getdtablesize(void);
  5110. static int getdtablesize()
  5111. {
  5112. return __fd_getdtablesize();
  5113. }
  5114. extern void *sbrk(intptr_t);
  5115. extern int fchdir(int);
  5116. extern int fchown(int, uid_t, gid_t);
  5117. extern int ftruncate(int, off_t);
  5118. extern int ftruncate64(int, off64_t);
  5119. extern int gethostname(char *, size_t);
  5120. extern long gethostid(void);
  5121. extern pid_t getpgid(pid_t);
  5122. extern pid_t getsid(pid_t);
  5123. extern char *getwd(char *);
  5124. extern int lchown(const char *, uid_t, gid_t);
  5125.  
  5126. extern int readlink(const char *, char *, size_t);
  5127. extern int readlinkat(int, const char *, char *, size_t);
  5128.  
  5129. extern pid_t setpgrp(void);
  5130. extern int setregid(gid_t, gid_t);
  5131. extern int setreuid(uid_t, uid_t);
  5132. extern int symlink(const char *, const char *);
  5133. extern int symlinkat(const char *, int, const char *);
  5134. extern void sync(void);
  5135. extern int truncate(const char *, off_t);
  5136. extern int truncate64(const char *, off64_t);
  5137. extern useconds_t ualarm(useconds_t, useconds_t);
  5138. extern int usleep(useconds_t);
  5139. extern pid_t vfork(void);
  5140. extern int getlogin_r(char *, size_t);
  5141. extern int ttyname_r(int, char *, size_t);
  5142.  
  5143.  
  5144. extern ssize_t pread(int, void *, size_t, off_t);
  5145. extern ssize_t pwrite(int, const void *, size_t, off_t);
  5146. extern ssize_t pread64(int, void *, size_t, off64_t);
  5147. extern ssize_t pwrite64(int, const void *, size_t, off64_t);
  5148.  
  5149.  
  5150.  
  5151.  
  5152. extern char **environ;
  5153.  
  5154. extern pid_t f_fork(void);
  5155.  
  5156. extern char * cuserid(char *);
  5157. extern int setegid(gid_t);
  5158. extern int seteuid(uid_t);
  5159. extern int setrgid(gid_t);
  5160. extern int setruid(uid_t);
  5161. extern int ioctl(int, int, ...);
  5162. extern int setgroups(int, gid_t []);
  5163. extern int setroles(rid_t [], int);
  5164. extern int getroles(pid_t, rid_t [], int);
  5165. extern int open64x(char *, int64_t, mode_t, ext_t);
  5166. extern int open64xat(int, char *, int64_t, mode_t, ext_t);
  5167. extern ssize_t read64x(int, char *, ssize_t, long);
  5168. extern ssize_t write64x(int, char *, ssize_t, long);
  5169. extern int readx(int, char*, unsigned, long);
  5170. extern int writex(int, char*, unsigned, long);
  5171.  
  5172. extern off_t fclear(int, off_t);
  5173. extern int fsync_range(int, int, off_t, off_t);
  5174. extern off64_t fclear64(int, off64_t);
  5175. extern int fsync_range64(int, int, off64_t, off64_t);
  5176. extern offset_t llseek(int, offset_t, int);
  5177. extern char * getusershell(void);
  5178. extern void setusershell(void);
  5179. extern void endusershell(void);
  5180. extern char * get_current_dir_name(void);
  5181. extern int sysfs(int, ...);
  5182. extern int finfo(const char *, int, void *, int32long64_t);
  5183. extern int ffinfo(int, int, void *, int32long64_t);
  5184.  
  5185.  
  5186.  
  5187.  
  5188.  
  5189.  
  5190.  
  5191.  
  5192.  
  5193.  
  5194.  
  5195.  
  5196.  
  5197.  
  5198.  
  5199.  
  5200.  
  5201.  
  5202.  
  5203.  
  5204.  
  5205.  
  5206.  
  5207.  
  5208.  
  5209.  
  5210.  
  5211.  
  5212.  
  5213. int crypto_dh_generate_pub(uint8_t[256],
  5214. const uint8_t[32]);
  5215.  
  5216.  
  5217. int crypto_dh_generate(uint8_t[256], uint8_t[32]);
  5218.  
  5219.  
  5220. int crypto_dh_compute(const uint8_t[256],
  5221. const uint8_t[32], uint8_t[256]);
  5222.  
  5223.  
  5224. int crypto_dh_sanitycheck(const uint8_t[256]);
  5225.  
  5226.  
  5227. struct proto_keys;
  5228. struct proto_secret;
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239. struct proto_secret * proto_crypt_secret(const char *);
  5240.  
  5241.  
  5242. void proto_crypt_dhmac(const struct proto_secret *,
  5243. const uint8_t[32], const uint8_t[32],
  5244. uint8_t[32], uint8_t[32], int);
  5245.  
  5246.  
  5247. int proto_crypt_dh_validate(const uint8_t[(256 + 32)],
  5248. const uint8_t[32], int);
  5249.  
  5250.  
  5251. int proto_crypt_dh_generate(uint8_t[(256 + 32)], uint8_t[32],
  5252. const uint8_t[32], int);
  5253.  
  5254.  
  5255. int proto_crypt_mkkeys(const struct proto_secret *,
  5256. const uint8_t[32], const uint8_t[32],
  5257. const uint8_t[(256 + 32)], const uint8_t[32], int, int,
  5258. struct proto_keys **, struct proto_keys **);
  5259.  
  5260.  
  5261.  
  5262.  
  5263.  
  5264.  
  5265. void proto_crypt_enc(uint8_t *, size_t, uint8_t[(1024 + 4 + 32 )],
  5266. struct proto_keys *);
  5267.  
  5268.  
  5269. ssize_t proto_crypt_dec(uint8_t[(1024 + 4 + 32 )], uint8_t *, struct proto_keys *);
  5270.  
  5271.  
  5272. void proto_crypt_free(struct proto_keys *);
  5273.  
  5274.  
  5275. struct proto_secret {
  5276. uint8_t K[32];
  5277. };
  5278.  
  5279. struct proto_keys {
  5280. struct crypto_aes_key * k_aes;
  5281. uint8_t k_hmac[32];
  5282. uint64_t pnum;
  5283. };
  5284.  
  5285.  
  5286. static struct proto_keys *
  5287. mkkeypair(uint8_t kbuf[64])
  5288. {
  5289. struct proto_keys * k;
  5290.  
  5291.  
  5292. if ((k = malloc(sizeof(struct proto_keys))) == 0)
  5293. goto err0;
  5294.  
  5295.  
  5296. if ((k->k_aes = crypto_aes_key_expand(&kbuf[0], 32)) == 0)
  5297. goto err1;
  5298.  
  5299.  
  5300. __memcpy(k->k_hmac,&kbuf[32],32);
  5301.  
  5302.  
  5303. k->pnum = 0;
  5304.  
  5305.  
  5306. return (k);
  5307.  
  5308. err1:
  5309. free(k);
  5310. err0:
  5311.  
  5312. return (0);
  5313. }
  5314.  
  5315.  
  5316. struct proto_secret *
  5317. proto_crypt_secret(const char * filename)
  5318. {
  5319. libcperciva_SHA256_CTX ctx;
  5320. FILE * f;
  5321. struct proto_secret * K;
  5322. uint8_t buf[4096];
  5323. size_t lenread;
  5324.  
  5325.  
  5326. if ((K = malloc(sizeof(struct proto_secret))) == 0)
  5327. goto err0;
  5328.  
  5329.  
  5330. if ((f = fopen(filename, "r")) == 0) {
  5331. do { ; if (errno != 0) { libcperciva_warn("Cannot open file: %s", filename); errno = 0; } else libcperciva_warnx("Cannot open file: %s", filename); } while (0);
  5332. goto err1;
  5333. }
  5334.  
  5335.  
  5336. libcperciva_SHA256_Init(&ctx);
  5337.  
  5338.  
  5339. while ((lenread = fread(buf, 1, 4096, f)) > 0)
  5340. libcperciva_SHA256_Update(&ctx, buf, lenread);
  5341.  
  5342.  
  5343. if (!((f)->_flag & 0020)) {
  5344. do { ; if (errno != 0) { libcperciva_warn("Error reading file: %s", filename); errno = 0; } else libcperciva_warnx("Error reading file: %s", filename); } while (0);
  5345. goto err2;
  5346. }
  5347.  
  5348.  
  5349. fclose(f);
  5350.  
  5351.  
  5352. libcperciva_SHA256_Final(K->K, &ctx);
  5353.  
  5354.  
  5355. return (K);
  5356.  
  5357. err2:
  5358. fclose(f);
  5359. err1:
  5360. free(K);
  5361. err0:
  5362.  
  5363. return (0);
  5364. }
  5365.  
  5366.  
  5367. void
  5368. proto_crypt_dhmac(const struct proto_secret * K,
  5369. const uint8_t nonce_l[32],
  5370. const uint8_t nonce_r[32],
  5371. uint8_t dhmac_l[32], uint8_t dhmac_r[32],
  5372. int decr)
  5373. {
  5374. uint8_t nonce_CS[32 * 2];
  5375. uint8_t dk_1[32 * 2];
  5376. const uint8_t * nonce_c, * nonce_s;
  5377. uint8_t * dhmac_c, * dhmac_s;
  5378.  
  5379.  
  5380. nonce_c = decr ? nonce_r : nonce_l;
  5381. dhmac_c = decr ? dhmac_r : dhmac_l;
  5382. nonce_s = decr ? nonce_l : nonce_r;
  5383. dhmac_s = decr ? dhmac_l : dhmac_r;
  5384.  
  5385.  
  5386. __memcpy(&nonce_CS[0],nonce_c,32);
  5387. __memcpy(&nonce_CS[32],nonce_s,32);
  5388.  
  5389.  
  5390. PBKDF2_SHA256(K->K, 32, nonce_CS, 32 * 2, 1,
  5391. dk_1, 32 * 2);
  5392.  
  5393.  
  5394. __memcpy(dhmac_c,&dk_1[0],32);
  5395. __memcpy(dhmac_s,&dk_1[32],32);
  5396. }
  5397.  
  5398.  
  5399. static int
  5400. is_not_one(const uint8_t * x, size_t len)
  5401. {
  5402. size_t i;
  5403. char y;
  5404.  
  5405. for (i = 0, y = 0; i < len - 1; i++) {
  5406. y |= x[i];
  5407. }
  5408.  
  5409. return (y | (x[len - 1] - 1));
  5410. }
  5411.  
  5412.  
  5413. int
  5414. proto_crypt_dh_validate(const uint8_t yh_r[(256 + 32)],
  5415. const uint8_t dhmac_r[32], int requirefps)
  5416. {
  5417. uint8_t hbuf[32];
  5418.  
  5419.  
  5420. libcperciva_HMAC_SHA256_Buf(dhmac_r, 32, yh_r, 256,
  5421. hbuf);
  5422.  
  5423.  
  5424. if (crypto_verify_bytes(&yh_r[256], hbuf, 32))
  5425. return (1);
  5426.  
  5427.  
  5428. if (crypto_dh_sanitycheck(&yh_r[0]))
  5429. return (1);
  5430.  
  5431.  
  5432. if (requirefps) {
  5433. if (! is_not_one(&yh_r[0], 256))
  5434. return (1);
  5435. }
  5436.  
  5437.  
  5438. return (0);
  5439. }
  5440.  
  5441.  
  5442. int
  5443. proto_crypt_dh_generate(uint8_t yh_l[(256 + 32)], uint8_t x[32],
  5444. const uint8_t dhmac_l[32], int nofps)
  5445. {
  5446.  
  5447.  
  5448. if (nofps) {
  5449.  
  5450. __memset(yh_l,0,256 - 1);
  5451. yh_l[256 - 1] = 1;
  5452. } else {
  5453.  
  5454. if (crypto_dh_generate(yh_l, x))
  5455. goto err0;
  5456. }
  5457.  
  5458.  
  5459. libcperciva_HMAC_SHA256_Buf(dhmac_l, 32, yh_l, 256,
  5460. &yh_l[256]);
  5461.  
  5462.  
  5463. return (0);
  5464.  
  5465. err0:
  5466.  
  5467. return (-1);
  5468. }
  5469.  
  5470.  
  5471. int
  5472. proto_crypt_mkkeys(const struct proto_secret * K,
  5473. const uint8_t nonce_l[32],
  5474. const uint8_t nonce_r[32],
  5475. const uint8_t yh_r[(256 + 32)], const uint8_t x[32],
  5476. int nofps, int decr,
  5477. struct proto_keys ** eh_c, struct proto_keys ** eh_s)
  5478. {
  5479. uint8_t nonce_y[32 * 2 + 256];
  5480. uint8_t dk_2[128];
  5481. const uint8_t * nonce_c, * nonce_s;
  5482.  
  5483.  
  5484. nonce_c = decr ? nonce_r : nonce_l;
  5485. nonce_s = decr ? nonce_l : nonce_r;
  5486. __memcpy(&nonce_y[0],nonce_c,32);
  5487. __memcpy(&nonce_y[32],nonce_s,32);
  5488.  
  5489.  
  5490. if (nofps) {
  5491.  
  5492. __memset(&nonce_y[32 * 2],0,256 - 1);
  5493. nonce_y[32 * 2 + 256 - 1] = 1;
  5494. } else {
  5495.  
  5496. if (crypto_dh_compute(yh_r, x,
  5497. &nonce_y[32 * 2]))
  5498. goto err0;
  5499. }
  5500.  
  5501.  
  5502. PBKDF2_SHA256(K->K, 32, nonce_y,
  5503. 32 * 2 + 256, 1, dk_2, 128);
  5504.  
  5505.  
  5506. if ((*eh_c = mkkeypair(&dk_2[0])) == 0)
  5507. goto err0;
  5508. if ((*eh_s = mkkeypair(&dk_2[64])) == 0)
  5509. goto err1;
  5510.  
  5511.  
  5512. return (0);
  5513.  
  5514. err1:
  5515. proto_crypt_free(*eh_c);
  5516. err0:
  5517.  
  5518. return (-1);
  5519. }
  5520.  
  5521.  
  5522. void
  5523. proto_crypt_enc(uint8_t * ibuf, size_t len, uint8_t obuf[(1024 + 4 + 32 )],
  5524. struct proto_keys * k)
  5525. {
  5526. libcperciva_HMAC_SHA256_CTX ctx;
  5527. uint8_t pnum_exp[8];
  5528.  
  5529.  
  5530. ((len <= 1024) ? ((void)0) : __assert("len <= PCRYPT_MAXDSZ", "./proto/proto_crypt.c", 311));
  5531.  
  5532.  
  5533. __memcpy(obuf,ibuf,len);
  5534.  
  5535.  
  5536. __memset(&obuf[len],0,1024 - len);
  5537.  
  5538.  
  5539. libcperciva_be32enc(&obuf[1024], len);
  5540.  
  5541.  
  5542. crypto_aesctr_buf(k->k_aes, k->pnum, obuf, obuf, 1024 + 4);
  5543.  
  5544.  
  5545. libcperciva_be64enc(pnum_exp, k->pnum);
  5546. libcperciva_HMAC_SHA256_Init(&ctx, k->k_hmac, 32);
  5547. libcperciva_HMAC_SHA256_Update(&ctx, obuf, 1024 + 4);
  5548. libcperciva_HMAC_SHA256_Update(&ctx, pnum_exp, 8);
  5549. libcperciva_HMAC_SHA256_Final(&obuf[1024 + 4], &ctx);
  5550.  
  5551.  
  5552. k->pnum += 1;
  5553. }
  5554.  
  5555.  
  5556. ssize_t proto_crypt_dec(uint8_t ibuf[(1024 + 4 + 32 )], uint8_t * obuf,
  5557. struct proto_keys * k)
  5558. {
  5559. libcperciva_HMAC_SHA256_CTX ctx;
  5560. uint8_t hbuf[32];
  5561. uint8_t pnum_exp[8];
  5562. size_t len;
  5563.  
  5564.  
  5565. libcperciva_be64enc(pnum_exp, k->pnum);
  5566. libcperciva_HMAC_SHA256_Init(&ctx, k->k_hmac, 32);
  5567. libcperciva_HMAC_SHA256_Update(&ctx, ibuf, 1024 + 4);
  5568. libcperciva_HMAC_SHA256_Update(&ctx, pnum_exp, 8);
  5569. libcperciva_HMAC_SHA256_Final(hbuf, &ctx);
  5570. if (crypto_verify_bytes(hbuf, &ibuf[1024 + 4], 32))
  5571. return (-1);
  5572.  
  5573.  
  5574. crypto_aesctr_buf(k->k_aes, k->pnum, ibuf, ibuf, 1024 + 4);
  5575.  
  5576.  
  5577. k->pnum += 1;
  5578.  
  5579.  
  5580. len = libcperciva_be32dec(&ibuf[1024]);
  5581.  
  5582.  
  5583. if ((len == 0) || (len > 1024))
  5584. return (-1);
  5585.  
  5586.  
  5587. __memcpy(obuf,ibuf,len);
  5588.  
  5589.  
  5590. return (len);
  5591. }
  5592.  
  5593.  
  5594. void
  5595. proto_crypt_free(struct proto_keys * k)
  5596. {
  5597.  
  5598.  
  5599. crypto_aes_key_free(k->k_aes);
  5600.  
  5601.  
  5602. free(k);
  5603. }
Advertisement
Add Comment
Please, Sign In to add comment