_open.c 656 B

12345678910111213141516171819202122232425262728293031323334
  1. #include <lib.h>
  2. #include <sys/types.h>
  3. #define open _open
  4. #include <fcntl.h>
  5. #if _ANSI
  6. #include <stdarg.h>
  7. PUBLIC int open(const char *name, int flags, ...)
  8. {
  9. int i;
  10. va_list ap;
  11. if (flags & O_CREAT) {
  12. va_start(ap, flags);
  13. i = va_arg(ap, int);
  14. i = _callm1(FS, OPEN, _len(name), flags, i,
  15. (char *)name, NIL_PTR, NIL_PTR);
  16. va_end(ap);
  17. return i;
  18. }
  19. return _callm3(FS, OPEN, flags, name);
  20. }
  21. #else
  22. PUBLIC int open(name, flags, mode)
  23. _CONST char *name;
  24. int flags, mode;
  25. {
  26. if (flags & O_CREAT)
  27. return _callm1(FS, OPEN, _len(name), flags, mode,
  28. (char *)name, NIL_PTR, NIL_PTR);
  29. return(_callm3(FS, OPEN, flags, name));
  30. }
  31. #endif