summaryrefslogtreecommitdiff
path: root/kernel/syscalls/stat.c
blob: 0af21219a9992984d5996a768c30db15624f4d55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <errno.h>
#include <fs/vfs.h>
#include <syscalls.h>

int syscall_stat(SYS_STAT_PARAMS *args) {
  const char *pathname = copy_and_allocate_user_string(args->pathname);
  struct stat *statbuf = args->statbuf;
  int fd = vfs_open(pathname, O_READ, 0);
  if (0 > fd)
    return -ENOENT;
  int rc = vfs_fstat(fd, statbuf);
  vfs_close(fd);
  return rc;
}