Introduction
Introduction Statistics Contact Development Disclaimer Help
dirfwstat.c - 9base - revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log
Files
Refs
README
LICENSE
---
dirfwstat.c (1154B)
---
1 #define NOPLAN9DEFINES
2 #include <u.h>
3 #include <libc.h>
4 #include <sys/time.h>
5 #include <sys/stat.h>
6
7 #if defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__) |…
8 /* do nothing -- futimes exists and is fine */
9
10 # if defined(__UCLIBC__)
11 /* use futimesat */
12 static int
13 futimes(int fd, struct timeval *tv)
14 {
15 return futimesat(fd, 0, tv);
16 }
17
18 # endif
19 #elif defined(__SunOS5_9__)
20 /* use futimesat */
21 static int
22 futimes(int fd, struct timeval *tv)
23 {
24 return futimesat(fd, 0, tv);
25 }
26
27 #else
28 /* provide dummy */
29 /* rename just in case -- linux provides an unusable one */
30 #undef futimes
31 #define futimes myfutimes
32 static int
33 futimes(int fd, struct timeval *tv)
34 {
35 werrstr("futimes not available");
36 return -1;
37 }
38
39 #endif
40
41 int
42 dirfwstat(int fd, Dir *dir)
43 {
44 int ret;
45 struct timeval tv[2];
46
47 ret = 0;
48 if(~dir->mode != 0){
49 if(fchmod(fd, dir->mode) < 0)
50 ret = -1;
51 }
52 if(~dir->mtime != 0){
53 tv[0].tv_sec = dir->mtime;
54 tv[0].tv_usec = 0;
55 tv[1].tv_sec = dir->mtime;
56 tv[1].tv_usec = 0;
57 if(futimes(fd, tv) < 0)
58 ret = -1;
59 }
60 if(~dir->length != 0){
61 if(ftruncate(fd, dir->length) < 0)
62 ret = -1;
63 }
64 return ret;
65 }
66
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.