LIB.TXT
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:979k
源码类别:

操作系统开发

开发平台:

C/C++

  1. 47652                 if (--width)
  2. 47653                     c = getc(stream);
  3. 47654         }
  4. 47655
  5. 47656         if (width && c == '0' && base == 16) {
  6. 47657                 *bufp++ = c;
  7. 47658                 if (--width)
  8. 47659                         c = getc(stream);
  9. 47660                 if (c != 'x' && c != 'X') {
  10. 47661                         if (type == 'i') base = 8;
  11. 47662                 }
  12. 47663                 else if (width) {
  13. 47664                         *bufp++ = c;
  14. 47665                         if (--width)
  15. 47666                                 c = getc(stream);
  16. 47667                 }
  17. 47668         }
  18. 47669         else if (type == 'i') base = 10;
  19. 47670
  20. 47671         while (width) {
  21. 47672                 if (((base == 10) && isdigit(c))
  22. 47673                     || ((base == 16) && isxdigit(c))
  23. 47674                     || ((base == 8) && isdigit(c) && (c < '8'))
  24. 47675                     || ((base == 2) && isdigit(c) && (c < '2'))) {
  25. 47676                         *bufp++ = c;
  26. 47677                         if (--width)
  27. 47678                                 c = getc(stream);
  28. 47679                 }
  29. 47680                 else break;
  30. 47681         }
  31. 47682
  32. 47683         if (width && c != EOF) ungetc(c, stream);
  33. 47684         if (type == 'i') base = 0;
  34. 47685         *basep = base;
  35. 47686         *bufp = '';
  36. 47687         return bufp - 1;
  37. 47688 }
  38. 47690 #ifndef NOFLOAT
  39. 47691 /* The function f_collect() reads a string that has the format of a
  40. 47692  * floating-point number. The function returns as soon as a format-error
  41. 47693  * is encountered, leaving the offending character in the input. This means
  42. 47694  * that 1.el leaves the 'l' in the input queue. Since all detection of
  43. 47695  * format errors is done here, _doscan() doesn't call strtod() when it's
  44. 47696  * not necessary, although the use of the width field can cause incomplete
  45. 47697  * numbers to be passed to strtod(). (e.g. 1.3e+)
  46. 47698  */
  47. 47699 static char *
  48. 47700 f_collect(register int c, register FILE *stream, register unsigned int width)
  49. 47701 {
  50. 47702         register char *bufp = inp_buf;
  51. 47703         int digit_seen = 0;
  52. 47704
  53. 47705         if (c == '-' || c == '+') {
  54. 47706                 *bufp++ = c;
  55. 47707                 if (--width)
  56. 47708                         c = getc(stream);
  57. 47709         }
  58. 47710
  59. 47711         while (width && isdigit(c)) {
  60. 47712                 digit_seen++;
  61. 47713                 *bufp++ = c;
  62. 47714                 if (--width)
  63. 47715                         c = getc(stream);
  64. 47716         }
  65. 47717         if (width && c == '.') {
  66. 47718                 *bufp++ = c;
  67. 47719                 if(--width)
  68. 47720                         c = getc(stream);
  69. 47721                 while (width && isdigit(c)) {
  70. 47722                         digit_seen++;
  71. 47723                         *bufp++ = c;
  72. 47724                         if (--width)
  73. 47725                                 c = getc(stream);
  74. 47726                 }
  75. 47727         }
  76. 47728
  77. 47729         if (!digit_seen) {
  78. 47730                 if (width && c != EOF) ungetc(c, stream);
  79. 47731                 return inp_buf - 1;
  80. 47732         }
  81. 47733         else digit_seen = 0;
  82. 47734
  83. 47735         if (width && (c == 'e' || c == 'E')) {
  84. 47736                 *bufp++ = c;
  85. 47737                 if (--width)
  86. 47738                         c = getc(stream);
  87. 47739                 if (width && (c == '+' || c == '-')) {
  88. 47740                         *bufp++ = c;
  89. 47741                         if (--width)
  90. 47742                                 c = getc(stream);
  91. 47743                 }
  92. 47744                 while (width && isdigit(c)) {
  93. 47745                         digit_seen++;
  94. 47746                         *bufp++ = c;
  95. 47747                         if (--width)
  96. 47748                                 c = getc(stream);
  97. 47749                 }
  98. 47750                 if (!digit_seen) {
  99. 47751                         if (width && c != EOF) ungetc(c,stream);
  100. 47752                         return inp_buf - 1;
  101. 47753                 }
  102. 47754         }
  103. 47755
  104. 47756         if (width && c != EOF) ungetc(c, stream);
  105. 47757         *bufp = '';
  106. 47758         return bufp - 1;
  107. 47759 }
  108. 47760 #endif  /* NOFLOAT */
  109. 47761
  110. 47762
  111. 47763 /*
  112. 47764  * the routine that does the scanning 
  113. 47765  */
  114. 47766
  115. 47767 int
  116. 47768 _doscan(register FILE *stream, const char *format, va_list ap)
  117. 47769 {
  118. 47770         int             done = 0;       /* number of items done */
  119. 47771         int             nrchars = 0;    /* number of characters read */
  120. 47772         int             conv = 0;       /* # of conversions */
  121. 47773         int             base;           /* conversion base */
  122. 47774         unsigned long   val;            /* an integer value */
  123. 47775         register char   *str;           /* temporary pointer */
  124. 47776         char            *tmp_string;    /* ditto */
  125. 47777         unsigned        width = 0;      /* width of field */
  126. 47778         int             flags;          /* some flags */
  127. 47779         int             reverse;        /* reverse the checking in [...] */
  128. 47780         int             kind;
  129. 47781         register int    ic = EOF;       /* the input character */
  130. 47782 #ifndef NOFLOAT
  131. 47783         long double     ld_val;
  132. 47784 #endif
  133. 47785
  134. 47786         if (!*format) return 0;
  135. 47787
  136. 47788         while (1) {
  137. 47789                 if (isspace(*format)) {
  138. 47790                         while (isspace(*format))
  139. 47791                                 format++;       /* skip whitespace */
  140. 47792                         ic = getc(stream);
  141. 47793                         nrchars++;
  142. 47794                         while (isspace (ic)) {
  143. 47795                                 ic = getc(stream);
  144. 47796                                 nrchars++;
  145. 47797                         }
  146. 47798                         if (ic != EOF) ungetc(ic,stream);
  147. 47799                         nrchars--;
  148. 47800                 }
  149. 47801                 if (!*format) break;    /* end of format */
  150. 47802
  151. 47803                 if (*format != '%') {
  152. 47804                         ic = getc(stream);
  153. 47805                         nrchars++;
  154. 47806                         if (ic != *format++) break;     /* error */
  155. 47807                         continue;
  156. 47808                 }
  157. 47809                 format++;
  158. 47810                 if (*format == '%') {
  159. 47811                         ic = getc(stream);
  160. 47812                         nrchars++;
  161. 47813                         if (ic == '%') {
  162. 47814                                 format++;
  163. 47815                                 continue;
  164. 47816                         }
  165. 47817                         else break;
  166. 47818                 }
  167. 47819                 flags = 0;
  168. 47820                 if (*format == '*') {
  169. 47821                         format++;
  170. 47822                         flags |= FL_NOASSIGN;
  171. 47823                 }
  172. 47824                 if (isdigit (*format)) {
  173. 47825                         flags |= FL_WIDTHSPEC;
  174. 47826                         for (width = 0; isdigit (*format);)
  175. 47827                                 width = width * 10 + *format++ - '0';
  176. 47828                 }
  177. 47829
  178. 47830                 switch (*format) {
  179. 47831                 case 'h': flags |= FL_SHORT; format++; break;
  180. 47832                 case 'l': flags |= FL_LONG; format++; break;
  181. 47833                 case 'L': flags |= FL_LONGDOUBLE; format++; break;
  182. 47834                 }
  183. 47835                 kind = *format;
  184. 47836                 if ((kind != 'c') && (kind != '[') && (kind != 'n')) {
  185. 47837                         do {
  186. 47838                                 ic = getc(stream);
  187. 47839                                 nrchars++;
  188. 47840                         } while (isspace(ic));
  189. 47841                         if (ic == EOF) break;           /* outer while */
  190. 47842                 } else if (kind != 'n') {               /* %c or %[ */
  191. 47843                         ic = getc(stream);
  192. 47844                         if (ic == EOF) break;           /* outer while */
  193. 47845                         nrchars++;
  194. 47846                 }
  195. 47847                 switch (kind) {
  196. 47848                 default:
  197. 47849                         /* not recognized, like %q */
  198. 47850                         return conv || (ic != EOF) ? done : EOF;
  199. 47851                         break;
  200. 47852                 case 'n':
  201. 47853                         if (!(flags & FL_NOASSIGN)) {   /* silly, though */
  202. 47854                                 if (flags & FL_SHORT)
  203. 47855                                         *va_arg(ap, short *) = (short) nrchars;
  204. 47856                                 else if (flags & FL_LONG)
  205. 47857                                         *va_arg(ap, long *) = (long) nrchars;
  206. 47858                                 else
  207. 47859                                         *va_arg(ap, int *) = (int) nrchars;
  208. 47860                         }
  209. 47861                         break;
  210. 47862                 case 'p':               /* pointer */
  211. 47863                         set_pointer(flags);
  212. 47864                         /* fallthrough */
  213. 47865                 case 'b':               /* binary */
  214. 47866                 case 'd':               /* decimal */
  215. 47867                 case 'i':               /* general integer */
  216. 47868                 case 'o':               /* octal */
  217. 47869                 case 'u':               /* unsigned */
  218. 47870                 case 'x':               /* hexadecimal */
  219. 47871                 case 'X':               /* ditto */
  220. 47872                         if (!(flags & FL_WIDTHSPEC) || width > NUMLEN)
  221. 47873                                 width = NUMLEN;
  222. 47874                         if (!width) return done;
  223. 47875
  224. 47876                         str = o_collect(ic, stream, kind, width, &base);
  225. 47877                         if (str < inp_buf
  226. 47878                             || (str == inp_buf
  227. 47879                                     && (*str == '-'
  228. 47880                                         || *str == '+'))) return done;
  229. 47881
  230. 47882                         /*
  231. 47883                          * Although the length of the number is str-inp_buf+1
  232. 47884                          * we don't add the 1 since we counted it already
  233. 47885                          */
  234. 47886                         nrchars += str - inp_buf;
  235. 47887
  236. 47888                         if (!(flags & FL_NOASSIGN)) {
  237. 47889                                 if (kind == 'd' || kind == 'i')
  238. 47890                                     val = strtol(inp_buf, &tmp_string, base);
  239. 47891                                 else
  240. 47892                                     val = strtoul(inp_buf, &tmp_string, base);
  241. 47893                                 if (flags & FL_LONG)
  242. 47894                                         *va_arg(ap, unsigned long *) = (unsigned long) val;
  243. 47895                                 else if (flags & FL_SHORT)
  244. 47896                                         *va_arg(ap, unsigned short *) = (unsigned short) val;
  245. 47897                                 else
  246. 47898                                         *va_arg(ap, unsigned *) = (unsigned) val;
  247. 47899                         }
  248. 47900                         break;
  249. 47901                 case 'c':
  250. 47902                         if (!(flags & FL_WIDTHSPEC))
  251. 47903                                 width = 1;
  252. 47904                         if (!(flags & FL_NOASSIGN))
  253. 47905                                 str = va_arg(ap, char *);
  254. 47906                         if (!width) return done;
  255. 47907
  256. 47908                         while (width && ic != EOF) {
  257. 47909                                 if (!(flags & FL_NOASSIGN))
  258. 47910                                         *str++ = (char) ic;
  259. 47911                                 if (--width) {
  260. 47912                                         ic = getc(stream);
  261. 47913                                         nrchars++;
  262. 47914                                 }
  263. 47915                         }
  264. 47916
  265. 47917                         if (width) {
  266. 47918                                 if (ic != EOF) ungetc(ic,stream);
  267. 47919                                 nrchars--;
  268. 47920                         }
  269. 47921                         break;
  270. 47922                 case 's':
  271. 47923                         if (!(flags & FL_WIDTHSPEC))
  272. 47924                                 width = 0xffff;
  273. 47925                         if (!(flags & FL_NOASSIGN))
  274. 47926                                 str = va_arg(ap, char *);
  275. 47927                         if (!width) return done;
  276. 47928
  277. 47929                         while (width && ic != EOF && !isspace(ic)) {
  278. 47930                                 if (!(flags & FL_NOASSIGN))
  279. 47931                                         *str++ = (char) ic;
  280. 47932                                 if (--width) {
  281. 47933                                         ic = getc(stream);
  282. 47934                                         nrchars++;
  283. 47935                                 }
  284. 47936                         }
  285. 47937                         /* terminate the string */
  286. 47938                         if (!(flags & FL_NOASSIGN))
  287. 47939                                 *str = '';    
  288. 47940                         if (width) {
  289. 47941                                 if (ic != EOF) ungetc(ic,stream);
  290. 47942                                 nrchars--;
  291. 47943                         }
  292. 47944                         break;
  293. 47945                 case '[':
  294. 47946                         if (!(flags & FL_WIDTHSPEC))
  295. 47947                                 width = 0xffff;
  296. 47948                         if (!width) return done;
  297. 47949
  298. 47950                         if ( *++format == '^' ) {
  299. 47951                                 reverse = 1;
  300. 47952                                 format++;
  301. 47953                         } else
  302. 47954                                 reverse = 0;
  303. 47955
  304. 47956                         for (str = Xtable; str < &Xtable[NR_CHARS]
  305. 47957                                                         ; str++)
  306. 47958                                 *str = 0;
  307. 47959
  308. 47960                         if (*format == ']') Xtable[*format++] = 1;
  309. 47961
  310. 47962                         while (*format && *format != ']') {
  311. 47963                                 Xtable[*format++] = 1;
  312. 47964                                 if (*format == '-') {
  313. 47965                                         format++;
  314. 47966                                         if (*format
  315. 47967                                             && *format != ']'
  316. 47968                                             && *(format) >= *(format -2)) {
  317. 47969                                                 int c;
  318. 47970
  319. 47971                                                 for( c = *(format -2) + 1
  320. 47972                                                     ; c <= *format ; c++)
  321. 47973                                                         Xtable[c] = 1;
  322. 47974                                                 format++;
  323. 47975                                         }
  324. 47976                                         else Xtable['-'] = 1;
  325. 47977                                 }
  326. 47978                         }
  327. 47979                         if (!*format) return done;
  328. 47980                         
  329. 47981                         if (!(Xtable[ic] ^ reverse)) return done;
  330. 47982
  331. 47983                         if (!(flags & FL_NOASSIGN))
  332. 47984                                 str = va_arg(ap, char *);
  333. 47985
  334. 47986                         do {
  335. 47987                                 if (!(flags & FL_NOASSIGN))
  336. 47988                                         *str++ = (char) ic;
  337. 47989                                 if (--width) {
  338. 47990                                         ic = getc(stream);
  339. 47991                                         nrchars++;
  340. 47992                                 }
  341. 47993                         } while (width && ic != EOF && (Xtable[ic] ^ reverse));
  342. 47994
  343. 47995                         if (width) {
  344. 47996                                 if (ic != EOF) ungetc(ic, stream);
  345. 47997                                 nrchars--;
  346. 47998                         }
  347. 47999                         if (!(flags & FL_NOASSIGN)) {   /* terminate string */
  348. 48000                                 *str = '';    
  349. 48001                         }
  350. 48002                         break;
  351. 48003 #ifndef NOFLOAT
  352. 48004                 case 'e':
  353. 48005                 case 'E':
  354. 48006                 case 'f':
  355. 48007                 case 'g':
  356. 48008                 case 'G':
  357. 48009                         if (!(flags & FL_WIDTHSPEC) || width > NUMLEN)
  358. 48010                                 width = NUMLEN;
  359. 48011
  360. 48012                         if (!width) return done;
  361. 48013                         str = f_collect(ic, stream, width);
  362. 48014
  363. 48015                         if (str < inp_buf
  364. 48016                             || (str == inp_buf
  365. 48017                                 && (*str == '-'
  366. 48018                                     || *str == '+'))) return done;
  367. 48019
  368. 48020                         /*
  369. 48021                          * Although the length of the number is str-inp_buf+1
  370. 48022                          * we don't add the 1 since we counted it already
  371. 48023                          */
  372. 48024                         nrchars += str - inp_buf;
  373. 48025
  374. 48026                         if (!(flags & FL_NOASSIGN)) {
  375. 48027                                 ld_val = strtod(inp_buf, &tmp_string);
  376. 48028                                 if (flags & FL_LONGDOUBLE)
  377. 48029                                         *va_arg(ap, long double *) = (long double) ld_val;
  378. 48030                                 else
  379. 48031                                     if (flags & FL_LONG)
  380. 48032                                         *va_arg(ap, double *) = (double) ld_val;
  381. 48033                                 else
  382. 48034                                         *va_arg(ap, float *) = (float) ld_val;
  383. 48035                         }
  384. 48036                         break;
  385. 48037 #endif
  386. 48038                 }               /* end switch */
  387. 48039                 conv++;
  388. 48040                 if (!(flags & FL_NOASSIGN) && kind != 'n') done++;
  389. 48041                 format++;
  390. 48042         }
  391. 48043         return conv || (ic != EOF) ? done : EOF;
  392. 48044 }
  393. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  394. src/lib/stdio/ecvt.c    
  395. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  396. 48100 /* $Header: ecvt.c,v 1.4 90/02/27 16:47:28 eck Exp $ */
  397. 48101
  398. 48102 #ifndef NOFLOAT
  399. 48103
  400. 48104 #include        "../ansi/ext_fmt.h"
  401. 48105 void _dbl_ext_cvt(double value, struct EXTEND *e);
  402. 48106 char *_ext_str_cvt(struct EXTEND *e, int ndigit, int *decpt, int * sign, int ecvtflag);
  403. 48107
  404. 48108 static char *
  405. 48109 cvt(long double value, int ndigit, int *decpt, int *sign, int ecvtflag)
  406. 48110 {
  407. 48111         struct EXTEND e;
  408. 48112
  409. 48113         _dbl_ext_cvt(value, &e);
  410. 48114         return _ext_str_cvt(&e, ndigit, decpt, sign, ecvtflag);
  411. 48115 }
  412. 48117 char *
  413. 48118 _ecvt(long double value, int ndigit, int *decpt, int *sign)
  414. 48119 {
  415. 48120
  416. 48121         return cvt(value, ndigit, decpt, sign, 1);
  417. 48122 }
  418. 48124 char *
  419. 48125 _fcvt(long double value, int ndigit, int *decpt, int *sign)
  420. 48126 {
  421. 48127         return cvt(value, ndigit, decpt, sign, 0);
  422. 48128 }
  423. 48130 #endif  /* NOFLOAT */
  424. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  425. src/lib/stdio/fclose.c    
  426. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  427. 48200 /*
  428. 48201  * fclose.c - flush a stream and close the file
  429. 48202  */
  430. 48203 /* $Header: fclose.c,v 1.4 90/01/22 11:10:54 eck Exp $ */
  431. 48204
  432. 48205 #include        <stdio.h>
  433. 48206 #include        <stdlib.h>
  434. 48207 #include        "loc_incl.h"
  435. 48208
  436. 48209 int _close(int d);
  437. 48210
  438. 48211 int
  439. 48212 fclose(FILE *fp)
  440. 48213 {
  441. 48214         register int i, retval = 0;
  442. 48215
  443. 48216         for (i=0; i<FOPEN_MAX; i++)
  444. 48217                 if (fp == __iotab[i]) {
  445. 48218                         __iotab[i] = 0;
  446. 48219                         break;
  447. 48220                 }
  448. 48221         if (i >= FOPEN_MAX)
  449. 48222                 return EOF;
  450. 48223         if (fflush(fp)) retval = EOF;
  451. 48224         if (_close(fileno(fp))) retval = EOF;
  452. 48225         if ( io_testflag(fp,_IOMYBUF) && fp->_buf )
  453. 48226                 free((void *)fp->_buf);
  454. 48227         if (fp != stdin && fp != stdout && fp != stderr)
  455. 48228                 free((void *)fp);
  456. 48229         return retval;
  457. 48230 }
  458. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  459. src/lib/stdio/feof.c    
  460. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  461. 48300 /*
  462. 48301  * feof.c - test if eof on a stream occurred
  463. 48302  */
  464. 48303 /* $Header: feof.c,v 1.2 89/12/18 15:00:39 eck Exp $ */
  465. 48304
  466. 48305 #include        <stdio.h>
  467. 48306
  468. 48307 int
  469. 48308 (feof)(FILE *stream)
  470. 48309 {
  471. 48310         return feof(stream);
  472. 48311 }
  473. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  474. src/lib/stdio/ferror.c    
  475. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  476. 48400 /*
  477. 48401  * ferror .c - test if an error on a stream occurred
  478. 48402  */
  479. 48403 /* $Header: ferror.c,v 1.2 89/12/18 15:00:47 eck Exp $ */
  480. 48404
  481. 48405 #include        <stdio.h>
  482. 48406
  483. 48407 int
  484. 48408 (ferror)(FILE *stream)
  485. 48409 {
  486. 48410         return ferror(stream);
  487. 48411 }
  488. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  489. src/lib/stdio/fflush.c    
  490. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  491. 48500 /*
  492. 48501  * fflush.c - flush stream(s)
  493. 48502  */
  494. 48503 /* $Header: fflush.c,v 1.6 90/04/04 15:52:01 eck Exp $ */
  495. 48504
  496. 48505 #include        <sys/types.h>
  497. 48506 #include        <stdio.h>
  498. 48507 #include        "loc_incl.h"
  499. 48508
  500. 48509 ssize_t _write(int d, const char *buf, size_t nbytes);
  501. 48510 off_t _lseek(int fildes, off_t offset, int whence);
  502. 48511
  503. 48512 int
  504. 48513 fflush(FILE *stream)
  505. 48514 {
  506. 48515         int count, c1, i, retval = 0;
  507. 48516
  508. 48517         if (!stream) {
  509. 48518             for(i= 0; i < FOPEN_MAX; i++)
  510. 48519                 if (__iotab[i] && fflush(__iotab[i]))
  511. 48520                         retval = EOF;
  512. 48521             return retval;
  513. 48522         }
  514. 48523
  515. 48524         if (!stream->_buf
  516. 48525             || (!io_testflag(stream, _IOREADING)
  517. 48526                 && !io_testflag(stream, _IOWRITING)))
  518. 48527                 return 0;
  519. 48528         if (io_testflag(stream, _IOREADING)) {
  520. 48529                 /* (void) fseek(stream, 0L, SEEK_CUR); */
  521. 48530                 int adjust = 0;
  522. 48531                 if (stream->_buf && !io_testflag(stream,_IONBF))
  523. 48532                         adjust = stream->_count;
  524. 48533                 stream->_count = 0;
  525. 48534                 _lseek(fileno(stream), (off_t) adjust, SEEK_CUR);
  526. 48535                 if (io_testflag(stream, _IOWRITE))
  527. 48536                         stream->_flags &= ~(_IOREADING | _IOWRITING);
  528. 48537                 stream->_ptr = stream->_buf;
  529. 48538                 return 0;
  530. 48539         } else if (io_testflag(stream, _IONBF)) return 0;
  531. 48540
  532. 48541         if (io_testflag(stream, _IOREAD))               /* "a" or "+" mode */
  533. 48542                 stream->_flags &= ~_IOWRITING;
  534. 48543
  535. 48544         count = stream->_ptr - stream->_buf;
  536. 48545         stream->_ptr = stream->_buf;
  537. 48546
  538. 48547         if ( count <= 0 )
  539. 48548                 return 0;
  540. 48549
  541. 48550         if (io_testflag(stream, _IOAPPEND)) {
  542. 48551                 if (_lseek(fileno(stream), 0L, SEEK_END) == -1) {
  543. 48552                         stream->_flags |= _IOERR;
  544. 48553                         return EOF;
  545. 48554                 }
  546. 48555         }
  547. 48556         c1 = _write(stream->_fd, (char *)stream->_buf, count);
  548. 48557
  549. 48558         stream->_count = 0;
  550. 48559
  551. 48560         if ( count == c1 )
  552. 48561                 return 0;
  553. 48562
  554. 48563         stream->_flags |= _IOERR;
  555. 48564         return EOF; 
  556. 48565 }
  557. 48567 void
  558. 48568 __cleanup(void)
  559. 48569 {
  560. 48570         register int i;
  561. 48571
  562. 48572         for(i= 0; i < FOPEN_MAX; i++)
  563. 48573                 if (__iotab[i] && io_testflag(__iotab[i], _IOWRITING))
  564. 48574                         (void) fflush(__iotab[i]);
  565. 48575 }
  566. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  567. src/lib/stdio/fgetc.c    
  568. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  569. 48600 /*
  570. 48601  * fgetc - get an unsigned character and return it as an int
  571. 48602  */
  572. 48603 /* $Header: fgetc.c,v 1.1 89/05/30 13:27:35 eck Exp $ */
  573. 48604
  574. 48605 #include        <stdio.h>
  575. 48606
  576. 48607 int
  577. 48608 fgetc(FILE *stream)
  578. 48609 {
  579. 48610         return getc(stream);
  580. 48611 }
  581. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  582. src/lib/stdio/fgetpos.c    
  583. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  584. 48700 /*
  585. 48701  * fgetpos.c - get the position in the file
  586. 48702  */
  587. 48703 /* $Header: fgetpos.c,v 1.2 89/12/18 15:01:03 eck Exp $ */
  588. 48704
  589. 48705 #include        <stdio.h>
  590. 48706
  591. 48707 int
  592. 48708 fgetpos(FILE *stream, fpos_t *pos)
  593. 48709 {
  594. 48710         *pos = ftell(stream);
  595. 48711         if (*pos == -1) return -1;
  596. 48712         return 0;
  597. 48713 }
  598. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  599. src/lib/stdio/fgets.c    
  600. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  601. 48800 /*
  602. 48801  * fgets.c - get a string from a file
  603. 48802  */
  604. 48803 /* $Header: fgets.c,v 1.3 89/12/18 15:01:11 eck Exp $ */
  605. 48804
  606. 48805 #include        <stdio.h>
  607. 48806
  608. 48807 char *
  609. 48808 fgets(char *s, register int n, register FILE *stream)
  610. 48809 {
  611. 48810         register int ch;
  612. 48811         register char *ptr;
  613. 48812
  614. 48813         ptr = s;
  615. 48814         while (--n > 0 && (ch = getc(stream)) != EOF) {
  616. 48815                 *ptr++ = ch;
  617. 48816                 if ( ch == 'n')
  618. 48817                         break;
  619. 48818         }
  620. 48819         if (ch == EOF) {
  621. 48820                 if (feof(stream)) {
  622. 48821                         if (ptr == s) return NULL;
  623. 48822                 } else return NULL;
  624. 48823         }
  625. 48824         *ptr = '';
  626. 48825         return s;
  627. 48826 }
  628. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  629. src/lib/stdio/fileno.c    
  630. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  631. 48900 /*
  632. 48901  * fileno .c - map a stream to a file descriptor
  633. 48902  */
  634. 48903 /* $Header: fileno.c,v 1.1 89/12/18 14:59:31 eck Exp $ */
  635. 48904
  636. 48905 #include        <stdio.h>
  637. 48906
  638. 48907 int
  639. 48908 (fileno)(FILE *stream)
  640. 48909 {
  641. 48910         return stream->_fd;
  642. 48911 }
  643. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  644. src/lib/stdio/fillbuf.c    
  645. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  646. 49000 /*
  647. 49001  * fillbuf.c - fill a buffer
  648. 49002  */
  649. 49003 /* $Header: fillbuf.c,v 1.5 90/06/21 11:13:23 eck Exp $ */
  650. 49004
  651. 49005 #if     defined(_POSIX_SOURCE)
  652. 49006 #include        <sys/types.h>
  653. 49007 #endif
  654. 49008 #include        <stdio.h>
  655. 49009 #include        <stdlib.h>
  656. 49010 #include        "loc_incl.h"
  657. 49011
  658. 49012 ssize_t _read(ssize_t d, char *buf, size_t nbytes);
  659. 49013
  660. 49014 int
  661. 49015 __fillbuf(register FILE *stream)
  662. 49016 {
  663. 49017         static unsigned char ch[FOPEN_MAX];
  664. 49018         register int i;
  665. 49019
  666. 49020         stream->_count = 0;
  667. 49021         if (fileno(stream) < 0) return EOF;
  668. 49022         if (io_testflag(stream, (_IOEOF | _IOERR ))) return EOF; 
  669. 49023         if (!io_testflag(stream, _IOREAD))
  670. 49024              { stream->_flags |= _IOERR; return EOF; }
  671. 49025         if (io_testflag(stream, _IOWRITING))
  672. 49026              { stream->_flags |= _IOERR; return EOF; }
  673. 49027
  674. 49028         if (!io_testflag(stream, _IOREADING))
  675. 49029                 stream->_flags |= _IOREADING;
  676. 49030         
  677. 49031         if (!io_testflag(stream, _IONBF) && !stream->_buf) {
  678. 49032                 stream->_buf = (unsigned char *) malloc(BUFSIZ);
  679. 49033                 if (!stream->_buf) {
  680. 49034                         stream->_flags |= _IONBF;
  681. 49035                 }
  682. 49036                 else {
  683. 49037                         stream->_flags |= _IOMYBUF;
  684. 49038                         stream->_bufsiz = BUFSIZ;
  685. 49039                 }
  686. 49040         }
  687. 49041
  688. 49042         /* flush line-buffered output when filling an input buffer */
  689. 49043         for (i = 0; i < FOPEN_MAX; i++) {
  690. 49044                 if (__iotab[i] && io_testflag(__iotab[i], _IOLBF))
  691. 49045                         if (io_testflag(__iotab[i], _IOWRITING))
  692. 49046                                 (void) fflush(__iotab[i]);
  693. 49047         }
  694. 49048
  695. 49049         if (!stream->_buf) {
  696. 49050                 stream->_buf = &ch[fileno(stream)];
  697. 49051                 stream->_bufsiz = 1;
  698. 49052         }
  699. 49053         stream->_ptr = stream->_buf;
  700. 49054         stream->_count = _read(stream->_fd, (char *)stream->_buf, stream->_bufsiz);
  701. 49055
  702. 49056         if (stream->_count <= 0){
  703. 49057                 if (stream->_count == 0) {
  704. 49058                         stream->_flags |= _IOEOF;
  705. 49059                 }
  706. 49060                 else 
  707. 49061                         stream->_flags |= _IOERR;
  708. 49062
  709. 49063                 return EOF;
  710. 49064         }
  711. 49065         stream->_count--;
  712. 49066
  713. 49067         return *stream->_ptr++;
  714. 49068 }
  715. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  716. src/lib/stdio/flushbuf.c    
  717. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  718. 49100 /*
  719. 49101  * flushbuf.c - flush a buffer
  720. 49102  */
  721. 49103 /* $Header: flushbuf.c,v 1.6 91/06/10 17:07:10 ceriel Exp $ */
  722. 49104
  723. 49105 #include        <stdio.h>
  724. 49106 #include        <stdlib.h>
  725. 49107 #include        "loc_incl.h"
  726. 49108
  727. 49109 #include        <sys/types.h>
  728. 49110
  729. 49111 off_t _lseek(int fildes, off_t offset, int whence);
  730. 49112 ssize_t _write(int d, const char *buf, size_t nbytes);
  731. 49113 int _isatty(int d);
  732. 49114 extern void (*_clean)(void);
  733. 49115
  734. 49116 static int
  735. 49117 do_write(int d, char *buf, int nbytes)
  736. 49118 {
  737. 49119         int c;
  738. 49120
  739. 49121         /* POSIX actually allows write() to return a positive value less
  740. 49122            than nbytes, so loop ...
  741. 49123         */
  742. 49124         while ((c = _write(d, buf, nbytes)) > 0 && c < nbytes) {
  743. 49125                 nbytes -= c;
  744. 49126                 buf += c;
  745. 49127         }
  746. 49128         return c > 0;
  747. 49129 }
  748. 49131 int
  749. 49132 __flushbuf(int c, FILE * stream)
  750. 49133 {
  751. 49134         _clean = __cleanup;
  752. 49135         if (fileno(stream) < 0) return EOF;
  753. 49136         if (!io_testflag(stream, _IOWRITE)) return EOF;
  754. 49137         if (io_testflag(stream, _IOREADING) && !feof(stream)) return EOF;
  755. 49138
  756. 49139         stream->_flags &= ~_IOREADING;
  757. 49140         stream->_flags |= _IOWRITING;
  758. 49141         if (!io_testflag(stream, _IONBF)) {
  759. 49142                 if (!stream->_buf) {
  760. 49143                         if (stream == stdout && _isatty(fileno(stdout))) {
  761. 49144                                 if (!(stream->_buf =
  762. 49145                                             (unsigned char *) malloc(BUFSIZ))) {
  763. 49146                                         stream->_flags |= _IONBF;
  764. 49147                                 } else {
  765. 49148                                         stream->_flags |= _IOLBF|_IOMYBUF;
  766. 49149                                         stream->_bufsiz = BUFSIZ;
  767. 49150                                         stream->_count = -1;
  768. 49151                                 }
  769. 49152                         } else {
  770. 49153                                 if (!(stream->_buf =
  771. 49154                                             (unsigned char *) malloc(BUFSIZ))) {
  772. 49155                                         stream->_flags |= _IONBF;
  773. 49156                                 } else {
  774. 49157                                         stream->_flags |= _IOMYBUF;
  775. 49158                                         stream->_bufsiz = BUFSIZ;
  776. 49159                                         if (!io_testflag(stream, _IOLBF))
  777. 49160                                                 stream->_count = BUFSIZ - 1;
  778. 49161                                         else    stream->_count = -1;
  779. 49162                                 }
  780. 49163                         }
  781. 49164                         stream->_ptr = stream->_buf;
  782. 49165                 }
  783. 49166         }
  784. 49167
  785. 49168         if (io_testflag(stream, _IONBF)) {
  786. 49169                 char c1 = c;
  787. 49170
  788. 49171                 stream->_count = 0;
  789. 49172                 if (io_testflag(stream, _IOAPPEND)) {
  790. 49173                         if (_lseek(fileno(stream), 0L, SEEK_END) == -1) {
  791. 49174                                 stream->_flags |= _IOERR;
  792. 49175                                 return EOF;
  793. 49176                         }
  794. 49177                 }
  795. 49178                 if (_write(fileno(stream), &c1, 1) != 1) {
  796. 49179                         stream->_flags |= _IOERR;
  797. 49180                         return EOF;
  798. 49181                 }
  799. 49182                 return c;
  800. 49183         } else if (io_testflag(stream, _IOLBF)) {
  801. 49184                 *stream->_ptr++ = c;
  802. 49185                 if (c == 'n' || stream->_count == -stream->_bufsiz) {
  803. 49186                         if (io_testflag(stream, _IOAPPEND)) {
  804. 49187                                 if (_lseek(fileno(stream), 0L, SEEK_END) == -1) {
  805. 49188                                         stream->_flags |= _IOERR;
  806. 49189                                         return EOF;
  807. 49190                                 }
  808. 49191                         }
  809. 49192                         if (! do_write(fileno(stream), (char *)stream->_buf,
  810. 49193                                         -stream->_count)) {
  811. 49194                                 stream->_flags |= _IOERR;
  812. 49195                                 return EOF;
  813. 49196                         } else {
  814. 49197                                 stream->_ptr  = stream->_buf;
  815. 49198                                 stream->_count = 0;
  816. 49199                         }
  817. 49200                 }
  818. 49201         } else {
  819. 49202                 int count = stream->_ptr - stream->_buf;
  820. 49203
  821. 49204                 stream->_count = stream->_bufsiz - 1;
  822. 49205                 stream->_ptr = stream->_buf + 1;
  823. 49206
  824. 49207                 if (count > 0) {
  825. 49208                         if (io_testflag(stream, _IOAPPEND)) {
  826. 49209                                 if (_lseek(fileno(stream), 0L, SEEK_END) == -1) {
  827. 49210                                         stream->_flags |= _IOERR;
  828. 49211                                         return EOF;
  829. 49212                                 }
  830. 49213                         }
  831. 49214                         if (! do_write(fileno(stream), (char *)stream->_buf, count)) {
  832. 49215                                 *(stream->_buf) = c;
  833. 49216                                 stream->_flags |= _IOERR;
  834. 49217                                 return EOF;
  835. 49218                         }
  836. 49219                 }
  837. 49220                 *(stream->_buf) = c;
  838. 49221         }
  839. 49222         return c;
  840. 49223 }
  841. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  842. src/lib/stdio/fopen.c    
  843. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  844. 49300 /*
  845. 49301  * fopen.c - open a stream
  846. 49302  */
  847. 49303 /* $Header: fopen.c,v 1.8 91/02/22 16:29:46 ceriel Exp $ */
  848. 49304
  849. 49305 #if     defined(_POSIX_SOURCE)
  850. 49306 #include        <sys/types.h>
  851. 49307 #endif
  852. 49308 #include        <stdio.h>
  853. 49309 #include        <stdlib.h>
  854. 49310 #include        "loc_incl.h"
  855. 49311
  856. 49312 #define PMODE           0666
  857. 49313
  858. 49314 /* The next 3 defines are true in all UNIX systems known to me.
  859. 49315  */
  860. 49316 #define O_RDONLY        0
  861. 49317 #define O_WRONLY        1
  862. 49318 #define O_RDWR          2
  863. 49319
  864. 49320 /* Since the O_CREAT flag is not available on all systems, we can't get it
  865. 49321  * from the standard library. Furthermore, even if we know that <fcntl.h>
  866. 49322  * contains such a flag, it's not sure whether it can be used, since we
  867. 49323  * might be cross-compiling for another system, which may use an entirely
  868. 49324  * different value for O_CREAT (or not support such a mode). The safest
  869. 49325  * thing is to just use the Version 7 semantics for open, and use creat()
  870. 49326  * whenever necessary.
  871. 49327  *
  872. 49328  * Another problem is O_APPEND, for which the same holds. When "a"
  873. 49329  * open-mode is used, an lseek() to the end is done before every write()
  874. 49330  * system-call.
  875. 49331  *
  876. 49332  * The O_CREAT, O_TRUNC and O_APPEND given here, are only for convenience.
  877. 49333  * They are not passed to open(), so the values don't have to match a value
  878. 49334  * from the real world. It is enough when they are unique.
  879. 49335  */
  880. 49336 #define O_CREAT         0x010
  881. 49337 #define O_TRUNC         0x020
  882. 49338 #define O_APPEND        0x040
  883. 49339
  884. 49340 int _open(const char *path, int flags);
  885. 49341 int _creat(const char *path, Mode_t mode);
  886. 49342 int _close(int d);
  887. 49343
  888. 49344 FILE *
  889. 49345 fopen(const char *name, const char *mode)
  890. 49346 {
  891. 49347         register int i;
  892. 49348         int rwmode = 0, rwflags = 0;
  893. 49349         FILE *stream;
  894. 49350         int fd, flags = 0;
  895. 49351
  896. 49352         for (i = 0; __iotab[i] != 0 ; i++) 
  897. 49353                 if ( i >= FOPEN_MAX-1 )
  898. 49354                         return (FILE *)NULL;
  899. 49355
  900. 49356         switch(*mode++) {
  901. 49357         case 'r':
  902. 49358                 flags |= _IOREAD | _IOREADING;  
  903. 49359                 rwmode = O_RDONLY;
  904. 49360                 break;
  905. 49361         case 'w':
  906. 49362                 flags |= _IOWRITE | _IOWRITING;
  907. 49363                 rwmode = O_WRONLY;
  908. 49364                 rwflags = O_CREAT | O_TRUNC;
  909. 49365                 break;
  910. 49366         case 'a': 
  911. 49367                 flags |= _IOWRITE | _IOWRITING | _IOAPPEND;
  912. 49368                 rwmode = O_WRONLY;
  913. 49369                 rwflags |= O_APPEND | O_CREAT;
  914. 49370                 break;         
  915. 49371         default:
  916. 49372                 return (FILE *)NULL;
  917. 49373         }
  918. 49374
  919. 49375         while (*mode) {
  920. 49376                 switch(*mode++) {
  921. 49377                 case 'b':
  922. 49378                         continue;
  923. 49379                 case '+':
  924. 49380                         rwmode = O_RDWR;
  925. 49381                         flags |= _IOREAD | _IOWRITE;
  926. 49382                         continue;
  927. 49383                 /* The sequence may be followed by additional characters */
  928. 49384                 default:
  929. 49385                         break;
  930. 49386                 }
  931. 49387                 break;
  932. 49388         }
  933. 49389
  934. 49390         /* Perform a creat() when the file should be truncated or when
  935. 49391          * the file is opened for writing and the open() failed.
  936. 49392          */
  937. 49393         if ((rwflags & O_TRUNC)
  938. 49394             || (((fd = _open(name, rwmode)) < 0)
  939. 49395                     && (rwflags & O_CREAT))) {
  940. 49396                 if (((fd = _creat(name, PMODE)) > 0) && flags  | _IOREAD) {
  941. 49397                         (void) _close(fd);
  942. 49398                         fd = _open(name, rwmode);
  943. 49399                 }
  944. 49400                         
  945. 49401         }
  946. 49402
  947. 49403         if (fd < 0) return (FILE *)NULL;
  948. 49404
  949. 49405         if (( stream = (FILE *) malloc(sizeof(FILE))) == NULL ) {
  950. 49406                 _close(fd);
  951. 49407                 return (FILE *)NULL;
  952. 49408         }
  953. 49409
  954. 49410         if ((flags & (_IOREAD | _IOWRITE))  == (_IOREAD | _IOWRITE))
  955. 49411                 flags &= ~(_IOREADING | _IOWRITING);
  956. 49412
  957. 49413         stream->_count = 0;
  958. 49414         stream->_fd = fd;
  959. 49415         stream->_flags = flags;
  960. 49416         stream->_buf = NULL;
  961. 49417         __iotab[i] = stream;
  962. 49418         return stream;
  963. 49419 }
  964. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  965. src/lib/stdio/fprintf.c    
  966. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  967. 49500 /*
  968. 49501  * fprintf - write output on a stream
  969. 49502  */
  970. 49503 /* $Header: fprintf.c,v 1.3 89/12/18 15:01:54 eck Exp $ */
  971. 49504
  972. 49505 #include        <stdio.h>
  973. 49506 #include        <stdarg.h>
  974. 49507 #include        "loc_incl.h"
  975. 49508
  976. 49509 int
  977. 49510 fprintf(FILE *stream, const char *format, ...)
  978. 49511 {
  979. 49512         va_list ap;
  980. 49513         int retval;
  981. 49514         
  982. 49515         va_start(ap, format);
  983. 49516
  984. 49517         retval = _doprnt (format, ap, stream);
  985. 49518
  986. 49519         va_end(ap);
  987. 49520
  988. 49521         return retval;
  989. 49522 }
  990. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  991. src/lib/stdio/fputc.c    
  992. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  993. 49600 /*
  994. 49601  * fputc.c - print an unsigned character
  995. 49602  */
  996. 49603 /* $Header: fputc.c,v 1.1 89/05/30 13:28:45 eck Exp $ */
  997. 49604
  998. 49605 #include        <stdio.h>
  999. 49606
  1000. 49607 int
  1001. 49608 fputc(int c, FILE *stream)
  1002. 49609 {
  1003. 49610         return putc(c, stream);
  1004. 49611 }
  1005. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1006. src/lib/stdio/fputs.c    
  1007. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1008. 49700 /*
  1009. 49701  * fputs - print a string
  1010. 49702  */
  1011. 49703 /* $Header: fputs.c,v 1.2 89/12/18 15:02:01 eck Exp $ */
  1012. 49704
  1013. 49705 #include        <stdio.h>
  1014. 49706
  1015. 49707 int
  1016. 49708 fputs(register const char *s, register FILE *stream)
  1017. 49709 {
  1018. 49710         register int i = 0;
  1019. 49711
  1020. 49712         while (*s) 
  1021. 49713                 if (putc(*s++, stream) == EOF) return EOF;
  1022. 49714                 else i++;
  1023. 49715
  1024. 49716         return i;
  1025. 49717 }
  1026. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1027. src/lib/stdio/fread.c    
  1028. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1029. 49800 /*
  1030. 49801  * fread.c - read a number of members into an array
  1031. 49802  */
  1032. 49803 /* $Header: fread.c,v 1.2 89/12/18 15:02:09 eck Exp $ */
  1033. 49804
  1034. 49805 #include        <stdio.h>
  1035. 49806
  1036. 49807 size_t
  1037. 49808 fread(void *ptr, size_t size, size_t nmemb, register FILE *stream)
  1038. 49809 {
  1039. 49810         register char *cp = ptr;
  1040. 49811         register int c;
  1041. 49812         size_t ndone = 0;
  1042. 49813         register size_t s;
  1043. 49814
  1044. 49815         if (size)
  1045. 49816                 while ( ndone < nmemb ) {
  1046. 49817                         s = size;
  1047. 49818                         do {
  1048. 49819                                 if ((c = getc(stream)) != EOF)
  1049. 49820                                         *cp++ = c;
  1050. 49821                                 else
  1051. 49822                                         return ndone;
  1052. 49823                         } while (--s);
  1053. 49824                         ndone++;
  1054. 49825                 }
  1055. 49826
  1056. 49827         return ndone;
  1057. 49828 }
  1058. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1059. src/lib/stdio/freopen.c    
  1060. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1061. 49900 /*
  1062. 49901  * freopen.c - open a file and associate a stream with it
  1063. 49902  */
  1064. 49903 /* $Header: freopen.c,v 1.8 90/08/28 13:44:48 eck Exp $ */
  1065. 49904
  1066. 49905 #if     defined(_POSIX_SOURCE)
  1067. 49906 #include        <sys/types.h>
  1068. 49907 #endif
  1069. 49908 #include        <stdio.h>
  1070. 49909 #include        <stdlib.h>
  1071. 49910 #include        "loc_incl.h"
  1072. 49911
  1073. 49912 #define PMODE           0666
  1074. 49913
  1075. 49914 /* Do not "optimize" this file to use the open with O_CREAT if the file
  1076. 49915  * does not exist. The reason is given in fopen.c.
  1077. 49916  */
  1078. 49917 #define O_RDONLY        0
  1079. 49918 #define O_WRONLY        1
  1080. 49919 #define O_RDWR          2
  1081. 49920
  1082. 49921 #define O_CREAT         0x010
  1083. 49922 #define O_TRUNC         0x020
  1084. 49923 #define O_APPEND        0x040
  1085. 49924
  1086. 49925 int _open(const char *path, int flags);
  1087. 49926 int _creat(const char *path, Mode_t mode);
  1088. 49927 int _close(int d);
  1089. 49928
  1090. 49929 FILE *
  1091. 49930 freopen(const char *name, const char *mode, FILE *stream)
  1092. 49931 {
  1093. 49932         register int i;
  1094. 49933         int rwmode = 0, rwflags = 0;
  1095. 49934         int fd, flags = stream->_flags & (_IONBF | _IOFBF | _IOLBF | _IOMYBUF);
  1096. 49935
  1097. 49936         (void) fflush(stream);                          /* ignore errors */
  1098. 49937         (void) _close(fileno(stream));
  1099. 49938
  1100. 49939         switch(*mode++) {
  1101. 49940         case 'r':
  1102. 49941                 flags |= _IOREAD;       
  1103. 49942                 rwmode = O_RDONLY;
  1104. 49943                 break;
  1105. 49944         case 'w':
  1106. 49945                 flags |= _IOWRITE;
  1107. 49946                 rwmode = O_WRONLY;
  1108. 49947                 rwflags = O_CREAT | O_TRUNC;
  1109. 49948                 break;
  1110. 49949         case 'a': 
  1111. 49950                 flags |= _IOWRITE | _IOAPPEND;
  1112. 49951                 rwmode = O_WRONLY;
  1113. 49952                 rwflags |= O_APPEND | O_CREAT;
  1114. 49953                 break;         
  1115. 49954         default:
  1116. 49955                 return (FILE *)NULL;
  1117. 49956         }
  1118. 49957
  1119. 49958         while (*mode) {
  1120. 49959                 switch(*mode++) {
  1121. 49960                 case 'b':
  1122. 49961                         continue;
  1123. 49962                 case '+':
  1124. 49963                         rwmode = O_RDWR;
  1125. 49964                         flags |= _IOREAD | _IOWRITE;
  1126. 49965                         continue;
  1127. 49966                 /* The sequence may be followed by aditional characters */
  1128. 49967                 default:
  1129. 49968                         break;
  1130. 49969                 }
  1131. 49970                 break;
  1132. 49971         }
  1133. 49972
  1134. 49973         if ((rwflags & O_TRUNC)
  1135. 49974             || (((fd = _open(name, rwmode)) < 0)
  1136. 49975                     && (rwflags & O_CREAT))) {
  1137. 49976                 if (((fd = _creat(name, PMODE)) < 0) && flags | _IOREAD) {
  1138. 49977                         (void) _close(fd);
  1139. 49978                         fd = _open(name, rwmode);
  1140. 49979                 }
  1141. 49980         }
  1142. 49981
  1143. 49982         if (fd < 0) {
  1144. 49983                 for( i = 0; i < FOPEN_MAX; i++) {
  1145. 49984                         if (stream == __iotab[i]) {
  1146. 49985                                 __iotab[i] = 0;
  1147. 49986                                 break;
  1148. 49987                         }
  1149. 49988                 }
  1150. 49989                 if (stream != stdin && stream != stdout && stream != stderr)
  1151. 49990                         free((void *)stream);
  1152. 49991                 return (FILE *)NULL;
  1153. 49992         }
  1154. 49993
  1155. 49994         stream->_count = 0;
  1156. 49995         stream->_fd = fd;
  1157. 49996         stream->_flags = flags;
  1158. 49997         return stream;
  1159. 49998 }
  1160. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1161. src/lib/stdio/fscanf.c    
  1162. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1163. 50000 /*
  1164. 50001  * fscanf.c - read formatted input from stream
  1165. 50002  */
  1166. 50003 /* $Header: fscanf.c,v 1.1 89/05/30 13:29:17 eck Exp $ */
  1167. 50004
  1168. 50005 #include        <stdio.h>
  1169. 50006 #include        <stdarg.h>
  1170. 50007 #include        "loc_incl.h"
  1171. 50008
  1172. 50009 int
  1173. 50010 fscanf(FILE *stream, const char *format, ...)
  1174. 50011 {
  1175. 50012         va_list ap;
  1176. 50013         int retval;
  1177. 50014
  1178. 50015         va_start(ap, format);
  1179. 50016
  1180. 50017         retval = _doscan(stream, format, ap);
  1181. 50018
  1182. 50019         va_end(ap);
  1183. 50020
  1184. 50021         return retval;
  1185. 50022 }
  1186. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1187. src/lib/stdio/fseek.c    
  1188. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1189. 50100 /*
  1190. 50101  * fseek.c - perform an fseek
  1191. 50102  */
  1192. 50103 /* $Header: fseek.c,v 1.4 90/01/22 11:12:00 eck Exp $ */
  1193. 50104
  1194. 50105 #include        <stdio.h>
  1195. 50106
  1196. 50107 #if     (SEEK_CUR != 1) || (SEEK_END != 2) || (SEEK_SET != 0)
  1197. 50108 #error SEEK_* values are wrong
  1198. 50109 #endif
  1199. 50110
  1200. 50111 #include        "loc_incl.h"
  1201. 50112
  1202. 50113 #include        <sys/types.h>
  1203. 50114
  1204. 50115 off_t _lseek(int fildes, off_t offset, int whence);
  1205. 50116
  1206. 50117 int
  1207. 50118 fseek(FILE *stream, long int offset, int whence)
  1208. 50119 {
  1209. 50120         int adjust = 0;
  1210. 50121         long pos;
  1211. 50122
  1212. 50123         stream->_flags &= ~(_IOEOF | _IOERR);
  1213. 50124         /* Clear both the end of file and error flags */
  1214. 50125
  1215. 50126         if (io_testflag(stream, _IOREADING)) {
  1216. 50127                 if (whence == SEEK_CUR
  1217. 50128                     && stream->_buf
  1218. 50129                     && !io_testflag(stream,_IONBF))
  1219. 50130                         adjust = stream->_count;
  1220. 50131                 stream->_count = 0;
  1221. 50132         } else if (io_testflag(stream,_IOWRITING)) {
  1222. 50133                 fflush(stream);
  1223. 50134         } else  /* neither reading nor writing. The buffer must be empty */
  1224. 50135                 /* EMPTY */ ;
  1225. 50136
  1226. 50137         pos = _lseek(fileno(stream), offset - adjust, whence);
  1227. 50138         if (io_testflag(stream, _IOREAD) && io_testflag(stream, _IOWRITE))
  1228. 50139                 stream->_flags &= ~(_IOREADING | _IOWRITING);
  1229. 50140
  1230. 50141         stream->_ptr = stream->_buf;
  1231. 50142         return ((pos == -1) ? -1 : 0);
  1232. 50143 }
  1233. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1234. src/lib/stdio/fsetpos.c    
  1235. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1236. 50200 /*
  1237. 50201  * fsetpos.c - set the position in the file
  1238. 50202  */
  1239. 50203 /* $Header: fsetpos.c,v 1.1 89/05/30 13:29:34 eck Exp $ */
  1240. 50204
  1241. 50205 #include        <stdio.h>
  1242. 50206
  1243. 50207 int
  1244. 50208 fsetpos(FILE *stream, fpos_t *pos)
  1245. 50209 {
  1246. 50210         return fseek(stream, *pos, SEEK_SET);
  1247. 50211 }
  1248. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1249. src/lib/stdio/ftell.c    
  1250. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1251. 50300 /*
  1252. 50301  * ftell.c - obtain the value of the file-position indicator of a stream
  1253. 50302  */
  1254. 50303 /* $Header: ftell.c,v 1.4 90/01/22 11:12:12 eck Exp $ */
  1255. 50304
  1256. 50305 #include        <stdio.h>
  1257. 50306
  1258. 50307 #if     (SEEK_CUR != 1) || (SEEK_SET != 0) || (SEEK_END != 2)
  1259. 50308 #error SEEK_* values are wrong
  1260. 50309 #endif
  1261. 50310
  1262. 50311 #include        "loc_incl.h"
  1263. 50312
  1264. 50313 #include        <sys/types.h>
  1265. 50314
  1266. 50315 off_t _lseek(int fildes, off_t offset, int whence);
  1267. 50316
  1268. 50317 long ftell(FILE *stream)
  1269. 50318 {
  1270. 50319         long result;
  1271. 50320         int adjust = 0;
  1272. 50321
  1273. 50322         if (io_testflag(stream,_IOREADING))
  1274. 50323                 adjust = -stream->_count;
  1275. 50324         else if (io_testflag(stream,_IOWRITING)
  1276. 50325                     && stream->_buf
  1277. 50326                     && !io_testflag(stream,_IONBF))
  1278. 50327                 adjust = stream->_ptr - stream->_buf;
  1279. 50328         else adjust = 0;
  1280. 50329
  1281. 50330         result = _lseek(fileno(stream), (off_t)0, SEEK_CUR);
  1282. 50331
  1283. 50332         if ( result == -1 )
  1284. 50333                 return result;
  1285. 50334
  1286. 50335         result += (long) adjust;
  1287. 50336         return result;
  1288. 50337 }
  1289. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1290. src/lib/stdio/fwrite.c    
  1291. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1292. 50400 /*
  1293. 50401  * fwrite.c - write a number of array elements on a file
  1294. 50402  */
  1295. 50403 /* $Header: fwrite.c,v 1.3 89/12/18 15:02:39 eck Exp $ */
  1296. 50404
  1297. 50405 #include        <stdio.h>
  1298. 50406
  1299. 50407 size_t
  1300. 50408 fwrite(const void *ptr, size_t size, size_t nmemb,
  1301. 50409             register FILE *stream)
  1302. 50410 {
  1303. 50411         register const unsigned char *cp = ptr;
  1304. 50412         register size_t s;
  1305. 50413         size_t ndone = 0;
  1306. 50414
  1307. 50415         if (size)
  1308. 50416                 while ( ndone < nmemb ) {
  1309. 50417                         s = size;
  1310. 50418                         do {
  1311. 50419                                 if (putc((int)*cp, stream)
  1312. 50420                                         == EOF)
  1313. 50421                                         return ndone;
  1314. 50422                                 cp++;
  1315. 50423                         } 
  1316. 50424                         while (--s);
  1317. 50425                         ndone++;
  1318. 50426                 }
  1319. 50427         return ndone;
  1320. 50428 }
  1321. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1322. src/lib/stdio/getc.c    
  1323. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1324. 50500 /*
  1325. 50501  * getc.c - read an unsigned character
  1326. 50502  */
  1327. 50503 /* $Header: getc.c,v 1.2 89/12/18 15:02:45 eck Exp $ */
  1328. 50504
  1329. 50505 #include        <stdio.h>
  1330. 50506
  1331. 50507 int
  1332. 50508 (getc)(FILE *stream)
  1333. 50509 {
  1334. 50510         return getc(stream);
  1335. 50511 }
  1336. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1337. src/lib/stdio/getchar.c    
  1338. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1339. 50600 /*
  1340. 50601  * getchar.c - read a character from the standard input stream
  1341. 50602  */
  1342. 50603 /* $Header: getchar.c,v 1.2 89/12/18 15:02:53 eck Exp $ */
  1343. 50604
  1344. 50605 #include        <stdio.h>
  1345. 50606
  1346. 50607 int
  1347. 50608 (getchar)(void)
  1348. 50609 {
  1349. 50610         return getchar();
  1350. 50611 }
  1351. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1352. src/lib/stdio/gets.c    
  1353. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1354. 50700 /*
  1355. 50701  * gets.c - read a line from a stream
  1356. 50702  */
  1357. 50703 /* $Header: gets.c,v 1.2 89/12/18 15:03:00 eck Exp $ */
  1358. 50704
  1359. 50705 #include        <stdio.h>
  1360. 50706
  1361. 50707 char *
  1362. 50708 gets(char *s)
  1363. 50709 {
  1364. 50710         register FILE *stream = stdin;
  1365. 50711         register int ch;
  1366. 50712         register char *ptr;
  1367. 50713
  1368. 50714         ptr = s;
  1369. 50715         while ((ch = getc(stream)) != EOF && ch != 'n')
  1370. 50716                 *ptr++ = ch;
  1371. 50717
  1372. 50718         if (ch == EOF) {
  1373. 50719                 if (feof(stream)) {
  1374. 50720                         if (ptr == s) return NULL;
  1375. 50721                 } else return NULL;
  1376. 50722         }
  1377. 50723
  1378. 50724         *ptr = '';
  1379. 50725         return s;
  1380. 50726 }
  1381. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1382. src/lib/stdio/icompute.c    
  1383. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1384. 50800 /*
  1385. 50801  * icompute.c - compute an integer
  1386. 50802  */
  1387. 50803 /* $Header: icompute.c,v 1.1 89/12/18 14:59:38 eck Exp $ */
  1388. 50804
  1389. 50805 #include        "loc_incl.h"
  1390. 50806
  1391. 50807 /* This routine is used in doprnt.c as well as in tmpfile.c and tmpnam.c. */
  1392. 50808
  1393. 50809 char *
  1394. 50810 _i_compute(unsigned long val, int base, char *s, int nrdigits)
  1395. 50811 {
  1396. 50812         int c;
  1397. 50813
  1398. 50814         c= val % base ;
  1399. 50815         val /= base ;
  1400. 50816         if (val || nrdigits > 1)
  1401. 50817                 s = _i_compute(val, base, s, nrdigits - 1);
  1402. 50818         *s++ = (c>9 ? c-10+'a' : c+'0');
  1403. 50819         return s;
  1404. 50820 }
  1405. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1406. src/lib/stdio/perror.c    
  1407. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1408. 50900 /*
  1409. 50901  * perror.c - print an error message on the standard error output
  1410. 50902  */
  1411. 50903 /* $Header: perror.c,v 1.1 89/05/30 13:31:30 eck Exp $ */
  1412. 50904
  1413. 50905 #if     defined(_POSIX_SOURCE)
  1414. 50906 #include        <sys/types.h>
  1415. 50907 #endif
  1416. 50908 #include        <stdio.h>
  1417. 50909 #include        <errno.h>
  1418. 50910 #include        <stdio.h>
  1419. 50911 #include        <string.h>
  1420. 50912 #include        "loc_incl.h"
  1421. 50913
  1422. 50914 ssize_t _write(int d, const char *buf, size_t nbytes);
  1423. 50915
  1424. 50916 void
  1425. 50917 perror(const char *s)
  1426. 50918 {
  1427. 50919         char *p;
  1428. 50920         int fd;
  1429. 50921
  1430. 50922         p = strerror(errno);
  1431. 50923         fd = fileno(stderr);
  1432. 50924         fflush(stdout);
  1433. 50925         fflush(stderr);
  1434. 50926         if (s && *s) {
  1435. 50927                 _write(fd, s, strlen(s));
  1436. 50928                 _write(fd, ": ", 2);
  1437. 50929         }
  1438. 50930         _write(fd, p, strlen(p));
  1439. 50931         _write(fd, "n", 1);
  1440. 50932 }
  1441. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1442. src/lib/stdio/printf.c    
  1443. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1444. 51000 /*
  1445. 51001  * printf - write on the standard output stream
  1446. 51002  */
  1447. 51003 /* $Header: printf.c,v 1.3 89/12/18 15:03:08 eck Exp $ */
  1448. 51004
  1449. 51005 #include        <stdio.h>
  1450. 51006 #include        <stdarg.h>
  1451. 51007 #include        "loc_incl.h"
  1452. 51008
  1453. 51009 int
  1454. 51010 printf(const char *format, ...)
  1455. 51011 {
  1456. 51012         va_list ap;
  1457. 51013         int retval;
  1458. 51014
  1459. 51015         va_start(ap, format);
  1460. 51016
  1461. 51017         retval = _doprnt(format, ap, stdout);
  1462. 51018
  1463. 51019         va_end(ap);
  1464. 51020
  1465. 51021         return retval;
  1466. 51022 }
  1467. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1468. src/lib/stdio/putc.c    
  1469. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1470. 51100 /*
  1471. 51101  * putc.c - print (or buffer) one character
  1472. 51102  */
  1473. 51103 /* $Header: putc.c,v 1.2 89/12/18 15:03:15 eck Exp $ */
  1474. 51104
  1475. 51105 #include        <stdio.h>
  1476. 51106
  1477. 51107 int
  1478. 51108 (putc)(int c, FILE *stream)
  1479. 51109 {
  1480. 51110         return putc(c, stream);
  1481. 51111 }
  1482. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1483. src/lib/stdio/putchar.c    
  1484. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1485. 51200 /*
  1486. 51201  * putchar.c - print (or buffer) a character on the standard output stream
  1487. 51202  */
  1488. 51203 /* $Header: putchar.c,v 1.2 89/12/18 15:03:23 eck Exp $ */
  1489. 51204
  1490. 51205 #include        <stdio.h>
  1491. 51206
  1492. 51207 int
  1493. 51208 (putchar)(int c)
  1494. 51209 {
  1495. 51210         return putchar(c);
  1496. 51211 }
  1497. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1498. src/lib/stdio/puts.c    
  1499. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1500. 51300 /*
  1501. 51301  * puts.c - print a string onto the standard output stream
  1502. 51302  */
  1503. 51303 /* $Header: puts.c,v 1.2 89/12/18 15:03:30 eck Exp $ */
  1504. 51304
  1505. 51305 #include        <stdio.h>
  1506. 51306
  1507. 51307 int
  1508. 51308 puts(register const char *s)
  1509. 51309 {
  1510. 51310         register FILE *file = stdout;
  1511. 51311         register int i = 0;
  1512. 51312
  1513. 51313         while (*s) {
  1514. 51314                 if (putc(*s++, file) == EOF) return EOF;
  1515. 51315                 else i++;
  1516. 51316         }
  1517. 51317         if (putc('n', file) == EOF) return EOF;
  1518. 51318         return i + 1;
  1519. 51319 }
  1520. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1521. src/lib/stdio/remove.c    
  1522. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1523. 51400 /*
  1524. 51401  * remove.c - remove a file
  1525. 51402  */
  1526. 51403 /* $Header: remove.c,v 1.2 90/01/22 11:12:44 eck Exp $ */
  1527. 51404
  1528. 51405 #include        <stdio.h>
  1529. 51406
  1530. 51407 int _unlink(const char *path);
  1531. 51408
  1532. 51409 int
  1533. 51410 remove(const char *filename) {
  1534. 51411         return _unlink(filename);
  1535. 51412 }
  1536. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1537. src/lib/stdio/rewind.c    
  1538. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1539. 51500 /*
  1540. 51501  * rewind.c - set the file position indicator of a stream to the start
  1541. 51502  */
  1542. 51503 /* $Header: rewind.c,v 1.1 89/05/30 13:32:52 eck Exp $ */
  1543. 51504
  1544. 51505 #include        <stdio.h>
  1545. 51506 #include        "loc_incl.h"
  1546. 51507
  1547. 51508 void
  1548. 51509 rewind(FILE *stream)
  1549. 51510 {
  1550. 51511         (void) fseek(stream, 0L, SEEK_SET);
  1551. 51512         clearerr(stream);
  1552. 51513 }
  1553. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1554. src/lib/stdio/scanf.c    
  1555. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1556. 51600 /*
  1557. 51601  * scanf.c - read formatted input from the standard input stream
  1558. 51602  */
  1559. 51603 /* $Header: scanf.c,v 1.1 89/05/30 13:33:03 eck Exp $ */
  1560. 51604
  1561. 51605 #include        <stdio.h>
  1562. 51606 #include        <stdarg.h>
  1563. 51607 #include        "loc_incl.h"
  1564. 51608
  1565. 51609 int
  1566. 51610 scanf(const char *format, ...)
  1567. 51611 {
  1568. 51612         va_list ap;
  1569. 51613         int retval;
  1570. 51614
  1571. 51615         va_start(ap, format);
  1572. 51616
  1573. 51617         retval = _doscan(stdin, format, ap);
  1574. 51618
  1575. 51619         va_end(ap);
  1576. 51620
  1577. 51621         return retval;
  1578. 51622 }
  1579. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1580. src/lib/stdio/setbuf.c    
  1581. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1582. 51700 /*
  1583. 51701  * setbuf.c - control buffering of a stream
  1584. 51702  */
  1585. 51703 /* $Header: setbuf.c,v 1.2 89/06/26 10:36:22 eck Exp $ */
  1586. 51704
  1587. 51705 #include        <stdio.h>
  1588. 51706 #include        "loc_incl.h"
  1589. 51707
  1590. 51708 void
  1591. 51709 setbuf(register FILE *stream, char *buf)
  1592. 51710 {
  1593. 51711         (void) setvbuf(stream, buf, (buf ? _IOFBF : _IONBF), (size_t) BUFSIZ);
  1594. 51712 }
  1595. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1596. src/lib/stdio/setvbuf.c    
  1597. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1598. 51800 /*
  1599. 51801  * setbuf.c - control buffering of a stream
  1600. 51802  */
  1601. 51803 /* $Id: setvbuf.c,v 1.8 1995/12/18 11:02:18 ceriel Exp $ */
  1602. 51804
  1603. 51805 #include        <stdio.h>
  1604. 51806 #include        <stdlib.h>
  1605. 51807 #include        "loc_incl.h"
  1606. 51808
  1607. 51809 extern void (*_clean)(void);
  1608. 51810
  1609. 51811 int
  1610. 51812 setvbuf(register FILE *stream, char *buf, int mode, size_t size)
  1611. 51813 {
  1612. 51814         int retval = 0;
  1613. 51815
  1614. 51816         _clean = __cleanup;
  1615. 51817         if (mode != _IOFBF && mode != _IOLBF && mode != _IONBF)
  1616. 51818                 return EOF;
  1617. 51819
  1618. 51820         if (stream->_buf && io_testflag(stream,_IOMYBUF) )
  1619. 51821                 free((void *)stream->_buf);
  1620. 51822
  1621. 51823         stream->_flags &= ~(_IOMYBUF | _IONBF | _IOLBF);
  1622. 51824
  1623. 51825         if (buf && size <= 0) retval = EOF;
  1624. 51826         if (!buf && (mode != _IONBF)) {
  1625. 51827                 if (size <= 0 || (buf = (char *) malloc(size)) == NULL) {
  1626. 51828                         retval = EOF;
  1627. 51829                 } else {
  1628. 51830                         stream->_flags |= _IOMYBUF;
  1629. 51831                 }
  1630. 51832         }
  1631. 51833
  1632. 51834         stream->_buf = (unsigned char *) buf;
  1633. 51835
  1634. 51836         stream->_count = 0;
  1635. 51837         stream->_flags |= mode;
  1636. 51838         stream->_ptr = stream->_buf;
  1637. 51839
  1638. 51840         if (!buf) {
  1639. 51841                 stream->_bufsiz = 1;
  1640. 51842         } else {
  1641. 51843                 stream->_bufsiz = size;
  1642. 51844         }
  1643. 51845
  1644. 51846         return retval;
  1645. 51847 }
  1646. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1647. src/lib/stdio/sprintf.c    
  1648. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1649. 51900 /*
  1650. 51901  * sprintf - print formatted output on an array
  1651. 51902  */
  1652. 51903 /* $Header: sprintf.c,v 1.2 89/12/18 15:03:52 eck Exp $ */
  1653. 51904
  1654. 51905 #include        <stdio.h>
  1655. 51906 #include        <stdarg.h>
  1656. 51907 #include        "loc_incl.h"
  1657. 51908
  1658. 51909 int
  1659. 51910 sprintf(char * s, const char *format, ...)
  1660. 51911 {
  1661. 51912         va_list ap;
  1662. 51913         int retval;
  1663. 51914         FILE tmp_stream;
  1664. 51915
  1665. 51916         va_start(ap, format);
  1666. 51917
  1667. 51918         tmp_stream._fd     = -1;
  1668. 51919         tmp_stream._flags  = _IOWRITE + _IONBF + _IOWRITING;
  1669. 51920         tmp_stream._buf    = (unsigned char *) s;
  1670. 51921         tmp_stream._ptr    = (unsigned char *) s;
  1671. 51922         tmp_stream._count  = 32767;
  1672. 51923
  1673. 51924         retval = _doprnt(format, ap, &tmp_stream);
  1674. 51925         putc('',&tmp_stream);
  1675. 51926
  1676. 51927         va_end(ap);
  1677. 51928
  1678. 51929         return retval;
  1679. 51930 }
  1680. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1681. src/lib/stdio/sscanf.c    
  1682. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1683. 52000 /*
  1684. 52001  * sscanf - read formatted output from a string
  1685. 52002  */
  1686. 52003 /* $Header: sscanf.c,v 1.3 90/09/26 13:17:39 eck Exp $ */
  1687. 52004
  1688. 52005 #include        <stdio.h>
  1689. 52006 #include        <stdarg.h>
  1690. 52007 #include        <string.h>
  1691. 52008 #include        "loc_incl.h"
  1692. 52009
  1693. 52010 int sscanf(const char *s, const char *format, ...)
  1694. 52011 {
  1695. 52012         va_list ap;
  1696. 52013         int retval;
  1697. 52014         FILE tmp_stream;
  1698. 52015
  1699. 52016         va_start(ap, format);
  1700. 52017
  1701. 52018         tmp_stream._fd     = -1;
  1702. 52019         tmp_stream._flags  = _IOREAD + _IONBF + _IOREADING;
  1703. 52020         tmp_stream._buf    = (unsigned char *) s;
  1704. 52021         tmp_stream._ptr    = (unsigned char *) s;
  1705. 52022         tmp_stream._count  = strlen(s);
  1706. 52023
  1707. 52024         retval = _doscan(&tmp_stream, format, ap);
  1708. 52025
  1709. 52026         va_end(ap);
  1710. 52027
  1711. 52028         return retval;
  1712. 52029 }
  1713. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1714. src/lib/stdio/tmpfile.c    
  1715. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1716. 52100 /*
  1717. 52101  * tmpfile.c - create and open a temporary file
  1718. 52102  */
  1719. 52103 /* $Header: tmpfile.c,v 1.3 90/01/22 11:13:15 eck Exp $ */
  1720. 52104
  1721. 52105 #if     defined(_POSIX_SOURCE)
  1722. 52106 #include        <sys/types.h>
  1723. 52107 #endif
  1724. 52108 #include        <stdio.h>
  1725. 52109 #include        <string.h>
  1726. 52110 #include        "loc_incl.h"
  1727. 52111
  1728. 52112 pid_t _getpid(void);
  1729. 52113
  1730. 52114 FILE *
  1731. 52115 tmpfile(void) {
  1732. 52116         static char name_buffer[L_tmpnam] = "/tmp/tmp." ;
  1733. 52117         static char *name = NULL;
  1734. 52118         FILE *file;
  1735. 52119
  1736. 52120         if (!name) {
  1737. 52121                 name = name_buffer + strlen(name_buffer);
  1738. 52122                 name = _i_compute(_getpid(), 10, name, 5);
  1739. 52123                 *name = '';
  1740. 52124         }
  1741. 52125
  1742. 52126         file = fopen(name_buffer,"wb+");
  1743. 52127         if (!file) return (FILE *)NULL;
  1744. 52128         (void) remove(name_buffer);
  1745. 52129         return file;
  1746. 52130 }
  1747. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1748. src/lib/stdio/tmpnam.c    
  1749. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1750. 52200 /*
  1751. 52201  * tmpnam.c - create a unique filename
  1752. 52202  */
  1753. 52203 /* $Header: tmpnam.c,v 1.4 91/02/26 09:28:39 ceriel Exp $ */
  1754. 52204
  1755. 52205 #if     defined(_POSIX_SOURCE)
  1756. 52206 #include        <sys/types.h>
  1757. 52207 #endif
  1758. 52208 #include        <stdio.h>
  1759. 52209 #include        <string.h>
  1760. 52210 #include        "loc_incl.h"
  1761. 52211
  1762. 52212 pid_t _getpid(void);
  1763. 52213
  1764. 52214 char *
  1765. 52215 tmpnam(char *s) {
  1766. 52216         static char name_buffer[L_tmpnam] = "/tmp/tmp.";
  1767. 52217         static unsigned long count = 0;
  1768. 52218         static char *name = NULL;
  1769. 52219
  1770. 52220         if (!name) { 
  1771. 52221                 name = name_buffer + strlen(name_buffer);
  1772. 52222                 name = _i_compute((unsigned long)_getpid(), 10, name, 5);
  1773. 52223                 *name++ = '.';
  1774. 52224                 *name = '';
  1775. 52225         }
  1776. 52226         if (++count > TMP_MAX) count = 1;       /* wrap-around */
  1777. 52227         *_i_compute(count, 10, name, 3) = '';
  1778. 52228         if (s) return strcpy(s, name_buffer);
  1779. 52229         else return name_buffer;
  1780. 52230 }
  1781. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1782. src/lib/stdio/ungetc.c    
  1783. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1784. 52300 /*
  1785. 52301  * ungetc.c - push a character back onto an input stream
  1786. 52302  */
  1787. 52303 /* $Header: ungetc.c,v 1.3 90/03/28 16:33:05 eck Exp $ */
  1788. 52304
  1789. 52305 #include        <stdio.h>
  1790. 52306 #include        "loc_incl.h"
  1791. 52307
  1792. 52308 int
  1793. 52309 ungetc(int ch, FILE *stream)
  1794. 52310 {
  1795. 52311         unsigned char *p;
  1796. 52312
  1797. 52313         if (ch == EOF  || !io_testflag(stream,_IOREADING))
  1798. 52314                 return EOF;
  1799. 52315         if (stream->_ptr == stream->_buf) {
  1800. 52316                 if (stream->_count != 0) return EOF;
  1801. 52317                 stream->_ptr++;
  1802. 52318         }
  1803. 52319         stream->_count++;
  1804. 52320         p = --(stream->_ptr);           /* ??? Bloody vax assembler !!! */
  1805. 52321         /* ungetc() in sscanf() shouldn't write in rom */
  1806. 52322         if (*p != (unsigned char) ch)
  1807. 52323                 *p = (unsigned char) ch;
  1808. 52324         return ch;
  1809. 52325 }
  1810. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1811. src/lib/stdio/vfprintf.c    
  1812. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1813. 52400 /*
  1814. 52401  * vfprintf - formatted output without ellipsis
  1815. 52402  */
  1816. 52403 /* $Header: vfprintf.c,v 1.2 89/12/18 15:04:07 eck Exp $ */
  1817. 52404
  1818. 52405 #include        <stdio.h>
  1819. 52406 #include        <stdarg.h>
  1820. 52407 #include        "loc_incl.h"
  1821. 52408
  1822. 52409 int
  1823. 52410 vfprintf(FILE *stream, const char *format, va_list arg)
  1824. 52411 {
  1825. 52412         return _doprnt (format, arg, stream);
  1826. 52413 }
  1827. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1828. src/lib/stdio/vprintf.c    
  1829. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1830. 52500 /*
  1831. 52501  * vprintf - formatted output without ellipsis to the standard output stream
  1832. 52502  */
  1833. 52503 /* $Header: vprintf.c,v 1.3 89/12/18 15:04:14 eck Exp $ */
  1834. 52504
  1835. 52505 #include        <stdio.h>
  1836. 52506 #include        <stdarg.h>
  1837. 52507 #include        "loc_incl.h"
  1838. 52508
  1839. 52509 int
  1840. 52510 vprintf(const char *format, va_list arg)
  1841. 52511 {
  1842. 52512         return _doprnt(format, arg, stdout);
  1843. 52513 }
  1844. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1845. src/lib/stdio/vsprintf.c    
  1846. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1847. 52600 /*
  1848. 52601  * vsprintf - print formatted output without ellipsis on an array
  1849. 52602  */
  1850. 52603 /* $Header: vsprintf.c,v 1.2 90/11/13 10:56:53 eck Exp $ */
  1851. 52604
  1852. 52605 #include        <stdio.h>
  1853. 52606 #include        <stdarg.h>
  1854. 52607 #include        "loc_incl.h"
  1855. 52608
  1856. 52609 int
  1857. 52610 vsprintf(char *s, const char *format, va_list arg)
  1858. 52611 {
  1859. 52612         int retval;
  1860. 52613         FILE tmp_stream;
  1861. 52614
  1862. 52615         tmp_stream._fd     = -1;
  1863. 52616         tmp_stream._flags  = _IOWRITE + _IONBF + _IOWRITING;
  1864. 52617         tmp_stream._buf    = (unsigned char *) s;
  1865. 52618         tmp_stream._ptr    = (unsigned char *) s;
  1866. 52619         tmp_stream._count  = 32767;
  1867. 52620
  1868. 52621         retval = _doprnt(format, arg, &tmp_stream);
  1869. 52622         putc('',&tmp_stream);
  1870. 52623
  1871. 52624         return retval;
  1872. 52625 }
  1873. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1874. src/lib/stdio/vscanf.c    
  1875. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1876. 52700 /*
  1877. 52701  * vscanf.c - read formatted input from the standard input stream
  1878. 52702  */
  1879. 52703
  1880. 52704 #include        <stdio.h>
  1881. 52705 #include        <stdarg.h>
  1882. 52706 #include        "loc_incl.h"
  1883. 52707
  1884. 52708 int
  1885. 52709 vscanf(const char *format, va_list ap)
  1886. 52710 {
  1887. 52711         return _doscan(stdin, format, ap);
  1888. 52712 }
  1889. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1890. src/lib/stdio/vsscanf.c    
  1891. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1892. 52800 /*
  1893. 52801  * vsscanf - read formatted output from a string
  1894. 52802  */
  1895. 52803
  1896. 52804 #include        <stdio.h>
  1897. 52805 #include        <stdarg.h>
  1898. 52806 #include        <string.h>
  1899. 52807 #include        "loc_incl.h"
  1900. 52808
  1901. 52809 int vsscanf(const char *s, const char *format, va_list ap)
  1902. 52810 {
  1903. 52811         FILE tmp_stream;
  1904. 52812
  1905. 52813         tmp_stream._fd     = -1;
  1906. 52814         tmp_stream._flags  = _IOREAD + _IONBF + _IOREADING;
  1907. 52815         tmp_stream._buf    = (unsigned char *) s;
  1908. 52816         tmp_stream._ptr    = (unsigned char *) s;
  1909. 52817         tmp_stream._count  = strlen(s);
  1910. 52818
  1911. 52819         return _doscan(&tmp_stream, format, ap);
  1912. 52820 }
  1913. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1914. src/lib/syscall/_exit.s    
  1915. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1916. 52900 .sect .text
  1917. 52901 .extern ___exit
  1918. 52902 .define __exit
  1919. 52903 .align 2
  1920. 52904
  1921. 52905 __exit:
  1922. 52906         jmp     ___exit
  1923. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1924. src/lib/syscall/access.s    
  1925. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1926. 53000 .sect .text
  1927. 53001 .extern __access
  1928. 53002 .define _access
  1929. 53003 .align 2
  1930. 53004
  1931. 53005 _access:
  1932. 53006         jmp     __access
  1933. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1934. src/lib/syscall/alarm.s    
  1935. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1936. 53100 .sect .text
  1937. 53101 .extern __alarm
  1938. 53102 .define _alarm
  1939. 53103 .align 2
  1940. 53104
  1941. 53105 _alarm:
  1942. 53106         jmp     __alarm
  1943. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1944. src/lib/syscall/brk.s    
  1945. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1946. 53200 .sect .text
  1947. 53201 .extern __brk
  1948. 53202 .define _brk
  1949. 53203 .align 2
  1950. 53204
  1951. 53205 _brk:
  1952. 53206         jmp     __brk
  1953. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1954. src/lib/syscall/cfgetispeed.s    
  1955. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1956. 53300 .sect .text
  1957. 53301 .extern __cfgetispeed
  1958. 53302 .define _cfgetispeed
  1959. 53303 .align 2
  1960. 53304
  1961. 53305 _cfgetispeed:
  1962. 53306         jmp     __cfgetispeed
  1963. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1964. src/lib/syscall/cfgetospeed.s    
  1965. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1966. 53400 .sect .text
  1967. 53401 .extern __cfgetospeed
  1968. 53402 .define _cfgetospeed
  1969. 53403 .align 2
  1970. 53404
  1971. 53405 _cfgetospeed:
  1972. 53406         jmp     __cfgetospeed
  1973. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1974. src/lib/syscall/cfsetispeed.s    
  1975. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1976. 53500 .sect .text
  1977. 53501 .extern __cfsetispeed
  1978. 53502 .define _cfsetispeed
  1979. 53503 .align 2
  1980. 53504
  1981. 53505 _cfsetispeed:
  1982. 53506         jmp     __cfsetispeed
  1983. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1984. src/lib/syscall/cfsetospeed.s    
  1985. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1986. 53600 .sect .text
  1987. 53601 .extern __cfsetospeed
  1988. 53602 .define _cfsetospeed
  1989. 53603 .align 2
  1990. 53604
  1991. 53605 _cfsetospeed:
  1992. 53606         jmp     __cfsetospeed
  1993. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1994. src/lib/syscall/chdir.s    
  1995. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1996. 53700 .sect .text
  1997. 53701 .extern __chdir
  1998. 53702 .define _chdir
  1999. 53703 .align 2
  2000. 53704
  2001. 53705 _chdir:
  2002. 53706         jmp     __chdir
  2003. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2004. src/lib/syscall/chmod.s    
  2005. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2006. 53800 .sect .text
  2007. 53801 .extern __chmod
  2008. 53802 .define _chmod
  2009. 53803 .align 2
  2010. 53804
  2011. 53805 _chmod:
  2012. 53806         jmp     __chmod
  2013. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2014. src/lib/syscall/chown.s    
  2015. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2016. 53900 .sect .text
  2017. 53901 .extern __chown
  2018. 53902 .define _chown
  2019. 53903 .align 2
  2020. 53904
  2021. 53905 _chown:
  2022. 53906         jmp     __chown
  2023. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2024. src/lib/syscall/chroot.s    
  2025. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2026. 54000 .sect .text
  2027. 54001 .extern __chroot
  2028. 54002 .define _chroot
  2029. 54003 .align 2
  2030. 54004
  2031. 54005 _chroot:
  2032. 54006         jmp     __chroot
  2033. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2034. src/lib/syscall/close.s    
  2035. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2036. 54100 .sect .text
  2037. 54101 .extern __close
  2038. 54102 .define _close
  2039. 54103 .align 2
  2040. 54104
  2041. 54105 _close:
  2042. 54106         jmp     __close
  2043. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2044. src/lib/syscall/closedir.s    
  2045. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2046. 54200 .sect .text
  2047. 54201 .extern __closedir
  2048. 54202 .define _closedir
  2049. 54203 .align 2
  2050. 54204
  2051. 54205 _closedir:
  2052. 54206         jmp     __closedir
  2053. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2054. src/lib/syscall/creat.s    
  2055. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2056. 54300 .sect .text
  2057. 54301 .extern __creat
  2058. 54302 .define _creat
  2059. 54303 .align 2
  2060. 54304
  2061. 54305 _creat:
  2062. 54306         jmp     __creat
  2063. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2064. src/lib/syscall/dup.s    
  2065. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2066. 54400 .sect .text
  2067. 54401 .extern __dup
  2068. 54402 .define _dup
  2069. 54403 .align 2
  2070. 54404
  2071. 54405 _dup:
  2072. 54406         jmp     __dup
  2073. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2074. src/lib/syscall/dup2.s    
  2075. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2076. 54500 .sect .text
  2077. 54501 .extern __dup2
  2078. 54502 .define _dup2
  2079. 54503 .align 2
  2080. 54504
  2081. 54505 _dup2:
  2082. 54506         jmp     __dup2
  2083. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2084. src/lib/syscall/execl.s    
  2085. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2086. 54600 .sect .text
  2087. 54601 .extern __execl
  2088. 54602 .define _execl
  2089. 54603 .align 2
  2090. 54604
  2091. 54605 _execl:
  2092. 54606         jmp     __execl
  2093. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2094. src/lib/syscall/execle.s    
  2095. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2096. 54700 .sect .text
  2097. 54701 .extern __execle
  2098. 54702 .define _execle
  2099. 54703 .align 2
  2100. 54704
  2101. 54705 _execle:
  2102. 54706         jmp     __execle
  2103. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2104. src/lib/syscall/execv.s    
  2105. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2106. 54800 .sect .text
  2107. 54801 .extern __execv
  2108. 54802 .define _execv
  2109. 54803 .align 2
  2110. 54804
  2111. 54805 _execv:
  2112. 54806         jmp     __execv
  2113. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2114. src/lib/syscall/execve.s    
  2115. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2116. 54900 .sect .text
  2117. 54901 .extern __execve
  2118. 54902 .define _execve
  2119. 54903 .align 2
  2120. 54904
  2121. 54905 _execve:
  2122. 54906         jmp     __execve
  2123. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2124. src/lib/syscall/fcntl.s    
  2125. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2126. 55000 .sect .text
  2127. 55001 .extern __fcntl
  2128. 55002 .define _fcntl
  2129. 55003 .align 2
  2130. 55004
  2131. 55005 _fcntl:
  2132. 55006         jmp     __fcntl
  2133. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2134. src/lib/syscall/fork.s    
  2135. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2136. 55100 .sect .text
  2137. 55101 .extern __fork
  2138. 55102 .define _fork
  2139. 55103 .align 2
  2140. 55104
  2141. 55105 _fork:
  2142. 55106         jmp     __fork
  2143. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2144. src/lib/syscall/fpathconf.s    
  2145. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2146. 55200 .sect .text
  2147. 55201 .extern __fpathconf
  2148. 55202 .define _fpathconf
  2149. 55203 .align 2
  2150. 55204
  2151. 55205 _fpathconf:
  2152. 55206         jmp     __fpathconf
  2153. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2154. src/lib/syscall/fstat.s    
  2155. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2156. 55300 .sect .text
  2157. 55301 .extern __fstat
  2158. 55302 .define _fstat
  2159. 55303 .align 2
  2160. 55304
  2161. 55305 _fstat:
  2162. 55306         jmp     __fstat
  2163. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2164. src/lib/syscall/getcwd.s    
  2165. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2166. 55400 .sect .text
  2167. 55401 .extern __getcwd
  2168. 55402 .define _getcwd
  2169. 55403 .align 2
  2170. 55404
  2171. 55405 _getcwd:
  2172. 55406         jmp     __getcwd
  2173. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2174. src/lib/syscall/getegid.s    
  2175. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2176. 55500 .sect .text
  2177. 55501 .extern __getegid
  2178. 55502 .define _getegid
  2179. 55503 .align 2
  2180. 55504
  2181. 55505 _getegid:
  2182. 55506         jmp     __getegid
  2183. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2184. src/lib/syscall/geteuid.s    
  2185. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2186. 55600 .sect .text
  2187. 55601 .extern __geteuid
  2188. 55602 .define _geteuid
  2189. 55603 .align 2
  2190. 55604
  2191. 55605 _geteuid:
  2192. 55606         jmp     __geteuid
  2193. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2194. src/lib/syscall/getgid.s    
  2195. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2196. 55700 .sect .text
  2197. 55701 .extern __getgid
  2198. 55702 .define _getgid
  2199. 55703 .align 2
  2200. 55704
  2201. 55705 _getgid:
  2202. 55706         jmp     __getgid
  2203. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2204. src/lib/syscall/getgroups.s    
  2205. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2206. 55800 .sect .text
  2207. 55801 .extern __getgroups
  2208. 55802 .define _getgroups
  2209. 55803 .align 2
  2210. 55804
  2211. 55805 _getgroups:
  2212. 55806         jmp     __getgroups
  2213. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2214. src/lib/syscall/getpgrp.s    
  2215. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2216. 55900 .sect .text
  2217. 55901 .extern __getpgrp
  2218. 55902 .define _getpgrp
  2219. 55903 .align 2
  2220. 55904
  2221. 55905 _getpgrp:
  2222. 55906         jmp     __getpgrp
  2223. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2224. src/lib/syscall/getpid.s    
  2225. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2226. 56000 .sect .text
  2227. 56001 .extern __getpid
  2228. 56002 .define _getpid
  2229. 56003 .align 2
  2230. 56004
  2231. 56005 _getpid:
  2232. 56006         jmp     __getpid
  2233. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2234. src/lib/syscall/getppid.s    
  2235. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2236. 56100 .sect .text
  2237. 56101 .extern __getppid
  2238. 56102 .define _getppid
  2239. 56103 .align 2
  2240. 56104
  2241. 56105 _getppid:
  2242. 56106         jmp     __getppid
  2243. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2244. src/lib/syscall/getuid.s    
  2245. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2246. 56200 .sect .text
  2247. 56201 .extern __getuid
  2248. 56202 .define _getuid
  2249. 56203 .align 2
  2250. 56204
  2251. 56205 _getuid:
  2252. 56206         jmp     __getuid
  2253. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2254. src/lib/syscall/ioctl.s    
  2255. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2256. 56300 .sect .text
  2257. 56301 .extern __ioctl
  2258. 56302 .define _ioctl
  2259. 56303 .align 2
  2260. 56304
  2261. 56305 _ioctl:
  2262. 56306         jmp     __ioctl
  2263. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2264. src/lib/syscall/isatty.s    
  2265. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2266. 56400 .sect .text
  2267. 56401 .extern __isatty
  2268. 56402 .define _isatty
  2269. 56403 .align 2
  2270. 56404
  2271. 56405 _isatty:
  2272. 56406         jmp     __isatty
  2273. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2274. src/lib/syscall/kill.s    
  2275. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2276. 56500 .sect .text
  2277. 56501 .extern __kill
  2278. 56502 .define _kill
  2279. 56503 .align 2
  2280. 56504
  2281. 56505 _kill:
  2282. 56506         jmp     __kill
  2283. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2284. src/lib/syscall/link.s    
  2285. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2286. 56600 .sect .text
  2287. 56601 .extern __link
  2288. 56602 .define _link
  2289. 56603 .align 2
  2290. 56604
  2291. 56605 _link:
  2292. 56606         jmp     __link
  2293. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2294. src/lib/syscall/lseek.s    
  2295. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2296. 56700 .sect .text
  2297. 56701 .extern __lseek
  2298. 56702 .define _lseek
  2299. 56703 .align 2
  2300. 56704
  2301. 56705 _lseek:
  2302. 56706         jmp     __lseek
  2303. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2304. src/lib/syscall/mkdir.s    
  2305. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2306. 56800 .sect .text
  2307. 56801 .extern __mkdir
  2308. 56802 .define _mkdir
  2309. 56803 .align 2
  2310. 56804
  2311. 56805 _mkdir:
  2312. 56806         jmp     __mkdir
  2313. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2314. src/lib/syscall/mkfifo.s    
  2315. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2316. 56900 .sect .text
  2317. 56901 .extern __mkfifo
  2318. 56902 .define _mkfifo
  2319. 56903 .align 2
  2320. 56904
  2321. 56905 _mkfifo:
  2322. 56906         jmp     __mkfifo
  2323. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2324. src/lib/syscall/mknod.s    
  2325. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2326. 57000 .sect .text
  2327. 57001 .extern __mknod
  2328. 57002 .define _mknod
  2329. 57003 .align 2
  2330. 57004
  2331. 57005 _mknod:
  2332. 57006         jmp     __mknod
  2333. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2334. src/lib/syscall/mktemp.s    
  2335. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2336. 57100 .sect .text
  2337. 57101 .extern __mktemp
  2338. 57102 .define _mktemp
  2339. 57103 .align 2
  2340. 57104
  2341. 57105 _mktemp:
  2342. 57106         jmp     __mktemp
  2343. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2344. src/lib/syscall/mount.s    
  2345. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2346. 57200 .sect .text
  2347. 57201 .extern __mount
  2348. 57202 .define _mount
  2349. 57203 .align 2
  2350. 57204
  2351. 57205 _mount:
  2352. 57206         jmp     __mount
  2353. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2354. src/lib/syscall/open.s    
  2355. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2356. 57300 .sect .text
  2357. 57301 .extern __open
  2358. 57302 .define _open
  2359. 57303 .align 2
  2360. 57304
  2361. 57305 _open:
  2362. 57306         jmp     __open
  2363. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2364. src/lib/syscall/opendir.s    
  2365. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2366. 57400 .sect .text
  2367. 57401 .extern __opendir
  2368. 57402 .define _opendir
  2369. 57403 .align 2
  2370. 57404
  2371. 57405 _opendir:
  2372. 57406         jmp     __opendir
  2373. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2374. src/lib/syscall/pathconf.s    
  2375. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2376. 57500 .sect .text
  2377. 57501 .extern __pathconf
  2378. 57502 .define _pathconf
  2379. 57503 .align 2
  2380. 57504
  2381. 57505 _pathconf:
  2382. 57506         jmp     __pathconf
  2383. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2384. src/lib/syscall/pause.s    
  2385. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2386. 57600 .sect .text
  2387. 57601 .extern __pause
  2388. 57602 .define _pause
  2389. 57603 .align 2
  2390. 57604
  2391. 57605 _pause:
  2392. 57606         jmp     __pause
  2393. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2394. src/lib/syscall/pipe.s    
  2395. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2396. 57700 .sect .text
  2397. 57701 .extern __pipe
  2398. 57702 .define _pipe
  2399. 57703 .align 2
  2400. 57704
  2401. 57705 _pipe:
  2402. 57706         jmp     __pipe
  2403. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2404. src/lib/syscall/ptrace.s    
  2405. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2406. 57800 .sect .text
  2407. 57801 .extern __ptrace
  2408. 57802 .define _ptrace
  2409. 57803 .align 2
  2410. 57804
  2411. 57805 _ptrace:
  2412. 57806         jmp     __ptrace
  2413. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2414. src/lib/syscall/read.s    
  2415. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2416. 57900 .sect .text
  2417. 57901 .extern __read
  2418. 57902 .define _read
  2419. 57903 .align 2
  2420. 57904
  2421. 57905 _read:
  2422. 57906         jmp     __read
  2423. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2424. src/lib/syscall/readdir.s    
  2425. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2426. 58000 .sect .text
  2427. 58001 .extern __readdir
  2428. 58002 .define _readdir
  2429. 58003 .align 2
  2430. 58004
  2431. 58005 _readdir:
  2432. 58006         jmp     __readdir
  2433. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2434. src/lib/syscall/reboot.s    
  2435. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2436. 58100 .sect .text
  2437. 58101 .extern __reboot
  2438. 58102 .define _reboot
  2439. 58103 .align 2
  2440. 58104
  2441. 58105 _reboot:
  2442. 58106         jmp     __reboot
  2443. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2444. src/lib/syscall/rename.s    
  2445. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2446. 58200 .sect .text
  2447. 58201 .extern __rename
  2448. 58202 .define _rename
  2449. 58203 .align 2
  2450. 58204
  2451. 58205 _rename:
  2452. 58206         jmp     __rename
  2453. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2454. src/lib/syscall/rewinddir.s    
  2455. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2456. 58300 .sect .text
  2457. 58301 .extern __rewinddir
  2458. 58302 .define _rewinddir
  2459. 58303 .align 2
  2460. 58304
  2461. 58305 _rewinddir:
  2462. 58306         jmp     __rewinddir
  2463. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2464. src/lib/syscall/rmdir.s    
  2465. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2466. 58400 .sect .text
  2467. 58401 .extern __rmdir
  2468. 58402 .define _rmdir
  2469. 58403 .align 2
  2470. 58404
  2471. 58405 _rmdir:
  2472. 58406         jmp     __rmdir
  2473. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2474. src/lib/syscall/sbrk.s    
  2475. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2476. 58500 .sect .text
  2477. 58501 .extern __sbrk
  2478. 58502 .define _sbrk
  2479. 58503 .align 2
  2480. 58504
  2481. 58505 _sbrk:
  2482. 58506         jmp     __sbrk
  2483. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2484. src/lib/syscall/seekdir.s    
  2485. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2486. 58600 .sect .text
  2487. 58601 .extern __seekdir
  2488. 58602 .define _seekdir
  2489. 58603 .align 2
  2490. 58604
  2491. 58605 _seekdir:
  2492. 58606         jmp     __seekdir
  2493. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2494. src/lib/syscall/setgid.s    
  2495. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2496. 58700 .sect .text
  2497. 58701 .extern __setgid
  2498. 58702 .define _setgid
  2499. 58703 .align 2
  2500. 58704
  2501. 58705 _setgid:
  2502. 58706         jmp     __setgid
  2503. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2504. src/lib/syscall/setsid.s    
  2505. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2506. 58800 .sect .text
  2507. 58801 .extern __setsid
  2508. 58802 .define _setsid
  2509. 58803 .align 2
  2510. 58804
  2511. 58805 _setsid:
  2512. 58806         jmp     __setsid
  2513. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2514. src/lib/syscall/setuid.s    
  2515. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2516. 58900 .sect .text
  2517. 58901 .extern __setuid
  2518. 58902 .define _setuid
  2519. 58903 .align 2
  2520. 58904
  2521. 58905 _setuid:
  2522. 58906         jmp     __setuid
  2523. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2524. src/lib/syscall/sigaction.s    
  2525. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2526. 59000 .sect .text
  2527. 59001 .extern __sigaction
  2528. 59002 .define _sigaction
  2529. 59003 .align 2
  2530. 59004
  2531. 59005 _sigaction:
  2532. 59006         jmp     __sigaction
  2533. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2534. src/lib/syscall/sigaddset.s    
  2535. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2536. 59100 .sect .text
  2537. 59101 .extern __sigaddset
  2538. 59102 .define _sigaddset
  2539. 59103 .align 2
  2540. 59104
  2541. 59105 _sigaddset:
  2542. 59106         jmp     __sigaddset
  2543. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2544. src/lib/syscall/sigdelset.s    
  2545. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2546. 59200 .sect .text
  2547. 59201 .extern __sigdelset
  2548. 59202 .define _sigdelset
  2549. 59203 .align 2
  2550. 59204
  2551. 59205 _sigdelset:
  2552. 59206         jmp     __sigdelset
  2553. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2554. src/lib/syscall/sigemptyset.s    
  2555. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2556. 59300 .sect .text
  2557. 59301 .extern __sigemptyset
  2558. 59302 .define _sigemptyset
  2559. 59303 .align 2
  2560. 59304
  2561. 59305 _sigemptyset:
  2562. 59306         jmp     __sigemptyset
  2563. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2564. src/lib/syscall/sigfillset.s    
  2565. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2566. 59400 .sect .text
  2567. 59401 .extern __sigfillset
  2568. 59402 .define _sigfillset
  2569. 59403 .align 2
  2570. 59404
  2571. 59405 _sigfillset:
  2572. 59406         jmp     __sigfillset
  2573. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2574. src/lib/syscall/sigismember.s    
  2575. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2576. 59500 .sect .text
  2577. 59501 .extern __sigismember
  2578. 59502 .define _sigismember
  2579. 59503 .align 2
  2580. 59504
  2581. 59505 _sigismember:
  2582. 59506         jmp     __sigismember
  2583. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2584. src/lib/syscall/sigpending.s    
  2585. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2586. 59600 .sect .text
  2587. 59601 .extern __sigpending
  2588. 59602 .define _sigpending
  2589. 59603 .align 2
  2590. 59604
  2591. 59605 _sigpending:
  2592. 59606         jmp     __sigpending
  2593. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2594. src/lib/syscall/sigprocmask.s    
  2595. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2596. 59700 .sect .text
  2597. 59701 .extern __sigprocmask
  2598. 59702 .define _sigprocmask
  2599. 59703 .align 2
  2600. 59704
  2601. 59705 _sigprocmask:
  2602. 59706         jmp     __sigprocmask
  2603. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2604. src/lib/syscall/sigreturn.s    
  2605. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2606. 59800 .sect .text
  2607. 59801 .extern __sigreturn
  2608. 59802 .define _sigreturn
  2609. 59803 .align 2
  2610. 59804
  2611. 59805 _sigreturn:
  2612. 59806         jmp     __sigreturn
  2613. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2614. src/lib/syscall/sigsuspend.s    
  2615. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2616. 59900 .sect .text
  2617. 59901 .extern __sigsuspend
  2618. 59902 .define _sigsuspend
  2619. 59903 .align 2
  2620. 59904
  2621. 59905 _sigsuspend:
  2622. 59906         jmp     __sigsuspend
  2623. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2624. src/lib/syscall/sleep.s    
  2625. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2626. 60000 .sect .text
  2627. 60001 .extern __sleep
  2628. 60002 .define _sleep
  2629. 60003 .align 2
  2630. 60004
  2631. 60005 _sleep:
  2632. 60006         jmp     __sleep
  2633. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2634. src/lib/syscall/stat.s    
  2635. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2636. 60100 .sect .text
  2637. 60101 .extern __stat
  2638. 60102 .define _stat
  2639. 60103 .align 2
  2640. 60104
  2641. 60105 _stat:
  2642. 60106         jmp     __stat
  2643. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2644. src/lib/syscall/stime.s    
  2645. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2646. 60200 .sect .text
  2647. 60201 .extern __stime
  2648. 60202 .define _stime
  2649. 60203 .align 2
  2650. 60204
  2651. 60205 _stime:
  2652. 60206         jmp     __stime
  2653. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2654. src/lib/syscall/sync.s    
  2655. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2656. 60300 .sect .text
  2657. 60301 .extern __sync
  2658. 60302 .define _sync
  2659. 60303 .align 2
  2660. 60304
  2661. 60305 _sync:
  2662. 60306         jmp     __sync
  2663. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2664. src/lib/syscall/tcdrain.s    
  2665. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2666. 60400 .sect .text
  2667. 60401 .extern __tcdrain
  2668. 60402 .define _tcdrain
  2669. 60403 .align 2
  2670. 60404
  2671. 60405 _tcdrain:
  2672. 60406         jmp     __tcdrain
  2673. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2674. src/lib/syscall/tcflow.s    
  2675. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2676. 60500 .sect .text
  2677. 60501 .extern __tcflow
  2678. 60502 .define _tcflow
  2679. 60503 .align 2
  2680. 60504
  2681. 60505 _tcflow:
  2682. 60506         jmp     __tcflow
  2683. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2684. src/lib/syscall/tcflush.s    
  2685. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2686. 60600 .sect .text
  2687. 60601 .extern __tcflush
  2688. 60602 .define _tcflush
  2689. 60603 .align 2
  2690. 60604
  2691. 60605 _tcflush:
  2692. 60606         jmp     __tcflush
  2693. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2694. src/lib/syscall/tcgetattr.s    
  2695. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2696. 60700 .sect .text
  2697. 60701 .extern __tcgetattr
  2698. 60702 .define _tcgetattr
  2699. 60703 .align 2
  2700. 60704
  2701. 60705 _tcgetattr:
  2702. 60706         jmp     __tcgetattr
  2703. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2704. src/lib/syscall/tcsendbreak.s    
  2705. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2706. 60800 .sect .text
  2707. 60801 .extern __tcsendbreak
  2708. 60802 .define _tcsendbreak
  2709. 60803 .align 2
  2710. 60804
  2711. 60805 _tcsendbreak:
  2712. 60806         jmp     __tcsendbreak
  2713. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2714. src/lib/syscall/tcsetattr.s    
  2715. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2716. 60900 .sect .text
  2717. 60901 .extern __tcsetattr
  2718. 60902 .define _tcsetattr
  2719. 60903 .align 2
  2720. 60904
  2721. 60905 _tcsetattr:
  2722. 60906         jmp     __tcsetattr
  2723. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2724. src/lib/syscall/time.s    
  2725. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2726. 61000 .sect .text
  2727. 61001 .extern __time
  2728. 61002 .define _time
  2729. 61003 .align 2
  2730. 61004
  2731. 61005 _time:
  2732. 61006         jmp     __time
  2733. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2734. src/lib/syscall/times.s    
  2735. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2736. 61100 .sect .text
  2737. 61101 .extern __times
  2738. 61102 .define _times
  2739. 61103 .align 2
  2740. 61104
  2741. 61105 _times:
  2742. 61106         jmp     __times
  2743. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2744. src/lib/syscall/umask.s    
  2745. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2746. 61200 .sect .text
  2747. 61201 .extern __umask
  2748. 61202 .define _umask
  2749. 61203 .align 2
  2750. 61204
  2751. 61205 _umask:
  2752. 61206         jmp     __umask
  2753. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2754. src/lib/syscall/umount.s    
  2755. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2756. 61300 .sect .text
  2757. 61301 .extern __umount
  2758. 61302 .define _umount
  2759. 61303 .align 2
  2760. 61304
  2761. 61305 _umount:
  2762. 61306         jmp     __umount
  2763. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2764. src/lib/syscall/uname.s    
  2765. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2766. 61400 .sect .text
  2767. 61401 .extern __uname
  2768. 61402 .define _uname
  2769. 61403 .align 2
  2770. 61404
  2771. 61405 _uname:
  2772. 61406         jmp     __uname
  2773. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2774. src/lib/syscall/unlink.s    
  2775. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2776. 61500 .sect .text
  2777. 61501 .extern __unlink
  2778. 61502 .define _unlink
  2779. 61503 .align 2
  2780. 61504
  2781. 61505 _unlink:
  2782. 61506         jmp     __unlink
  2783. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2784. src/lib/syscall/utime.s    
  2785. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2786. 61600 .sect .text
  2787. 61601 .extern __utime
  2788. 61602 .define _utime
  2789. 61603 .align 2
  2790. 61604
  2791. 61605 _utime:
  2792. 61606         jmp     __utime
  2793. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2794. src/lib/syscall/wait.s    
  2795. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2796. 61700 .sect .text
  2797. 61701 .extern __wait
  2798. 61702 .define _wait
  2799. 61703 .align 2
  2800. 61704
  2801. 61705 _wait:
  2802. 61706         jmp     __wait
  2803. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2804. src/lib/syscall/waitpid.s    
  2805. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2806. 61800 .sect .text
  2807. 61801 .extern __waitpid
  2808. 61802 .define _waitpid
  2809. 61803 .align 2
  2810. 61804
  2811. 61805 _waitpid:
  2812. 61806         jmp     __waitpid
  2813. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2814. src/lib/syscall/write.s    
  2815. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2816. 61900 .sect .text
  2817. 61901 .extern __write
  2818. 61902 .define _write
  2819. 61903 .align 2
  2820. 61904
  2821. 61905 _write:
  2822. 61906         jmp     __write
  2823. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2824. src/lib/syslib/syslib.h    
  2825. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2826. 62000 /*      syslib.h - System library common definitions.   */
  2827. 62001
  2828. 62002 #define _SYSTEM
  2829. 62003
  2830. 62004 #include <lib.h>
  2831. 62005 #include <minix/com.h>
  2832. 62006 #include <minix/syslib.h>
  2833. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2834. src/lib/syslib/sys_abort.c    
  2835. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2836. 62100 #include "syslib.h"
  2837. 62101 #include <stdarg.h>
  2838. 62102 #include <unistd.h>
  2839. 62103
  2840. 62104 PUBLIC int sys_abort(int how, ...)
  2841. 62105 {
  2842. 62106 /* Something awful has happened.  Abandon ship. */
  2843. 62107
  2844. 62108   message m;
  2845. 62109   va_list ap;
  2846. 62110
  2847. 62111   va_start(ap, how);
  2848. 62112   if ((m.m1_i1 = how) == RBT_MONITOR) m.m1_p1 = va_arg(ap, char *);
  2849. 62113   va_end(ap);
  2850. 62114
  2851. 62115   return(_taskcall(SYSTASK, SYS_ABORT, &m));
  2852. 62116 }
  2853. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2854. src/lib/syslib/sys_copy.c    
  2855. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2856. 62200 #include "syslib.h"
  2857. 62201
  2858. 62202 PUBLIC int sys_copy(src_proc, src_seg, src_vir,
  2859. 62203                                         dst_proc, dst_seg, dst_vir, bytes)
  2860. 62204 int src_proc;                   /* source process */
  2861. 62205 int src_seg;                    /* source segment: T, D, or S */
  2862. 62206 phys_bytes src_vir;             /* source virtual address (phys addr for ABS)*/
  2863. 62207 int dst_proc;                   /* dest process */
  2864. 62208 int dst_seg;                    /* dest segment: T, D, or S */
  2865. 62209 phys_bytes dst_vir;             /* dest virtual address (phys addr for ABS) */
  2866. 62210 phys_bytes bytes;               /* how many bytes */
  2867. 62211 {
  2868. 62212 /* Transfer a block of data.  The source and destination can each either be a
  2869. 62213  * process (including MM) or absolute memory, indicate by setting 'src_proc'
  2870. 62214  * or 'dst_proc' to ABS.
  2871. 62215  */
  2872. 62216
  2873. 62217   message copy_mess;
  2874. 62218
  2875. 62219   if (bytes == 0L) return(OK);
  2876. 62220   copy_mess.SRC_SPACE = src_seg;
  2877. 62221   copy_mess.SRC_PROC_NR = src_proc;
  2878. 62222   copy_mess.SRC_BUFFER = (long) src_vir;
  2879. 62223
  2880. 62224   copy_mess.DST_SPACE = dst_seg;
  2881. 62225   copy_mess.DST_PROC_NR = dst_proc;
  2882. 62226   copy_mess.DST_BUFFER = (long) dst_vir;
  2883. 62227
  2884. 62228   copy_mess.COPY_BYTES = (long) bytes;
  2885. 62229   return(_taskcall(SYSTASK, SYS_COPY, &copy_mess));
  2886. 62230 }
  2887. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2888. src/lib/syslib/sys_endsig.c    
  2889. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2890. 62300 #include "syslib.h"
  2891. 62301
  2892. 62302 PUBLIC int sys_endsig(proc)
  2893. 62303 int proc;
  2894. 62304 {
  2895. 62305   message m;
  2896. 62306
  2897. 62307   m.m1_i1 = proc;
  2898. 62308   return(_taskcall(SYSTASK, SYS_ENDSIG, &m));
  2899. 62309 }
  2900. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2901. src/lib/syslib/sys_exec.c    
  2902. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2903. 62400 #include "syslib.h"
  2904. 62401
  2905. 62402 PUBLIC int sys_exec(proc, ptr, traced, prog_name, initpc)
  2906. 62403 int proc;                       /* process that did exec */
  2907. 62404 char *ptr;                      /* new stack pointer */
  2908. 62405 int traced;                     /* is tracing enabled? */
  2909. 62406 char *prog_name;                /* name of the new program */
  2910. 62407 vir_bytes initpc;
  2911. 62408 {
  2912. 62409 /* A process has exec'd.  Tell the kernel. */
  2913. 62410
  2914. 62411   message m;
  2915. 62412
  2916. 62413   m.m1_i1 = proc;
  2917. 62414   m.m1_i2 = traced;
  2918. 62415   m.m1_p1 = ptr;
  2919. 62416   m.m1_p2 = prog_name;
  2920. 62417   m.m1_p3 = (char *)initpc;
  2921. 62418   return(_taskcall(SYSTASK, SYS_EXEC, &m));
  2922. 62419 }
  2923. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2924. src/lib/syslib/sys_fork.c    
  2925. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2926. 62500 #include "syslib.h"
  2927. 62501
  2928. 62502 PUBLIC int sys_fork(parent, child, pid, child_base_or_shadow)
  2929. 62503 int parent;                     /* process doing the fork */
  2930. 62504 int child;                      /* which proc has been created by the fork */
  2931. 62505 int pid;                        /* process id assigned by MM */
  2932. 62506 phys_clicks child_base_or_shadow;       /* position for child [VM386];
  2933. 62507                                  * memory allocated for shadow [68000] */
  2934. 62508 {
  2935. 62509 /* A process has forked.  Tell the kernel. */
  2936. 62510
  2937. 62511   message m;
  2938. 62512
  2939. 62513   m.m1_i1 = parent;
  2940. 62514   m.m1_i2 = child;
  2941. 62515   m.m1_i3 = pid;
  2942. 62516   m.m1_p1 = (char *) child_base_or_shadow;
  2943. 62517   return(_taskcall(SYSTASK, SYS_FORK, &m));
  2944. 62518 }
  2945. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2946. src/lib/syslib/sys_fresh.c    
  2947. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2948. 62600 #include "syslib.h"
  2949. 62601
  2950. 62602 PUBLIC int sys_fresh(proc, ptr, dc, basep, sizep)
  2951. 62603 int proc;                       /* process whose map is to be changed */
  2952. 62604 struct mem_map *ptr;            /* pointer to new map */
  2953. 62605 phys_clicks dc;                 /* size of initialized data */
  2954. 62606 phys_clicks *basep, *sizep;     /* base and size for free_mem() */
  2955. 62607 {
  2956. 62608 /* Create a fresh process image for exec().  Tell the kernel. */
  2957. 62609
  2958. 62610   message m;
  2959. 62611   int r;
  2960. 62612
  2961. 62613   m.m1_i1 = proc;
  2962. 62614   m.m1_i2 = (int) dc;
  2963. 62615   m.m1_p1 = (char *) ptr;
  2964. 62616   r = _taskcall(SYSTASK, SYS_FRESH, &m);
  2965. 62617   *basep = (phys_clicks) m.m1_i1;
  2966. 62618   *sizep = (phys_clicks) m.m1_i2;
  2967. 62619   return(r);
  2968. 62620 }
  2969. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2970. src/lib/syslib/sys_getmap.c    
  2971. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2972. 62700 #include "syslib.h"
  2973. 62701
  2974. 62702 PUBLIC int sys_getmap(proc, ptr)
  2975. 62703 int proc;                       /* process whose map is to be fetched */
  2976. 62704 struct mem_map *ptr;            /* pointer to new map */
  2977. 62705 {
  2978. 62706 /* Want to know map of a process, ask the kernel. */
  2979. 62707
  2980. 62708   message m;
  2981. 62709
  2982. 62710   m.m1_i1 = proc;
  2983. 62711   m.m1_p1 = (char *) ptr;
  2984. 62712   return(_taskcall(SYSTASK, SYS_GETMAP, &m));
  2985. 62713 }
  2986. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2987. src/lib/syslib/sys_getsp.c    
  2988. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2989. 62800 #include "syslib.h"
  2990. 62801
  2991. 62802 PUBLIC int sys_getsp(proc, newsp)
  2992. 62803 int proc;                       /* process whose sp is wanted */
  2993. 62804 vir_bytes *newsp;               /* place to put sp read from kernel */
  2994. 62805 {
  2995. 62806 /* Ask the kernel what the sp is. */
  2996. 62807
  2997. 62808   message m;
  2998. 62809   int r;
  2999. 62810
  3000. 62811   m.m1_i1 = proc;
  3001. 62812   r = _taskcall(SYSTASK, SYS_GETSP, &m);
  3002. 62813   *newsp = (vir_bytes) m.STACK_PTR;
  3003. 62814   return(r);
  3004. 62815 }
  3005. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3006. src/lib/syslib/sys_kill.c    
  3007. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3008. 62900 #include "syslib.h"
  3009. 62901
  3010. 62902 PUBLIC int sys_kill(proc, signr)
  3011. 62903 int proc;                       /* which proc has exited */
  3012. 62904 int signr;                      /* signal number: 1 - 16 */
  3013. 62905 {
  3014. 62906 /* A proc has to be signaled via MM.  Tell the kernel. */
  3015. 62907   message m;
  3016. 62908
  3017. 62909   m.m6_i1 = proc;
  3018. 62910   m.m6_i2 = signr;
  3019. 62911   return(_taskcall(SYSTASK, SYS_KILL, &m));
  3020. 62912 }
  3021. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3022. src/lib/syslib/sys_newmap.c    
  3023. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3024. 63000 #include "syslib.h"
  3025. 63001
  3026. 63002 PUBLIC int sys_newmap(proc, ptr)
  3027. 63003 int proc;                       /* process whose map is to be changed */
  3028. 63004 struct mem_map *ptr;            /* pointer to new map */
  3029. 63005 {
  3030. 63006 /* A process has been assigned a new memory map.  Tell the kernel. */
  3031. 63007
  3032. 63008   message m;
  3033. 63009
  3034. 63010   m.m1_i1 = proc;
  3035. 63011   m.m1_p1 = (char *) ptr;
  3036. 63012   return(_taskcall(SYSTASK, SYS_NEWMAP, &m));
  3037. 63013 }
  3038. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3039. src/lib/syslib/sys_oldsig.c    
  3040. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3041. 63100 #include "syslib.h"
  3042. 63101
  3043. 63102 PUBLIC int sys_oldsig(proc, sig, sighandler)
  3044. 63103 int proc;                       /* process to be signaled  */
  3045. 63104 int sig;                        /* signal number: 1 to _NSIG */
  3046. 63105 sighandler_t sighandler;        /* pointer to signal handler in user space */
  3047. 63106 {
  3048. 63107 /* A proc has to be signaled.  Tell the kernel. This function is obsolete. */
  3049. 63108
  3050. 63109   message m;
  3051. 63110
  3052. 63111   m.m6_i1 = proc;
  3053. 63112   m.m6_i2 = sig;
  3054. 63113   m.m6_f1 = sighandler;
  3055. 63114   return(_taskcall(SYSTASK, SYS_OLDSIG, &m));
  3056. 63115 }
  3057. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3058. src/lib/syslib/sys_sendsig.c    
  3059. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3060. 63200 #include "syslib.h"
  3061. 63201
  3062. 63202 PUBLIC int sys_sendsig(proc, smp)
  3063. 63203 int proc;
  3064. 63204 struct sigmsg *smp;
  3065. 63205 {
  3066. 63206   message m;
  3067. 63207
  3068. 63208   m.m1_i1 = proc;
  3069. 63209   m.m1_p1 = (char *) smp;
  3070. 63210   return(_taskcall(SYSTASK, SYS_SENDSIG, &m));
  3071. 63211 }
  3072. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3073. src/lib/syslib/sys_sigret.c    
  3074. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3075. 63300 #include "syslib.h"
  3076. 63301
  3077. 63302 PUBLIC int sys_sigreturn(proc, scp, flags)
  3078. 63303 int proc;
  3079. 63304 vir_bytes scp;
  3080. 63305 int flags;
  3081. 63306 {
  3082. 63307   message m;
  3083. 63308
  3084. 63309   m.m1_i1 = proc;
  3085. 63310   m.m1_i2 = flags;
  3086. 63311   m.m1_p1 = (char *) scp;
  3087. 63312   return(_taskcall(SYSTASK, SYS_SIGRETURN, &m));
  3088. 63313 }
  3089. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3090. src/lib/syslib/sys_times.c    
  3091. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3092. 63400 #include "syslib.h"
  3093. 63401
  3094. 63402 PUBLIC int sys_times(proc, ptr)
  3095. 63403 int proc;                       /* proc whose times are needed */
  3096. 63404 clock_t ptr[5];                 /* pointer to time buffer */
  3097. 63405 {
  3098. 63406 /* Fetch the accounting info for a proc. */
  3099. 63407   message m;
  3100. 63408   int r;
  3101. 63409
  3102. 63410   m.m1_i1 = proc;
  3103. 63411   m.m1_p1 = (char *)ptr;
  3104. 63412   r = _taskcall(SYSTASK, SYS_TIMES, &m);
  3105. 63413   ptr[0] = m.USER_TIME;
  3106. 63414   ptr[1] = m.SYSTEM_TIME;
  3107. 63415   ptr[2] = m.CHILD_UTIME;
  3108. 63416   ptr[3] = m.CHILD_STIME;
  3109. 63417   ptr[4] = m.BOOT_TICKS;
  3110. 63418   return(r);
  3111. 63419 }
  3112. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3113. src/lib/syslib/sys_trace.c    
  3114. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3115. 63500 #include "syslib.h"
  3116. 63501
  3117. 63502 PUBLIC int sys_trace(req, procnr, addr, data_p)
  3118. 63503 int req, procnr;
  3119. 63504 long addr, *data_p;
  3120. 63505 {
  3121. 63506   message m;
  3122. 63507   int r;
  3123. 63508
  3124. 63509   m.m2_i1 = procnr;
  3125. 63510   m.m2_i2 = req;
  3126. 63511   m.m2_l1 = addr;
  3127. 63512   if (data_p) m.m2_l2 = *data_p;
  3128. 63513   r = _taskcall(SYSTASK, SYS_TRACE, &m);
  3129. 63514   if (data_p) *data_p = m.m2_l2;
  3130. 63515   return(r);
  3131. 63516 }
  3132. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3133. src/lib/syslib/sys_xit.c    
  3134. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3135. 63600 #include "syslib.h"
  3136. 63601
  3137. 63602 PUBLIC int sys_xit(parent, proc, basep, sizep)
  3138. 63603 int parent;                     /* parent of exiting process */
  3139. 63604 int proc;                       /* which process has exited */
  3140. 63605 phys_clicks *basep;             /* where to return base of shadow [68000] */
  3141. 63606 phys_clicks *sizep;             /* where to return size of shadow [68000] */
  3142. 63607 {
  3143. 63608 /* A process has exited.  Tell the kernel. */
  3144. 63609
  3145. 63610   message m;
  3146. 63611   int r;
  3147. 63612
  3148. 63613   m.m1_i1 = parent;
  3149. 63614   m.m1_i2 = proc;
  3150. 63615   r = _taskcall(SYSTASK, SYS_XIT, &m);
  3151. 63616   *basep = (phys_clicks) m.m1_i1;
  3152. 63617   *sizep = (phys_clicks) m.m1_i2;
  3153. 63618   return(r);
  3154. 63619 }
  3155. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3156. src/lib/syslib/taskcall.c    
  3157. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3158. 63700 /* _taskcall() is the same as _syscall() except it returns negative error
  3159. 63701  * codes directly and not in errno.  This is a better interface for MM and
  3160. 63702  * FS.
  3161. 63703  */
  3162. 63704
  3163. 63705 #include <lib.h>
  3164. 63706 #include <minix/syslib.h>
  3165. 63707
  3166. 63708 PUBLIC int _taskcall(who, syscallnr, msgptr)
  3167. 63709 int who;
  3168. 63710 int syscallnr;
  3169. 63711 register message *msgptr;
  3170. 63712 {
  3171. 63713   int status;
  3172. 63714
  3173. 63715   msgptr->m_type = syscallnr;
  3174. 63716   status = _sendrec(who, msgptr);
  3175. 63717   if (status != 0) return(status);
  3176. 63718   return(msgptr->m_type);
  3177. 63719 }