Mercurial Hosting > luan
annotate src/luan/modules/IoLuan.java @ 1349:0cceff521abb
IO error handling
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 27 Feb 2019 12:30:46 -0700 |
parents | e0cf0d108a77 |
children | 836e00bf7ce2 |
rev | line source |
---|---|
167
4c0131c2b650
merge luan/lib into modules
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
164
diff
changeset
|
1 package luan.modules; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
2 |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
3 import java.io.InputStream; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
4 import java.io.OutputStream; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
5 import java.io.PrintStream; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
6 import java.io.Reader; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
7 import java.io.Writer; |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
8 import java.io.StringReader; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
9 import java.io.BufferedReader; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
10 import java.io.BufferedWriter; |
129
486a0641bca4
add pickle client/server;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
125
diff
changeset
|
11 import java.io.BufferedInputStream; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
12 import java.io.BufferedOutputStream; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
13 import java.io.File; |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
14 import java.io.FileInputStream; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
15 import java.io.FileOutputStream; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
16 import java.io.InputStreamReader; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
17 import java.io.OutputStreamWriter; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
18 import java.io.ByteArrayInputStream; |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
19 import java.io.StringWriter; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
20 import java.io.IOException; |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
21 import java.io.FileNotFoundException; |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
22 import java.net.URL; |
701 | 23 import java.net.InetAddress; |
735 | 24 import java.net.Inet4Address; |
25 import java.net.NetworkInterface; | |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
26 import java.net.MalformedURLException; |
701 | 27 import java.net.UnknownHostException; |
1311
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
28 import java.nio.file.Files; |
735 | 29 import java.util.Enumeration; |
706 | 30 import java.util.Map; |
1330 | 31 import luan.Luan; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
32 import luan.LuanTable; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
33 import luan.LuanFunction; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
34 import luan.LuanException; |
725
a741a3a33423
add url support for multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
722
diff
changeset
|
35 import luan.modules.url.LuanUrl; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
36 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
37 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
38 public final class IoLuan { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
39 |
118
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
40 public static String read_console_line(String prompt) throws IOException { |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
41 if( prompt==null ) |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
42 prompt = "> "; |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
43 return System.console().readLine(prompt); |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
44 } |
735708619119
add Debug.debug()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
116
diff
changeset
|
45 |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
46 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
47 public interface LuanWriter { |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
48 public Object out(); |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
49 public void write(Object... args) throws LuanException, IOException; |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
50 public void close() throws IOException; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
51 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
52 |
1280 | 53 public static LuanWriter luanWriter(final PrintStream out) { |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
54 return new LuanWriter() { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
55 |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
56 public Object out() { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
57 return out; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
58 } |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
59 |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
60 public void write(Object... args) throws LuanException { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
61 for( Object obj : args ) { |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
62 out.print( Luan.luanToString(obj) ); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
63 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
64 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
65 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
66 public void close() { |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
67 out.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
68 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
69 }; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
70 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
71 |
1280 | 72 public static LuanWriter luanWriter(final Writer out) { |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
73 return new LuanWriter() { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
74 |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
75 public Object out() { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
76 return out; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
77 } |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
78 |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
79 public void write(Object... args) throws LuanException, IOException { |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
80 for( Object obj : args ) { |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
81 out.write( Luan.luanToString(obj) ); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
82 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
83 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
84 |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
85 public void close() throws IOException { |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
86 out.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
87 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
88 }; |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
89 } |
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
90 |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
91 static LuanFunction lines(final BufferedReader in) { |
1335 | 92 return new LuanFunction(false) { |
93 @Override public Object call(Object[] args) throws LuanException { | |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
94 try { |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
95 if( args.length > 0 ) { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
96 if( args.length > 1 || !"close".equals(args[0]) ) |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
97 throw new LuanException( "the only argument allowed is 'close'" ); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
98 in.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
99 return null; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
100 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
101 String rtn = in.readLine(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
102 if( rtn==null ) |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
103 in.close(); |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
104 return rtn; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
105 } catch(IOException e) { |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
106 throw new LuanException(e); |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
107 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
108 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
109 }; |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
110 } |
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
111 |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
112 static LuanFunction blocks(final InputStream in,final int blockSize) { |
1335 | 113 return new LuanFunction(false) { |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
114 final byte[] a = new byte[blockSize]; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
115 |
1335 | 116 @Override public Object call(Object[] args) throws LuanException { |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
117 try { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
118 if( args.length > 0 ) { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
119 if( args.length > 1 || !"close".equals(args[0]) ) |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
120 throw new LuanException( "the only argument allowed is 'close'" ); |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
121 in.close(); |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
122 return null; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
123 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
124 if( in.read(a) == -1 ) { |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
125 in.close(); |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
126 return null; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
127 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
128 return a; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
129 } catch(IOException e) { |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
611
diff
changeset
|
130 throw new LuanException(e); |
116
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
131 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
132 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
133 }; |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
134 } |
1ff1c32417eb
more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
115
diff
changeset
|
135 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
136 |
758
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
137 private static File objToFile(Object obj) { |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
138 if( obj instanceof String ) { |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
139 return new File((String)obj); |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
140 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
141 if( obj instanceof LuanTable ) { |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
142 LuanTable t = (LuanTable)obj; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
143 Object java = t.rawGet("java"); |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
144 if( java instanceof LuanFile ) { |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
145 LuanFile luanFile = (LuanFile)java; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
146 return luanFile.file; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
147 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
148 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
149 return null; |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
150 } |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
151 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
152 |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
153 public static abstract class LuanIn { |
1278 | 154 protected String charset = null; |
155 | |
1335 | 156 public abstract InputStream inputStream() throws IOException, LuanException; |
147
cc3a0578edac
fix Io.reverse_pickle
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
145
diff
changeset
|
157 public abstract String to_string(); |
705 | 158 public abstract String to_uri_string(); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
159 |
1335 | 160 public Reader reader() throws IOException, LuanException { |
161 InputStream in = inputStream(); | |
1278 | 162 return charset==null ? new InputStreamReader(in) : new InputStreamReader(in,charset); |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
163 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
164 |
1335 | 165 public String read_text() throws IOException, LuanException { |
166 Reader in = reader(); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
167 String s = Utils.readAll(in); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
168 in.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
169 return s; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
170 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
171 |
1335 | 172 public byte[] read_binary() throws IOException, LuanException { |
173 InputStream in = inputStream(); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
174 byte[] a = Utils.readAll(in); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
175 in.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
176 return a; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
177 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
178 |
1335 | 179 public LuanFunction read_lines() throws IOException, LuanException { |
180 return lines(new BufferedReader(reader())); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
181 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
182 |
1335 | 183 public LuanFunction read_blocks(Integer blockSize) throws IOException, LuanException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
184 int n = blockSize!=null ? blockSize : Utils.bufSize; |
1335 | 185 return blocks(inputStream(),n); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
186 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
187 |
1335 | 188 public boolean exists() throws IOException, LuanException { |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
189 try { |
1335 | 190 inputStream().close(); |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
191 return true; |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
192 } catch(FileNotFoundException e) { |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
193 return false; |
1251 | 194 } catch(UnknownHostException e) { |
195 return false; | |
1349 | 196 } catch(LuanException e) { |
197 if( e.getCause() instanceof FileNotFoundException ) | |
198 return false; | |
199 throw e; | |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
200 } |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
201 } |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
202 |
1335 | 203 public long checksum() throws IOException, LuanException { |
1083
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
204 long cs = 0; |
1335 | 205 InputStream in = new BufferedInputStream(inputStream()); |
1083
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
206 int c; |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
207 while( (c=in.read()) != -1 ) { |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
208 cs = 31 * cs + c; |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
209 } |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
210 in.close(); |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
211 return cs; |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
212 } |
e7fb974e0c26
add Io checksum and use it for push
Franklin Schmidt <fschmidt@gmail.com>
parents:
799
diff
changeset
|
213 |
1278 | 214 public String charset() { |
215 return charset; | |
216 } | |
217 | |
218 public void set_charset(String charset) { | |
219 this.charset = charset; | |
220 } | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
221 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
222 |
297
899253043270
remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
296
diff
changeset
|
223 public static final LuanIn defaultStdin = new LuanIn() { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
224 |
1335 | 225 @Override public InputStream inputStream() { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
226 return System.in; |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
227 } |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
228 |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
229 @Override public String to_string() { |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
230 return "<stdin>"; |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
231 } |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
232 |
705 | 233 @Override public String to_uri_string() { |
234 return "stdin:"; | |
235 } | |
236 | |
1335 | 237 @Override public String read_text() throws IOException { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
238 return Utils.readAll(new InputStreamReader(System.in)); |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
239 } |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
240 |
1335 | 241 @Override public byte[] read_binary() throws IOException { |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
242 return Utils.readAll(System.in); |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
243 } |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
244 |
1335 | 245 @Override public boolean exists() { |
265
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
246 return true; |
454a486d9c19
allow IO on files that don't exist
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
264
diff
changeset
|
247 } |
261
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
248 }; |
715c4a6e1169
simplify Io.stdin
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
249 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
250 public static abstract class LuanIO extends LuanIn { |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
251 abstract OutputStream outputStream() throws IOException; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
252 |
1278 | 253 private Writer writer() throws IOException { |
254 OutputStream out = outputStream(); | |
255 return charset==null ? new OutputStreamWriter(out) : new OutputStreamWriter(out,charset); | |
256 } | |
257 | |
1335 | 258 public void write(Object obj) throws LuanException, IOException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
259 if( obj instanceof String ) { |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
260 String s = (String)obj; |
1278 | 261 Writer out = writer(); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
262 out.write(s); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
263 out.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
264 return; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
265 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
266 if( obj instanceof byte[] ) { |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
267 byte[] a = (byte[])obj; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
268 OutputStream out = outputStream(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
269 Utils.copyAll(new ByteArrayInputStream(a),out); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
270 out.close(); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
271 return; |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
272 } |
745
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
273 if( obj instanceof LuanTable ) { |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
274 LuanTable t = (LuanTable)obj; |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
275 Object java = t.rawGet("java"); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
276 if( java instanceof LuanIn ) { |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
277 LuanIn luanIn = (LuanIn)java; |
1335 | 278 InputStream in = luanIn.inputStream(); |
745
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
279 OutputStream out = outputStream(); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
280 Utils.copyAll(in,out); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
281 out.close(); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
282 in.close(); |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
283 return; |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
284 } |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
285 } |
9c1f28b26395
a uri can now write another uri which copies the content
Franklin Schmidt <fschmidt@gmail.com>
parents:
744
diff
changeset
|
286 throw new LuanException( "bad argument #1 to 'write' (string or binary or Io.uri expected)" ); |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
287 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
288 |
1280 | 289 public LuanWriter text_writer() throws IOException { |
290 return luanWriter(new BufferedWriter(writer())); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
291 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
292 |
1280 | 293 public OutputStream binary_writer() throws IOException { |
294 return new BufferedOutputStream(outputStream()); | |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
295 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
296 |
1335 | 297 public void write_text(Object... args) throws LuanException, IOException { |
1278 | 298 LuanWriter luanWriter = luanWriter(new BufferedWriter(writer())); |
1335 | 299 luanWriter.write(args); |
1181
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
300 luanWriter.close(); |
51d1342e25ad
luanhost password handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
1134
diff
changeset
|
301 } |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
302 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
303 |
1280 | 304 public static final LuanIO nullIO = new LuanIO() { |
590 | 305 private final InputStream in = new InputStream() { |
306 @Override public int read() { | |
307 return -1; | |
308 } | |
309 }; | |
310 private final OutputStream out = new OutputStream() { | |
311 @Override public void write(int b) {} | |
312 }; | |
313 | |
1335 | 314 @Override public InputStream inputStream() { |
590 | 315 return in; |
316 } | |
317 | |
318 @Override OutputStream outputStream() { | |
319 return out; | |
320 } | |
321 | |
322 @Override public String to_string() { | |
323 return "<null>"; | |
324 } | |
325 | |
705 | 326 @Override public String to_uri_string() { |
327 return "null:"; | |
328 } | |
329 | |
590 | 330 }; |
331 | |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
332 public static final class LuanString extends LuanIO { |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
333 private String s; |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
334 |
1280 | 335 public LuanString(String s) throws LuanException { |
336 Utils.checkNotNull(s); | |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
337 this.s = s; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
338 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
339 |
1335 | 340 @Override public InputStream inputStream() { |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
341 throw new UnsupportedOperationException(); |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
342 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
343 |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
344 @Override OutputStream outputStream() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
345 throw new UnsupportedOperationException(); |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
346 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
347 |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
348 @Override public String to_string() { |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
349 return "<string>"; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
350 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
351 |
705 | 352 @Override public String to_uri_string() { |
353 return "string:" + s; | |
354 } | |
355 | |
1335 | 356 @Override public Reader reader() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
357 return new StringReader(s); |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
358 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
359 |
1335 | 360 @Override public String read_text() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
361 return s; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
362 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
363 |
1335 | 364 @Override public boolean exists() { |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
365 return true; |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
366 } |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
367 |
1280 | 368 @Override public LuanWriter text_writer() { |
369 return new LuanWriter() { | |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
370 private final Writer out = new StringWriter(); |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
371 |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
372 public Object out() { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
373 return out; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
1251
diff
changeset
|
374 } |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
375 |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
376 public void write(Object... args) throws LuanException, IOException { |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
377 for( Object obj : args ) { |
1334
c88b486a9511
make some Luan methods static
Franklin Schmidt <fschmidt@gmail.com>
parents:
1333
diff
changeset
|
378 out.write( Luan.luanToString(obj) ); |
421
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
379 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
380 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
381 |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
382 public void close() throws IOException { |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
383 s = out.toString(); |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
384 } |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
385 }; |
b31d614343e8
add Io.LuanString.text_writer();
Franklin Schmidt <fschmidt@gmail.com>
parents:
411
diff
changeset
|
386 } |
314
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
387 } |
7c4f52262213
add Io.schemes.string
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
310
diff
changeset
|
388 |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
389 public static final class LuanFile extends LuanIO { |
710
63cda9eec9a0
make LuanFile.file public
Franklin Schmidt <fschmidt@gmail.com>
parents:
706
diff
changeset
|
390 public final File file; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
391 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
392 public LuanFile(Luan luan,String path) throws LuanException { |
1280 | 393 this(luan,new File(path)); |
394 } | |
395 | |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
396 private LuanFile(Luan luan,File file) throws LuanException { |
203
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
397 this(file); |
301
a6bf8ff720f8
add java security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
299
diff
changeset
|
398 check(luan,"file:"+file.toString()); |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
399 } |
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
400 |
202
75750ceb45ee
add LuanState.registry
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
171
diff
changeset
|
401 private LuanFile(File file) { |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
402 this.file = file; |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
403 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
404 |
1335 | 405 @Override public InputStream inputStream() throws IOException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
406 return new FileInputStream(file); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
407 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
408 |
144
2e92f0a6fcac
add Reactionary.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
143
diff
changeset
|
409 @Override OutputStream outputStream() throws IOException { |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
410 return new FileOutputStream(file); |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
411 } |
143
fcb81fa2df0d
handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
142
diff
changeset
|
412 |
147
cc3a0578edac
fix Io.reverse_pickle
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
145
diff
changeset
|
413 @Override public String to_string() { |
143
fcb81fa2df0d
handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
142
diff
changeset
|
414 return file.toString(); |
fcb81fa2df0d
handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
142
diff
changeset
|
415 } |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
416 |
705 | 417 @Override public String to_uri_string() { |
418 return "file:" + file.toString(); | |
419 } | |
420 | |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
421 public LuanFile child(Luan luan,String name) throws LuanException { |
1280 | 422 return new LuanFile(luan,new File(file,name)); |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
423 } |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
424 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
425 public LuanTable children(Luan luan) throws LuanException { |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
426 File[] files = file.listFiles(); |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
427 if( files==null ) |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
428 return null; |
1267 | 429 LuanTable list = new LuanTable(luan); |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
430 for( File f : files ) { |
1280 | 431 list.rawPut(list.rawLength()+1,new LuanFile(luan,f)); |
164
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
432 } |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
433 return list; |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
434 } |
78ba371ea1e9
merge Os.File into Io.File and remove Os
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
147
diff
changeset
|
435 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
436 public LuanFile parent(Luan luan) throws LuanException, IOException { |
323
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
437 File parent = file.getParentFile(); |
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
438 if( parent==null ) |
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
439 parent = file.getCanonicalFile().getParentFile(); |
1280 | 440 return new LuanFile(luan,parent); |
323
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
441 } |
cd2924a1052c
improve testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
314
diff
changeset
|
442 |
1335 | 443 @Override public boolean exists() { |
237
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
444 return file.exists(); |
145
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
445 } |
90f38a5d0e0a
add Os.File
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
144
diff
changeset
|
446 |
758
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
447 public void rename_to(Object destObj) throws LuanException { |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
448 File dest = objToFile(destObj); |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
449 if( dest==null ) |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
450 throw new LuanException( "bad argument #1 to 'objToFile' (string or file table expected)" ); |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
451 if( !file.renameTo(dest) ) |
c29d11d675fd
added Json.toString() and rpc now sends tables as json
Franklin Schmidt <fschmidt@gmail.com>
parents:
755
diff
changeset
|
452 throw new LuanException("couldn't rename file "+file+" to "+dest); |
293
a50e88d3547c
add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
283
diff
changeset
|
453 } |
a50e88d3547c
add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
283
diff
changeset
|
454 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
455 public LuanFile canonical(Luan luan) throws LuanException, IOException { |
1280 | 456 return new LuanFile(luan,file.getCanonicalFile()); |
310
9e9bb358b2df
add File.canonical()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
301
diff
changeset
|
457 } |
9e9bb358b2df
add File.canonical()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
301
diff
changeset
|
458 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
459 public LuanFile create_temp_file(Luan luan,String prefix,String suffix) throws LuanException, IOException { |
749
85f5444fb7d4
add rcp lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents:
748
diff
changeset
|
460 File tmp = File.createTempFile(prefix,suffix,file); |
1280 | 461 return new LuanFile(luan,tmp); |
749
85f5444fb7d4
add rcp lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents:
748
diff
changeset
|
462 } |
85f5444fb7d4
add rcp lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents:
748
diff
changeset
|
463 |
751
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
464 public void delete() throws LuanException { |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
465 if( file.exists() ) |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
466 delete(file); |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
467 } |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
468 |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
469 private static void delete(File file) throws LuanException { |
1313 | 470 File[] children = file.listFiles(); |
471 if( children != null && !isSymbolicLink(file) ) { | |
472 for( File child : children ) { | |
473 delete(child); | |
751
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
474 } |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
475 } |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
476 if( !file.delete() ) |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
477 throw new LuanException("couldn't delete file "+file); |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
478 } |
558740169005
improve file delete()
Franklin Schmidt <fschmidt@gmail.com>
parents:
749
diff
changeset
|
479 |
752 | 480 public void mkdir() throws LuanException { |
481 if( !file.isDirectory() ) { | |
482 if( !file.mkdirs() ) | |
483 throw new LuanException("couldn't make directory "+file); | |
484 } | |
485 } | |
486 | |
768
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
487 public void set_last_modified(long time) throws LuanException { |
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
488 if( !file.setLastModified(time) ) |
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
489 throw new LuanException("couldn't set_last_modified on "+file); |
ef0fc9ad30c1
add file.set_last_modified()
Franklin Schmidt <fschmidt@gmail.com>
parents:
765
diff
changeset
|
490 } |
1311
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
491 |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
492 private static boolean isSymbolicLink(File file) { |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
493 return Files.isSymbolicLink(file.toPath()); |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
494 } |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
495 |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
496 public boolean is_symbolic_link() { |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
497 return isSymbolicLink(file); |
ca742d51b31f
don't delete into symbolic links
Franklin Schmidt <fschmidt@gmail.com>
parents:
1280
diff
changeset
|
498 } |
125
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
499 } |
0cd559a16758
add sockets
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
124
diff
changeset
|
500 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
501 public static LuanUrl classpath(Luan luan,String name) throws LuanException { |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
502 if( name.contains("//") ) |
260
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
503 return null; |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
504 String path = name; |
301
a6bf8ff720f8
add java security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
299
diff
changeset
|
505 check(luan,"classpath:"+path); |
260
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
506 URL url; |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
507 if( !path.contains("#") ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
508 url = ClassLoader.getSystemResource(path); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
509 } else { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
510 String[] a = path.split("#"); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
511 url = ClassLoader.getSystemResource(a[0]); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
512 if( url==null ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
513 for( int i=1; i<a.length; i++ ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
514 url = ClassLoader.getSystemResource(a[0]+"/"+a[i]); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
515 if( url != null ) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
516 try { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
517 url = new URL(url,"."); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
518 } catch(MalformedURLException e) { |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
519 throw new RuntimeException(e); |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
520 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
521 break; |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
522 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
523 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
524 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
525 } |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
526 if( url != null ) |
1280 | 527 return new LuanUrl(url,null); |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
528 |
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
263
diff
changeset
|
529 return null; |
260
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
530 } |
f1f7d8c7e94e
add Io.protocols
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
531 |
203
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
532 |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
533 public static class BaseOs extends LuanIO { |
761
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
534 private final String cmd; |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
535 final File dir; |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
536 Process proc; |
734 | 537 |
1267 | 538 private BaseOs(String cmd,LuanTable options) throws IOException, LuanException { |
761
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
539 this.cmd = cmd; |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
540 File dir = null; |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
541 if( options != null ) { |
1267 | 542 Map map = options.asMap(); |
761
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
543 Object obj = map.remove("dir"); |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
544 dir = objToFile(obj); |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
545 if( dir==null ) |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
546 throw new LuanException( "bad option 'dir' (string or file table expected)" ); |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
547 if( !map.isEmpty() ) |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
548 throw new LuanException( "unrecognized options: "+map ); |
99356cfde2f0
remove horrible java zip
Franklin Schmidt <fschmidt@gmail.com>
parents:
759
diff
changeset
|
549 } |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
550 this.dir = dir; |
734 | 551 } |
552 | |
1335 | 553 @Override public InputStream inputStream() throws IOException { |
734 | 554 return proc.getInputStream(); |
555 } | |
556 | |
557 @Override OutputStream outputStream() throws IOException { | |
558 return proc.getOutputStream(); | |
559 } | |
560 | |
561 @Override public String to_string() { | |
562 return proc.toString(); | |
563 } | |
564 | |
565 @Override public String to_uri_string() { | |
566 throw new UnsupportedOperationException(); | |
567 } | |
568 | |
1335 | 569 @Override public boolean exists() { |
734 | 570 return true; |
571 } | |
572 | |
573 public void wait_for() | |
574 throws IOException, LuanException | |
575 { | |
576 try { | |
577 proc.waitFor(); | |
578 } catch(InterruptedException e) { | |
579 throw new RuntimeException(e); | |
580 } | |
581 int exitVal = proc.exitValue(); | |
582 if( exitVal != 0 ) { | |
583 Reader err = new InputStreamReader(proc.getErrorStream()); | |
1107 | 584 String error = "exit value "+exitVal+" in: "+cmd+"\n"+Utils.readAll(err); |
734 | 585 err.close(); |
586 throw new LuanException(error); | |
587 } | |
588 } | |
589 | |
1335 | 590 @Override public String read_text() throws IOException, LuanException { |
591 String s = super.read_text(); | |
734 | 592 wait_for(); |
593 return s; | |
594 } | |
595 } | |
596 | |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
597 public static final class LuanOs extends BaseOs { |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
598 public LuanOs(Luan luan,String cmd,LuanTable options) throws IOException, LuanException { |
1267 | 599 super(cmd,options); |
1128 | 600 check(luan,"os:"+cmd); |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
601 this.proc = Runtime.getRuntime().exec(cmd,null,dir); |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
602 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
603 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
604 |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
605 public static final class LuanBash extends BaseOs { |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
606 public LuanBash(Luan luan,String cmd,LuanTable options) throws IOException, LuanException { |
1267 | 607 super(cmd,options); |
1128 | 608 check(luan,"bash:"+cmd); |
1105
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
609 this.proc = Runtime.getRuntime().exec(new String[]{"bash","-c",cmd},null,dir); |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
610 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
611 } |
27bf094f0ae3
add "bash" Io scheme
Franklin Schmidt <fschmidt@gmail.com>
parents:
1083
diff
changeset
|
612 |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
613 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
614 public static class LuanInput extends LuanIn { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
615 private final InputStream in; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
616 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
617 public LuanInput(InputStream in) { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
618 this.in = in; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
619 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
620 |
1335 | 621 @Override public InputStream inputStream() { |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
622 return in; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
623 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
624 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
625 @Override public String to_string() { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
626 return "<input_stream>"; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
627 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
628 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
629 @Override public String to_uri_string() { |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
630 throw new UnsupportedOperationException(); |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
631 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
632 |
1335 | 633 @Override public boolean exists() { |
1120
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
634 return true; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
635 } |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
636 }; |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
637 |
e8fc6712b468
luan Rpc uses luan.lib.rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
1107
diff
changeset
|
638 |
701 | 639 public static String ip(String domain) { |
640 try { | |
641 return InetAddress.getByName(domain).getHostAddress(); | |
642 } catch(UnknownHostException e) { | |
643 return null; | |
644 } | |
645 } | |
765 | 646 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
647 public static LuanTable my_ips(Luan luan) throws IOException, LuanException { |
1267 | 648 LuanTable tbl = new LuanTable(luan); |
735 | 649 for( Enumeration<NetworkInterface> e1 = NetworkInterface.getNetworkInterfaces(); e1.hasMoreElements(); ) { |
650 NetworkInterface ni = e1.nextElement(); | |
651 for( Enumeration<InetAddress> e2 = ni.getInetAddresses(); e2.hasMoreElements(); ) { | |
652 InetAddress ia = e2.nextElement(); | |
653 if( ia instanceof Inet4Address ) | |
1330 | 654 tbl.put(ia.getHostAddress(),true); |
735 | 655 } |
656 } | |
657 return tbl; | |
658 } | |
765 | 659 |
706 | 660 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1330
diff
changeset
|
661 private static void check(Luan luan,String name) throws LuanException { |
1330 | 662 Luan.checkSecurity(luan,"uri",name); |
203
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
663 } |
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
664 |
99eef1d0e706
IO security
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
665 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
666 private void IoLuan() {} // never |
115
eacf6ce1b47d
add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
667 } |