#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include "libc.h"

int lockf(int fd, int op, off_t size) {
  struct flock l = {
      .l_type = F_WRLCK, .l_whence = SEEK_CUR, .l_len = size,
  };
  switch (op) {
    case F_TEST:
      l.l_type = F_RDLCK;
      if (fcntl(fd, F_GETLK, &l) < 0)
        return -1;
      if (l.l_type == F_UNLCK || l.l_pid == getpid())
        return 0;
      errno = EACCES;
      return -1;
    case F_ULOCK:
      l.l_type = F_UNLCK;
    case F_TLOCK:
      return fcntl(fd, F_SETLK, &l);
    case F_LOCK:
      return fcntl(fd, F_SETLKW, &l);
  }
  errno = EINVAL;
  return -1;
}
