Catching up after the holidays.
[kakapo:kakapo.git] / src / Pmc / OS.nqp
1 # Copyright (C) 2009, Austin Hastings. See accompanying LICENSE file, or 
2 # http://www.opensource.org/licenses/artistic-license-2.0.php for license.
3
4 module OS;
5 # Wrapper for OS PMC type.
6
7 sub _get_pmc() {
8         our $_Pmc;
9
10         unless Opcode::defined($_Pmc) {
11                 $_Pmc := Q:PIR {
12                         %r = root_new [ 'parrot' ; 'OS' ]
13                 };
14         }
15         
16         return $_Pmc;
17 }
18
19 sub chdir($path) {
20         _get_pmc().chdir($path);
21 }
22
23 sub chroot($path) {
24         return _get_pmc().chroot($path);
25 }
26
27 sub cwd() {
28         return _get_pmc().cwd();
29 }
30
31 sub link($from, $to) {
32         _get_pmc().link($from, $to);
33 }
34
35 sub lstat($path) {
36         return _get_pmc().lstat($path);
37 }
38
39 sub mkdir($path, $mode) {
40         _get_pmc().mkdir($path, $mode);
41 }
42
43 sub readdir($path) {
44         return _get_pmc().readdir($path);
45 }
46
47 sub rename($oldpath, $newpath) {
48         return _get_pmc().rename($oldpath, $newpath);
49 }
50
51 sub rm($path) {
52         _get_pmc().rm($path);
53 }
54
55 sub stat($path) {
56         return _get_pmc().stat($path);
57 }
58
59 sub symlink($from, $to) {
60         _get_pmc().symlink($from, $to);
61 }
62
63 # This isn't provided by the OS object, but where else should it go?
64 sub time() {
65         my $result := Q:PIR {
66                 $N0 = time
67                 %r = box $N0
68         };
69         return $result;
70 }
71
72 sub umask($mask) {
73         return _get_pmc().umask($mask);
74 }