]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/swap.c
upas/fs: remove imap lastread debounding
[plan9front.git] / sys / src / cmd / swap.c
1 #include <u.h>
2 #include <libc.h>
3
4 void
5 main(int argc, char **argv)
6 {
7         int swapfd, cswfd;
8         char buf[1024], *p;
9         Dir *d;
10
11         ARGBEGIN {
12         } ARGEND;
13
14         if(argc != 1){
15                 fprint(2, "Usage: swap file\n");
16                 exits("usage");
17         }
18
19         swapfd = -1;
20         if(d = dirstat(p = *argv)){
21                 if(d->mode & DMDIR){
22                         p = getenv("sysname");
23                         if(p == 0)
24                                 p = "swap";
25                         snprint(buf, sizeof buf, "%s/%sXXXXXXX", *argv, p);
26                         p = mktemp(buf);
27                 } else
28                         swapfd = open(p, ORDWR);
29         }
30         if(d == nil || (d->mode & DMDIR)){
31                 if((swapfd = create(p, ORDWR|ORCLOSE, 0600)) >= 0){
32                         Dir nd;
33
34                         nulldir(&nd);
35                         nd.mode = DMTMP|0600;
36                         dirfwstat(swapfd, &nd);
37                 }
38         }
39         if(swapfd < 0)
40                 sysfatal("%r");
41         if(fd2path(swapfd, p = buf, sizeof buf))
42                 sysfatal("fd2path: %r");
43         if(putenv("swap", p) < 0)
44                 sysfatal("putenv: %r");
45
46         print("swap: %s\n", p);
47
48         if((cswfd = open("/dev/swap", OWRITE)) < 0)
49                 sysfatal("open: %r");
50         if(fprint(cswfd, "%d", swapfd) < 0)
51                 sysfatal("write: %r");
52
53         exits(0);
54 }