Posix.c 878 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "cc.h"
  2. #include <sys/wait.h>
  3. void*
  4. mysbrk(ulong size)
  5. {
  6. return (void*)sbrk(size);
  7. }
  8. int
  9. mycreat(char *n, int p)
  10. {
  11. return create(n, 1, p);
  12. }
  13. int
  14. mywait(int *s)
  15. {
  16. return wait(s);
  17. }
  18. int
  19. mydup(int f1, int f2)
  20. {
  21. if(f2 < 0)
  22. return dup(f1);
  23. return dup2(f1,f2);
  24. }
  25. int
  26. mypipe(int *fd)
  27. {
  28. return pipe(fd);
  29. }
  30. int
  31. systemtype(int sys)
  32. {
  33. return sys&Unix;
  34. }
  35. int
  36. pathchar(void)
  37. {
  38. return '/';
  39. }
  40. char*
  41. mygetwd(char *path, int len)
  42. {
  43. return (char*)getcwd(path, len);
  44. }
  45. int
  46. myexec(char *path, char *argv[])
  47. {
  48. return execvp(path, argv);
  49. }
  50. /*
  51. * fake mallocs
  52. */
  53. void*
  54. malloc(size_t n)
  55. {
  56. return alloc(n);
  57. }
  58. void*
  59. calloc(size_t m, size_t n)
  60. {
  61. return alloc(m*n);
  62. }
  63. void*
  64. realloc(void *p, size_t n)
  65. {
  66. fprint(2, "realloc called\n");
  67. abort();
  68. return 0;
  69. }
  70. void
  71. free(void *p)
  72. {
  73. }
  74. int
  75. myfork(void)
  76. {
  77. return fork();
  78. }
  79. int
  80. myaccess(char *f)
  81. {
  82. return access(f, 0);
  83. }