1 // **********************************************************************
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
8 // **********************************************************************
14 Parser(DirectoryPrx root
)
16 _dirs
= new java
.util
.LinkedList
<DirectoryPrx
>();
24 "help Print this message.\n" +
25 "pwd Print current directory (/ = root).\n" +
26 "cd [DIR] Change directory (/ or empty = root).\n" +
27 "ls List current directory.\n" +
28 "lr Recursively list current directory.\n" +
29 "mkdir DIR [DIR...] Create directories DIR in current directory.\n" +
30 "mkfile FILE [FILE...] Create files FILE in current directory.\n" +
31 "rm NAME [NAME...] Delete directory or file NAME (rm * to delete all).\n" +
32 "cat FILE List the contents of FILE.\n" +
33 "write FILE [STRING...] Write STRING to FILE.\n" +
34 "exit, quit Exit this program.\n");
38 list(boolean recursive
)
42 list(_dirs
.get(0), recursive
, 0);
44 catch(Ice
.LocalException ex
)
51 list(Filesystem
.DirectoryPrx dir
, boolean recursive
, int depth
)
53 StringBuilder b
= new StringBuilder();
54 for(int i
= 0; i
< depth
; ++i
)
58 String indent
= b
.toString();
60 NodeDesc
[] contents
= dir
.list();
62 for(int i
= 0; i
< contents
.length
; ++i
)
65 = contents
[i
].type
== NodeType
.DirType
66 ? DirectoryPrxHelper
.uncheckedCast(contents
[i
].proxy
)
68 System
.out
.print(indent
+ contents
[i
].name
+ (d
!= null ?
" (directory)" : " (file)"));
69 if(d
!= null && recursive
)
71 System
.out
.println(":");
72 list(d
, true, ++depth
);
82 createFile(java
.util
.List
<String
> names
)
84 DirectoryPrx dir
= _dirs
.getFirst();
86 for(String name
: names
)
90 System
.out
.println("Cannot create a file named `..'");
100 System
.out
.println("`" + name
+ "' exists already");
106 createDir(java
.util
.List
<String
> names
)
108 DirectoryPrx dir
= _dirs
.getFirst();
110 for(String name
: names
)
112 if(name
.equals(".."))
114 System
.out
.println("Cannot create a directory named `..'");
120 dir
.createDirectory(name
);
124 System
.out
.println("`" + name
+ "' exists already");
132 if(_dirs
.size() == 1)
134 System
.out
.print("/");
138 java
.util
.ListIterator
<DirectoryPrx
> i
= _dirs
.listIterator(_dirs
.size());
140 while(i
.hasPrevious())
142 System
.out
.print("/" + i
.previous().name());
145 System
.out
.println();
153 while(_dirs
.size() > 1)
160 if(name
.equals(".."))
169 DirectoryPrx dir
= _dirs
.getFirst();
177 System
.out
.println("`" + name
+ "': no such directory");
180 if(d
.type
== NodeType
.FileType
)
182 System
.out
.println("`" + name
+ "': not a directory");
185 _dirs
.addFirst(DirectoryPrxHelper
.uncheckedCast(d
.proxy
));
191 DirectoryPrx dir
= _dirs
.getFirst();
199 System
.out
.println("`" + name
+ "': no such file");
202 if(d
.type
== NodeType
.DirType
)
204 System
.out
.println("`" + name
+ "': not a file");
207 FilePrx f
= FilePrxHelper
.uncheckedCast(d
.proxy
);
208 String
[] l
= f
.read();
209 for(int i
= 0; i
< l
.length
; ++i
)
211 System
.out
.println(l
[i
]);
216 write(java
.util
.LinkedList
<String
> args
)
218 DirectoryPrx dir
= _dirs
.getFirst();
219 String name
= args
.getFirst();
228 System
.out
.println("`" + name
+ "': no such file");
231 if(d
.type
== NodeType
.DirType
)
233 System
.out
.println("`" + name
+ "': not a file");
236 FilePrx f
= FilePrxHelper
.uncheckedCast(d
.proxy
);
238 String
[] l
= args
.toArray(new String
[0]);
243 catch(GenericError ex
)
245 System
.out
.println("`" + name
+ "': cannot write to file: " + ex
.reason
);
250 destroy(java
.util
.List
<String
> names
)
252 DirectoryPrx dir
= _dirs
.getFirst();
254 for(String name
: names
)
258 NodeDesc
[] nodes
= dir
.list();
259 for(NodeDesc node
: nodes
)
263 node
.proxy
.destroy();
265 catch(PermissionDenied ex
)
267 System
.out
.println("cannot remove `" + node
.name
+ "': " + ex
.reason
);
281 System
.out
.println("`" + name
+ "': no such file or directory");
288 catch(PermissionDenied ex
)
290 System
.out
.println("cannot remove `" + name
+ "': " + ex
.reason
);
299 System
.err
.println("error: " + s
);
305 System
.err
.println("warning: " + s
);
311 System
.out
.print("> ");
316 return _in
.readLine();
318 catch(java
.io
.IOException e
)
327 _in
= new java
.io
.BufferedReader(new java
.io
.InputStreamReader(System
.in
));
329 Grammar g
= new Grammar(this);
336 parse(java
.io
.BufferedReader in
)
340 Grammar g
= new Grammar(this);
346 private java
.util
.LinkedList
<DirectoryPrx
> _dirs
;
348 private java
.io
.BufferedReader _in
;