xref: /minix/minix/lib/libc/sys/stat.c (revision 7f5f010b)
1 #include <sys/cdefs.h>
2 #include "namespace.h"
3 #include <lib.h>
4 
5 #include <sys/stat.h>
6 #include <string.h>
7 
8 #ifdef __weak_alias
9 __weak_alias(_stat, __stat50);
10 __weak_alias(_lstat, __lstat50);
11 __weak_alias(_fstat, __fstat50);
12 
13 __weak_alias(stat, __stat50);
14 __weak_alias(lstat, __lstat50);
15 __weak_alias(fstat, __fstat50);
16 #endif
17 
18 int stat(const char *name, struct stat *buffer)
19 {
20   message m;
21 
22   memset(&m, 0, sizeof(m));
23   m.m_lc_vfs_stat.len = strlen(name) + 1;
24   m.m_lc_vfs_stat.name = (vir_bytes)name;
25   m.m_lc_vfs_stat.buf = (vir_bytes)buffer;
26 
27   return _syscall(VFS_PROC_NR, VFS_STAT, &m);
28 }
29 
30 int fstat(int fd, struct stat *buffer)
31 {
32   message m;
33 
34   memset(&m, 0, sizeof(m));
35   m.m_lc_vfs_fstat.fd = fd;
36   m.m_lc_vfs_fstat.buf = (vir_bytes)buffer;
37 
38   return _syscall(VFS_PROC_NR, VFS_FSTAT, &m);
39 }
40 
41 int lstat(const char *name, struct stat *buffer)
42 {
43   message m;
44 
45   memset(&m, 0, sizeof(m));
46   m.m_lc_vfs_stat.len = strlen(name) + 1;
47   m.m_lc_vfs_stat.name = (vir_bytes)name;
48   m.m_lc_vfs_stat.buf = (vir_bytes)buffer;
49 
50   return _syscall(VFS_PROC_NR, VFS_LSTAT, &m);
51 }
52