lockf.c 571 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include <errno.h>
  2. lockf(fildes, mode, size)
  3. long size;
  4. {
  5. struct {
  6. short type, whence; long start, end; short pid;
  7. } x;
  8. int i = 8;
  9. extern int errno;
  10. x.type = 2;
  11. x.whence = 1;
  12. x.start = 0;
  13. x.end = size;
  14. switch(mode) {
  15. case 0:
  16. x.type = 3;
  17. break;
  18. case 1:
  19. i = 9;
  20. break;
  21. case 2:
  22. break;
  23. case 3:
  24. if (fcntl(fildes,7,&x) == -1) {
  25. return -1;
  26. }
  27. if (x.type == 3) {
  28. return 0;
  29. }
  30. errno = EACCES;
  31. return -1;
  32. default:
  33. errno = EINVAL;
  34. return -1;
  35. }
  36. if (fcntl(fildes,i,&x) == -1) {
  37. if (errno = 79) {
  38. errno = 78;
  39. }
  40. return -1;
  41. }
  42. }