COMPLETE.TXT
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:2624k
源码类别:

操作系统开发

开发平台:

WINDOWS

  1. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. include/a.out.h    
  3. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  4. 00000 /* The <a.out> header file describes the format of executable files. */
  5. 00001
  6. 00002 #ifndef _AOUT_H
  7. 00003 #define _AOUT_H
  8. 00004
  9. 00005 struct  exec {                  /* a.out header */
  10. 00006   unsigned char a_magic[2];     /* magic number */
  11. 00007   unsigned char a_flags;        /* flags, see below */
  12. 00008   unsigned char a_cpu;          /* cpu id */
  13. 00009   unsigned char a_hdrlen;       /* length of header */
  14. 00010   unsigned char a_unused;       /* reserved for future use */
  15. 00011   unsigned short a_version;     /* version stamp (not used at present) */
  16. 00012   long          a_text;         /* size of text segement in bytes */
  17. 00013   long          a_data;         /* size of data segment in bytes */
  18. 00014   long          a_bss;          /* size of bss segment in bytes */
  19. 00015   long          a_entry;        /* entry point */
  20. 00016   long          a_total;        /* total memory allocated */
  21. 00017   long          a_syms;         /* size of symbol table */
  22. 00018
  23. 00019   /* SHORT FORM ENDS HERE */
  24. 00020   long          a_trsize;       /* text relocation size */
  25. 00021   long          a_drsize;       /* data relocation size */
  26. 00022   long          a_tbase;        /* text relocation base */
  27. 00023   long          a_dbase;        /* data relocation base */
  28. 00024 };
  29. 00025
  30. 00026 #define A_MAGIC0      (unsigned char) 0x01
  31. 00027 #define A_MAGIC1      (unsigned char) 0x03
  32. 00028 #define BADMAG(X)     ((X).a_magic[0] != A_MAGIC0 ||(X).a_magic[1] != A_MAGIC1)
  33. 00029
  34. 00030 /* CPU Id of TARGET machine (byte order coded in low order two bits) */
  35. 00031 #define A_NONE  0x00    /* unknown */
  36. 00032 #define A_I8086 0x04    /* intel i8086/8088 */
  37. 00033 #define A_M68K  0x0B    /* motorola m68000 */
  38. 00034 #define A_NS16K 0x0C    /* national semiconductor 16032 */
  39. 00035 #define A_I80386 0x10   /* intel i80386 */
  40. 00036 #define A_SPARC 0x17    /* Sun SPARC */
  41. 00037
  42. 00038 #define A_BLR(cputype)  ((cputype&0x01)!=0) /* TRUE if bytes left-to-right */
  43. 00039 #define A_WLR(cputype)  ((cputype&0x02)!=0) /* TRUE if words left-to-right */
  44. 00040
  45. 00041 /* Flags. */
  46. 00042 #define A_UZP   0x01    /* unmapped zero page (pages) */
  47. 00043 #define A_PAL   0x02    /* page aligned executable */
  48. 00044 #define A_NSYM  0x04    /* new style symbol table */
  49. 00045 #define A_EXEC  0x10    /* executable */
  50. 00046 #define A_SEP   0x20    /* separate I/D */
  51. 00047 #define A_PURE  0x40    /* pure text */         /* not used */
  52. 00048 #define A_TOVLY 0x80    /* text overlay */      /* not used */
  53. 00049
  54. 00050 /* Offsets of various things. */
  55. 00051 #define A_MINHDR        32
  56. 00052 #define A_TEXTPOS(X)    ((long)(X).a_hdrlen)
  57. 00053 #define A_DATAPOS(X)    (A_TEXTPOS(X) + (X).a_text)
  58. 00054 #define A_HASRELS(X)    ((X).a_hdrlen > (unsigned char) A_MINHDR)
  59. 00055 #define A_HASEXT(X)     ((X).a_hdrlen > (unsigned char) (A_MINHDR +  8))
  60. 00056 #define A_HASLNS(X)     ((X).a_hdrlen > (unsigned char) (A_MINHDR + 16))
  61. 00057 #define A_HASTOFF(X)    ((X).a_hdrlen > (unsigned char) (A_MINHDR + 24))
  62. 00058 #define A_TRELPOS(X)    (A_DATAPOS(X) + (X).a_data)
  63. 00059 #define A_DRELPOS(X)    (A_TRELPOS(X) + (X).a_trsize)
  64. 00060 #define A_SYMPOS(X)     (A_TRELPOS(X) + (A_HASRELS(X) ? 
  65. 00061                         ((X).a_trsize + (X).a_drsize) : 0))
  66. 00062
  67. 00063 struct reloc {
  68. 00064   long r_vaddr;                 /* virtual address of reference */
  69. 00065   unsigned short r_symndx;      /* internal segnum or extern symbol num */
  70. 00066   unsigned short r_type;        /* relocation type */
  71. 00067 };
  72. 00068
  73. 00069 /* r_tyep values: */
  74. 00070 #define R_ABBS          0
  75. 00071 #define R_RELLBYTE      2
  76. 00072 #define R_PCRBYTE       3
  77. 00073 #define R_RELWORD       4
  78. 00074 #define R_PCRWORD       5
  79. 00075 #define R_RELLONG       6
  80. 00076 #define R_PCRLONG       7
  81. 00077 #define R_REL3BYTE      8
  82. 00078 #define R_KBRANCHE      9
  83. 00079
  84. 00080 /* r_symndx for internal segments */
  85. 00081 #define S_ABS           ((unsigned short)-1)
  86. 00082 #define S_TEXT          ((unsigned short)-2)
  87. 00083 #define S_DATA          ((unsigned short)-3)
  88. 00084 #define S_BSS           ((unsigned short)-4)
  89. 00085
  90. 00086 struct nlist {                  /* symbol table entry */
  91. 00087   char n_name[8];               /* symbol name */
  92. 00088   long n_value;                 /* value */
  93. 00089   unsigned char n_sclass;       /* storage class */
  94. 00090   unsigned char n_numaux;       /* number of auxiliary entries (not used) */
  95. 00091   unsigned short n_type;        /* language base and derived type (not used) */
  96. 00092 };
  97. 00093
  98. 00094 /* Low bits of storage class (section). */
  99. 00095 #define N_SECT            07    /* section mask */
  100. 00096 #define N_UNDF            00    /* undefined */
  101. 00097 #define N_ABS             01    /* absolute */
  102. 00098 #define N_TEXT            02    /* text */
  103. 00099 #define N_DATA            03    /* data */
  104. 00100 #define N_BSS             04    /* bss */
  105. 00101 #define N_COMM            05    /* (common) */
  106. 00102
  107. 00103 /* High bits of storage class. */
  108. 00104 #define N_CLASS         0370    /* storage class mask */
  109. 00105 #define C_NULL
  110. 00106 #define C_EXT           0020    /* external symbol */
  111. 00107 #define C_STAT          0030    /* static */
  112. 00108
  113. 00109 /* Function prototypes. */
  114. 00110 #ifndef _ANSI_H
  115. 00111 #include <ansi.h>
  116. 00112 #endif
  117. 00113
  118. 00114 _PROTOTYPE( int nlist, (char *_file, struct nlist *_nl)                 );
  119. 00115
  120. 00116 #endif /* _AOUT_H */
  121. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  122. include/alloca.h    
  123. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  124. 00200 /*      alloca.h - The dreaded alloca() function.
  125. 00201  */
  126. 00202
  127. 00203 #ifndef _ALLOCA_H
  128. 00204 #define _ALLOCA_H
  129. 00205
  130. 00206 #if __GNUC__
  131. 00207
  132. 00208 /* The compiler recognizes this special keyword, and inlines the code. */
  133. 00209 #define alloca(size)    __builtin_alloca(size)
  134. 00210
  135. 00211 #endif /* __GCC__ */
  136. 00212
  137. 00213 #if __ACK__ || __CCC__
  138. 00214
  139. 00215 #ifndef _ANSI_H
  140. 00216 #include <ansi.h>
  141. 00217 #endif
  142. 00218
  143. 00219 _PROTOTYPE(void *alloca, (size_t _size)                                 );
  144. 00220
  145. 00221 #endif /* __ACK__ || __CCC__ */
  146. 00222
  147. 00223 #endif /* _ALLOCA_H */
  148. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  149. include/ansi.h    
  150. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  151. 00300 /* The <ansi.h> header attempts to decide whether the compiler has enough
  152. 00301  * conformance to Standard C for Minix to take advantage of.  If so, the
  153. 00302  * symbol _ANSI is defined (as 31415).  Otherwise _ANSI is not defined
  154. 00303  * here, but it may be defined by applications that want to bend the rules.
  155. 00304  * The magic number in the definition is to inhibit unnecessary bending
  156. 00305  * of the rules.  (For consistency with the new '#ifdef _ANSI" tests in
  157. 00306  * the headers, _ANSI should really be defined as nothing, but that would
  158. 00307  * break many library routines that use "#if _ANSI".)
  159. 00308
  160. 00309  * If _ANSI ends up being defined, a macro
  161. 00310  *
  162. 00311  *      _PROTOTYPE(function, params)
  163. 00312  *
  164. 00313  * is defined.  This macro expands in different ways, generating either
  165. 00314  * ANSI Standard C prototypes or old-style K&R (Kernighan & Ritchie)
  166. 00315  * prototypes, as needed.  Finally, some programs use _CONST, _VOIDSTAR etc
  167. 00316  * in such a way that they are portable over both ANSI and K&R compilers.
  168. 00317  * The appropriate macros are defined here.
  169. 00318  */
  170. 00319
  171. 00320 #ifndef _ANSI_H
  172. 00321 #define _ANSI_H
  173. 00322
  174. 00323 #if __STDC__ == 1
  175. 00324 #define _ANSI           31459   /* compiler claims full ANSI conformance */
  176. 00325 #endif
  177. 00326
  178. 00327 #ifdef __GNUC__
  179. 00328 #define _ANSI           31459   /* gcc conforms enough even in non-ANSI mode */
  180. 00329 #endif
  181. 00330
  182. 00331 #ifdef _ANSI
  183. 00332
  184. 00333 /* Keep everything for ANSI prototypes. */
  185. 00334 #define _PROTOTYPE(function, params)    function params
  186. 00335 #define _ARGS(params)                   params
  187. 00336
  188. 00337 #define _VOIDSTAR       void *
  189. 00338 #define _VOID           void
  190. 00339 #define _CONST          const
  191. 00340 #define _VOLATILE       volatile
  192. 00341 #define _SIZET          size_t
  193. 00342
  194. 00343 #else
  195. 00344
  196. 00345 /* Throw away the parameters for K&R prototypes. */
  197. 00346 #define _PROTOTYPE(function, params)    function()
  198. 00347 #define _ARGS(params)                   ()
  199. 00348
  200. 00349 #define _VOIDSTAR       void *
  201. 00350 #define _VOID           void
  202. 00351 #define _CONST
  203. 00352 #define _VOLATILE
  204. 00353 #define _SIZET          int
  205. 00354
  206. 00355 #endif /* _ANSI */
  207. 00356
  208. 00357 #endif /* ANSI_H */
  209. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  210. include/assert.h    
  211. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  212. 00400 /* The <assert.h> header contains a macro called "assert" that allows 
  213. 00401  * programmers to put assertions in the code.  These assertions can be verified
  214. 00402  * at run time.  If an assertion fails, an error message is printed and the
  215. 00403  * program aborts.
  216. 00404  * Assertion checking can be disabled by adding the statement
  217. 00405  *
  218. 00406  *      #define NDEBUG
  219. 00407  *
  220. 00408  * to the program before the 
  221. 00409  *
  222. 00410  *      #include <assert.h>
  223. 00411  *
  224. 00412  * statement.
  225. 00413  */
  226. 00414
  227. 00415 #undef assert
  228. 00416
  229. 00417 #ifndef _ANSI_H
  230. 00418 #include <ansi.h>
  231. 00419 #endif
  232. 00420
  233. 00421
  234. 00422 #ifdef NDEBUG
  235. 00423 /* Debugging disabled -- do not evaluate assertions. */
  236. 00424 #define assert(expr)  ((void) 0)
  237. 00425 #else
  238. 00426 /* Debugging enabled -- verify assertions at run time. */
  239. 00427 #ifdef _ANSI
  240. 00428 #define __str(x)        # x
  241. 00429 #define __xstr(x)       __str(x)
  242. 00430
  243. 00431 _PROTOTYPE( void __bad_assertion, (const char *_mess) );
  244. 00432 #define assert(expr)    ((expr)? (void)0 : 
  245. 00433                                 __bad_assertion("Assertion "" #expr 
  246. 00434                                     "" failed, file " __xstr(__FILE__) 
  247. 00435                                     ", line " __xstr(__LINE__) "n"))
  248. 00436 #else
  249. 00437 #define assert(expr) ((void) ((expr) ? 0 : __assert( __FILE__,  __LINE__)))
  250. 00438 #endif /* _ANSI */
  251. 00439 #endif
  252. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  253. include/ctype.h    
  254. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  255. 00500 /* The <ctype.h> header file defines some macros used to identify characters.
  256. 00501  * It works by using a table stored in chartab.c. When a character is presented
  257. 00502  * to one of these macros, the character is used as an index into the table
  258. 00503  * (__ctype) to retrieve a byte.  The relevant bit is then extracted.
  259. 00504  */
  260. 00505
  261. 00506 #ifndef _CTYPE_H
  262. 00507 #define _CTYPE_H
  263. 00508
  264. 00509 extern char     __ctype[];      /* property array defined in chartab.c */
  265. 00510
  266. 00511 #define _U              0x01    /* this bit is for upper-case letters [A-Z] */
  267. 00512 #define _L              0x02    /* this bit is for lower-case letters [a-z] */
  268. 00513 #define _N              0x04    /* this bit is for numbers [0-9] */
  269. 00514 #define _S              0x08    /* this bit is for white space t n f etc */
  270. 00515 #define _P              0x10    /* this bit is for punctuation characters */
  271. 00516 #define _C              0x20    /* this bit is for control characters */
  272. 00517 #define _X              0x40    /* this bit is for hex digits [a-f] and [A-F]*/
  273. 00518
  274. 00519 /* Function Prototypes (have to go before the macros). */
  275. 00520 #ifndef _ANSI_H
  276. 00521 #include <ansi.h>
  277. 00522 #endif
  278. 00523
  279. 00524 _PROTOTYPE( int isalnum, (int  _c)  );  /* alphanumeric [a-z], [A-Z], [0-9] */
  280. 00525 _PROTOTYPE( int isalpha, (int  _c)  );  /* alphabetic */
  281. 00526 _PROTOTYPE( int iscntrl, (int  _c)  );  /* control characters */
  282. 00527 _PROTOTYPE( int isdigit, (int  _c)  );  /* digit [0-9] */
  283. 00528 _PROTOTYPE( int isgraph, (int  _c)  );  /* graphic character */
  284. 00529 _PROTOTYPE( int islower, (int  _c)  );  /* lower-case letter [a-z] */
  285. 00530 _PROTOTYPE( int isprint, (int  _c)  );  /* printable character */
  286. 00531 _PROTOTYPE( int ispunct, (int  _c)  );  /* punctuation mark */
  287. 00532 _PROTOTYPE( int isspace, (int  _c)  );  /* white space sp, f, n, r, t, v*/
  288. 00533 _PROTOTYPE( int isupper, (int  _c)  );  /* upper-case letter [A-Z] */
  289. 00534 _PROTOTYPE( int isxdigit,(int  _c)  );  /* hex digit [0-9], [a-f], [A-F] */
  290. 00535 _PROTOTYPE( int tolower, (int  _c)  );  /* convert to lower-case */
  291. 00536 _PROTOTYPE( int toupper, (int  _c)  );  /* convert to upper-case */
  292. 00537
  293. 00538 /* Macros for identifying character classes. */
  294. 00539 #define isalnum(c)      ((__ctype+1)[c]&(_U|_L|_N))
  295. 00540 #define isalpha(c)      ((__ctype+1)[c]&(_U|_L))
  296. 00541 #define iscntrl(c)      ((__ctype+1)[c]&_C)
  297. 00542 #define isgraph(c)      ((__ctype+1)[c]&(_P|_U|_L|_N))
  298. 00543 #define ispunct(c)      ((__ctype+1)[c]&_P)
  299. 00544 #define isspace(c)      ((__ctype+1)[c]&_S)
  300. 00545 #define isxdigit(c)     ((__ctype+1)[c]&(_N|_X))
  301. 00546
  302. 00547 #define isdigit(c)      ((unsigned) ((c)-'0') < 10)
  303. 00548 #define islower(c)      ((unsigned) ((c)-'a') < 26)
  304. 00549 #define isupper(c)      ((unsigned) ((c)-'A') < 26)
  305. 00550 #define isprint(c)      ((unsigned) ((c)-' ') < 95)
  306. 00551 #define isascii(c)      ((unsigned) (c) < 128)
  307. 00552
  308. 00553 #endif /* _CTYPE_H */
  309. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  310. include/curses.h    
  311. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  312. 00600 /* curses.h - defines macros and prototypes for curses */
  313. 00601
  314. 00602 #ifndef _CURSES_H
  315. 00603 #define _CURSES_H
  316. 00604
  317. 00605 #include <termios.h>
  318. 00606 #include <stdarg.h>
  319. 00607 #include <stdio.h>
  320. 00608
  321. 00609 typedef int bool;
  322. 00610
  323. 00611 #ifndef TRUE
  324. 00612 #define TRUE 1
  325. 00613 #endif
  326. 00614 #ifndef FALSE
  327. 00615 #define FALSE 0
  328. 00616 #endif
  329. 00617 #ifndef ERR
  330. 00618 #define ERR (-1)        /* general error flag */
  331. 00619 #endif
  332. 00620 #ifndef OK
  333. 00621 #define OK 0            /* general OK flag */
  334. 00622 #endif
  335. 00623
  336. 00624 /* Macros. */
  337. 00625 #define box(win,vc,hc) wbox(win,0,0,0,0,vc,hc)
  338. 00626 #define addch(ch) waddch(stdscr,ch)
  339. 00627 #define mvaddch(y,x,ch) (wmove(stdscr,y,x)==ERR?ERR:waddch(stdscr,ch))
  340. 00628 #define mvwaddch(win,y,x,ch) (wmove(win,y,x)==ERR?ERR:waddch(win,ch))
  341. 00629 #define getch() wgetch(stdscr)
  342. 00630 #define mvgetch(y,x) (wmove(stdscr,y,x)==ERR?ERR:wgetch(stdscr))
  343. 00631 #define mvwgetch(win,y,x) (wmove(win,y,x)==ERR?ERR:wgetch(win))
  344. 00632 #define addstr(str) waddstr(stdscr,str)
  345. 00633 #define mvaddstr(y,x,str) (wmove(stdscr,y,x)==ERR?ERR:waddstr(stdscr,str))
  346. 00634 #define mvwaddstr(win,y,x,str) (wmove(win,y,x)==ERR?ERR:waddstr(win,str))
  347. 00635 #define getstr(str) wgetstr(stdscr,str)
  348. 00636 #define mvgetstr(y,x,str) (wmove(stdscr,y,x)==ERR?ERR:wgetstr(stdscr,str))
  349. 00637 #define mvwgetstr(win,y,x,str) (wmove(win,y,x)==ERR?ERR:wgetstr(win,str))
  350. 00638 #define move(y,x) wmove(stdscr,y,x)
  351. 00639 #define clear() wclear(stdscr)
  352. 00640 #define erase() werase(stdscr)
  353. 00641 #define clrtobot() wclrtobot(stdscr)
  354. 00642 #define mvclrtobot(y,x) (wmove(stdscr,y,x)==ERR?ERR:wclrtobot(stdscr))
  355. 00643 #define mvwclrtobot(win,y,x) (wmove(win,y,x)==ERR?ERR:wclrtobot(win))
  356. 00644 #define clrtoeol() wclrtoeol(stdscr)
  357. 00645 #define mvclrtoeol(y,x) (wmove(stdscr,y,x)==ERR?ERR:wclrtoeol(stdscr))
  358. 00646 #define mvwclrtoeol(win,y,x) (wmove(win,y,x)==ERR?ERR:wclrtoeol(win))
  359. 00647 #define insertln() winsertln(stdscr)
  360. 00648 #define mvinsertln(y,x) (wmove(stdscr,y,x)==ERR?ERR:winsertln(stdscr))
  361. 00649 #define mvwinsertln(win,y,x) (wmove(win,y,x)==ERR?ERR:winsertln(win))
  362. 00650 #define deleteln() wdeleteln(stdscr)
  363. 00651 #define mvdeleteln(y,x) (wmove(stdscr,y,x)==ERR?ERR:wdeleteln(stdscr))
  364. 00652 #define mvwdeleteln(win,y,x) (wmove(win,y,x)==ERR?ERR:wdeleteln(win))
  365. 00653 #define refresh() wrefresh(stdscr)
  366. 00654 #define inch() winch(stdscr)
  367. 00655 #define insch(ch) winsch(stdscr,ch)
  368. 00656 #define mvinsch(y,x,ch) (wmove(stdscr,y,x)==ERR?ERR:winsch(stdscr,ch))
  369. 00657 #define mvwinsch(win,y,x,ch) (wmove(win,y,x)==ERR?ERR:winsch(win,ch))
  370. 00658 #define delch() wdelch(stdscr)
  371. 00659 #define mvdelch(y,x) (wmove(stdscr,y,x)==ERR?ERR:wdelch(stdscr))
  372. 00660 #define mvwdelch(win,y,x) (wmove(win,y,x)==ERR?ERR:wdelch(win))
  373. 00661 #define standout() wstandout(stdscr)
  374. 00662 #define wstandout(win) ((win)->_attrs |= A_STANDOUT)
  375. 00663 #define standend() wstandend(stdscr)
  376. 00664 #define wstandend(win) ((win)->_attrs &= ~A_STANDOUT)
  377. 00665 #define attrset(attrs) wattrset(stdscr, attrs)
  378. 00666 #define wattrset(win, attrs) ((win)->_attrs = (attrs))
  379. 00667 #define attron(attrs) wattron(stdscr, attrs)
  380. 00668 #define wattron(win, attrs) ((win)->_attrs |= (attrs))
  381. 00669 #define attroff(attrs) wattroff(stdscr,attrs)
  382. 00670 #define wattroff(win, attrs) ((win)->_attrs &= ~(attrs))
  383. 00671 #define resetty() tcsetattr(1, TCSANOW, &_orig_tty)
  384. 00672 #define getyx(win,y,x) (y = (win)->_cury, x = (win)->_curx)
  385. 00673
  386. 00674 /* Video attribute definitions. */
  387. 00675 #define A_BLINK        0x0100
  388. 00676 #define A_BLANK        0
  389. 00677 #define A_BOLD         0x0200
  390. 00678 #define A_DIM          0
  391. 00679 #define A_PROTECT      0
  392. 00680 #define A_REVERSE      0x0400
  393. 00681 #define A_STANDOUT     0x0800
  394. 00682 #define A_UNDERLINE    0x1000
  395. 00683 #define A_ALTCHARSET   0x2000
  396. 00684
  397. 00685 /* Type declarations. */
  398. 00686 typedef struct {
  399. 00687   int      _cury;                       /* current pseudo-cursor */
  400. 00688   int      _curx;
  401. 00689   int      _maxy;                       /* max coordinates */
  402. 00690   int      _maxx;
  403. 00691   int      _begy;                       /* origin on screen */
  404. 00692   int      _begx;
  405. 00693   int      _flags;                      /* window properties */
  406. 00694   int      _attrs;                      /* attributes of written characters */
  407. 00695   int      _tabsize;                    /* tab character size */
  408. 00696   bool     _clear;                      /* causes clear at next refresh */
  409. 00697   bool     _leave;                      /* leaves cursor as it happens */
  410. 00698   bool     _scroll;                     /* allows window scrolling */
  411. 00699   bool     _nodelay;                    /* input character wait flag */
  412. 00700   bool     _keypad;                     /* flags keypad key mode active */
  413. 00701   int    **_line;                       /* pointer to line pointer array */
  414. 00702   int     *_minchng;                    /* First changed character in line */
  415. 00703   int     *_maxchng;                    /* Last changed character in line */
  416. 00704   int      _regtop;                     /* Top/bottom of scrolling region */
  417. 00705   int      _regbottom;
  418. 00706 } WINDOW;
  419. 00707
  420. 00708 /* External variables */
  421. 00709 extern int LINES;                       /* terminal height */
  422. 00710 extern int COLS;                        /* terminal width */
  423. 00711 extern bool NONL;                       /* n causes CR too ? */
  424. 00712 extern WINDOW *curscr;                  /* the current screen image */
  425. 00713 extern WINDOW *stdscr;                  /* the default screen window */
  426. 00714 extern struct termios _orig_tty, _tty;
  427. 00715
  428. 00716 extern unsigned int ACS_ULCORNER;       /* terminal dependent block grafic */
  429. 00717 extern unsigned int ACS_LLCORNER;       /* charcters.  Forget IBM, we are */
  430. 00718 extern unsigned int ACS_URCORNER;       /* independent of their charset. :-) */
  431. 00719 extern unsigned int ACS_LRCORNER;
  432. 00720 extern unsigned int ACS_RTEE;
  433. 00721 extern unsigned int ACS_LTEE;
  434. 00722 extern unsigned int ACS_BTEE;
  435. 00723 extern unsigned int ACS_TTEE;
  436. 00724 extern unsigned int ACS_HLINE;
  437. 00725 extern unsigned int ACS_VLINE;
  438. 00726 extern unsigned int ACS_PLUS;
  439. 00727 extern unsigned int ACS_S1;
  440. 00728 extern unsigned int ACS_S9;
  441. 00729 extern unsigned int ACS_DIAMOND;
  442. 00730 extern unsigned int ACS_CKBOARD;
  443. 00731 extern unsigned int ACS_DEGREE;
  444. 00732 extern unsigned int ACS_PLMINUS;
  445. 00733 extern unsigned int ACS_BULLET;
  446. 00734 extern unsigned int ACS_LARROW;
  447. 00735 extern unsigned int ACS_RARROW;
  448. 00736 extern unsigned int ACS_DARROW;
  449. 00737 extern unsigned int ACS_UARROW;
  450. 00738 extern unsigned int ACS_BOARD;
  451. 00739 extern unsigned int ACS_LANTERN;
  452. 00740 extern unsigned int ACS_BLOCK;
  453. 00741
  454. 00742 _PROTOTYPE( char *unctrl, (int _c) );
  455. 00743 _PROTOTYPE( int baudrate, (void));
  456. 00744 _PROTOTYPE( void beep, (void));
  457. 00745 _PROTOTYPE( void cbreak, (void));
  458. 00746 _PROTOTYPE( void clearok, (WINDOW *_win, bool _flag) );
  459. 00747 _PROTOTYPE( void clrscr, (void));
  460. 00748 _PROTOTYPE( void curs_set, (int _visibility) );
  461. 00749 _PROTOTYPE( void delwin, (WINDOW *_win) );
  462. 00750 _PROTOTYPE( void doupdate, (void));
  463. 00751 _PROTOTYPE( void echo, (void));
  464. 00752 _PROTOTYPE( int endwin, (void));
  465. 00753 _PROTOTYPE( int erasechar, (void));
  466. 00754 _PROTOTYPE( void fatal, (char *_s) );
  467. 00755 _PROTOTYPE( int fixterm, (void));
  468. 00756 _PROTOTYPE( void flash, (void));
  469. 00757 _PROTOTYPE( void gettmode, (void));
  470. 00758 _PROTOTYPE( void idlok, (WINDOW *_win, bool _flag) );
  471. 00759 _PROTOTYPE( WINDOW *initscr, (void));
  472. 00760 _PROTOTYPE( void keypad, (WINDOW *_win, bool _flag) );
  473. 00761 _PROTOTYPE( int killchar, (void));
  474. 00762 _PROTOTYPE( void leaveok, (WINDOW *_win, bool _flag) );
  475. 00763 _PROTOTYPE( char *longname, (void));
  476. 00764 _PROTOTYPE( void meta, (WINDOW *_win, bool _flag) );
  477. 00765 _PROTOTYPE( int mvcur, (int _oldy, int _oldx, int _newy, int _newx) );
  478. 00766 _PROTOTYPE( int mvinch, (int _y, int _x) );
  479. 00767 _PROTOTYPE( int mvprintw, (int _y, int _x, const char *_fmt, ...) );
  480. 00768 _PROTOTYPE( int mvscanw, (int _y, int _x, const char *_fmt, ...) );
  481. 00769 _PROTOTYPE( int mvwin, (WINDOW *_win, int _begy, int _begx) );
  482. 00770 _PROTOTYPE( int mvwinch, (WINDOW *_win, int _y, int _x) );
  483. 00771 _PROTOTYPE( int mvwprintw, (WINDOW *_win, int _y, int _x, const char *_fmt,
  484. 00772                                                                         ...) );
  485. 00773 _PROTOTYPE( int mvwscanw, (WINDOW *_win, int _y, int _x, const char *_fmt,
  486. 00774                                                                         ...) );
  487. 00775 _PROTOTYPE( WINDOW *newwin, (int _num_lines, int _num_cols, int _y, int _x));
  488. 00776 _PROTOTYPE( void nl, (void));
  489. 00777 _PROTOTYPE( void nocbreak, (void));
  490. 00778 _PROTOTYPE( void nodelay, (WINDOW *_win, bool _flag) );
  491. 00779 _PROTOTYPE( void noecho, (void));
  492. 00780 _PROTOTYPE( void nonl, (void));
  493. 00781 _PROTOTYPE( void noraw, (void));
  494. 00782 _PROTOTYPE( void outc, (int _c) );
  495. 00783 _PROTOTYPE( void  overlay, (WINDOW *_win1, WINDOW *_win2) );
  496. 00784 _PROTOTYPE( void  overwrite, (WINDOW *_win1, WINDOW *_win2) );
  497. 00785 _PROTOTYPE( void poscur, (int _r, int _c) );
  498. 00786 _PROTOTYPE( int printw, (const char *_fmt, ...) );
  499. 00787 _PROTOTYPE( void raw, (void));
  500. 00788 _PROTOTYPE( int resetterm, (void));
  501. 00789 _PROTOTYPE( int saveoldterm, (void));
  502. 00790 _PROTOTYPE( int saveterm, (void));
  503. 00791 _PROTOTYPE( int savetty, (void));
  504. 00792 _PROTOTYPE( int scanw, (const char *_fmt, ...) );
  505. 00793 _PROTOTYPE( void scroll, (WINDOW *_win) );
  506. 00794 _PROTOTYPE( void scrollok, (WINDOW *_win, bool _flag) );
  507. 00795 _PROTOTYPE( int setscrreg, (int _top, int _bottom) );
  508. 00796 _PROTOTYPE( int setterm, (char *_type) );
  509. 00797 _PROTOTYPE( int setupterm, (void));
  510. 00798 _PROTOTYPE( WINDOW *subwin, (WINDOW *_orig, int _nlines, int _ncols, int _y,
  511. 00799                                         int _x));
  512. 00800 _PROTOTYPE( int tabsize, (int _ts) );
  513. 00801 _PROTOTYPE( void touchwin, (WINDOW *_win) );
  514. 00802 _PROTOTYPE( int waddch, (WINDOW *_win, int _c) );
  515. 00803 _PROTOTYPE( int waddstr, (WINDOW *_win, char *_str) );
  516. 00804 _PROTOTYPE( int wbox, (WINDOW *_win, int _ymin, int _xmin, int _ymax,
  517. 00805                                 int _xmax, unsigned int _v, unsigned int _h) );
  518. 00806 _PROTOTYPE( void wclear, (WINDOW *_win) );
  519. 00807 _PROTOTYPE( int wclrtobot, (WINDOW *_win) );
  520. 00808 _PROTOTYPE( int wclrtoeol, (WINDOW *_win) );
  521. 00809 _PROTOTYPE( int wdelch, (WINDOW *_win) );
  522. 00810 _PROTOTYPE( int wdeleteln, (WINDOW *_win) );
  523. 00811 _PROTOTYPE( void werase, (WINDOW *_win) );
  524. 00812 _PROTOTYPE( int wgetch, (WINDOW *_win) );
  525. 00813 _PROTOTYPE( int wgetstr, (WINDOW *_win, char *_str) );
  526. 00814 _PROTOTYPE( int winch, (WINDOW *_win) );
  527. 00815 _PROTOTYPE( int winsch, (WINDOW *_win, int _c) );
  528. 00816 _PROTOTYPE( int winsertln, (WINDOW *_win) );
  529. 00817 _PROTOTYPE( int wmove, (WINDOW *_win, int _y, int _x) );
  530. 00818 _PROTOTYPE( void wnoutrefresh, (WINDOW *_win) );
  531. 00819 _PROTOTYPE( int wprintw, (WINDOW *_win, const char *_fmt, ...));
  532. 00820 _PROTOTYPE( void wrefresh, (WINDOW *_win) );
  533. 00821 _PROTOTYPE( int wscanw, (WINDOW *_win, const char *_fmt, ...));
  534. 00822 _PROTOTYPE( int wsetscrreg, (WINDOW *_win, int _top, int _bottom) );
  535. 00823 _PROTOTYPE( int wtabsize, (WINDOW *_win, int _ts) );
  536. 00824
  537. 00825 #endif /* _CURSES_H */
  538. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  539. include/dirent.h    
  540. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  541. 00900 /*      dirent.h - Declarations for directory reading routines.
  542. 00901  *                                                      Author: Kees J. Bot
  543. 00902  *                                                              24 Apr 1989
  544. 00903  * 
  545. 00904  * Note: The V7 format directory entries used under Minix must be transformed
  546. 00905  * into a struct dirent with a d_name of at least 15 characters.  Given that
  547. 00906  * we have to transform V7 entries anyhow it is little trouble to let the
  548. 00907  * routines understand the so-called "flex" directory format too.
  549. 00908  */
  550. 00909
  551. 00910 #ifndef _DIRENT_H
  552. 00911 #define _DIRENT_H
  553. 00912
  554. 00913 /* _fl_direct is a flexible directory entry.  Actually it's a union of 8
  555. 00914  * characters and the 3 fields defined below. 
  556. 00915  */
  557. 00916
  558. 00917 /* Flexible directory entry: */
  559. 00918 struct _fl_direct {             /* First slot in an entry */
  560. 00919         ino_t           d_ino;
  561. 00920         unsigned char   d_extent;
  562. 00921         char            d_name[5];  /* Four characters for the shortest name */
  563. 00922 };
  564. 00923
  565. 00924         /* Name of length len needs _EXTENT(len) extra slots. */
  566. 00925 #define _EXTENT(len)    (((len) + 3) >> 3)
  567. 00926
  568. 00927 /* Version 7 directory entry: */
  569. 00928 struct _v7_direct {             
  570. 00929         ino_t           d_ino;
  571. 00930         char            d_name[14];
  572. 00931 };
  573. 00932
  574. 00933 /* Definitions for the directory(3) routines: */
  575. 00934 typedef struct {
  576. 00935         char            _fd;    /* Filedescriptor of open directory */
  577. 00936         char            _v7;    /* Directory is Version 7 */
  578. 00937         short           _count; /* This many objects in buf */
  579. 00938         off_t           _pos;   /* Position in directory file */
  580. 00939         struct _fl_direct  *_ptr;       /* Next slot in buf */
  581. 00940         struct _fl_direct  _buf[128];   /* One block of a directory file */
  582. 00941         struct _fl_direct  _v7f[3];     /* V7 entry transformed to flex */
  583. 00942 } DIR;
  584. 00943
  585. 00944 struct dirent {         /* Largest entry (8 slots) */
  586. 00945         ino_t           d_ino;          /* I-node number */
  587. 00946         unsigned char   d_extent;       /* Extended with this many slots */
  588. 00947         char            d_name[61];     /* Null terminated name */
  589. 00948 };
  590. 00949
  591. 00950 /* Function Prototypes. */
  592. 00951 #ifndef _ANSI_H
  593. 00952 #include <ansi.h>
  594. 00953 #endif
  595. 00954
  596. 00955 _PROTOTYPE( int closedir, (DIR *_dirp)                                  );
  597. 00956 _PROTOTYPE( DIR *opendir, (const char *_dirname)                        );
  598. 00957 _PROTOTYPE( struct dirent *readdir, (DIR *_dirp)                        );
  599. 00958 _PROTOTYPE( void rewinddir, (DIR *_dirp)                                );
  600. 00959
  601. 00960 #ifdef _MINIX
  602. 00961 _PROTOTYPE( int seekdir, (DIR *_dirp, off_t _loc)                       );
  603. 00962 _PROTOTYPE( off_t telldir, (DIR *_dirp)                                 );
  604. 00963 #endif
  605. 00964
  606. 00965 #endif /* _DIRENT_H */
  607. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  608. include/errno.h    
  609. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  610. 01000 /* The <errno.h> header defines the numbers of the various errors that can
  611. 01001  * occur during program execution.  They are visible to user programs and 
  612. 01002  * should be small positive integers.  However, they are also used within 
  613. 01003  * MINIX, where they must be negative.  For example, the READ system call is 
  614. 01004  * executed internally by calling do_read().  This function returns either a 
  615. 01005  * (negative) error number or a (positive) number of bytes actually read.
  616. 01006  *
  617. 01007  * To solve the problem of having the error numbers be negative inside the
  618. 01008  * the system and positive outside, the following mechanism is used.  All the
  619. 01009  * definitions are are the form:
  620. 01010  *
  621. 01011  *      #define EPERM           (_SIGN 1)
  622. 01012  *
  623. 01013  * If the macro _SYSTEM is defined, then  _SIGN is set to "-", otherwise it is
  624. 01014  * set to "".  Thus when compiling the operating system, the  macro _SYSTEM
  625. 01015  * will be defined, setting EPERM to (- 1), whereas when when this
  626. 01016  * file is included in an ordinary user program, EPERM has the value ( 1).
  627. 01017  */
  628. 01018
  629. 01019 #ifndef _ERRNO_H                /* check if <errno.h> is already included */
  630. 01020 #define _ERRNO_H                /* it is not included; note that fact */
  631. 01021
  632. 01022 /* Now define _SIGN as "" or "-" depending on _SYSTEM. */
  633. 01023 #ifdef _SYSTEM
  634. 01024 #   define _SIGN         -
  635. 01025 #   define OK            0
  636. 01026 #else
  637. 01027 #   define _SIGN         
  638. 01028 #endif
  639. 01029
  640. 01030 extern int errno;                 /* place where the error numbers go */
  641. 01031
  642. 01032 /* Here are the numerical values of the error numbers. */
  643. 01033 #define _NERROR               70  /* number of errors */  
  644. 01034
  645. 01035 #define EGENERIC      (_SIGN 99)  /* generic error */
  646. 01036 #define EPERM         (_SIGN  1)  /* operation not permitted */
  647. 01037 #define ENOENT        (_SIGN  2)  /* no such file or directory */
  648. 01038 #define ESRCH         (_SIGN  3)  /* no such process */
  649. 01039 #define EINTR         (_SIGN  4)  /* interrupted function call */
  650. 01040 #define EIO           (_SIGN  5)  /* input/output error */
  651. 01041 #define ENXIO         (_SIGN  6)  /* no such device or address */
  652. 01042 #define E2BIG         (_SIGN  7)  /* arg list too long */
  653. 01043 #define ENOEXEC       (_SIGN  8)  /* exec format error */
  654. 01044 #define EBADF         (_SIGN  9)  /* bad file descriptor */
  655. 01045 #define ECHILD        (_SIGN 10)  /* no child process */
  656. 01046 #define EAGAIN        (_SIGN 11)  /* resource temporarily unavailable */
  657. 01047 #define ENOMEM        (_SIGN 12)  /* not enough space */
  658. 01048 #define EACCES        (_SIGN 13)  /* permission denied */
  659. 01049 #define EFAULT        (_SIGN 14)  /* bad address */
  660. 01050 #define ENOTBLK       (_SIGN 15)  /* Extension: not a block special file */
  661. 01051 #define EBUSY         (_SIGN 16)  /* resource busy */
  662. 01052 #define EEXIST        (_SIGN 17)  /* file exists */
  663. 01053 #define EXDEV         (_SIGN 18)  /* improper link */
  664. 01054 #define ENODEV        (_SIGN 19)  /* no such device */
  665. 01055 #define ENOTDIR       (_SIGN 20)  /* not a directory */
  666. 01056 #define EISDIR        (_SIGN 21)  /* is a directory */
  667. 01057 #define EINVAL        (_SIGN 22)  /* invalid argument */
  668. 01058 #define ENFILE        (_SIGN 23)  /* too many open files in system */
  669. 01059 #define EMFILE        (_SIGN 24)  /* too many open files */
  670. 01060 #define ENOTTY        (_SIGN 25)  /* inappropriate I/O control operation */
  671. 01061 #define ETXTBSY       (_SIGN 26)  /* no longer used */
  672. 01062 #define EFBIG         (_SIGN 27)  /* file too large */
  673. 01063 #define ENOSPC        (_SIGN 28)  /* no space left on device */
  674. 01064 #define ESPIPE        (_SIGN 29)  /* invalid seek */
  675. 01065 #define EROFS         (_SIGN 30)  /* read-only file system */
  676. 01066 #define EMLINK        (_SIGN 31)  /* too many links */
  677. 01067 #define EPIPE         (_SIGN 32)  /* broken pipe */
  678. 01068 #define EDOM          (_SIGN 33)  /* domain error       (from ANSI C std) */
  679. 01069 #define ERANGE        (_SIGN 34)  /* result too large   (from ANSI C std) */
  680. 01070 #define EDEADLK       (_SIGN 35)  /* resource deadlock avoided */
  681. 01071 #define ENAMETOOLONG  (_SIGN 36)  /* file name too long */
  682. 01072 #define ENOLCK        (_SIGN 37)  /* no locks available */
  683. 01073 #define ENOSYS        (_SIGN 38)  /* function not implemented */
  684. 01074 #define ENOTEMPTY     (_SIGN 39)  /* directory not empty */
  685. 01075
  686. 01076 /* The following errors relate to networking. */
  687. 01077 #define EPACKSIZE     (_SIGN 50)  /* invalid packet size for some protocol */
  688. 01078 #define EOUTOFBUFS    (_SIGN 51)  /* not enough buffers left */
  689. 01079 #define EBADIOCTL     (_SIGN 52)  /* illegal ioctl for device */
  690. 01080 #define EBADMODE      (_SIGN 53)  /* badmode in ioctl */
  691. 01081 #define EWOULDBLOCK   (_SIGN 54)
  692. 01082 #define EBADDEST      (_SIGN 55)  /* not a valid destination address */
  693. 01083 #define EDSTNOTRCH    (_SIGN 56)  /* destination not reachable */
  694. 01084 #define EISCONN       (_SIGN 57)  /* all ready connected */
  695. 01085 #define EADDRINUSE    (_SIGN 58)  /* address in use */
  696. 01086 #define ECONNREFUSED  (_SIGN 59)  /* connection refused */
  697. 01087 #define ECONNRESET    (_SIGN 60)  /* connection reset */
  698. 01088 #define ETIMEDOUT     (_SIGN 61)  /* connection timed out */
  699. 01089 #define EURG          (_SIGN 62)  /* urgent data present */
  700. 01090 #define ENOURG        (_SIGN 63)  /* no urgent data present */
  701. 01091 #define ENOTCONN      (_SIGN 64)  /* no connection (yet or anymore) */
  702. 01092 #define ESHUTDOWN     (_SIGN 65)  /* a write call to a shutdown connection */
  703. 01093 #define ENOCONN       (_SIGN 66)  /* no such connection */
  704. 01094
  705. 01095 /* The following are not POSIX errors, but they can still happen. */
  706. 01096 #define ELOCKED      (_SIGN 101)  /* can't send message */
  707. 01097 #define EBADCALL     (_SIGN 102)  /* error on send/receive */
  708. 01098
  709. 01099 /* The following error codes are generated by the kernel itself. */
  710. 01100 #ifdef _SYSTEM
  711. 01101 #define E_BAD_DEST     -1001    /* destination address illegal */
  712. 01102 #define E_BAD_SRC      -1002    /* source address illegal */
  713. 01103 #define E_TRY_AGAIN    -1003    /* can't send-- tables full */
  714. 01104 #define E_OVERRUN      -1004    /* interrupt for task that is not waiting */
  715. 01105 #define E_BAD_BUF      -1005    /* message buf outside caller's addr space */
  716. 01106 #define E_TASK         -1006    /* can't send to task */
  717. 01107 #define E_NO_MESSAGE   -1007    /* RECEIVE failed: no message present */
  718. 01108 #define E_NO_PERM      -1008    /* ordinary users can't send to tasks */
  719. 01109 #define E_BAD_FCN      -1009    /* only valid fcns are SEND, RECEIVE, BOTH */
  720. 01110 #define E_BAD_ADDR     -1010    /* bad address given to utility routine */
  721. 01111 #define E_BAD_PROC     -1011    /* bad proc number given to utility */
  722. 01112 #endif /* _SYSTEM */
  723. 01113
  724. 01114 #endif /* _ERRNO_H */
  725. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  726. include/fcntl.h    
  727. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  728. 01200 /* The <fcntl.h> header is needed by the open() and fcntl() system calls,
  729. 01201  * which  have a variety of parameters and flags.  They are described here.  
  730. 01202  * The formats of the calls to each of these are:
  731. 01203  *
  732. 01204  *      open(path, oflag [,mode])       open a file
  733. 01205  *      fcntl(fd, cmd [,arg])           get or set file attributes
  734. 01206  * 
  735. 01207  */
  736. 01208
  737. 01209 #ifndef _FCNTL_H
  738. 01210 #define _FCNTL_H
  739. 01211
  740. 01212 /* These values are used for cmd in fcntl().  POSIX Table 6-1.  */
  741. 01213 #define F_DUPFD            0    /* duplicate file descriptor */
  742. 01214 #define F_GETFD            1    /* get file descriptor flags */
  743. 01215 #define F_SETFD            2    /* set file descriptor flags */
  744. 01216 #define F_GETFL            3    /* get file status flags */
  745. 01217 #define F_SETFL            4    /* set file status flags */
  746. 01218 #define F_GETLK            5    /* get record locking information */
  747. 01219 #define F_SETLK            6    /* set record locking information */
  748. 01220 #define F_SETLKW           7    /* set record locking info; wait if blocked */
  749. 01221
  750. 01222 /* File descriptor flags used for fcntl().  POSIX Table 6-2. */
  751. 01223 #define FD_CLOEXEC         1    /* close on exec flag for third arg of fcntl */
  752. 01224
  753. 01225 /* L_type values for record locking with fcntl().  POSIX Table 6-3. */
  754. 01226 #define F_RDLCK            1    /* shared or read lock */
  755. 01227 #define F_WRLCK            2    /* exclusive or write lock */
  756. 01228 #define F_UNLCK            3    /* unlock */
  757. 01229
  758. 01230 /* Oflag values for open().  POSIX Table 6-4. */
  759. 01231 #define O_CREAT        00100    /* creat file if it doesn't exist */
  760. 01232 #define O_EXCL         00200    /* exclusive use flag */
  761. 01233 #define O_NOCTTY       00400    /* do not assign a controlling terminal */
  762. 01234 #define O_TRUNC        01000    /* truncate flag */
  763. 01235
  764. 01236 /* File status flags for open() and fcntl().  POSIX Table 6-5. */
  765. 01237 #define O_APPEND       02000    /* set append mode */
  766. 01238 #define O_NONBLOCK     04000    /* no delay */
  767. 01239
  768. 01240 /* File access modes for open() and fcntl().  POSIX Table 6-6. */
  769. 01241 #define O_RDONLY           0    /* open(name, O_RDONLY) opens read only */
  770. 01242 #define O_WRONLY           1    /* open(name, O_WRONLY) opens write only */
  771. 01243 #define O_RDWR             2    /* open(name, O_RDWR) opens read/write */
  772. 01244
  773. 01245 /* Mask for use with file access modes.  POSIX Table 6-7. */
  774. 01246 #define O_ACCMODE         03    /* mask for file access modes */
  775. 01247
  776. 01248 /* Struct used for locking.  POSIX Table 6-8. */
  777. 01249 struct flock {
  778. 01250   short l_type;                 /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
  779. 01251   short l_whence;               /* flag for starting offset */
  780. 01252   off_t l_start;                /* relative offset in bytes */
  781. 01253   off_t l_len;                  /* size; if 0, then until EOF */
  782. 01254   pid_t l_pid;                  /* process id of the locks' owner */
  783. 01255 };
  784. 01256
  785. 01257
  786. 01258 /* Function Prototypes. */
  787. 01259 #ifndef _ANSI_H
  788. 01260 #include <ansi.h>
  789. 01261 #endif
  790. 01262
  791. 01263 _PROTOTYPE( int creat, (const char *_path, Mode_t _mode)                );
  792. 01264 _PROTOTYPE( int fcntl, (int _filedes, int _cmd, ...)                    );
  793. 01265 _PROTOTYPE( int open,  (const char *_path, int _oflag, ...)             );
  794. 01266
  795. 01267 #endif /* _FCNTL_H */
  796. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  797. include/float.h    
  798. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  799. 01300 /* The <float.h> header defines some implementation limits for (IEEE) floating
  800. 01301  * point. Application programs can use it to find out how big and small 
  801. 01302  * floating-point numbers can be, what epsilon to use for iteration, etc.
  802. 01303  */
  803. 01304
  804. 01305 #ifndef _FLOAT_H
  805. 01306 #define _FLOAT_H
  806. 01307
  807. 01308 #define FLT_DIG                 6
  808. 01309 #define FLT_EPSILON             1.19209290e-07F
  809. 01310 #define FLT_MANT_DIG            24
  810. 01311 #define FLT_MAX                 3.40282347e+38F
  811. 01312 #define FLT_MAX_10_EXP          38
  812. 01313 #define FLT_MAX_EXP             128
  813. 01314 #define FLT_MIN                 1.17549435e-38F
  814. 01315 #define FLT_MIN_10_EXP          -37
  815. 01316 #define FLT_MIN_EXP             -125
  816. 01317
  817. 01318 #define DBL_DIG                 15
  818. 01319 #define DBL_EPSILON             2.2204460492503131e-16
  819. 01320 #define DBL_MANT_DIG            53
  820. 01321 #define DBL_MAX                 1.7976931348623157e+308
  821. 01322 #define DBL_MAX_10_EXP          308
  822. 01323 #define DBL_MAX_EXP             1024
  823. 01324 #define DBL_MIN                 2.2250738585072014e-308
  824. 01325 #define DBL_MIN_10_EXP          -307
  825. 01326 #define DBL_MIN_EXP             -1021
  826. 01327
  827. 01328 #define LDBL_DIG                15
  828. 01329 #define LDBL_EPSILON            2.2204460492503131e-16L
  829. 01330 #define LDBL_MANT_DIG           53
  830. 01331 #define LDBL_MAX                1.7976931348623157e+308L
  831. 01332 #define LDBL_MAX_10_EXP         308
  832. 01333 #define LDBL_MAX_EXP            1024
  833. 01334 #define LDBL_MIN                2.2250738585072014e-308L
  834. 01335 #define LDBL_MIN_10_EXP         -307
  835. 01336 #define LDBL_MIN_EXP            -1021
  836. 01337
  837. 01338 #define FLT_ROUNDS              1
  838. 01339 #define FLT_RADIX               2
  839. 01340
  840. 01341 #endif /* _FLOAT_H */
  841. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  842. include/grp.h    
  843. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  844. 01400 /* The <grp.h> header is used for the getgrid() and getgrnam() calls. */
  845. 01401
  846. 01402 #ifndef _GRP_H
  847. 01403 #define _GRP_H
  848. 01404
  849. 01405 struct  group { 
  850. 01406   char *gr_name;                /* the name of the group */
  851. 01407   char *gr_passwd;              /* the group passwd */
  852. 01408   gid_t gr_gid;                 /* the numerical group ID */
  853. 01409   char **gr_mem;                /* a vector of pointers to the members */
  854. 01410 };
  855. 01411
  856. 01412 /* Function Prototypes. */
  857. 01413 #ifndef _ANSI_H
  858. 01414 #include <ansi.h>
  859. 01415 #endif
  860. 01416
  861. 01417 _PROTOTYPE( struct group *getgrgid, (Gid_t _gid)                        );
  862. 01418 _PROTOTYPE( struct group *getgrnam, (const char *_name)                 );
  863. 01419
  864. 01420 #ifdef _MINIX
  865. 01421 _PROTOTYPE( void endgrent, (void)                                       );
  866. 01422 _PROTOTYPE( struct group *getgrent, (void)                              );
  867. 01423 _PROTOTYPE( int setgrent, (void)                                        );
  868. 01424 _PROTOTYPE( void setgrfile, (const char *_file)                         );
  869. 01425 #endif
  870. 01426
  871. 01427 #endif /* _GRP_H */
  872. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  873. include/lib.h    
  874. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  875. 01500 /* The <lib.h> header is the master header used by the library.
  876. 01501  * All the C files in the lib subdirectories include it.
  877. 01502  */
  878. 01503
  879. 01504 #ifndef _LIB_H
  880. 01505 #define _LIB_H
  881. 01506
  882. 01507 /* First come the defines. */
  883. 01508 #define _POSIX_SOURCE      1    /* tell headers to include POSIX stuff */
  884. 01509 #define _MINIX             1    /* tell headers to include MINIX stuff */
  885. 01510
  886. 01511 /* The following are so basic, all the lib files get them automatically. */
  887. 01512 #include <minix/config.h>       /* must be first */
  888. 01513 #include <sys/types.h>
  889. 01514 #include <limits.h>
  890. 01515 #include <errno.h>
  891. 01516 #include <ansi.h>
  892. 01517
  893. 01518 #include <minix/const.h>
  894. 01519 #include <minix/type.h>
  895. 01520 #include <minix/callnr.h>
  896. 01521
  897. 01522 #define MM                 0
  898. 01523 #define FS                 1
  899. 01524
  900. 01525 _PROTOTYPE( int __execve, (const char *_path, char *const _argv[], 
  901. 01526                         char *const _envp[], int _nargs, int _nenvps)   );
  902. 01527 _PROTOTYPE( int _syscall, (int _who, int _syscallnr, message *_msgptr)  );
  903. 01528 _PROTOTYPE( void _loadname, (const char *_name, message *_msgptr)       );
  904. 01529 _PROTOTYPE( int _len, (const char *_s)                                  );
  905. 01530 _PROTOTYPE( void panic, (const char *_message, int _errnum)             );
  906. 01531 _PROTOTYPE( int _sendrec, (int _src_dest, message *_m_ptr)              );
  907. 01532 _PROTOTYPE( void _begsig, (int _dummy)                                  );
  908. 01533
  909. 01534 #endif /* _LIB_H */
  910. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  911. include/limits.h    
  912. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  913. 01600 /* The <limits.h> header defines some basic sizes, both of the language types 
  914. 01601  * (e.g., the number of bits in an integer), and of the operating system (e.g.
  915. 01602  * the number of characters in a file name.
  916. 01603  */
  917. 01604
  918. 01605 #ifndef _LIMITS_H
  919. 01606 #define _LIMITS_H
  920. 01607
  921. 01608 /* Definitions about chars (8 bits in MINIX, and signed). */
  922. 01609 #define CHAR_BIT           8    /* # bits in a char */
  923. 01610 #define CHAR_MIN        -128    /* minimum value of a char */
  924. 01611 #define CHAR_MAX         127    /* maximum value of a char */
  925. 01612 #define SCHAR_MIN       -128    /* minimum value of a signed char */
  926. 01613 #define SCHAR_MAX        127    /* maximum value of a signed char */
  927. 01614 #define UCHAR_MAX        255    /* maximum value of an unsigned char */
  928. 01615 #define MB_LEN_MAX         1    /* maximum length of a multibyte char */
  929. 01616
  930. 01617 /* Definitions about shorts (16 bits in MINIX). */
  931. 01618 #define SHRT_MIN  (-32767-1)    /* minimum value of a short */
  932. 01619 #define SHRT_MAX       32767    /* maximum value of a short */
  933. 01620 #define USHRT_MAX     0xFFFF    /* maximum value of unsigned short */
  934. 01621
  935. 01622 /* _EM_WSIZE is a compiler-generated symbol giving the word size in bytes. */
  936. 01623 #if _EM_WSIZE == 2
  937. 01624 #define INT_MIN   (-32767-1)    /* minimum value of a 16-bit int */
  938. 01625 #define INT_MAX        32767    /* maximum value of a 16-bit int */
  939. 01626 #define UINT_MAX      0xFFFF    /* maximum value of an unsigned 16-bit int */
  940. 01627 #endif
  941. 01628
  942. 01629 #if _EM_WSIZE == 4
  943. 01630 #define INT_MIN (-2147483647-1) /* minimum value of a 32-bit int */
  944. 01631 #define INT_MAX   2147483647    /* maximum value of a 32-bit int */
  945. 01632 #define UINT_MAX  0xFFFFFFFF    /* maximum value of an unsigned 32-bit int */
  946. 01633 #endif
  947. 01634
  948. 01635 /*Definitions about longs (32 bits in MINIX). */
  949. 01636 #define LONG_MIN (-2147483647L-1)/* minimum value of a long */
  950. 01637 #define LONG_MAX  2147483647L   /* maximum value of a long */
  951. 01638 #define ULONG_MAX 0xFFFFFFFFL   /* maximum value of an unsigned long */
  952. 01639
  953. 01640 /* Minimum sizes required by the POSIX P1003.1 standard (Table 2-3). */
  954. 01641 #ifdef _POSIX_SOURCE            /* these are only visible for POSIX */
  955. 01642 #define _POSIX_ARG_MAX    4096  /* exec() may have 4K worth of args */
  956. 01643 #define _POSIX_CHILD_MAX     6  /* a process may have 6 children */
  957. 01644 #define _POSIX_LINK_MAX      8  /* a file may have 8 links */
  958. 01645 #define _POSIX_MAX_CANON   255  /* size of the canonical input queue */
  959. 01646 #define _POSIX_MAX_INPUT   255  /* you can type 255 chars ahead */
  960. 01647 #define _POSIX_NAME_MAX     14  /* a file name may have 14 chars */
  961. 01648 #define _POSIX_NGROUPS_MAX   0  /* supplementary group IDs are optional */
  962. 01649 #define _POSIX_OPEN_MAX     16  /* a process may have 16 files open */
  963. 01650 #define _POSIX_PATH_MAX    255  /* a pathname may contain 255 chars */
  964. 01651 #define _POSIX_PIPE_BUF    512  /* pipes writes of 512 bytes must be atomic */
  965. 01652 #define _POSIX_STREAM_MAX    8  /* at least 8 FILEs can be open at once */
  966. 01653 #define _POSIX_TZNAME_MAX    3  /* time zone names can be at least 3 chars */
  967. 01654 #define _POSIX_SSIZE_MAX 32767  /* read() must support 32767 byte reads */
  968. 01655
  969. 01656 /* Values actually implemented by MINIX (Tables 2-4, 2-5, 2-6, and 2-7). */
  970. 01657 /* Some of these old names had better be defined when not POSIX. */
  971. 01658 #define _NO_LIMIT        100    /* arbitrary number; limit not enforced */
  972. 01659
  973. 01660 #define NGROUPS_MAX        0    /* supplemental group IDs not available */
  974. 01661 #if _EM_WSIZE > 2
  975. 01662 #define ARG_MAX        16384    /* # bytes of args + environ for exec() */
  976. 01663 #else
  977. 01664 #define ARG_MAX         4096    /* args + environ on small machines */
  978. 01665 #endif
  979. 01666 #define CHILD_MAX  _NO_LIMIT    /* MINIX does not limit children */
  980. 01667 #define OPEN_MAX          20    /* # open files a process may have */
  981. 01668 #define LINK_MAX         127    /* # links a file may have */
  982. 01669 #define MAX_CANON        255    /* size of the canonical input queue */
  983. 01670 #define MAX_INPUT        255    /* size of the type-ahead buffer */
  984. 01671 #define NAME_MAX          14    /* # chars in a file name */
  985. 01672 #define PATH_MAX         255    /* # chars in a path name */
  986. 01673 #define PIPE_BUF        7168    /* # bytes in atomic write to a pipe */
  987. 01674 #define STREAM_MAX        20    /* must be the same as FOPEN_MAX in stdio.h */
  988. 01675 #define TZNAME_MAX         3    /* maximum bytes in a time zone name is 3 */
  989. 01676 #define SSIZE_MAX      32767    /* max defined byte count for read() */
  990. 01677
  991. 01678 #endif /* _POSIX_SOURCE */
  992. 01679
  993. 01680 #endif /* _LIMITS_H */
  994. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  995. include/locale.h    
  996. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  997. 01700 /* The <locale.h> header is used to custom tailor currency symbols, decimal 
  998. 01701  * points, and other items to the local style.  It is ANSI's attempt at 
  999. 01702  * avoiding cultural imperialism.  The locale given below is for C.
  1000. 01703  */
  1001. 01704
  1002. 01705 #ifndef _LOCALE_H
  1003. 01706 #define _LOCALE_H
  1004. 01707
  1005. 01708 struct lconv {
  1006. 01709   char *decimal_point;          /* "." */
  1007. 01710   char *thousands_sep;          /* ""  */
  1008. 01711   char *grouping;               /* ""  */
  1009. 01712   char *int_curr_symbol;        /* ""  */
  1010. 01713   char *currency_symbol;        /* ""  */
  1011. 01714   char *mon_decimal_point;      /* ""  */
  1012. 01715   char *mon_thousands_sep;      /* ""  */
  1013. 01716   char *mon_grouping;           /* ""  */
  1014. 01717   char *positive_sign;          /* ""  */
  1015. 01718   char *negative_sign;          /* ""  */
  1016. 01719   char int_frac_digits;         /* CHAR_MAX */
  1017. 01720   char frac_digits;             /* CHAR_MAX */
  1018. 01721   char p_cs_precedes;           /* CHAR_MAX */
  1019. 01722   char p_sep_by_space;          /* CHAR_MAX */
  1020. 01723   char n_cs_precedes;           /* CHAR_MAX */
  1021. 01724   char n_sep_by_space;          /* CHAR_MAX */
  1022. 01725   char p_sign_posn;             /* CHAR_MAX */
  1023. 01726   char n_sign_posn;             /* CHAR_MAX */
  1024. 01727 };
  1025. 01728
  1026. 01729 #define NULL    ((void *)0)
  1027. 01730
  1028. 01731 #define LC_ALL             1
  1029. 01732 #define LC_COLLATE         2
  1030. 01733 #define LC_CTYPE           3
  1031. 01734 #define LC_MONETARY        4
  1032. 01735 #define LC_NUMERIC         5
  1033. 01736 #define LC_TIME            6
  1034. 01737
  1035. 01738 /* Function Prototypes. */
  1036. 01739 #ifndef _ANSI_H
  1037. 01740 #include <ansi.h>
  1038. 01741 #endif
  1039. 01742
  1040. 01743 _PROTOTYPE( char *setlocale, (int _category, const char *_locale)       );
  1041. 01744 _PROTOTYPE( struct lconv *localeconv, (void)                            );
  1042. 01745
  1043. 01746 #endif /* _LOCALE_H */
  1044. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1045. include/math.h    
  1046. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1047. 01800 /* The <math.h> header contains prototypes for mathematical functions. */
  1048. 01801
  1049. 01802 #ifndef _MATH_H
  1050. 01803 #define _MATH_H
  1051. 01804
  1052. 01805 #define HUGE_VAL        (__huge_val())          /* may be infinity */
  1053. 01806
  1054. 01807 /* Function Prototypes. */
  1055. 01808 #ifndef _ANSI_H
  1056. 01809 #include <ansi.h>
  1057. 01810 #endif
  1058. 01811
  1059. 01812 _PROTOTYPE( double __huge_val,  (void)                                  );
  1060. 01813 _PROTOTYPE( int __IsNan,        (double _x)                             );
  1061. 01814
  1062. 01815 _PROTOTYPE( double acos,  (double _x)                                   );
  1063. 01816 _PROTOTYPE( double asin,  (double _x)                                   );
  1064. 01817 _PROTOTYPE( double atan,  (double _x)                                   );
  1065. 01818 _PROTOTYPE( double atan2, (double _y, double _x)                        );
  1066. 01819 _PROTOTYPE( double ceil,  (double _x)                                   );
  1067. 01820 _PROTOTYPE( double cos,   (double _x)                                   );
  1068. 01821 _PROTOTYPE( double cosh,  (double _x)                                   );
  1069. 01822 _PROTOTYPE( double exp,   (double _x)                                   );
  1070. 01823 _PROTOTYPE( double fabs,  (double _x)                                   );
  1071. 01824 _PROTOTYPE( double floor, (double _x)                                   );
  1072. 01825 _PROTOTYPE( double fmod,  (double _x, double _y)                        );
  1073. 01826 _PROTOTYPE( double frexp, (double _x, int *_exp)                        );
  1074. 01827 _PROTOTYPE( double ldexp, (double _x, int _exp)                         );
  1075. 01828 _PROTOTYPE( double log,   (double _x)                                   );
  1076. 01829 _PROTOTYPE( double log10, (double _x)                                   );
  1077. 01830 _PROTOTYPE( double modf,  (double _x, double *_iptr)                    );
  1078. 01831 _PROTOTYPE( double pow,   (double _x, double _y)                        );
  1079. 01832 _PROTOTYPE( double sin,   (double _x)                                   );
  1080. 01833 _PROTOTYPE( double sinh,  (double _x)                                   );
  1081. 01834 _PROTOTYPE( double sqrt,  (double _x)                                   );
  1082. 01835 _PROTOTYPE( double tan,   (double _x)                                   );
  1083. 01836 _PROTOTYPE( double tanh,  (double _x)                                   );
  1084. 01837
  1085. 01838 #endif /* _MATH_H */
  1086. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1087. include/mathconst.h    
  1088. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1089. 01900 /*
  1090. 01901  * mathconst.h - mathematic constants
  1091. 01902  */
  1092. 01903 /* $Header: mathconst.h,v 1.3 89/12/18 13:59:33 eck Exp $ */
  1093. 01904
  1094. 01905 #ifndef _MATHCONST_H
  1095. 01906 #define _MATHCONST_H
  1096. 01907
  1097. 01908 /* Some constants (Hart & Cheney) */
  1098. 01909 #define M_PI            3.14159265358979323846264338327950288
  1099. 01910 #define M_2PI           6.28318530717958647692528676655900576
  1100. 01911 #define M_3PI_4         2.35619449019234492884698253745962716
  1101. 01912 #define M_PI_2          1.57079632679489661923132169163975144
  1102. 01913 #define M_3PI_8         1.17809724509617246442349126872981358
  1103. 01914 #define M_PI_4          0.78539816339744830961566084581987572
  1104. 01915 #define M_PI_8          0.39269908169872415480783042290993786
  1105. 01916 #define M_1_PI          0.31830988618379067153776752674502872
  1106. 01917 #define M_2_PI          0.63661977236758134307553505349005744
  1107. 01918 #define M_4_PI          1.27323954473516268615107010698011488
  1108. 01919 #define M_E             2.71828182845904523536028747135266250
  1109. 01920 #define M_LOG2E         1.44269504088896340735992468100189213
  1110. 01921 #define M_LOG10E        0.43429448190325182765112891891660508
  1111. 01922 #define M_LN2           0.69314718055994530941723212145817657
  1112. 01923 #define M_LN10          2.30258509299404568401799145468436421
  1113. 01924 #define M_SQRT2         1.41421356237309504880168872420969808
  1114. 01925 #define M_1_SQRT2       0.70710678118654752440084436210484904
  1115. 01926 #define M_EULER         0.57721566490153286060651209008240243
  1116. 01927
  1117. 01928 #endif /* _MATHCONST_H */
  1118. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1119. include/pwd.h    
  1120. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1121. 02000 /* The <pwd.h> header defines the items in the password file. */
  1122. 02001
  1123. 02002 #ifndef _PWD_H
  1124. 02003 #define _PWD_H
  1125. 02004
  1126. 02005 struct passwd {
  1127. 02006   char *pw_name;                /* login name */
  1128. 02007   uid_t pw_uid;                 /* uid corresponding to the name */
  1129. 02008   gid_t pw_gid;                 /* gid corresponding to the name */
  1130. 02009   char *pw_dir;                 /* user's home directory */
  1131. 02010   char *pw_shell;               /* name of the user's shell */
  1132. 02011
  1133. 02012   /* The following members are not defined by POSIX. */
  1134. 02013   char *pw_passwd;              /* password information */
  1135. 02014   char *pw_gecos;               /* just in case you have a GE 645 around */
  1136. 02015 };
  1137. 02016
  1138. 02017
  1139. 02018 /* Function Prototypes. */
  1140. 02019 #ifndef _ANSI_H
  1141. 02020 #include <ansi.h>
  1142. 02021 #endif
  1143. 02022
  1144. 02023 _PROTOTYPE( struct passwd *getpwnam, (const char *_name)                );
  1145. 02024 _PROTOTYPE( struct passwd *getpwuid, (Uid_t _uid)                       );
  1146. 02025
  1147. 02026 #ifdef _MINIX
  1148. 02027 _PROTOTYPE( void endpwent, (void)                                       );
  1149. 02028 _PROTOTYPE( struct passwd *getpwent, (void)                             );
  1150. 02029 _PROTOTYPE( int setpwent, (void)                                        );
  1151. 02030 _PROTOTYPE( void setpwfile, (const char *_file)                         );
  1152. 02031 #endif
  1153. 02032
  1154. 02033 #endif /* _PWD_H */
  1155. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1156. include/regexp.h    
  1157. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1158. 02100 /* The <regexp.h> header is used by the (V8-compatible) regexp(3) routines. */
  1159. 02101
  1160. 02102 #ifndef _REGEXP_H
  1161. 02103 #define _REGEXP_H
  1162. 02104
  1163. 02105 #define CHARBITS 0377
  1164. 02106 #define NSUBEXP  10
  1165. 02107 typedef struct regexp {
  1166. 02108         char *startp[NSUBEXP];
  1167. 02109         char *endp[NSUBEXP];
  1168. 02110         char regstart;          /* Internal use only. */
  1169. 02111         char reganch;           /* Internal use only. */
  1170. 02112         char *regmust;          /* Internal use only. */
  1171. 02113         int regmlen;            /* Internal use only. */
  1172. 02114         char program[1];        /* Unwarranted chumminess with compiler. */
  1173. 02115 } regexp;
  1174. 02116
  1175. 02117 /* Function Prototypes. */
  1176. 02118 #ifndef _ANSI_H
  1177. 02119 #include <ansi.h>
  1178. 02120 #endif
  1179. 02121
  1180. 02122 _PROTOTYPE( regexp *regcomp, (char *_exp)                               );
  1181. 02123 _PROTOTYPE( int regexec, (regexp *_prog, char *_string, int _bolflag)   );
  1182. 02124 _PROTOTYPE( void regsub, (regexp *_prog, char *_source, char *_dest)    );
  1183. 02125 _PROTOTYPE( void regerror, (char *_message)                             );
  1184. 02126
  1185. 02127 #endif /* _REGEXP_H */
  1186. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1187. include/setjmp.h    
  1188. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1189. 02200 /* The <setjmp.h> header relates to the C phenomenon known as setjmp/longjmp.
  1190. 02201  * It is used to escape out of the current situation into a previous one.
  1191. 02202  * A typical example is in an editor, where hitting DEL breaks off the current
  1192. 02203  * command and puts the editor back in the main loop, though care has to be
  1193. 02204  * taken when the DEL occurs while executing a library function, since
  1194. 02205  * some of them are not reentrant.
  1195. 02206  *
  1196. 02207  * POSIX does not require the process signal mask to be saved and restored
  1197. 02208  * during setjmp/longjmp.  However, the current implementation does this
  1198. 02209  * in order to agree with OSF/1 and other BSD derived systems.
  1199. 02210  *
  1200. 02211  * The pair of functions _setjmp/_longjmp may be used when the signal
  1201. 02212  * mask is not to be saved/restored.  These functions are traditional
  1202. 02213  * in BSD systems.
  1203. 02214  *
  1204. 02215  * There are different ways of implementing setjmp/longjmp.  Probably
  1205. 02216  * the best way is to unify it with signal handling.  This is true for the
  1206. 02217  * following reasons:  Both setjmp/longjmp and signal delivery must save 
  1207. 02218  * a context so that it may be restored later.  The jmp_buf necessarily 
  1208. 02219  * contains signal information, namely the signal mask to restore.  Both
  1209. 02220  * longjmp and the return of a signal handler must trap to the operating
  1210. 02221  * system to restore the previous signal mask.  Finally, the jmp_buf
  1211. 02222  * and the sigcontext structure contain the registers to restore.
  1212. 02223  *
  1213. 02224  * Some compilers, namely ACK, will not enregister any variables inside a
  1214. 02225  * function containing a call to setjmp, even if those variables are
  1215. 02226  * explicitly declared as register variables.  Thus for ACK, the
  1216. 02227  * identification of the jmp_buf with a sigcontext structure would cause
  1217. 02228  * unnecessary overhead: the jmp_buf has room for all the registers, but
  1218. 02229  * the only registers that need to be saved are the stack pointer, 
  1219. 02230  * frame pointer, and program counter.
  1220. 02231  *
  1221. 02232  * So, for ACK a jmp_buf is much smaller than a sigcontext structure, and
  1222. 02233  * longjmp does not directly call sigreturn.  Instead, longjmp calls a
  1223. 02234  * front-end function which initializes the appropriate fields of a
  1224. 02235  * sigcontext structure, marks this structure as containing no valid
  1225. 02236  * general purpose registers, and then calls sigreturn.
  1226. 02237  *
  1227. 02238  * The POSIX sigjmp_buf is identical to the jmp_buf in all cases.
  1228. 02239  *
  1229. 02240  * Different compilers have different symbols that they recognize as
  1230. 02241  * setjmp symbols.  ACK recognizes __setjmp, the GNU C compiler
  1231. 02242  * recognizes setjmp and _setjmp, and BCC recognizes all three.
  1232. 02243  * When these symbols occur within a function, the compiler may keep 
  1233. 02244  * all local variables on the stack, avoid certain optimizations, or
  1234. 02245  * pass hidden arguments to the setjmp function.
  1235. 02246  *  
  1236. 02247  * Thus, setjmp implementations vary in two independent ways which may
  1237. 02248  * be identified through the following preprocessor tokens:
  1238. 02249  *
  1239. 02250  * _SETJMP_SYMBOL -- If 0, this means the compiler treats setjmp and _setjmp
  1240. 02251  * specially.  If 1, this means the compiler treats __setjmp specially.
  1241. 02252  *
  1242. 02253  * _SETJMP_SAVES_REGS -- If 1, this means setjmp/longjmp must explicitly
  1243. 02254  * save and restore all registers.  This also implies that a jmp_buf is
  1244. 02255  * different than a sigcontext structure.  If 0, this means that the compiler
  1245. 02256  * will not use register variables within a function that calls one of 
  1246. 02257  * its SETJMP_SYMBOLs. 
  1247. 02258  * 
  1248. 02259  * When _SETJMP_SYMBOL = 1, the implementation has a few dozen bytes of
  1249. 02260  * unnecessary overhead.  This happens in the following manner:  a program uses
  1250. 02261  * _setjmp/_longjmp because it is not interested in saving and restoring the
  1251. 02262  * signal mask. Nevertheless, because _setjmp expands to the general purpose
  1252. 02263  * function __setjmp, code for sigprocmask(2) is linked into the program.  
  1253. 02264  */
  1254. 02265
  1255. 02266 #ifndef _SETJMP_H
  1256. 02267 #define _SETJMP_H
  1257. 02268
  1258. 02269 #ifndef _ANSI_H
  1259. 02270 #include <ansi.h>
  1260. 02271 #endif
  1261. 02272
  1262. 02273 #if !defined(__ACK__) && !defined(__BCC__) && !defined(__GNUC__)
  1263. 02274 #define __ACK__
  1264. 02275 #endif
  1265. 02276
  1266. 02277 #ifdef __ACK__
  1267. 02278 #define _SETJMP_SYMBOL 1
  1268. 02279 #define _SETJMP_SAVES_REGS 0
  1269. 02280 #endif
  1270. 02281 #ifdef __BCC__
  1271. 02282 #define _SETJMP_SYMBOL 0
  1272. 02283 #define _SETJMP_SAVES_REGS 1
  1273. 02284 #endif
  1274. 02285 #ifdef __GNUC__
  1275. 02286 #define _SETJMP_SYMBOL 0
  1276. 02287 #define _SETJMP_SAVES_REGS 1
  1277. 02288 #endif
  1278. 02289
  1279. 02290 /* The jmp_buf data type.  Do not change the order of these fields -- some
  1280. 02291  * C library code refers to these fields by name.  When _SETJMP_SAVES_REGS
  1281. 02292  * is 1, the file <sys/jmp_buf.h> gives the usage of the sixteen registers.
  1282. 02293  */
  1283. 02294 typedef struct {
  1284. 02295   int __flags;                  /* XXX - long might give better alignment */
  1285. 02296   long __mask;                  /* must have size >= sizeof(sigset_t) */
  1286. 02297 #if (_SETJMP_SAVES_REGS == 0)
  1287. 02298   _PROTOTYPE(void (*__pc),(void));      /* program counter */
  1288. 02299   void *__sp;                   /* stack pointer */
  1289. 02300   void *__lb;                   /* local base (ACKspeak for frame pointer) */
  1290. 02301 #else
  1291. 02302   void *__regs[16];             /* size is machine dependent */
  1292. 02303 #endif
  1293. 02304 } jmp_buf[1];
  1294. 02305
  1295. 02306 #if (_SETJMP_SYMBOL == 1)
  1296. 02307
  1297. 02308 _PROTOTYPE( int __setjmp, (jmp_buf _env, int _savemask)                 );
  1298. 02309 _PROTOTYPE( void longjmp, (jmp_buf _env, int _val)                      );
  1299. 02310 _PROTOTYPE(int sigjmp, (jmp_buf _jb, int _retval)                       );
  1300. 02311
  1301. 02312 #define setjmp(env)     __setjmp((env), 1)
  1302. 02313
  1303. 02314 #ifdef _MINIX
  1304. 02315 #define _setjmp(env)    __setjmp((env), 0)
  1305. 02316 _PROTOTYPE(void _longjmp, (jmp_buf _env, int _val)                      );
  1306. 02317 #endif
  1307. 02318
  1308. 02319 #ifdef _POSIX_SOURCE
  1309. 02320 typedef jmp_buf sigjmp_buf;
  1310. 02321 _PROTOTYPE( void siglongjmp, (sigjmp_buf _env, int _val)                );
  1311. 02322
  1312. 02323 #define sigsetjmp(env, savemask) __setjmp((env), (savemask))
  1313. 02324 #endif /* _POSIX_SOURCE */
  1314. 02325
  1315. 02326 #endif /* _SETJMP_SYMBOL == 1 */
  1316. 02327
  1317. 02328 #if (_SETJMP_SYMBOL == 0)
  1318. 02329
  1319. 02330 _PROTOTYPE( int setjmp, (jmp_buf _env)                                  );
  1320. 02331 _PROTOTYPE( void longjmp, (jmp_buf _env, int _val)                      );
  1321. 02332
  1322. 02333 #ifdef _MINIX
  1323. 02334 _PROTOTYPE( int _setjmp, (jmp_buf _env)                                 );
  1324. 02335 _PROTOTYPE( void _longjmp, (jmp_buf _env, int _val)                     );
  1325. 02336 #endif
  1326. 02337
  1327. 02338 #ifdef _POSIX_SOURCE
  1328. 02339 #define sigjmp_buf jmp_buf
  1329. 02340 _PROTOTYPE( void siglongjmp, (sigjmp_buf _env, int _val)                );
  1330. 02341 /* XXX - the name _setjmp is no good - that's why ACK used __setjmp. */
  1331. 02342 #define sigsetjmp(env, savemask) ((savemask) ? setjmp(env) : _setjmp(env))
  1332. 02343 #endif /* _POSIX_SOURCE */
  1333. 02344
  1334. 02345 #endif /* _SETJMP_SYMBOL == 0 */
  1335. 02346
  1336. 02347 #endif /* _SETJMP_H */
  1337. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1338. include/sgtty.h    
  1339. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1340. 02400 /* The <sgtty.h> header contains data structures for ioctl(). */
  1341. 02401
  1342. 02402 #ifndef _SGTTY_H
  1343. 02403 #define _SGTTY_H
  1344. 02404
  1345. 02405 /* Should not be used, nor extended. Termios.h is the replacement for
  1346. 02406  * sgtty.h for tty functions, and ioctl replaced code should be moved to
  1347. 02407  * sys/ioctl.h and specific header files in the sys, or minix directory.
  1348. 02408  */
  1349. 02409 #include <sys/ioctl.h>          /* Ouch. */
  1350. 02410
  1351. 02411 struct sgttyb {
  1352. 02412   char sg_ispeed;               /* input speed */
  1353. 02413   char sg_ospeed;               /* output speed */
  1354. 02414   char sg_erase;                /* erase character */
  1355. 02415   char sg_kill;                 /* kill character */
  1356. 02416   int  sg_flags;                /* mode flags */
  1357. 02417 };
  1358. 02418
  1359. 02419 struct tchars {
  1360. 02420   char t_intrc;                 /* SIGINT char */
  1361. 02421   char t_quitc;                 /* SIGQUIT char */
  1362. 02422   char t_startc;                /* start output (initially CTRL-Q) */
  1363. 02423   char t_stopc;                 /* stop output  (initially CTRL-S) */
  1364. 02424   char t_eofc;                  /* EOF (initially CTRL-D) */
  1365. 02425   char t_brkc;                  /* input delimiter (like nl) */
  1366. 02426 };
  1367. 02427
  1368. 02428 #if !_SYSTEM                    /* the kernel doesn't want to see the rest */
  1369. 02429
  1370. 02430 /* Field names */
  1371. 02431 #define XTABS        0006000    /* do tab expansion */
  1372. 02432 #define BITS8        0001400    /* 8 bits/char */
  1373. 02433 #define BITS7        0001000    /* 7 bits/char */
  1374. 02434 #define BITS6        0000400    /* 6 bits/char */
  1375. 02435 #define BITS5        0000000    /* 5 bits/char */
  1376. 02436 #define EVENP        0000200    /* even parity */
  1377. 02437 #define ODDP         0000100    /* odd parity */
  1378. 02438 #define RAW          0000040    /* enable raw mode */
  1379. 02439 #define CRMOD        0000020    /* map lf to cr + lf */
  1380. 02440 #define ECHO         0000010    /* echo input */
  1381. 02441 #define CBREAK       0000002    /* enable cbreak mode */
  1382. 02442 #define COOKED       0000000    /* neither CBREAK nor RAW */
  1383. 02443
  1384. 02444 #define DCD          0100000    /* Data Carrier Detect */
  1385. 02445
  1386. 02446 /* Line speeds */
  1387. 02447 #define B0                 0    /* code for line-hangup */
  1388. 02448 #define B110               1
  1389. 02449 #define B300               3
  1390. 02450 #define B1200             12
  1391. 02451 #define B2400             24
  1392. 02452 #define B4800             48
  1393. 02453 #define B9600             96
  1394. 02454 #define B19200           192
  1395. 02455 #define B38400           195
  1396. 02456 #define B57600           194
  1397. 02457 #define B115200          193
  1398. 02458
  1399. 02459 /* Things Minix supports but not properly */
  1400. 02460 /* the divide-by-100 encoding ain't too hot */
  1401. 02461 #define ANYP         0000300
  1402. 02462 #define B50                0
  1403. 02463 #define B75                0
  1404. 02464 #define B134               0
  1405. 02465 #define B150               0
  1406. 02466 #define B200               2
  1407. 02467 #define B600               6
  1408. 02468 #define B1800             18
  1409. 02469 #define B3600             36
  1410. 02470 #define B7200             72
  1411. 02471 #define EXTA             192
  1412. 02472 #define EXTB               0
  1413. 02473
  1414. 02474 /* Things Minix doesn't support but are fairly harmless if used */
  1415. 02475 #define NLDELAY      0001400
  1416. 02476 #define TBDELAY      0006000
  1417. 02477 #define CRDELAY      0030000
  1418. 02478 #define VTDELAY      0040000
  1419. 02479 #define BSDELAY      0100000
  1420. 02480 #define ALLDELAY     0177400
  1421. 02481
  1422. 02482 /* Copied from termios.h: */
  1423. 02483 struct winsize
  1424. 02484 {
  1425. 02485         unsigned short  ws_row;         /* rows, in characters */
  1426. 02486         unsigned short  ws_col;         /* columns, in characters */
  1427. 02487         unsigned short  ws_xpixel;      /* horizontal size, pixels */
  1428. 02488         unsigned short  ws_ypixel;      /* vertical size, pixels */
  1429. 02489 };
  1430. 02490 #endif /* !_SYSTEM */
  1431. 02491 #endif /* _SGTTY_H */
  1432. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1433. include/signal.h    
  1434. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1435. 02500 /* The <signal.h> header defines all the ANSI and POSIX signals.
  1436. 02501  * MINIX supports all the signals required by POSIX. They are defined below.
  1437. 02502  * Some additional signals are also supported.
  1438. 02503  */
  1439. 02504
  1440. 02505 #ifndef _SIGNAL_H
  1441. 02506 #define _SIGNAL_H
  1442. 02507
  1443. 02508 #ifndef _ANSI_H
  1444. 02509 #include <ansi.h>
  1445. 02510 #endif
  1446. 02511
  1447. 02512 /* Here are types that are closely associated with signal handling. */
  1448. 02513 typedef int sig_atomic_t;
  1449. 02514
  1450. 02515 #ifdef _POSIX_SOURCE
  1451. 02516 #ifndef _SIGSET_T
  1452. 02517 #define _SIGSET_T
  1453. 02518 typedef unsigned long sigset_t;
  1454. 02519 #endif
  1455. 02520 #endif
  1456. 02521
  1457. 02522 #define _NSIG             16    /* number of signals used */
  1458. 02523
  1459. 02524 #define SIGHUP             1    /* hangup */
  1460. 02525 #define SIGINT             2    /* interrupt (DEL) */
  1461. 02526 #define SIGQUIT            3    /* quit (ASCII FS) */
  1462. 02527 #define SIGILL             4    /* illegal instruction */
  1463. 02528 #define SIGTRAP            5    /* trace trap (not reset when caught) */
  1464. 02529 #define SIGABRT            6    /* IOT instruction */
  1465. 02530 #define SIGIOT             6    /* SIGABRT for people who speak PDP-11 */
  1466. 02531 #define SIGUNUSED          7    /* spare code */
  1467. 02532 #define SIGFPE             8    /* floating point exception */
  1468. 02533 #define SIGKILL            9    /* kill (cannot be caught or ignored) */
  1469. 02534 #define SIGUSR1           10    /* user defined signal # 1 */
  1470. 02535 #define SIGSEGV           11    /* segmentation violation */
  1471. 02536 #define SIGUSR2           12    /* user defined signal # 2 */
  1472. 02537 #define SIGPIPE           13    /* write on a pipe with no one to read it */
  1473. 02538 #define SIGALRM           14    /* alarm clock */
  1474. 02539 #define SIGTERM           15    /* software termination signal from kill */
  1475. 02540
  1476. 02541 #define SIGEMT             7    /* obsolete */
  1477. 02542 #define SIGBUS            10    /* obsolete */
  1478. 02543
  1479. 02544 /* POSIX requires the following signals to be defined, even if they are
  1480. 02545  * not supported.  Here are the definitions, but they are not supported.
  1481. 02546  */
  1482. 02547 #define SIGCHLD           17    /* child process terminated or stopped */
  1483. 02548 #define SIGCONT           18    /* continue if stopped */
  1484. 02549 #define SIGSTOP           19    /* stop signal */
  1485. 02550 #define SIGTSTP           20    /* interactive stop signal */
  1486. 02551 #define SIGTTIN           21    /* background process wants to read */
  1487. 02552 #define SIGTTOU           22    /* background process wants to write */
  1488. 02553
  1489. 02554 /* The sighandler_t type is not allowed unless _POSIX_SOURCE is defined. */
  1490. 02555 #ifdef _POSIX_SOURCE
  1491. 02556 #define __sighandler_t sighandler_t
  1492. 02557 #else
  1493. 02558 typedef void (*__sighandler_t) (int);
  1494. 02559 #endif
  1495. 02560
  1496. 02561 /* Macros used as function pointers. */
  1497. 02562 #define SIG_ERR    ((__sighandler_t) -1)        /* error return */
  1498. 02563 #define SIG_DFL    ((__sighandler_t)  0)        /* default signal handling */
  1499. 02564 #define SIG_IGN    ((__sighandler_t)  1)        /* ignore signal */
  1500. 02565 #define SIG_HOLD   ((__sighandler_t)  2)        /* block signal */
  1501. 02566 #define SIG_CATCH  ((__sighandler_t)  3)        /* catch signal */
  1502. 02567
  1503. 02568 #ifdef _POSIX_SOURCE
  1504. 02569 struct sigaction {
  1505. 02570   __sighandler_t sa_handler;    /* SIG_DFL, SIG_IGN, or pointer to function */
  1506. 02571   sigset_t sa_mask;             /* signals to be blocked during handler */
  1507. 02572   int sa_flags;                 /* special flags */
  1508. 02573 };
  1509. 02574
  1510. 02575 /* Fields for sa_flags. */
  1511. 02576 #define SA_ONSTACK   0x0001     /* deliver signal on alternate stack */
  1512. 02577 #define SA_RESETHAND 0x0002     /* reset signal handler when signal caught */
  1513. 02578 #define SA_NODEFER   0x0004     /* don't block signal while catching it */
  1514. 02579 #define SA_RESTART   0x0008     /* automatic system call restart */
  1515. 02580 #define SA_SIGINFO   0x0010     /* extended signal handling */
  1516. 02581 #define SA_NOCLDWAIT 0x0020     /* don't create zombies */
  1517. 02582 #define SA_NOCLDSTOP 0x0040     /* don't receive SIGCHLD when child stops */
  1518. 02583
  1519. 02584 /* POSIX requires these values for use with sigprocmask(2). */
  1520. 02585 #define SIG_BLOCK          0    /* for blocking signals */
  1521. 02586 #define SIG_UNBLOCK        1    /* for unblocking signals */
  1522. 02587 #define SIG_SETMASK        2    /* for setting the signal mask */
  1523. 02588 #define SIG_INQUIRE        4    /* for internal use only */
  1524. 02589 #endif  /* _POSIX_SOURCE */
  1525. 02590
  1526. 02591 /* POSIX and ANSI function prototypes. */
  1527. 02592 _PROTOTYPE( int raise, (int _sig)                                       );
  1528. 02593 _PROTOTYPE( __sighandler_t signal, (int _sig, __sighandler_t _func)     );
  1529. 02594
  1530. 02595 #ifdef _POSIX_SOURCE
  1531. 02596 _PROTOTYPE( int kill, (pid_t _pid, int _sig)                            );
  1532. 02597 _PROTOTYPE( int sigaction,
  1533. 02598     (int _sig, const struct sigaction *_act, struct sigaction *_oact)   );
  1534. 02599 _PROTOTYPE( int sigaddset, (sigset_t *_set, int _sig)                   );
  1535. 02600 _PROTOTYPE( int sigdelset, (sigset_t *_set, int _sig)                   );
  1536. 02601 _PROTOTYPE( int sigemptyset, (sigset_t *_set)                           );
  1537. 02602 _PROTOTYPE( int sigfillset, (sigset_t *_set)                            );
  1538. 02603 _PROTOTYPE( int sigismember, (sigset_t *_set, int _sig)                 );
  1539. 02604 _PROTOTYPE( int sigpending, (sigset_t *_set)                            );
  1540. 02605 _PROTOTYPE( int sigprocmask,
  1541. 02606             (int _how, const sigset_t *_set, sigset_t *_oset)           );
  1542. 02607 _PROTOTYPE( int sigsuspend, (const sigset_t *_sigmask)                  );
  1543. 02608 #endif
  1544. 02609
  1545. 02610 #endif /* _SIGNAL_H */
  1546. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1547. include/stdarg.h    
  1548. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1549. 02700 /* The <stdarg.h> header is ANSI's way to handle variable numbers of params.
  1550. 02701  * Some programming languages require a function that is declared with n
  1551. 02702  * parameters to be called with n parameters.  C does not.  A function may
  1552. 02703  * called with more parameters than it is declared with.  The well-known
  1553. 02704  * printf function, for example, may have arbitrarily many parameters.
  1554. 02705  * The question arises how one can access all the parameters in a portable
  1555. 02706  * way.  The C standard defines three macros that programs can use to
  1556. 02707  * advance through the parameter list.  The definition of these macros for
  1557. 02708  * MINIX are given in this file.  The three macros are:
  1558. 02709  *
  1559. 02710  *      va_start(ap, parmN)     prepare to access parameters
  1560. 02711  *      va_arg(ap, type)        get next parameter value and type
  1561. 02712  *      va_end(ap)              access is finished
  1562. 02713  *
  1563. 02714  * Ken Thompson's famous line from V6 UNIX is equally applicable to this file:
  1564. 02715  *
  1565. 02716  *      "You are not expected to understand this"
  1566. 02717  *
  1567. 02718  */
  1568. 02719
  1569. 02720 #ifndef _STDARG_H
  1570. 02721 #define _STDARG_H
  1571. 02722
  1572. 02723
  1573. 02724 #ifdef __GNUC__
  1574. 02725 /* The GNU C-compiler uses its own, but similar varargs mechanism. */
  1575. 02726
  1576. 02727 typedef char *va_list;
  1577. 02728
  1578. 02729 /* Amount of space required in an argument list for an arg of type TYPE.
  1579. 02730  * TYPE may alternatively be an expression whose type is used.
  1580. 02731  */
  1581. 02732
  1582. 02733 #define __va_rounded_size(TYPE)  
  1583. 02734   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
  1584. 02735
  1585. 02736 #if __GNUC__ < 2
  1586. 02737
  1587. 02738 #ifndef __sparc__
  1588. 02739 #define va_start(AP, LASTARG)                                           
  1589. 02740  (AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
  1590. 02741 #else
  1591. 02742 #define va_start(AP, LASTARG)                                           
  1592. 02743  (__builtin_saveregs (),                                                
  1593. 02744   AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
  1594. 02745 #endif
  1595. 02746
  1596. 02747 void va_end (va_list);          /* Defined in gnulib */
  1597. 02748 #define va_end(AP)
  1598. 02749
  1599. 02750 #define va_arg(AP, TYPE)                                                
  1600. 02751  (AP += __va_rounded_size (TYPE),                                       
  1601. 02752   *((TYPE *) (AP - __va_rounded_size (TYPE))))
  1602. 02753
  1603. 02754 #else   /* __GNUC__ >= 2 */
  1604. 02755
  1605. 02756 #ifndef __sparc__
  1606. 02757 #define va_start(AP, LASTARG)                                           
  1607. 02758  (AP = ((char *) __builtin_next_arg ()))
  1608. 02759 #else
  1609. 02760 #define va_start(AP, LASTARG)                                   
  1610. 02761   (__builtin_saveregs (), AP = ((char *) __builtin_next_arg ()))
  1611. 02762 #endif
  1612. 02763
  1613. 02764 void va_end (va_list);          /* Defined in libgcc.a */
  1614. 02765 #define va_end(AP)
  1615. 02766
  1616. 02767 #define va_arg(AP, TYPE)                                                
  1617. 02768  (AP = ((char *) (AP)) += __va_rounded_size (TYPE),                     
  1618. 02769   *((TYPE *) ((char *) (AP) - __va_rounded_size (TYPE))))
  1619. 02770
  1620. 02771 #endif  /* __GNUC__ >= 2 */
  1621. 02772
  1622. 02773 #else   /* not __GNUC__ */
  1623. 02774
  1624. 02775
  1625. 02776 typedef char *va_list;
  1626. 02777
  1627. 02778 #define __vasz(x)               ((sizeof(x)+sizeof(int)-1) & ~(sizeof(int) -1))
  1628. 02779
  1629. 02780 #define va_start(ap, parmN)     ((ap) = (va_list)&parmN + __vasz(parmN))
  1630. 02781 #define va_arg(ap, type)      
  1631. 02782   (*((type *)((va_list)((ap) = (void *)((va_list)(ap) + __vasz(type))) 
  1632. 02783                                                     - __vasz(type))))
  1633. 02784 #define va_end(ap)
  1634. 02785
  1635. 02786
  1636. 02787 #endif /* __GNUC__ */
  1637. 02788
  1638. 02789 #endif /* _STDARG_H */
  1639. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1640. include/stddef.h    
  1641. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1642. 02800 /* The <stddef.h> header defines certain commonly used macros. */
  1643. 02801
  1644. 02802 #ifndef _STDDEF_H
  1645. 02803 #define _STDDEF_H
  1646. 02804
  1647. 02805 #define NULL   ((void *)0)
  1648. 02806
  1649. 02807 /* The following is not portable, but the compiler accepts it. */
  1650. 02808 #define offsetof(type, ident)   ((size_t) (unsigned long) &((type *)0)->ident)
  1651. 02809
  1652. 02810 #if _EM_PSIZE == _EM_WSIZE
  1653. 02811 typedef int ptrdiff_t;          /* result of subtracting two pointers */
  1654. 02812 #else   /* _EM_PSIZE == _EM_LSIZE */
  1655. 02813 typedef long ptrdiff_t;
  1656. 02814 #endif
  1657. 02815
  1658. 02816 #ifndef _SIZE_T
  1659. 02817 #define _SIZE_T
  1660. 02818 typedef unsigned int size_t;    /* type returned by sizeof */
  1661. 02819 #endif
  1662. 02820
  1663. 02821 #ifndef _WCHAR_T
  1664. 02822 #define _WCHAR_T
  1665. 02823 typedef char wchar_t;           /* type expanded character set */
  1666. 02824 #endif
  1667. 02825
  1668. 02826 #endif /* _STDDEF_H */
  1669. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1670. include/stdio.h    
  1671. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1672. 02900 /*
  1673. 02901  * stdio.h - input/output definitions
  1674. 02902  *
  1675. 02903  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
  1676. 02904  * See the copyright notice in the ACK home directory, in the file "Copyright".
  1677. 02905  */
  1678. 02906 /* $Header: stdio.h,v 1.3 89/12/18 14:00:10 eck Exp $ */
  1679. 02907
  1680. 02908 #ifndef _STDIO_H
  1681. 02909 #define _STDIO_H
  1682. 02910
  1683. 02911 /*
  1684. 02912  * Focus point of all stdio activity.
  1685. 02913  */
  1686. 02914 typedef struct __iobuf {
  1687. 02915         int             _count;
  1688. 02916         int             _fd;
  1689. 02917         int             _flags;
  1690. 02918         int             _bufsiz;
  1691. 02919         unsigned char   *_buf;
  1692. 02920         unsigned char   *_ptr;
  1693. 02921 } FILE;
  1694. 02922
  1695. 02923 #define _IOFBF          0x000
  1696. 02924 #define _IOREAD         0x001
  1697. 02925 #define _IOWRITE        0x002
  1698. 02926 #define _IONBF          0x004
  1699. 02927 #define _IOMYBUF        0x008
  1700. 02928 #define _IOEOF          0x010
  1701. 02929 #define _IOERR          0x020
  1702. 02930 #define _IOLBF          0x040
  1703. 02931 #define _IOREADING      0x080
  1704. 02932 #define _IOWRITING      0x100
  1705. 02933 #define _IOAPPEND       0x200
  1706. 02934
  1707. 02935 /* The following definitions are also in <unistd.h>. They should not
  1708. 02936  * conflict.
  1709. 02937  */
  1710. 02938 #define SEEK_SET        0
  1711. 02939 #define SEEK_CUR        1
  1712. 02940 #define SEEK_END        2
  1713. 02941
  1714. 02942 #define stdin           (&__stdin)
  1715. 02943 #define stdout          (&__stdout)
  1716. 02944 #define stderr          (&__stderr)
  1717. 02945
  1718. 02946 #define BUFSIZ          1024
  1719. 02947 #define NULL            ((void *)0)
  1720. 02948 #define EOF             (-1)
  1721. 02949
  1722. 02950 #define FOPEN_MAX       20
  1723. 02951
  1724. 02952 #define FILENAME_MAX    14
  1725. 02953 #define TMP_MAX         999
  1726. 02954 #define L_tmpnam        (sizeof("/tmp/") + FILENAME_MAX)
  1727. 02955 #define __STDIO_VA_LIST__       void *
  1728. 02956
  1729. 02957 typedef long int        fpos_t;
  1730. 02958
  1731. 02959 #ifndef _SIZE_T
  1732. 02960 #define _SIZE_T
  1733. 02961 typedef unsigned int    size_t;         /* type returned by sizeof */
  1734. 02962 #endif /* _SIZE_T */
  1735. 02963
  1736. 02964 extern FILE     *__iotab[FOPEN_MAX];
  1737. 02965 extern FILE     __stdin, __stdout, __stderr;
  1738. 02966
  1739. 02967 #ifndef _ANSI_H
  1740. 02968 #include <ansi.h>
  1741. 02969 #endif
  1742. 02970
  1743. 02971 _PROTOTYPE( int remove, (const char *_filename)                         );
  1744. 02972 _PROTOTYPE( int rename, (const char *_old, const char *_new)            );
  1745. 02973 _PROTOTYPE( FILE *tmpfile, (void)                                       );
  1746. 02974 _PROTOTYPE( char *tmpnam, (char *_s)                                    );
  1747. 02975 _PROTOTYPE( int fclose, (FILE *_stream)                                 );
  1748. 02976 _PROTOTYPE( int fflush, (FILE *_stream)                                 );
  1749. 02977 _PROTOTYPE( FILE *fopen, (const char *_filename, const char *_mode)     );
  1750. 02978 _PROTOTYPE( FILE *freopen,
  1751. 02979             (const char *_filename, const char *_mode, FILE *_stream)   );
  1752. 02980 _PROTOTYPE( void setbuf, (FILE *_stream, char *_buf)                    );
  1753. 02981 _PROTOTYPE( int setvbuf,
  1754. 02982                 (FILE *_stream, char *_buf, int _mode, size_t _size)    );
  1755. 02983 _PROTOTYPE( int fprintf, (FILE *_stream, const char *_format, ...)      );
  1756. 02984 _PROTOTYPE( int printf, (const char *_format, ...)                      );
  1757. 02985 _PROTOTYPE( int sprintf, (char *_s, const char *_format, ...)           );
  1758. 02986 _PROTOTYPE( int vfprintf,
  1759. 02987                 (FILE *_stream, const char *_format, char *_arg)        );
  1760. 02988 _PROTOTYPE( int vprintf, (const char *_format, char *_arg)              );
  1761. 02989 _PROTOTYPE( int vsprintf, (char *_s, const char *_format, char *_arg)   );
  1762. 02990 _PROTOTYPE( int fscanf, (FILE *_stream, const char *_format, ...)       );
  1763. 02991 _PROTOTYPE( int scanf, (const char *_format, ...)                       );
  1764. 02992 _PROTOTYPE( int sscanf, (const char *_s, const char *_format, ...)      );
  1765. 02993 #define vfscanf _doscan
  1766. 02994 _PROTOTYPE( int vfscanf, (FILE *_stream, const char *_format, char *_arg));
  1767. 02995 _PROTOTYPE( int vscanf, (const char *_format, char *_arg)               );
  1768. 02996 _PROTOTYPE( int vsscanf, (const char *_s, const char *_format, char *_arg));
  1769. 02997 _PROTOTYPE( int fgetc, (FILE *_stream)                                  );
  1770. 02998 _PROTOTYPE( char *fgets, (char *_s, int _n, FILE *_stream)              );
  1771. 02999 _PROTOTYPE( int fputc, (int _c, FILE *_stream)                          );
  1772. 03000 _PROTOTYPE( int fputs, (const char *_s, FILE *_stream)                  );
  1773. 03001 _PROTOTYPE( int getc, (FILE *_stream)                                   );
  1774. 03002 _PROTOTYPE( int getchar, (void)                                         );
  1775. 03003 _PROTOTYPE( char *gets, (char *_s)                                      );
  1776. 03004 _PROTOTYPE( int putc, (int _c, FILE *_stream)                           );
  1777. 03005 _PROTOTYPE( int putchar, (int _c)                                       );
  1778. 03006 _PROTOTYPE( int puts, (const char *_s)                                  );
  1779. 03007 _PROTOTYPE( int ungetc, (int _c, FILE *_stream)                         );
  1780. 03008 _PROTOTYPE( size_t fread,
  1781. 03009             (void *_ptr, size_t _size, size_t _nmemb, FILE *_stream)    );
  1782. 03010 _PROTOTYPE( size_t fwrite,
  1783. 03011         (const void *_ptr, size_t _size, size_t _nmemb, FILE *_stream)  );
  1784. 03012 _PROTOTYPE( int fgetpos, (FILE *_stream, fpos_t *_pos)                  );
  1785. 03013 _PROTOTYPE( int fseek, (FILE *_stream, long _offset, int _whence)       );
  1786. 03014 _PROTOTYPE( int fsetpos, (FILE *_stream, fpos_t *_pos)                  );
  1787. 03015 _PROTOTYPE( long ftell, (FILE *_stream)                                 );
  1788. 03016 _PROTOTYPE( void rewind, (FILE *_stream)                                );
  1789. 03017 _PROTOTYPE( void clearerr, (FILE *_stream)                              );
  1790. 03018 _PROTOTYPE( int feof, (FILE *_stream)                                   );
  1791. 03019 _PROTOTYPE( int ferror, (FILE *_stream)                                 );
  1792. 03020 _PROTOTYPE( void perror, (const char *_s)                               );
  1793. 03021 _PROTOTYPE( int __fillbuf, (FILE *_stream)                              );
  1794. 03022 _PROTOTYPE( int __flushbuf, (int _c, FILE *_stream)                     );
  1795. 03023
  1796. 03024 #define getchar()       getc(stdin)
  1797. 03025 #define putchar(c)      putc(c,stdout)
  1798. 03026 #define getc(p)         (--(p)->_count >= 0 ? (int) (*(p)->_ptr++) : 
  1799. 03027                                 __fillbuf(p))
  1800. 03028 #define putc(c, p)      (--(p)->_count >= 0 ? 
  1801. 03029                          (int) (*(p)->_ptr++ = (c)) : 
  1802. 03030                          __flushbuf((c),(p)))
  1803. 03031
  1804. 03032 #define feof(p)         (((p)->_flags & _IOEOF) != 0)
  1805. 03033 #define ferror(p)       (((p)->_flags & _IOERR) != 0)
  1806. 03034 #define clearerr(p)     ((p)->_flags &= ~(_IOERR|_IOEOF))
  1807. 03035
  1808. 03036 #ifdef _POSIX_SOURCE
  1809. 03037 _PROTOTYPE( int fileno, (FILE *_stream)                                 );
  1810. 03038 _PROTOTYPE (FILE *fdopen, (int _fildes, const char *_types) );
  1811. 03039 #define fileno(stream)          ((stream)->_fd)
  1812. 03040 #define L_ctermid 255   /* required by POSIX */
  1813. 03041 #define L_cuserid 255   /* required by POSIX */
  1814. 03042 #endif
  1815. 03043
  1816. 03044 #ifdef _MINIX
  1817. 03045 _PROTOTYPE(FILE *popen, (const char *_command, const char *_type));
  1818. 03046 _PROTOTYPE(int pclose, (FILE *_stream));
  1819. 03047 #endif
  1820. 03048
  1821. 03049 #endif /* _STDIO_H */
  1822. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1823. include/stdlib.h    
  1824. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1825. 03100 /* The <stdlib.h> header defines certain common macros, types, and functions.*/
  1826. 03101
  1827. 03102 #ifndef _STDLIB_H
  1828. 03103 #define _STDLIB_H
  1829. 03104
  1830. 03105 /* The macros are NULL, EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, and MB_CUR_MAX.*/
  1831. 03106 #define NULL    ((void *)0)
  1832. 03107
  1833. 03108 #define EXIT_FAILURE       1    /* standard error return using exit() */
  1834. 03109 #define EXIT_SUCCESS       0    /* successful return using exit() */
  1835. 03110 #define RAND_MAX       32767    /* largest value generated by rand() */
  1836. 03111 #define MB_CUR_MAX         1    /* max value of multibyte character in MINIX */
  1837. 03112
  1838. 03113 typedef struct { int quot, rem; } div_t;
  1839. 03114 typedef struct { long quot, rem; } ldiv_t;
  1840. 03115
  1841. 03116 /* The types are size_t, wchar_t, div_t, and ldiv_t. */
  1842. 03117 #ifndef _SIZE_T
  1843. 03118 #define _SIZE_T
  1844. 03119 typedef unsigned int size_t;    /* type returned by sizeof */
  1845. 03120 #endif
  1846. 03121
  1847. 03122 #ifndef _WCHAR_T
  1848. 03123 #define _WCHAR_T
  1849. 03124 typedef char wchar_t;           /* type expanded character set */
  1850. 03125 #endif
  1851. 03126
  1852. 03127 /* Function Prototypes. */
  1853. 03128 #ifndef _ANSI_H
  1854. 03129 #include <ansi.h>
  1855. 03130 #endif
  1856. 03131
  1857. 03132 _PROTOTYPE( void abort, (void)                                          );
  1858. 03133 _PROTOTYPE( int abs, (int _j)                                           );
  1859. 03134 _PROTOTYPE( int atexit, (void (*_func)(void))                           );
  1860. 03135 _PROTOTYPE( double atof, (const char *_nptr)                            );
  1861. 03136 _PROTOTYPE( int atoi, (const char *_nptr)                               );
  1862. 03137 _PROTOTYPE( long atol, (const char *_nptr)                              );
  1863. 03138 _PROTOTYPE( void *calloc, (size_t _nmemb, size_t _size)                 );
  1864. 03139 _PROTOTYPE( div_t div, (int _numer, int _denom)                         );
  1865. 03140 _PROTOTYPE( void exit, (int _status)                                    );
  1866. 03141 _PROTOTYPE( void free, (void *_ptr)                                     );
  1867. 03142 _PROTOTYPE( char *getenv, (const char *_name)                           );
  1868. 03143 _PROTOTYPE( long labs, (long _j)                                        );
  1869. 03144 _PROTOTYPE( ldiv_t ldiv, (long _numer, long _denom)                     );
  1870. 03145 _PROTOTYPE( void *malloc, (size_t _size)                                );
  1871. 03146 _PROTOTYPE( int mblen, (const char *_s, size_t _n)                      );
  1872. 03147 _PROTOTYPE( size_t mbstowcs, (wchar_t *_pwcs, const char *_s, size_t _n));
  1873. 03148 _PROTOTYPE( int mbtowc, (wchar_t *_pwc, const char *_s, size_t _n)      );
  1874. 03149 _PROTOTYPE( int rand, (void)                                            );
  1875. 03150 _PROTOTYPE( void *realloc, (void *_ptr, size_t _size)                   );
  1876. 03151 _PROTOTYPE( void srand, (unsigned int _seed)                            );
  1877. 03152 _PROTOTYPE( double strtod, (const char *_nptr, char **_endptr)          );
  1878. 03153 _PROTOTYPE( long strtol, (const char *_nptr, char **_endptr, int _base) );
  1879. 03154 _PROTOTYPE( int system, (const char *_string)                           );
  1880. 03155 _PROTOTYPE( size_t wcstombs, (char *_s, const wchar_t *_pwcs, size_t _n));
  1881. 03156 _PROTOTYPE( int wctomb, (char *_s, wchar_t _wchar)                      );
  1882. 03157 _PROTOTYPE( void *bsearch, (const void *_key, const void *_base, 
  1883. 03158         size_t _nmemb, size_t _size, 
  1884. 03159         int (*compar) (const void *, const void *))                     );
  1885. 03160 _PROTOTYPE( void qsort, (void *_base, size_t _nmemb, size_t _size,
  1886. 03161         int (*compar) (const void *, const void *))                     );
  1887. 03162 _PROTOTYPE( unsigned long int strtoul,
  1888. 03163                         (const char *_nptr, char **_endptr, int _base)  );
  1889. 03164
  1890. 03165 #ifdef _MINIX
  1891. 03166 _PROTOTYPE( int putenv, (const char *_name)                             );
  1892. 03167 _PROTOTYPE(int getopt, (int _argc, char **_argv, char *_opts));
  1893. 03168 extern char *optarg;
  1894. 03169 extern int optind, opterr, optopt;
  1895. 03170 #endif /* _MINIX */
  1896. 03171
  1897. 03172 #endif /* STDLIB_H */
  1898. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1899. include/string.h    
  1900. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1901. 03200 /* The <string.h> header contains prototypes for the string handling 
  1902. 03201  * functions.
  1903. 03202  */
  1904. 03203
  1905. 03204 #ifndef _STRING_H
  1906. 03205 #define _STRING_H
  1907. 03206
  1908. 03207 #define NULL    ((void *)0)
  1909. 03208
  1910. 03209 #ifndef _SIZE_T
  1911. 03210 #define _SIZE_T
  1912. 03211 typedef unsigned int size_t;    /* type returned by sizeof */
  1913. 03212 #endif /*_SIZE_T */
  1914. 03213
  1915. 03214 /* Function Prototypes. */
  1916. 03215 #ifndef _ANSI_H
  1917. 03216 #include <ansi.h>
  1918. 03217 #endif
  1919. 03218
  1920. 03219 _PROTOTYPE( void *memchr, (const void *_s, int _c, size_t _n)           );
  1921. 03220 _PROTOTYPE( int memcmp, (const void *_s1, const void *_s2, size_t _n)   );
  1922. 03221 _PROTOTYPE( void *memcpy, (void *_s1, const void *_s2, size_t _n)       );
  1923. 03222 _PROTOTYPE( void *memmove, (void *_s1, const void *_s2, size_t _n)      );
  1924. 03223 _PROTOTYPE( void *memset, (void *_s, int _c, size_t _n)                 );
  1925. 03224 _PROTOTYPE( char *strcat, (char *_s1, const char *_s2)                  );
  1926. 03225 _PROTOTYPE( char *strchr, (const char *_s, int _c)                      );
  1927. 03226 _PROTOTYPE( int strncmp, (const char *_s1, const char *_s2, size_t _n)  );
  1928. 03227 _PROTOTYPE( int strcmp, (const char *_s1, const char *_s2)              );
  1929. 03228 _PROTOTYPE( int strcoll, (const char *_s1, const char *_s2)             );
  1930. 03229 _PROTOTYPE( char *strcpy, (char *_s1, const char *_s2)                  );
  1931. 03230 _PROTOTYPE( size_t strcspn, (const char *_s1, const char *_s2)          );
  1932. 03231 _PROTOTYPE( char *strerror, (int _errnum)                               );
  1933. 03232 _PROTOTYPE( size_t strlen, (const char *_s)                             );
  1934. 03233 _PROTOTYPE( char *strncat, (char *_s1, const char *_s2, size_t _n)      );
  1935. 03234 _PROTOTYPE( char *strncpy, (char *_s1, const char *_s2, size_t _n)      );
  1936. 03235 _PROTOTYPE( char *strpbrk, (const char *_s1, const char *_s2)           );
  1937. 03236 _PROTOTYPE( char *strrchr, (const char *_s, int _c)                     );
  1938. 03237 _PROTOTYPE( size_t strspn, (const char *_s1, const char *_s2)           );
  1939. 03238 _PROTOTYPE( char *strstr, (const char *_s1, const char *_s2)            );
  1940. 03239 _PROTOTYPE( char *strtok, (char *_s1, const char *_s2)                  );
  1941. 03240 _PROTOTYPE( size_t strxfrm, (char *_s1, const char *_s2, size_t _n)     );
  1942. 03241
  1943. 03242 #ifdef _MINIX
  1944. 03243 /* For backward compatibility. */
  1945. 03244 _PROTOTYPE( char *index, (const char *_s, int _charwanted)              );
  1946. 03245 _PROTOTYPE( char *rindex, (const char *_s, int _charwanted)             );
  1947. 03246 _PROTOTYPE( void bcopy, (const void *_src, void *_dst, size_t _length)  );
  1948. 03247 _PROTOTYPE( int bcmp, (const void *_s1, const void *_s2, size_t _length));
  1949. 03248 _PROTOTYPE( void bzero, (void *_dst, size_t _length)                    );
  1950. 03249 _PROTOTYPE( void *memccpy, (char *_dst, const char *_src, int _ucharstop,
  1951. 03250                                                     size_t _size)       );
  1952. 03251 /* BSD functions */
  1953. 03252 _PROTOTYPE( int strcasecmp, (const char *_s1, const char *_s2)          );
  1954. 03253 #endif
  1955. 03254
  1956. 03255 #endif /* _STRING_H */
  1957. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1958. include/tar.h    
  1959. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1960. 03300 /* The <tar.h> header is used with the tape archiver, tar. */
  1961. 03301
  1962. 03302 #ifndef _TAR_H
  1963. 03303 #define _TAR_H
  1964. 03304
  1965. 03305 #define TBLOCK          512
  1966. 03306 #define NAMSIZ          100
  1967. 03307 #define PFXSIZ          155
  1968. 03308
  1969. 03309 #define TMODLEN         8
  1970. 03310 #define TUIDLEN         8
  1971. 03311 #define TGIDLEN         8
  1972. 03312 #define TSIZLEN         12
  1973. 03313 #define TMTMLEN         12
  1974. 03314 #define TCKSLEN         8
  1975. 03315
  1976. 03316 #define TMAGIC          "ustar"
  1977. 03317 #define TMAGLEN         6
  1978. 03318 #define TVERSION        "00"
  1979. 03319 #define TVERSLEN        2
  1980. 03320 #define TUNMLEN         32
  1981. 03321 #define TGNMLEN         32
  1982. 03322 #define TDEVLEN         8
  1983. 03323
  1984. 03324 #define REGTYPE         '0'
  1985. 03325 #define AREGTYPE        ''
  1986. 03326 #define LNKTYPE         '1'
  1987. 03327 #define SYMTYPE         '2'
  1988. 03328 #define CHRTYPE         '3'
  1989. 03329 #define BLKTYPE         '4'
  1990. 03330 #define DIRTYPE         '5'
  1991. 03331 #define FIFOTYPE        '6'
  1992. 03332 #define CONTTYPE        '7'
  1993. 03333
  1994. 03334 #define TSUID           04000
  1995. 03335 #define TSGID           02000
  1996. 03336 #define TSVTX           01000
  1997. 03337
  1998. 03338 #define TUREAD          00400
  1999. 03339 #define TUWRITE         00200
  2000. 03340 #define TUEXEC          00100
  2001. 03341 #define TGREAD          00040
  2002. 03342 #define TGWRITE         00020
  2003. 03343 #define TGEXEC          00010
  2004. 03344 #define TOREAD          00004
  2005. 03345 #define TOWRITE         00002
  2006. 03346 #define TOEXEC          00001
  2007. 03347
  2008. 03348 union hblock {
  2009. 03349   char dummy[TBLOCK];
  2010. 03350   struct header {
  2011. 03351         char name[NAMSIZ];
  2012. 03352         char mode[TMODLEN];
  2013. 03353         char uid[TUIDLEN];
  2014. 03354         char gid[TGIDLEN];
  2015. 03355         char size[TSIZLEN];
  2016. 03356         char mtime[TMTMLEN];
  2017. 03357         char chksum[TCKSLEN];
  2018. 03358         char typeflag;
  2019. 03359         char linkname[NAMSIZ];
  2020. 03360         char magic[TMAGLEN];
  2021. 03361         char version[TVERSLEN];
  2022. 03362         char uname[TUNMLEN];
  2023. 03363         char gname[TGNMLEN];
  2024. 03364         char devmajor[TDEVLEN];
  2025. 03365         char devminor[TDEVLEN];
  2026. 03366         char prefix[PFXSIZ];
  2027. 03367   } dbuf;
  2028. 03368 };
  2029. 03369
  2030. 03370 #endif /* _TAR_H */
  2031. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2032. include/termcap.h    
  2033. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2034. 03400 #ifndef _TERMCAP_H
  2035. 03401 #define _TERMCAP_H
  2036. 03402
  2037. 03403 #include <ansi.h>
  2038. 03404
  2039. 03405 _PROTOTYPE( int tgetent, (char *_bp, char *_name)                       );
  2040. 03406 _PROTOTYPE( int tgetflag, (char *_id)                                   );
  2041. 03407 _PROTOTYPE( int tgetnum, (char *_id)                                    );
  2042. 03408 _PROTOTYPE( char *tgetstr, (char *_id, char **_area)                    );
  2043. 03409 _PROTOTYPE( char *tgoto, (char *_cm, int _destcol, int _destline)       );
  2044. 03410 _PROTOTYPE( int tputs, (char *_cp, int _affcnt, void (*_outc)(int))     );
  2045. 03411
  2046. 03412 #endif /* _TERMCAP_H */
  2047. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2048. include/termios.h    
  2049. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2050. 03500 /* The <termios.h> header is used for controlling tty modes. */
  2051. 03501
  2052. 03502 #ifndef _TERMIOS_H
  2053. 03503 #define _TERMIOS_H
  2054. 03504
  2055. 03505 typedef unsigned short tcflag_t;
  2056. 03506 typedef unsigned char cc_t;
  2057. 03507 typedef unsigned int speed_t;
  2058. 03508
  2059. 03509 #define NCCS            20      /* size of cc_c array, some extra space
  2060. 03510                                  * for extensions. */
  2061. 03511
  2062. 03512 /* Primary terminal control structure. POSIX Table 7-1. */
  2063. 03513 struct termios {
  2064. 03514   tcflag_t c_iflag;             /* input modes */
  2065. 03515   tcflag_t c_oflag;             /* output modes */
  2066. 03516   tcflag_t c_cflag;             /* control modes */
  2067. 03517   tcflag_t c_lflag;             /* local modes */
  2068. 03518   speed_t  c_ispeed;            /* input speed */
  2069. 03519   speed_t  c_ospeed;            /* output speed */
  2070. 03520   cc_t c_cc[NCCS];              /* control characters */
  2071. 03521 };
  2072. 03522
  2073. 03523 /* Values for termios c_iflag bit map.  POSIX Table 7-2. */
  2074. 03524 #define BRKINT          0x0001  /* signal interrupt on break */
  2075. 03525 #define ICRNL           0x0002  /* map CR to NL on input */
  2076. 03526 #define IGNBRK          0x0004  /* ignore break */
  2077. 03527 #define IGNCR           0x0008  /* ignore CR */
  2078. 03528 #define IGNPAR          0x0010  /* ignore characters with parity errors */
  2079. 03529 #define INLCR           0x0020  /* map NL to CR on input */
  2080. 03530 #define INPCK           0x0040  /* enable input parity check */
  2081. 03531 #define ISTRIP          0x0080  /* mask off 8th bit */
  2082. 03532 #define IXOFF           0x0100  /* enable start/stop input control */
  2083. 03533 #define IXON            0x0200  /* enable start/stop output control */
  2084. 03534 #define PARMRK          0x0400  /* mark parity errors in the input queue */
  2085. 03535
  2086. 03536 /* Values for termios c_oflag bit map.  POSIX Sec. 7.1.2.3. */
  2087. 03537 #define OPOST           0x0001  /* perform output processing */
  2088. 03538
  2089. 03539 /* Values for termios c_cflag bit map.  POSIX Table 7-3. */
  2090. 03540 #define CLOCAL          0x0001  /* ignore modem status lines */
  2091. 03541 #define CREAD           0x0002  /* enable receiver */
  2092. 03542 #define CSIZE           0x000C  /* number of bits per character */
  2093. 03543 #define         CS5     0x0000  /* if CSIZE is CS5, characters are 5 bits */
  2094. 03544 #define         CS6     0x0004  /* if CSIZE is CS6, characters are 6 bits */
  2095. 03545 #define         CS7     0x0008  /* if CSIZE is CS7, characters are 7 bits */
  2096. 03546 #define         CS8     0x000C  /* if CSIZE is CS8, characters are 8 bits */
  2097. 03547 #define CSTOPB          0x0010  /* send 2 stop bits if set, else 1 */
  2098. 03548 #define HUPCL           0x0020  /* hang up on last close */
  2099. 03549 #define PARENB          0x0040  /* enable parity on output */
  2100. 03550 #define PARODD          0x0080  /* use odd parity if set, else even */
  2101. 03551
  2102. 03552 /* Values for termios c_lflag bit map.  POSIX Table 7-4. */
  2103. 03553 #define ECHO            0x0001  /* enable echoing of input characters */
  2104. 03554 #define ECHOE           0x0002  /* echo ERASE as backspace */
  2105. 03555 #define ECHOK           0x0004  /* echo KILL */
  2106. 03556 #define ECHONL          0x0008  /* echo NL */
  2107. 03557 #define ICANON          0x0010  /* canonical input (erase and kill enabled) */
  2108. 03558 #define IEXTEN          0x0020  /* enable extended functions */
  2109. 03559 #define ISIG            0x0040  /* enable signals */
  2110. 03560 #define NOFLSH          0x0080  /* disable flush after interrupt or quit */
  2111. 03561 #define TOSTOP          0x0100  /* send SIGTTOU (job control, not implemented*/
  2112. 03562
  2113. 03563 /* Indices into c_cc array.  Default values in parentheses. POSIX Table 7-5. */
  2114. 03564 #define VEOF               0    /* cc_c[VEOF] = EOF char (^D) */
  2115. 03565 #define VEOL               1    /* cc_c[VEOL] = EOL char (undef) */
  2116. 03566 #define VERASE             2    /* cc_c[VERASE] = ERASE char (^H) */
  2117. 03567 #define VINTR              3    /* cc_c[VINTR] = INTR char (DEL) */
  2118. 03568 #define VKILL              4    /* cc_c[VKILL] = KILL char (^U) */
  2119. 03569 #define VMIN               5    /* cc_c[VMIN] = MIN value for timer */
  2120. 03570 #define VQUIT              6    /* cc_c[VQUIT] = QUIT char (^) */
  2121. 03571 #define VTIME              7    /* cc_c[VTIME] = TIME value for timer */
  2122. 03572 #define VSUSP              8    /* cc_c[VSUSP] = SUSP (^Z, ignored) */
  2123. 03573 #define VSTART             9    /* cc_c[VSTART] = START char (^S) */
  2124. 03574 #define VSTOP             10    /* cc_c[VSTOP] = STOP char (^Q) */
  2125. 03575
  2126. 03576 #define _POSIX_VDISABLE   (cc_t)0xFF    /* You can't even generate this 
  2127. 03577                                          * character with 'normal' keyboards.
  2128. 03578                                          * But some language specific keyboards
  2129. 03579                                          * can generate 0xFF. It seems that all
  2130. 03580                                          * 256 are used, so cc_t should be a
  2131. 03581                                          * short...
  2132. 03582                                          */
  2133. 03583
  2134. 03584 /* Values for the baud rate settings.  POSIX Table 7-6. */
  2135. 03585 #define B0              0x0000  /* hang up the line */
  2136. 03586 #define B50             0x1000  /* 50 baud */
  2137. 03587 #define B75             0x2000  /* 75 baud */
  2138. 03588 #define B110            0x3000  /* 110 baud */
  2139. 03589 #define B134            0x4000  /* 134.5 baud */
  2140. 03590 #define B150            0x5000  /* 150 baud */
  2141. 03591 #define B200            0x6000  /* 200 baud */
  2142. 03592 #define B300            0x7000  /* 300 baud */
  2143. 03593 #define B600            0x8000  /* 600 baud */
  2144. 03594 #define B1200           0x9000  /* 1200 baud */
  2145. 03595 #define B1800           0xA000  /* 1800 baud */
  2146. 03596 #define B2400           0xB000  /* 2400 baud */
  2147. 03597 #define B4800           0xC000  /* 4800 baud */
  2148. 03598 #define B9600           0xD000  /* 9600 baud */
  2149. 03599 #define B19200          0xE000  /* 19200 baud */
  2150. 03600 #define B38400          0xF000  /* 38400 baud */
  2151. 03601
  2152. 03602 /* Optional actions for tcsetattr().  POSIX Sec. 7.2.1.2. */
  2153. 03603 #define TCSANOW            1    /* changes take effect immediately */
  2154. 03604 #define TCSADRAIN          2    /* changes take effect after output is done */
  2155. 03605 #define TCSAFLUSH          3    /* wait for output to finish and flush input */
  2156. 03606
  2157. 03607 /* Queue_selector values for tcflush().  POSIX Sec. 7.2.2.2. */
  2158. 03608 #define TCIFLUSH           1    /* flush accumulated input data */
  2159. 03609 #define TCOFLUSH           2    /* flush accumulated output data */
  2160. 03610 #define TCIOFLUSH          3    /* flush accumulated input and output data */
  2161. 03611
  2162. 03612 /* Action values for tcflow().  POSIX Sec. 7.2.2.2. */
  2163. 03613 #define TCOOFF             1    /* suspend output */
  2164. 03614 #define TCOON              2    /* restart suspended output */
  2165. 03615 #define TCIOFF             3    /* transmit a STOP character on the line */
  2166. 03616 #define TCION              4    /* transmit a START character on the line */
  2167. 03617
  2168. 03618
  2169. 03619 /* Function Prototypes. */
  2170. 03620 #ifndef _ANSI_H
  2171. 03621 #include <ansi.h>
  2172. 03622 #endif
  2173. 03623
  2174. 03624 _PROTOTYPE( int tcsendbreak, (int _fildes, int _duration)                    );
  2175. 03625 _PROTOTYPE( int tcdrain, (int _filedes)                                      );
  2176. 03626 _PROTOTYPE( int tcflush, (int _filedes, int _queue_selector)                 );
  2177. 03627 _PROTOTYPE( int tcflow, (int _filedes, int _action)                          );
  2178. 03628 _PROTOTYPE( speed_t cfgetispeed, (const struct termios *_termios_p)          );
  2179. 03629 _PROTOTYPE( speed_t cfgetospeed, (const struct termios *_termios_p)          );
  2180. 03630 _PROTOTYPE( int cfsetispeed, (struct termios *_termios_p, speed_t _speed)    );
  2181. 03631 _PROTOTYPE( int cfsetospeed, (struct termios *_termios_p, speed_t _speed)    );
  2182. 03632 _PROTOTYPE( int tcgetattr, (int _filedes, struct termios *_termios_p)        );
  2183. 03633 _PROTOTYPE( int tcsetattr, 
  2184. 03634         (int _filedes, int _opt_actions, const struct termios *_termios_p)   );
  2185. 03635
  2186. 03636 #define cfgetispeed(termios_p)          ((termios_p)->c_ispeed)
  2187. 03637 #define cfgetospeed(termios_p)          ((termios_p)->c_ospeed)
  2188. 03638 #define cfsetispeed(termios_p, speed)   ((termios_p)->c_ispeed = (speed), 0)
  2189. 03639 #define cfsetospeed(termios_p, speed)   ((termios_p)->c_ospeed = (speed), 0)
  2190. 03640
  2191. 03641 #ifdef _MINIX
  2192. 03642 /* Here are the local extensions to the POSIX standard for Minix. Posix
  2193. 03643  * conforming programs are not able to access these, and therefore they are
  2194. 03644  * only defined when a Minix program is compiled.
  2195. 03645  */
  2196. 03646
  2197. 03647 /* Extensions to the termios c_iflag bit map.  */
  2198. 03648 #define IXANY           0x0800  /* allow any key to continue ouptut */
  2199. 03649
  2200. 03650 /* Extensions to the termios c_oflag bit map. They are only active iff
  2201. 03651  * OPOST is enabled. */
  2202. 03652 #define ONLCR           0x0002  /* Map NL to CR-NL on output */
  2203. 03653 #define XTABS           0x0004  /* Expand tabs to spaces */
  2204. 03654 #define ONOEOT          0x0008  /* discard EOT's (^D) on output) */
  2205. 03655
  2206. 03656 /* Extensions to the termios c_lflag bit map.  */
  2207. 03657 #define LFLUSHO         0x0200  /* Flush output. */
  2208. 03658
  2209. 03659 /* Extensions to the c_cc array. */
  2210. 03660 #define VREPRINT          11    /* cc_c[VREPRINT] (^R) */
  2211. 03661 #define VLNEXT            12    /* cc_c[VLNEXT] (^V) */
  2212. 03662 #define VDISCARD          13    /* cc_c[VDISCARD] (^O) */
  2213. 03663
  2214. 03664 /* Extensions to baud rate settings. */
  2215. 03665 #define B57600          0x0100  /* 57600 baud */
  2216. 03666 #define B115200         0x0200  /* 115200 baud */
  2217. 03667
  2218. 03668 /* These are the default settings used by the kernel and by 'stty sane' */
  2219. 03669
  2220. 03670 #define TCTRL_DEF       (CREAD | CS8 | HUPCL)
  2221. 03671 #define TINPUT_DEF      (BRKINT | ICRNL | IXON | IXANY)
  2222. 03672 #define TOUTPUT_DEF     (OPOST | ONLCR)
  2223. 03673 #define TLOCAL_DEF      (ISIG | IEXTEN | ICANON | ECHO | ECHOE)
  2224. 03674 #define TSPEED_DEF      B9600
  2225. 03675
  2226. 03676 #define TEOF_DEF        '4'    /* ^D */
  2227. 03677 #define TEOL_DEF        _POSIX_VDISABLE
  2228. 03678 #define TERASE_DEF      '10'   /* ^H */
  2229. 03679 #define TINTR_DEF       '177'  /* ^? */
  2230. 03680 #define TKILL_DEF       '25'   /* ^U */
  2231. 03681 #define TMIN_DEF        1
  2232. 03682 #define TQUIT_DEF       '34'   /* ^ */
  2233. 03683 #define TSTART_DEF      '21'   /* ^Q */
  2234. 03684 #define TSTOP_DEF       '23'   /* ^S */
  2235. 03685 #define TSUSP_DEF       '32'   /* ^Z */
  2236. 03686 #define TTIME_DEF       0
  2237. 03687 #define TREPRINT_DEF    '22'   /* ^R */
  2238. 03688 #define TLNEXT_DEF      '26'   /* ^V */
  2239. 03689 #define TDISCARD_DEF    '17'   /* ^O */
  2240. 03690
  2241. 03691 /* Window size. This information is stored in the TTY driver but not used.
  2242. 03692  * This can be used for screen based applications in a window environment. 
  2243. 03693  * The ioctls TIOCGWINSZ and TIOCSWINSZ can be used to get and set this 
  2244. 03694  * information.
  2245. 03695  */
  2246. 03696
  2247. 03697 struct winsize
  2248. 03698 {
  2249. 03699         unsigned short  ws_row;         /* rows, in characters */
  2250. 03700         unsigned short  ws_col;         /* columns, in characters */
  2251. 03701         unsigned short  ws_xpixel;      /* horizontal size, pixels */
  2252. 03702         unsigned short  ws_ypixel;      /* vertical size, pixels */
  2253. 03703 };
  2254. 03704 #endif /* _MINIX */
  2255. 03705
  2256. 03706 #endif /* _TERMIOS_H */
  2257. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2258. include/time.h    
  2259. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2260. 03800 /* The <time.h> header is used by the procedures that deal with time.
  2261. 03801  * Handling time is surprisingly complicated, what with GMT, local time
  2262. 03802  * and other factors.  Although the Bishop of Ussher (1581-1656) once
  2263. 03803  * calculated that based on the Bible, the world began on 12 Oct. 4004 BC
  2264. 03804  * at 9 o'clock in the morning, in the UNIX world time begins at midnight, 
  2265. 03805  * 1 Jan. 1970 GMT.  Before that, all was NULL and (void).
  2266. 03806  */
  2267. 03807
  2268. 03808 #ifndef _TIME_H
  2269. 03809 #define _TIME_H
  2270. 03810
  2271. 03811 #define CLOCKS_PER_SEC    60    /* MINIX always uses 60 Hz, even in Europe */
  2272. 03812
  2273. 03813 #ifdef _POSIX_SOURCE
  2274. 03814 #define CLK_TCK CLOCKS_PER_SEC  /* obsolescent mame for CLOCKS_PER_SEC */
  2275. 03815 #endif
  2276. 03816
  2277. 03817 #define NULL    ((void *)0)
  2278. 03818
  2279. 03819 #ifndef _SIZE_T
  2280. 03820 #define _SIZE_T
  2281. 03821 typedef unsigned int size_t;
  2282. 03822 #endif
  2283. 03823
  2284. 03824 #ifndef _TIME_T
  2285. 03825 #define _TIME_T
  2286. 03826 typedef long time_t;            /* time in sec since 1 Jan 1970 0000 GMT */
  2287. 03827 #endif
  2288. 03828
  2289. 03829 #ifndef _CLOCK_T
  2290. 03830 #define _CLOCK_T
  2291. 03831 typedef long clock_t;           /* time in ticks since process started */
  2292. 03832 #endif
  2293. 03833
  2294. 03834 struct tm {
  2295. 03835   int tm_sec;                   /* seconds after the minute [0, 59] */
  2296. 03836   int tm_min;                   /* minutes after the hour [0, 59] */
  2297. 03837   int tm_hour;                  /* hours since midnight [0, 23] */
  2298. 03838   int tm_mday;                  /* day of the month [1, 31] */
  2299. 03839   int tm_mon;                   /* months since January [0, 11] */
  2300. 03840   int tm_year;                  /* years since 1900 */
  2301. 03841   int tm_wday;                  /* days since Sunday [0, 6] */
  2302. 03842   int tm_yday;                  /* days since January 1 [0, 365] */
  2303. 03843   int tm_isdst;                 /* Daylight Saving Time flag */
  2304. 03844 };
  2305. 03845
  2306. 03846 extern char *tzname[];
  2307. 03847
  2308. 03848 /* Function Prototypes. */
  2309. 03849 #ifndef _ANSI_H
  2310. 03850 #include <ansi.h>
  2311. 03851 #endif
  2312. 03852
  2313. 03853 _PROTOTYPE( clock_t clock, (void)                                       );
  2314. 03854 _PROTOTYPE( double difftime, (time_t _time1, time_t _time0)             );
  2315. 03855 _PROTOTYPE( time_t mktime, (struct tm *_timeptr)                        );
  2316. 03856 _PROTOTYPE( time_t time, (time_t *_timeptr)                             );
  2317. 03857 _PROTOTYPE( char *asctime, (const struct tm *_timeptr)                  );
  2318. 03858 _PROTOTYPE( char *ctime, (const time_t *_timer)                 );
  2319. 03859 _PROTOTYPE( struct tm *gmtime, (const time_t *_timer)                   );
  2320. 03860 _PROTOTYPE( struct tm *localtime, (const time_t *_timer)                );
  2321. 03861 _PROTOTYPE( size_t strftime, (char *_s, size_t _max, const char *_fmt,
  2322. 03862                                 const struct tm *_timep)                );
  2323. 03863
  2324. 03864 #ifdef _POSIX_SOURCE
  2325. 03865 _PROTOTYPE( void tzset, (void)                                          );
  2326. 03866 #endif
  2327. 03867
  2328. 03868 #ifdef _MINIX
  2329. 03869 _PROTOTYPE( int stime, (time_t *_top)                                   );
  2330. 03870 #endif
  2331. 03871
  2332. 03872 #endif /* _TIME_H */
  2333. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2334. include/tools.h    
  2335. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2336. 03900 /* Constants describing the disk */
  2337. 03901 #define SECTOR_SIZE     512
  2338. 03902 #define SECTOR_SHIFT    9
  2339. 03903 #define RATIO           (BLOCK_SIZE / SECTOR_SIZE)
  2340. 03904 #define HRATIO          (SECTOR_SIZE / HCLICK_SIZE)
  2341. 03905 #define PARAMSEC        1       /* sector containing boot parameters */
  2342. 03906 #define DSKBASE         0x1E    /* floppy disk parameter vector */
  2343. 03907 #define DSKPARSIZE      11      /* there are this many bytes of parameters */
  2344. 03908 #define ESC             '33'   /* escape key */
  2345. 03909 #define HEADERSEG       0x0060  /* place for an array of struct exec's */
  2346. 03910 #define MINIXSEG        0x0080  /* MINIX loaded here (rounded up to a click) */
  2347. 03911 #define BOOTSEG         0x07C0  /* bootstraps are loaded here */
  2348. 03912 #define SIGNATURE       0xAA55  /* proper bootstraps have this signature */
  2349. 03913 #define SIGNATPOS       510     /* offset within bootblock */
  2350. 03914 #define FREESEG         0x0800  /* Memory from FREESEG to cseg is free */
  2351. 03915 #define MSEC_PER_TICK   55      /* 18.2 ticks per second */
  2352. 03916
  2353. 03917 /* Scan codes for four different keyboards (from kernel/keyboard.c) */
  2354. 03918 #define DUTCH_EXT_SCAN    32    /* 'd' */
  2355. 03919 #define OLIVETTI_SCAN     12    /* '=' key on olivetti */
  2356. 03920 #define STANDARD_SCAN     13    /* '=' key on IBM */
  2357. 03921 #define US_EXT_SCAN       22    /* 'u' */
  2358. 03922
  2359. 03923 /* Other */
  2360. 03924 #define ROOT_INO ((ino_t) 1)    /* Inode nr of root dir. */
  2361. 03925 #define IM_NAME_MAX       63
  2362. 03926
  2363. 03927 /* Variables */
  2364. 03928 #ifndef EXTERN
  2365. 03929 #define EXTERN extern
  2366. 03930 #endif
  2367. 03931
  2368. 03932 typedef struct vector {
  2369. 03933   u16_t offset;
  2370. 03934   u16_t segment;
  2371. 03935 } vector;
  2372. 03936
  2373. 03937 struct image_header {
  2374. 03938   char name[IM_NAME_MAX + 1];   /* Null terminated. */
  2375. 03939   struct exec process;
  2376. 03940 };
  2377. 03941
  2378. 03942 EXTERN vector rem_part;         /* boot partition table entry */
  2379. 03943 EXTERN u16_t cseg, dseg;        /* code and data segment of the boot program */
  2380. 03944 EXTERN u32_t runsize;           /* size of this program */
  2381. 03945 EXTERN u16_t device;            /* drive being booted from */
  2382. 03946 EXTERN u16_t heads, sectors;    /* the drive's number of heads and sectors */
  2383. 03947 extern u16_t eqscancode;        /* Set by peek/getch() if they see a '=' */
  2384. 03948
  2385. 03949 /* Sticky attributes */
  2386. 03950 #define E_SPECIAL       0x01    /* These are known to the program */
  2387. 03951 #define E_DEV           0x02    /* The value is a device name */
  2388. 03952 #define E_RESERVED      0x04    /* May not be set by user, e.g. scancode */
  2389. 03953 #define E_STICKY        0x07    /* Don't go once set */
  2390. 03954
  2391. 03955 /* Volatile attributes */
  2392. 03956 #define E_VAR           0x08    /* Variable */
  2393. 03957 #define E_FUNCTION      0x10    /* Function definition */
  2394. 03958
  2395. 03959 typedef struct environment {
  2396. 03960   struct environment *next;
  2397. 03961   char flags;
  2398. 03962   char *name;                   /* name = value */
  2399. 03963   char *arg;                    /* name(arg) {value} */
  2400. 03964   char *value;
  2401. 03965   char *defval;                 /* Safehouse for default values */
  2402. 03966 } environment;
  2403. 03967
  2404. 03968 /* External variables */
  2405. 03969 EXTERN environment *env;        /* Lists the environment */
  2406. 03970 EXTERN int fsok;                /* True if the boot device contains an FS */
  2407. 03971 EXTERN u32_t lowsec;            /* Offset to the file system on the boot dev */
  2408. 03972
  2409. 03973 /* Prototypes */
  2410. 03974 _PROTOTYPE( off_t r_super, (void));
  2411. 03975 _PROTOTYPE( void r_stat, (Ino_t _inum, struct stat *_stp ));
  2412. 03976 _PROTOTYPE( ino_t r_readdir, (char *_name ));
  2413. 03977 _PROTOTYPE( off_t r_vir2abs, (off_t _virblk ));
  2414. 03978 _PROTOTYPE( ino_t r_lookup, (Ino_t _cwd, char *_path ));
  2415. 03979
  2416. 03980 #ifdef _MONHEAD
  2417. 03981 _PROTOTYPE( void readerr, (off_t _sec, int _err ));
  2418. 03982 _PROTOTYPE( int numprefix, (char *_s, char **_ps ));
  2419. 03983 _PROTOTYPE( int numeric, (char *_s ));
  2420. 03984 _PROTOTYPE( dev_t name2dev, (char *_name ));
  2421. 03985 _PROTOTYPE( int delay, (char *_msec ));
  2422. 03986 _PROTOTYPE( char *unix_err, (int _err ));
  2423. 03987 _PROTOTYPE( void init_cache, (void));
  2424. 03988 _PROTOTYPE( void invalidate_cache, (void));
  2425. 03989 _PROTOTYPE( char *b_value, (char *_name ));
  2426. 03990 _PROTOTYPE( void raw_copy, (int _doff, int _dseg, int _soff, int _sseg,
  2427. 03991                                                 int _count));
  2428. 03992 _PROTOTYPE( void raw_clear, (int _off, int _seg, int _count));
  2429. 03993 _PROTOTYPE( void bootstrap, (int _device, int _partoff, int _partseg));
  2430. 03994
  2431. 03995 _PROTOTYPE( long a2l, (char *_a ));
  2432. 03996 _PROTOTYPE( char *ul2a, (u32_t _n ));
  2433. 03997 _PROTOTYPE( char *u2a, (int _n1 ));
  2434. 03998
  2435. 03999 /* Functions defined in monhead.s and usable by other files. */
  2436. 04000 _PROTOTYPE( void reset_video, (int color));
  2437. 04001 _PROTOTYPE( int dev_geometry, (void));
  2438. 04002 _PROTOTYPE( u16_t get_ext_memsize, (void));
  2439. 04003 _PROTOTYPE( u16_t get_low_memsize, (void));
  2440. 04004 _PROTOTYPE( u16_t get_processor, (void));
  2441. 04005 _PROTOTYPE( u32_t get_tick, (void));
  2442. 04006 _PROTOTYPE( u16_t get_video, (void));
  2443. 04007 _PROTOTYPE( u16_t get_word, (int _off, int _seg));
  2444. 04008 _PROTOTYPE( int getchar, (void));
  2445. 04009 _PROTOTYPE( void minix, (void));
  2446. 04010 _PROTOTYPE( void minix86, (int _kcs, int _kds, char *_bpar, int _psize));
  2447. 04011 _PROTOTYPE( void minix386, (int _kcs, int _kds, char *_bpar, int _psize));
  2448. 04012 _PROTOTYPE( int peekchar, (void));
  2449. 04013 _PROTOTYPE( void put_word, (int _off, int _seg, int _word));
  2450. 04014 _PROTOTYPE( int putchar, (char _c));
  2451. 04015 _PROTOTYPE( int readsectors, (int _off, int _seg, off_t _adr, int _ct));
  2452. 04016 _PROTOTYPE( void reboot, (void));
  2453. 04017 _PROTOTYPE( void relocate, (void));
  2454. 04018 _PROTOTYPE( int writesectors, (int _off, int _seg, off_t _adr, int _ct));
  2455. 04019 #endif
  2456. 04020
  2457. 04021
  2458. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2459. include/ttyent.h    
  2460. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2461. 04100 /* <ttyent.h> is used by getttyent(3).                  Author: Kees J. Bot
  2462. 04101  *                                                              28 Oct 1995
  2463. 04102  */
  2464. 04103 #ifndef _TTYENT_H
  2465. 04104 #define _TTYENT_H
  2466. 04105
  2467. 04106 #ifndef _ANSI_H
  2468. 04107 #include <ansi.h>
  2469. 04108 #endif
  2470. 04109
  2471. 04110 struct ttyent {
  2472. 04111         char    *ty_name;       /* Name of the terminal device. */
  2473. 04112         char    *ty_type;       /* Terminal type name (termcap(3)). */
  2474. 04113         char    **ty_getty;     /* Program to run, normally getty. */
  2475. 04114         char    **ty_init;      /* Initialization command, normally stty. */
  2476. 04115 };
  2477. 04116
  2478. 04117 _PROTOTYPE( struct ttyent *getttyent, (void)                            );
  2479. 04118 _PROTOTYPE( struct ttyent *getttynam, (const char *_name)               );
  2480. 04119 _PROTOTYPE( int setttyent, (void)                                       );
  2481. 04120 _PROTOTYPE( void endttyent, (void)                                      );
  2482. 04121
  2483. 04122 #endif /* _TTYENT_H */
  2484. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2485. include/unistd.h    
  2486. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2487. 04200 /* The <unistd.h> header contains a few miscellaneous manifest constants. */
  2488. 04201
  2489. 04202 #ifndef _UNISTD_H
  2490. 04203 #define _UNISTD_H
  2491. 04204
  2492. 04205 /* POSIX requires size_t and ssize_t in <unistd.h> and elsewhere. */
  2493. 04206 #ifndef _SIZE_T
  2494. 04207 #define _SIZE_T
  2495. 04208 typedef unsigned int size_t;
  2496. 04209 #endif
  2497. 04210
  2498. 04211 #ifndef _SSIZE_T
  2499. 04212 #define _SSIZE_T
  2500. 04213 typedef int ssize_t;
  2501. 04214 #endif
  2502. 04215
  2503. 04216 /* Values used by access().  POSIX Table 2-8. */
  2504. 04217 #define F_OK               0    /* test if file exists */
  2505. 04218 #define X_OK               1    /* test if file is executable */
  2506. 04219 #define W_OK               2    /* test if file is writable */
  2507. 04220 #define R_OK               4    /* test if file is readable */
  2508. 04221
  2509. 04222 /* Values used for whence in lseek(fd, offset, whence).  POSIX Table 2-9. */
  2510. 04223 #define SEEK_SET           0    /* offset is absolute  */
  2511. 04224 #define SEEK_CUR           1    /* offset is relative to current position */
  2512. 04225 #define SEEK_END           2    /* offset is relative to end of file */
  2513. 04226
  2514. 04227 /* This value is required by POSIX Table 2-10. */
  2515. 04228 #define _POSIX_VERSION 199009L  /* which standard is being conformed to */
  2516. 04229
  2517. 04230 /* These three definitions are required by POSIX Sec. 8.2.1.2. */
  2518. 04231 #define STDIN_FILENO       0    /* file descriptor for stdin */
  2519. 04232 #define STDOUT_FILENO      1    /* file descriptor for stdout */
  2520. 04233 #define STDERR_FILENO      2    /* file descriptor for stderr */
  2521. 04234
  2522. 04235 #ifdef _MINIX
  2523. 04236 /* How to exit the system. */
  2524. 04237 #define RBT_HALT           0
  2525. 04238 #define RBT_REBOOT         1
  2526. 04239 #define RBT_PANIC          2    /* for servers */
  2527. 04240 #define RBT_MONITOR        3    /* let the monitor do this */
  2528. 04241 #define RBT_RESET          4    /* hard reset the system */
  2529. 04242 #endif
  2530. 04243
  2531. 04244 /* NULL must be defined in <unistd.h> according to POSIX Sec. 2.7.1. */
  2532. 04245 #define NULL    ((void *)0)
  2533. 04246
  2534. 04247 /* The following relate to configurable system variables. POSIX Table 4-2. */
  2535. 04248 #define _SC_ARG_MAX             1
  2536. 04249 #define _SC_CHILD_MAX           2
  2537. 04250 #define _SC_CLOCKS_PER_SEC      3
  2538. 04251 #define _SC_CLK_TCK             3
  2539. 04252 #define _SC_NGROUPS_MAX         4
  2540. 04253 #define _SC_OPEN_MAX            5
  2541. 04254 #define _SC_JOB_CONTROL         6
  2542. 04255 #define _SC_SAVED_IDS           7
  2543. 04256 #define _SC_VERSION             8
  2544. 04257 #define _SC_STREAM_MAX          9
  2545. 04258 #define _SC_TZNAME_MAX         10
  2546. 04259
  2547. 04260 /* The following relate to configurable pathname variables. POSIX Table 5-2. */
  2548. 04261 #define _PC_LINK_MAX            1       /* link count */
  2549. 04262 #define _PC_MAX_CANON           2       /* size of the canonical input queue */
  2550. 04263 #define _PC_MAX_INPUT           3       /* type-ahead buffer size */
  2551. 04264 #define _PC_NAME_MAX            4       /* file name size */
  2552. 04265 #define _PC_PATH_MAX            5       /* pathname size */
  2553. 04266 #define _PC_PIPE_BUF            6       /* pipe size */
  2554. 04267 #define _PC_NO_TRUNC            7       /* treatment of long name components */
  2555. 04268 #define _PC_VDISABLE            8       /* tty disable */
  2556. 04269 #define _PC_CHOWN_RESTRICTED    9       /* chown restricted or not */
  2557. 04270
  2558. 04271 /* POSIX defines several options that may be implemented or not, at the
  2559. 04272  * implementer's whim.  This implementer has made the following choices:
  2560. 04273  *
  2561. 04274  * _POSIX_JOB_CONTROL       not defined:        no job control
  2562. 04275  * _POSIX_SAVED_IDS         not defined:        no saved uid/gid
  2563. 04276  * _POSIX_NO_TRUNC          defined as -1:      long path names are truncated
  2564. 04277  * _POSIX_CHOWN_RESTRICTED  defined:            you can't give away files
  2565. 04278  * _POSIX_VDISABLE          defined:            tty functions can be disabled
  2566. 04279  */
  2567. 04280 #define _POSIX_NO_TRUNC       (-1)
  2568. 04281 #define _POSIX_CHOWN_RESTRICTED  1
  2569. 04282
  2570. 04283 /* Function Prototypes. */
  2571. 04284 #ifndef _ANSI_H
  2572. 04285 #include <ansi.h>
  2573. 04286 #endif
  2574. 04287
  2575. 04288 _PROTOTYPE( void _exit, (int _status)                                   );
  2576. 04289 _PROTOTYPE( int access, (const char *_path, int _amode)                 );
  2577. 04290 _PROTOTYPE( unsigned int alarm, (unsigned int _seconds)                 );
  2578. 04291 _PROTOTYPE( int chdir, (const char *_path)                              );
  2579. 04292 _PROTOTYPE( int chown, (const char *_path, Uid_t _owner, Gid_t _group)  );
  2580. 04293 _PROTOTYPE( int close, (int _fd)                                        );
  2581. 04294 _PROTOTYPE( char *ctermid, (char *_s)                                   );
  2582. 04295 _PROTOTYPE( char *cuserid, (char *_s)                                   );
  2583. 04296 _PROTOTYPE( int dup, (int _fd)                                          );
  2584. 04297 _PROTOTYPE( int dup2, (int _fd, int _fd2)                               );
  2585. 04298 _PROTOTYPE( int execl, (const char *_path, const char *_arg, ...)       );
  2586. 04299 _PROTOTYPE( int execle, (const char *_path, const char *_arg, ...)      );
  2587. 04300 _PROTOTYPE( int execlp, (const char *_file, const char *arg, ...)       );
  2588. 04301 _PROTOTYPE( int execv, (const char *_path, char *const _argv[])         );
  2589. 04302 _PROTOTYPE( int execve, (const char *_path, char *const _argv[], 
  2590. 04303                                                 char *const _envp[])    );
  2591. 04304 _PROTOTYPE( int execvp, (const char *_file, char *const _argv[])        );
  2592. 04305 _PROTOTYPE( pid_t fork, (void)                                          );
  2593. 04306 _PROTOTYPE( long fpathconf, (int _fd, int _name)                        );
  2594. 04307 _PROTOTYPE( char *getcwd, (char *_buf, size_t _size)                    );
  2595. 04308 _PROTOTYPE( gid_t getegid, (void)                                       );
  2596. 04309 _PROTOTYPE( uid_t geteuid, (void)                                       );
  2597. 04310 _PROTOTYPE( gid_t getgid, (void)                                        );
  2598. 04311 _PROTOTYPE( int getgroups, (int _gidsetsize, gid_t _grouplist[])        );
  2599. 04312 _PROTOTYPE( char *getlogin, (void)                                      );
  2600. 04313 _PROTOTYPE( pid_t getpgrp, (void)                                       );
  2601. 04314 _PROTOTYPE( pid_t getpid, (void)                                        );
  2602. 04315 _PROTOTYPE( pid_t getppid, (void)                                       );
  2603. 04316 _PROTOTYPE( uid_t getuid, (void)                                        );
  2604. 04317 _PROTOTYPE( int isatty, (int _fd)                                       );
  2605. 04318 _PROTOTYPE( int link, (const char *_existing, const char *_new)         );
  2606. 04319 _PROTOTYPE( off_t lseek, (int _fd, off_t _offset, int _whence)          );
  2607. 04320 _PROTOTYPE( long pathconf, (const char *_path, int _name)               );
  2608. 04321 _PROTOTYPE( int pause, (void)                                           );
  2609. 04322 _PROTOTYPE( int pipe, (int _fildes[2])                                  );
  2610. 04323 _PROTOTYPE( ssize_t read, (int _fd, void *_buf, size_t _n)              );
  2611. 04324 _PROTOTYPE( int rmdir, (const char *_path)                              );
  2612. 04325 _PROTOTYPE( int setgid, (Gid_t _gid)                                    );
  2613. 04326 _PROTOTYPE( int setpgid, (pid_t _pid, pid_t _pgid)                      );
  2614. 04327 _PROTOTYPE( pid_t setsid, (void)                                        );
  2615. 04328 _PROTOTYPE( int setuid, (Uid_t _uid)                                    );
  2616. 04329 _PROTOTYPE( unsigned int sleep, (unsigned int _seconds)                 );
  2617. 04330 _PROTOTYPE( long sysconf, (int _name)                                   );
  2618. 04331 _PROTOTYPE( pid_t tcgetpgrp, (int _fd)                                  );
  2619. 04332 _PROTOTYPE( int tcsetpgrp, (int _fd, pid_t _pgrp_id)                    );
  2620. 04333 _PROTOTYPE( char *ttyname, (int _fd)                                    );
  2621. 04334 _PROTOTYPE( int unlink, (const char *_path)                             );
  2622. 04335 _PROTOTYPE( ssize_t write, (int _fd, const void *_buf, size_t _n)       );
  2623. 04336
  2624. 04337 #ifdef _MINIX
  2625. 04338 _PROTOTYPE( int brk, (char *_addr)                                      );
  2626. 04339 _PROTOTYPE( int chroot, (const char *_name)                             );
  2627. 04340 _PROTOTYPE( int mknod, (const char *_name, Mode_t _mode, Dev_t _addr)   );
  2628. 04341 _PROTOTYPE( int mknod4, (const char *_name, Mode_t _mode, Dev_t _addr,
  2629. 04342             long _size)                                                 );
  2630. 04343 _PROTOTYPE( char *mktemp, (char *_template)                             );
  2631. 04344 _PROTOTYPE( int mount, (char *_spec, char *_name, int _flag)            );
  2632. 04345 _PROTOTYPE( long ptrace, (int _req, pid_t _pid, long _addr, long _data) );
  2633. 04346 _PROTOTYPE( char *sbrk, (int _incr)                                     );
  2634. 04347 _PROTOTYPE( int sync, (void)                                            );
  2635. 04348 _PROTOTYPE( int umount, (const char *_name)                             );
  2636. 04349 _PROTOTYPE( int reboot, (int _how, ...)                                 );
  2637. 04350 _PROTOTYPE( int gethostname, (char *_hostname, size_t _len)             );
  2638. 04351 _PROTOTYPE( int getdomainname, (char *_domain, size_t _len)             );
  2639. 04352 _PROTOTYPE( int ttyslot, (void)                                         );
  2640. 04353 _PROTOTYPE( int fttyslot, (int _fd)                                     );
  2641. 04354 _PROTOTYPE( char *crypt, (const char *_key, const char *_salt)          );
  2642. 04355 #endif
  2643. 04356
  2644. 04357 #endif /* _UNISTD_H */
  2645. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2646. include/utime.h    
  2647. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2648. 04400 /* The <utime.h> header is used for the utime() system call. */
  2649. 04401
  2650. 04402 #ifndef _UTIME_H
  2651. 04403 #define _UTIME_H
  2652. 04404
  2653. 04405 struct utimbuf {
  2654. 04406   time_t actime;                /* access time */
  2655. 04407   time_t modtime;               /* modification time */
  2656. 04408 };
  2657. 04409
  2658. 04410
  2659. 04411 /* Function Prototypes. */
  2660. 04412 #ifndef _ANSI_H
  2661. 04413 #include <ansi.h>
  2662. 04414 #endif
  2663. 04415
  2664. 04416 _PROTOTYPE( int utime, (const char *_path, const struct utimbuf *_times)     );
  2665. 04417
  2666. 04418 #endif /* _UTIME_H */
  2667. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2668. include/utmp.h    
  2669. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2670. 04500 /* The <utmp.h> header is used by init, login, who, etc. */
  2671. 04501
  2672. 04502 #ifndef _UTMP_H
  2673. 04503 #define _UTMP_H
  2674. 04504
  2675. 04505 #define WTMP  "/usr/adm/wtmp"   /* the login history file */
  2676. 04506 #define BTMP  "/usr/adm/btmp"   /* the bad-login history file */
  2677. 04507 #define UTMP  "/etc/utmp"       /* the user accouting file */
  2678. 04508
  2679. 04509
  2680. 04510 struct utmp {
  2681. 04511   char ut_user[8];              /* user name */
  2682. 04512   char ut_id[4];                /* /etc/inittab ID */
  2683. 04513   char ut_line[12];             /* terminal name */
  2684. 04514   char ut_host[16];             /* host name, when remote */
  2685. 04515   short ut_pid;                 /* process id */
  2686. 04516   short int ut_type;            /* type of entry */
  2687. 04517   long ut_time;                 /* login/logout time */
  2688. 04518 };
  2689. 04519
  2690. 04520 #define ut_name ut_user         /* for compatibility with other systems */
  2691. 04521
  2692. 04522
  2693. 04523 /* Definitions for ut_type. */
  2694. 04524 #define RUN_LVL            1    /* this is a RUN_LEVEL record */
  2695. 04525 #define BOOT_TIME          2    /* this is a REBOOT record */
  2696. 04526 #define INIT_PROCESS       5    /* this process was spawned by INIT */
  2697. 04527 #define LOGIN_PROCESS      6    /* this is a 'getty' process waiting */
  2698. 04528 #define USER_PROCESS       7    /* any other user process */
  2699. 04529 #define DEAD_PROCESS       8    /* this process has died (wtmp only) */
  2700. 04530
  2701. 04531 #endif /* _UTMP_H */
  2702. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2703. include/sys/asynchio.h    
  2704. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2705. 04600 /*      asynchio.h - Asynchronous I/O                   Author: Kees J. Bot
  2706. 04601  *                                                              26 Jan 1995
  2707. 04602  * This is just a fake async I/O library to be used for programs
  2708. 04603  * written for Minix-vmd that must also run under standard Minix.
  2709. 04604  * This limits the number of ugly #ifdefs somewhat.  The programs must
  2710. 04605  * be restricted to performing just one service, of course.
  2711. 04606  */
  2712. 04607 #ifndef _SYS__ASYNCHIO_H
  2713. 04608 #define _SYS__ASYNCHIO_H
  2714. 04609
  2715. 04610 typedef int asynchio_t;
  2716. 04611
  2717. 04612 #define ASYN_NONBLOCK   0x01
  2718. 04613
  2719. 04614 struct timeval { long tv_sec, tv_usec; };
  2720. 04615
  2721. 04616 #define EINPROGRESS     EINTR
  2722. 04617
  2723. 04618 void asyn_init(asynchio_t *_asyn);
  2724. 04619 ssize_t asyn_read(asynchio_t *_asyn, int _fd, void *_buf, size_t _len);
  2725. 04620 ssize_t asyn_write(asynchio_t *_asyn, int _fd, const void *_buf, size_t _len);
  2726. 04621 int asyn_ioctl(asynchio_t *_asyn, int _fd, unsigned long _request, void *_data);
  2727. 04622 int asyn_wait(asynchio_t *_asyn, int _flags, struct timeval *to);
  2728. 04623 int asyn_synch(asynchio_t *_asyn, int _fd);
  2729. 04624 int asyn_close(asynchio_t *_asyn, int _fd);
  2730. 04625
  2731. 04626 #endif /* _SYS__ASYNCHIO_H */
  2732. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2733. include/sys/dir.h    
  2734. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2735. 04700 /* The <dir.h> header gives the layout of a directory. */
  2736. 04701
  2737. 04702 #ifndef _DIR_H
  2738. 04703 #define _DIR_H
  2739. 04704
  2740. 04705 #define DIRBLKSIZ       512     /* size of directory block */
  2741. 04706
  2742. 04707 #ifndef DIRSIZ
  2743. 04708 #define DIRSIZ  14
  2744. 04709 #endif
  2745. 04710
  2746. 04711 struct direct {
  2747. 04712   ino_t d_ino;
  2748. 04713   char d_name[DIRSIZ];
  2749. 04714 };
  2750. 04715
  2751. 04716 #endif /* _DIR_H */
  2752. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2753. include/sys/ioctl.h    
  2754. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2755. 04800 /* The ioctl.h header declares device controlling operations. */
  2756. 04801
  2757. 04802 #ifndef _IOCTL_H
  2758. 04803 #define _IOCTL_H
  2759. 04804
  2760. 04805 #if _EM_WSIZE >= 4
  2761. 04806 /* Ioctls have the command encoded in the low-order word, and the size
  2762. 04807  * of the parameter in the high-order word. The 3 high bits of the high-
  2763. 04808  * order word are used to encode the in/out/void status of the parameter.
  2764. 04809  */
  2765. 04810
  2766. 04811 #define _IOCPARM_MASK   0x1FFF
  2767. 04812 #define _IOC_VOID       0x20000000
  2768. 04813 #define _IOCTYPE_MASK   0xFFFF
  2769. 04814 #define _IOC_IN         0x40000000
  2770. 04815 #define _IOC_OUT        0x80000000
  2771. 04816 #define _IOC_INOUT      (_IOC_IN | _IOC_OUT)
  2772. 04817
  2773. 04818 #define _IO(x,y)        ((x << 8) | y | _IOC_VOID)
  2774. 04819 #define _IOR(x,y,t)     ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  2775. 04820                                 _IOC_OUT)
  2776. 04821 #define _IOW(x,y,t)     ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  2777. 04822                                 _IOC_IN)
  2778. 04823 #define _IORW(x,y,t)    ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  2779. 04824                                 _IOC_INOUT)
  2780. 04825 #else
  2781. 04826 /* No fancy encoding on a 16-bit machine. */
  2782. 04827
  2783. 04828 #define _IO(x,y)        ((x << 8) | y)
  2784. 04829 #define _IOR(x,y,t)     _IO(x,y)
  2785. 04830 #define _IOW(x,y,t)     _IO(x,y)
  2786. 04831 #define _IORW(x,y,t)    _IO(x,y)
  2787. 04832 #endif
  2788. 04833
  2789. 04834
  2790. 04835 /* Terminal ioctls. */
  2791. 04836 #define TCGETS          _IOR('T',  8, struct termios) /* tcgetattr */
  2792. 04837 #define TCSETS          _IOW('T',  9, struct termios) /* tcsetattr, TCSANOW */
  2793. 04838 #define TCSETSW         _IOW('T', 10, struct termios) /* tcsetattr, TCSADRAIN */
  2794. 04839 #define TCSETSF         _IOW('T', 11, struct termios) /* tcsetattr, TCSAFLUSH */
  2795. 04840 #define TCSBRK          _IOW('T', 12, int)            /* tcsendbreak */
  2796. 04841 #define TCDRAIN         _IO ('T', 13)                 /* tcdrain */
  2797. 04842 #define TCFLOW          _IOW('T', 14, int)            /* tcflow */
  2798. 04843 #define TCFLSH          _IOW('T', 15, int)            /* tcflush */
  2799. 04844 #define TIOCGWINSZ      _IOR('T', 16, struct winsize)
  2800. 04845 #define TIOCSWINSZ      _IOW('T', 17, struct winsize)
  2801. 04846 #define TIOCGPGRP       _IOW('T', 18, int)
  2802. 04847 #define TIOCSPGRP       _IOW('T', 19, int)
  2803. 04848 #define TIOCSFON        _IOW('T', 20, u8_t [8192])
  2804. 04849
  2805. 04850 #define TIOCGETP        _IOR('t',  1, struct sgttyb)
  2806. 04851 #define TIOCSETP        _IOW('t',  2, struct sgttyb)
  2807. 04852 #define TIOCGETC        _IOR('t',  3, struct tchars)
  2808. 04853 #define TIOCSETC        _IOW('t',  4, struct tchars)
  2809. 04854
  2810. 04855
  2811. 04856 /* Network ioctls. */
  2812. 04857 #define NWIOSETHOPT     _IOW('n', 16, struct nwio_ethopt)