Recovered from cvs revision 2007-05-27 05:11:00
This commit is contained in:
parent
38e1af83e6
commit
70b8ed1f8d
187
ase/awk/Awk.java
187
ase/awk/Awk.java
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.java,v 1.8 2007/05/25 14:41:48 bacon Exp $
|
* $Id: Awk.java,v 1.10 2007/05/26 10:52:48 bacon Exp $
|
||||||
*
|
*
|
||||||
* {License}
|
* {License}
|
||||||
*/
|
*/
|
||||||
@ -50,15 +50,14 @@ public abstract class Awk
|
|||||||
public Awk () throws Exception
|
public Awk () throws Exception
|
||||||
{
|
{
|
||||||
this.handle = 0;
|
this.handle = 0;
|
||||||
|
|
||||||
open ();
|
open ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* == just in case == */
|
/* == just in case == */
|
||||||
protected void finalize () throws Throwable
|
protected void finalize () throws Throwable
|
||||||
{
|
{
|
||||||
super.finalize ();
|
|
||||||
if (handle != 0) close ();
|
if (handle != 0) close ();
|
||||||
|
super.finalize ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* == native methods == */
|
/* == native methods == */
|
||||||
@ -80,9 +79,9 @@ public abstract class Awk
|
|||||||
String name, int min_args, int max_args) throws Exception;
|
String name, int min_args, int max_args) throws Exception;
|
||||||
private native void delbfn (String name) throws Exception;
|
private native void delbfn (String name) throws Exception;
|
||||||
|
|
||||||
private native void setfilename (
|
native void setfilename (
|
||||||
long runid, String name) throws Exception;
|
long runid, String name) throws Exception;
|
||||||
private native void setofilename (
|
native void setofilename (
|
||||||
long runid, String name) throws Exception;
|
long runid, String name) throws Exception;
|
||||||
|
|
||||||
private native Object strtonum (
|
private native Object strtonum (
|
||||||
@ -266,21 +265,51 @@ public abstract class Awk
|
|||||||
/* == external io interface == */
|
/* == external io interface == */
|
||||||
protected int openExtio (Extio extio)
|
protected int openExtio (Extio extio)
|
||||||
{
|
{
|
||||||
int type = extio.getType ();
|
switch (extio.getType())
|
||||||
if (type == Extio.TYPE_CONSOLE) return openConsole (extio);
|
{
|
||||||
if (type == Extio.TYPE_FILE) return openFile (extio);
|
case Extio.TYPE_CONSOLE:
|
||||||
if (type == Extio.TYPE_PIPE) return openPipe (extio);
|
{
|
||||||
//if (type == Extio.TYPE_COPROC) return openCoproc (extio);
|
Console con = new Console (this, extio);
|
||||||
|
int n = openConsole (con);
|
||||||
|
extio.setHandle (con);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
case Extio.TYPE_FILE:
|
||||||
|
{
|
||||||
|
File file = new File (this, extio);
|
||||||
|
int n = openFile (file);
|
||||||
|
extio.setHandle (file);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
case Extio.TYPE_PIPE:
|
||||||
|
{
|
||||||
|
Pipe pipe = new Pipe (this, extio);
|
||||||
|
int n = openPipe (pipe);
|
||||||
|
extio.setHandle (pipe);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int closeExtio (Extio extio)
|
protected int closeExtio (Extio extio)
|
||||||
{
|
{
|
||||||
int type = extio.getType ();
|
switch (extio.getType())
|
||||||
if (type == Extio.TYPE_CONSOLE) return closeConsole (extio);
|
{
|
||||||
if (type == Extio.TYPE_FILE) return closeFile (extio);
|
case Extio.TYPE_CONSOLE:
|
||||||
if (type == Extio.TYPE_PIPE) return closePipe (extio);
|
return closeConsole (
|
||||||
//if (type == Extio.TYPE_COPROC) return closeCoproc (extio);
|
(Console)extio.getHandle());
|
||||||
|
|
||||||
|
case Extio.TYPE_FILE:
|
||||||
|
return closeFile ((File)extio.getHandle());
|
||||||
|
|
||||||
|
case Extio.TYPE_PIPE:
|
||||||
|
return closePipe ((Pipe)extio.getHandle());
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,15 +321,28 @@ public abstract class Awk
|
|||||||
// the end of the stream.
|
// the end of the stream.
|
||||||
if (len <= 0) return -1;
|
if (len <= 0) return -1;
|
||||||
|
|
||||||
int type = extio.getType ();
|
switch (extio.getType())
|
||||||
if (type == Extio.TYPE_CONSOLE)
|
{
|
||||||
return readConsole (extio, buf, len);
|
|
||||||
if (type == Extio.TYPE_FILE)
|
case Extio.TYPE_CONSOLE:
|
||||||
return readFile (extio, buf, len);
|
{
|
||||||
if (type == Extio.TYPE_PIPE)
|
return readConsole (
|
||||||
return readPipe (extio, buf, len);
|
(Console)extio.getHandle(), buf, len);
|
||||||
//if (type == Extio.TYPE_COPROC)
|
}
|
||||||
// return readCoproc (extio, buf, len);
|
|
||||||
|
case Extio.TYPE_FILE:
|
||||||
|
{
|
||||||
|
return readFile (
|
||||||
|
(File)extio.getHandle(), buf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
case Extio.TYPE_PIPE:
|
||||||
|
{
|
||||||
|
return readPipe (
|
||||||
|
(Pipe)extio.getHandle(), buf, len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,51 +350,86 @@ public abstract class Awk
|
|||||||
{
|
{
|
||||||
if (len <= 0) return -1;
|
if (len <= 0) return -1;
|
||||||
|
|
||||||
int type = extio.getType ();
|
switch (extio.getType())
|
||||||
if (type == Extio.TYPE_CONSOLE)
|
{
|
||||||
return writeConsole (extio, buf, len);
|
|
||||||
if (type == Extio.TYPE_FILE)
|
case Extio.TYPE_CONSOLE:
|
||||||
return writeFile (extio, buf, len);
|
{
|
||||||
if (type == Extio.TYPE_PIPE)
|
return writeConsole (
|
||||||
return writePipe (extio, buf, len);
|
(Console)extio.getHandle(), buf, len);
|
||||||
//if (type == Extio.TYPE_COPROC)
|
}
|
||||||
// return writeCoproc (extio, buf, len);
|
|
||||||
|
case Extio.TYPE_FILE:
|
||||||
|
{
|
||||||
|
return writeFile (
|
||||||
|
(File)extio.getHandle(), buf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
case Extio.TYPE_PIPE:
|
||||||
|
{
|
||||||
|
return writePipe (
|
||||||
|
(Pipe)extio.getHandle(), buf, len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int flushExtio (Extio extio)
|
protected int flushExtio (Extio extio)
|
||||||
{
|
{
|
||||||
int type = extio.getType ();
|
switch (extio.getType())
|
||||||
if (type == Extio.TYPE_CONSOLE) return flushConsole (extio);
|
{
|
||||||
if (type == Extio.TYPE_FILE) return flushFile (extio);
|
|
||||||
if (type == Extio.TYPE_PIPE) return flushPipe (extio);
|
case Extio.TYPE_CONSOLE:
|
||||||
//if (type == Extio.TYPE_COPROC) return flushCoproc (extio);
|
{
|
||||||
|
return flushConsole ((Console)extio.getHandle());
|
||||||
|
}
|
||||||
|
|
||||||
|
case Extio.TYPE_FILE:
|
||||||
|
{
|
||||||
|
return flushFile ((File)extio.getHandle());
|
||||||
|
}
|
||||||
|
|
||||||
|
case Extio.TYPE_PIPE:
|
||||||
|
{
|
||||||
|
return flushPipe ((Pipe)extio.getHandle());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int nextExtio (Extio extio)
|
protected int nextExtio (Extio extio)
|
||||||
{
|
{
|
||||||
int type = extio.getType ();
|
int type = extio.getType ();
|
||||||
if (type == Extio.TYPE_CONSOLE) return nextConsole (extio);
|
|
||||||
|
switch (extio.getType())
|
||||||
|
{
|
||||||
|
case Extio.TYPE_CONSOLE:
|
||||||
|
{
|
||||||
|
return nextConsole ((Console)extio.getHandle());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract int openConsole (Extio extio);
|
protected abstract int openConsole (Console con);
|
||||||
protected abstract int closeConsole (Extio extio);
|
protected abstract int closeConsole (Console con);
|
||||||
protected abstract int readConsole (Extio extio, char[] buf, int len);
|
protected abstract int readConsole (Console con, char[] buf, int len);
|
||||||
protected abstract int writeConsole (Extio extio, char[] buf, int len);
|
protected abstract int writeConsole (Console con, char[] buf, int len);
|
||||||
protected abstract int flushConsole (Extio extio);
|
protected abstract int flushConsole (Console con);
|
||||||
protected abstract int nextConsole (Extio extio);
|
protected abstract int nextConsole (Console con);
|
||||||
|
|
||||||
protected abstract int openFile (Extio extio);
|
protected abstract int openFile (File file);
|
||||||
protected abstract int closeFile (Extio extio);
|
protected abstract int closeFile (File file);
|
||||||
protected abstract int readFile (Extio extio, char[] buf, int len);
|
protected abstract int readFile (File file, char[] buf, int len);
|
||||||
protected abstract int writeFile (Extio extio, char[] buf, int len);
|
protected abstract int writeFile (File file, char[] buf, int len);
|
||||||
protected abstract int flushFile (Extio extio);
|
protected abstract int flushFile (File file);
|
||||||
|
|
||||||
protected abstract int openPipe (Extio extio);
|
protected abstract int openPipe (Pipe pipe);
|
||||||
protected abstract int closePipe (Extio extio);
|
protected abstract int closePipe (Pipe pipe);
|
||||||
protected abstract int readPipe (Extio extio, char[] buf, int len);
|
protected abstract int readPipe (Pipe pipe, char[] buf, int len);
|
||||||
protected abstract int writePipe (Extio extio, char[] buf, int len);
|
protected abstract int writePipe (Pipe pipe, char[] buf, int len);
|
||||||
protected abstract int flushPipe (Extio extio);
|
protected abstract int flushPipe (Pipe pipe);
|
||||||
}
|
}
|
||||||
|
28
ase/awk/Console.java
Normal file
28
ase/awk/Console.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* $Id: Console.java,v 1.2 2007/05/26 10:52:48 bacon Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
package ase.awk;
|
||||||
|
|
||||||
|
public class Console extends IO
|
||||||
|
{
|
||||||
|
public static final int MODE_READ = Extio.MODE_CONSOLE_READ;
|
||||||
|
public static final int MODE_WRITE = Extio.MODE_CONSOLE_WRITE;
|
||||||
|
|
||||||
|
protected Console (Awk awk, Extio extio)
|
||||||
|
{
|
||||||
|
super (awk, extio);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileName (String name) throws Exception
|
||||||
|
{
|
||||||
|
if (getMode() == MODE_READ)
|
||||||
|
{
|
||||||
|
awk.setfilename (getRunId(), name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
awk.setofilename (getRunId(), name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,27 +1,27 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Extio.java,v 1.3 2007/04/30 05:47:33 bacon Exp $
|
* $Id: Extio.java,v 1.5 2007/05/26 10:52:48 bacon Exp $
|
||||||
*
|
*
|
||||||
* {License}
|
* {License}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package ase.awk;
|
package ase.awk;
|
||||||
|
|
||||||
public class Extio
|
class Extio
|
||||||
{
|
{
|
||||||
public static final int TYPE_PIPE = 0;
|
protected static final int TYPE_PIPE = 0;
|
||||||
public static final int TYPE_COPROC = 1;
|
protected static final int TYPE_COPROC = 1;
|
||||||
public static final int TYPE_FILE = 2;
|
protected static final int TYPE_FILE = 2;
|
||||||
public static final int TYPE_CONSOLE = 3;
|
protected static final int TYPE_CONSOLE = 3;
|
||||||
|
|
||||||
public static final int MODE_PIPE_READ = 0;
|
protected static final int MODE_PIPE_READ = 0;
|
||||||
public static final int MODE_PIPE_WRITE = 1;
|
protected static final int MODE_PIPE_WRITE = 1;
|
||||||
|
|
||||||
public static final int MODE_FILE_READ = 0;
|
protected static final int MODE_FILE_READ = 0;
|
||||||
public static final int MODE_FILE_WRITE = 1;
|
protected static final int MODE_FILE_WRITE = 1;
|
||||||
public static final int MODE_FILE_APPEND = 2;
|
protected static final int MODE_FILE_APPEND = 2;
|
||||||
|
|
||||||
public static final int MODE_CONSOLE_READ = 0;
|
protected static final int MODE_CONSOLE_READ = 0;
|
||||||
public static final int MODE_CONSOLE_WRITE = 1;
|
protected static final int MODE_CONSOLE_WRITE = 1;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private int type;
|
private int type;
|
||||||
@ -67,9 +67,4 @@ public class Extio
|
|||||||
{
|
{
|
||||||
return this.handle;
|
return this.handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void finalize () throws Throwable
|
|
||||||
{
|
|
||||||
super.finalize ();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
18
ase/awk/File.java
Normal file
18
ase/awk/File.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* $Id: File.java,v 1.2 2007/05/26 10:52:48 bacon Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
package ase.awk;
|
||||||
|
|
||||||
|
public class File extends IO
|
||||||
|
{
|
||||||
|
public static final int MODE_READ = Extio.MODE_FILE_READ;
|
||||||
|
public static final int MODE_WRITE = Extio.MODE_FILE_WRITE;
|
||||||
|
public static final int MODE_APPEND = Extio.MODE_FILE_APPEND;
|
||||||
|
|
||||||
|
protected File (Awk awk, Extio extio)
|
||||||
|
{
|
||||||
|
super (awk, extio);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
44
ase/awk/IO.java
Normal file
44
ase/awk/IO.java
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* $Id: IO.java,v 1.1 2007/05/26 10:52:48 bacon Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
package ase.awk;
|
||||||
|
|
||||||
|
class IO
|
||||||
|
{
|
||||||
|
protected Awk awk;
|
||||||
|
protected Extio extio;
|
||||||
|
protected Object handle;
|
||||||
|
|
||||||
|
protected IO (Awk awk, Extio extio)
|
||||||
|
{
|
||||||
|
this.awk = awk;
|
||||||
|
this.extio = extio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName ()
|
||||||
|
{
|
||||||
|
return extio.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMode ()
|
||||||
|
{
|
||||||
|
return extio.getMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getRunId ()
|
||||||
|
{
|
||||||
|
return extio.getRunId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHandle (Object handle)
|
||||||
|
{
|
||||||
|
this.handle = handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getHandle ()
|
||||||
|
{
|
||||||
|
return handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
16
ase/awk/Pipe.java
Normal file
16
ase/awk/Pipe.java
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* $Id: Pipe.java,v 1.2 2007/05/26 10:52:48 bacon Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
package ase.awk;
|
||||||
|
|
||||||
|
public class Pipe extends IO
|
||||||
|
{
|
||||||
|
public static final int MODE_READ = Extio.MODE_PIPE_READ;
|
||||||
|
public static final int MODE_WRITE = Extio.MODE_PIPE_WRITE;
|
||||||
|
|
||||||
|
protected Pipe (Awk awk, Extio extio)
|
||||||
|
{
|
||||||
|
super (awk, extio);
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: StdAwk.java,v 1.9 2007/05/25 14:41:48 bacon Exp $
|
* $Id: StdAwk.java,v 1.10 2007/05/26 10:23:52 bacon Exp $
|
||||||
*
|
*
|
||||||
* {License}
|
* {License}
|
||||||
*/
|
*/
|
||||||
@ -40,139 +40,124 @@ public abstract class StdAwk extends Awk
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* == file interface == */
|
/* == file interface == */
|
||||||
protected int openFile (Extio extio)
|
protected int openFile (File file)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode();
|
int mode = file.getMode();
|
||||||
|
|
||||||
if (mode == Extio.MODE_FILE_READ)
|
if (mode == File.MODE_READ)
|
||||||
{
|
{
|
||||||
FileInputStream fis;
|
FileInputStream fis;
|
||||||
Reader isr;
|
|
||||||
|
|
||||||
try { fis = new FileInputStream (extio.getName()); }
|
try { fis = new FileInputStream (file.getName()); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
isr = new BufferedReader (new InputStreamReader (fis));
|
Reader rd = new BufferedReader (
|
||||||
extio.setHandle (isr);
|
new InputStreamReader (fis));
|
||||||
|
file.setHandle (rd);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_FILE_WRITE)
|
else if (mode == File.MODE_WRITE)
|
||||||
{
|
{
|
||||||
FileOutputStream fos;
|
FileOutputStream fos;
|
||||||
Writer osw;
|
|
||||||
|
|
||||||
try { fos = new FileOutputStream (extio.getName()); }
|
try { fos = new FileOutputStream (file.getName()); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
osw = new BufferedWriter (new OutputStreamWriter (fos));
|
Writer wr = new BufferedWriter (
|
||||||
extio.setHandle (osw);
|
new OutputStreamWriter (fos));
|
||||||
|
file.setHandle (wr);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_FILE_APPEND)
|
else if (mode == File.MODE_APPEND)
|
||||||
{
|
{
|
||||||
FileOutputStream fos;
|
FileOutputStream fos;
|
||||||
Writer osw;
|
|
||||||
|
|
||||||
try { fos = new FileOutputStream (extio.getName(), true); }
|
try { fos = new FileOutputStream (file.getName(), true); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
osw = new BufferedWriter (new OutputStreamWriter (fos));
|
Writer wr = new BufferedWriter (
|
||||||
extio.setHandle (osw);
|
new OutputStreamWriter (fos));
|
||||||
|
file.setHandle (wr);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int closeFile (Extio extio)
|
protected int closeFile (File file)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode();
|
int mode = file.getMode();
|
||||||
|
|
||||||
if (mode == Extio.MODE_FILE_READ)
|
if (mode == File.MODE_READ)
|
||||||
{
|
|
||||||
Reader isr;
|
|
||||||
isr = (Reader)extio.getHandle();
|
|
||||||
if (isr != null)
|
|
||||||
{
|
{
|
||||||
|
Reader isr = (Reader)file.getHandle();
|
||||||
try { isr.close (); }
|
try { isr.close (); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_FILE_WRITE)
|
else if (mode == File.MODE_WRITE)
|
||||||
{
|
|
||||||
Writer osw;
|
|
||||||
osw = (Writer)extio.getHandle();
|
|
||||||
if (osw != null)
|
|
||||||
{
|
{
|
||||||
|
Writer osw = (Writer)file.getHandle();
|
||||||
try { osw.close (); }
|
try { osw.close (); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_FILE_APPEND)
|
else if (mode == File.MODE_APPEND)
|
||||||
{
|
|
||||||
Writer osw;
|
|
||||||
osw = (Writer)extio.getHandle();
|
|
||||||
if (osw != null)
|
|
||||||
{
|
{
|
||||||
|
Writer osw = (Writer)file.getHandle();
|
||||||
try { osw.close (); }
|
try { osw.close (); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int readFile (Extio extio, char[] buf, int len)
|
protected int readFile (File file, char[] buf, int len)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode();
|
int mode = file.getMode();
|
||||||
|
|
||||||
if (mode == Extio.MODE_FILE_READ)
|
if (mode == File.MODE_READ)
|
||||||
{
|
{
|
||||||
Reader isr;
|
Reader rd = (Reader)file.getHandle();
|
||||||
isr = (Reader)extio.getHandle();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
len = isr.read (buf, 0, len);
|
len = rd.read (buf, 0, len);
|
||||||
if (len == -1) len = 0;
|
if (len == -1) return 0;
|
||||||
}
|
}
|
||||||
catch (IOException e) { len = -1; }
|
catch (IOException e) { return -1; }
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int writeFile (Extio extio, char[] buf, int len)
|
protected int writeFile (File file, char[] buf, int len)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode();
|
int mode = file.getMode();
|
||||||
|
|
||||||
if (mode == Extio.MODE_FILE_WRITE ||
|
if (mode == File.MODE_WRITE ||
|
||||||
mode == Extio.MODE_FILE_APPEND)
|
mode == File.MODE_APPEND)
|
||||||
{
|
{
|
||||||
Writer osw;
|
Writer wr = (Writer)file.getHandle();
|
||||||
osw = (Writer)extio.getHandle();
|
try { wr.write (buf, 0, len); }
|
||||||
try { osw.write (buf, 0, len); }
|
catch (IOException e) { return -1; }
|
||||||
catch (IOException e) { len = -1; }
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int flushFile (Extio extio)
|
protected int flushFile (File file)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = file.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_FILE_WRITE ||
|
if (mode == File.MODE_WRITE ||
|
||||||
mode == Extio.MODE_FILE_APPEND)
|
mode == File.MODE_APPEND)
|
||||||
{
|
{
|
||||||
Writer osw;
|
Writer wr = (Writer)file.getHandle ();
|
||||||
osw = (Writer)extio.getHandle ();
|
try { wr.flush (); }
|
||||||
try { osw.flush (); }
|
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -180,82 +165,126 @@ public abstract class StdAwk extends Awk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class RWE
|
||||||
|
{
|
||||||
|
public Writer wr;
|
||||||
|
public Reader rd;
|
||||||
|
public Reader er;
|
||||||
|
|
||||||
|
public RWE (Writer wr, Reader rd, Reader er)
|
||||||
|
{
|
||||||
|
this.wr = wr;
|
||||||
|
this.rd = rd;
|
||||||
|
this.er = er;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/* == pipe interface == */
|
/* == pipe interface == */
|
||||||
protected int openPipe (Extio extio)
|
protected int openPipe (Pipe pipe)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode();
|
int mode = pipe.getMode();
|
||||||
|
|
||||||
if (mode == Extio.MODE_PIPE_READ)
|
if (mode == Pipe.MODE_READ)
|
||||||
{
|
{
|
||||||
|
|
||||||
Process proc;
|
Process proc;
|
||||||
Reader isr;
|
|
||||||
|
|
||||||
try { proc = popen (extio.getName()); }
|
try { proc = popen (pipe.getName()); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
isr = new BufferedReader (new InputStreamReader (proc.getInputStream()));
|
Reader rd = new BufferedReader (
|
||||||
extio.setHandle (isr);
|
new InputStreamReader (proc.getInputStream()));
|
||||||
|
|
||||||
|
pipe.setHandle (rd);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_PIPE_WRITE)
|
else if (mode == Pipe.MODE_WRITE)
|
||||||
{
|
{
|
||||||
Process proc;
|
Process proc;
|
||||||
Writer osw;
|
|
||||||
|
|
||||||
try { proc = popen (extio.getName()); }
|
try { proc = popen (pipe.getName()); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
osw = new BufferedWriter (new OutputStreamWriter (proc.getOutputStream()));
|
Writer wr = new BufferedWriter (
|
||||||
extio.setHandle (osw);
|
new OutputStreamWriter (proc.getOutputStream()));
|
||||||
|
Reader rd = new BufferedReader (
|
||||||
|
new InputStreamReader (proc.getInputStream()));
|
||||||
|
Reader er = new BufferedReader (
|
||||||
|
new InputStreamReader (proc.getErrorStream()));
|
||||||
|
|
||||||
|
pipe.setHandle (new RWE (wr, rd, er));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int closePipe (Extio extio)
|
protected int closePipe (Pipe pipe)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode();
|
int mode = pipe.getMode();
|
||||||
|
|
||||||
if (mode == Extio.MODE_PIPE_READ)
|
if (mode == Pipe.MODE_READ)
|
||||||
{
|
{
|
||||||
Reader isr;
|
Reader rd = (Reader)pipe.getHandle();
|
||||||
isr = (Reader)extio.getHandle();
|
try { rd.close (); }
|
||||||
if (isr != null)
|
|
||||||
{
|
|
||||||
try { isr.close (); }
|
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_PIPE_WRITE)
|
else if (mode == Pipe.MODE_WRITE)
|
||||||
{
|
{
|
||||||
Writer osw;
|
//Writer wr = (Writer)pipe.getHandle();
|
||||||
osw = (Writer)extio.getHandle();
|
RWE rwe = (RWE)pipe.getHandle();
|
||||||
if (osw != null)
|
|
||||||
{
|
try { rwe.wr.close (); }
|
||||||
try { osw.close (); }
|
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
char[] buf = new char[256];
|
||||||
}
|
|
||||||
|
|
||||||
protected int readPipe (Extio extio, char[] buf, int len)
|
|
||||||
{
|
|
||||||
int mode = extio.getMode();
|
|
||||||
|
|
||||||
if (mode == Extio.MODE_PIPE_READ)
|
|
||||||
{
|
|
||||||
Reader isr;
|
|
||||||
isr = (Reader)extio.getHandle();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
len = isr.read (buf, 0, len);
|
while (true)
|
||||||
|
{
|
||||||
|
int len = rwe.rd.read (buf, 0, buf.length);
|
||||||
|
if (len == -1) break;
|
||||||
|
System.out.print (new String (buf, 0, len));
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.flush ();
|
||||||
|
}
|
||||||
|
catch (IOException e) {}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
int len = rwe.er.read (buf, 0, buf.length);
|
||||||
|
if (len == -1) break;
|
||||||
|
System.err.print (new String (buf, 0, len));
|
||||||
|
}
|
||||||
|
|
||||||
|
System.err.flush ();
|
||||||
|
}
|
||||||
|
catch (IOException e) {}
|
||||||
|
|
||||||
|
try { rwe.rd.close (); } catch (IOException e) {}
|
||||||
|
try { rwe.er.close (); } catch (IOException e) {}
|
||||||
|
|
||||||
|
pipe.setHandle (null);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int readPipe (Pipe pipe, char[] buf, int len)
|
||||||
|
{
|
||||||
|
int mode = pipe.getMode();
|
||||||
|
|
||||||
|
if (mode == Pipe.MODE_READ)
|
||||||
|
{
|
||||||
|
Reader rd = (Reader)pipe.getHandle();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
len = rd.read (buf, 0, len);
|
||||||
if (len == -1) len = 0;
|
if (len == -1) len = 0;
|
||||||
}
|
}
|
||||||
catch (IOException e) { len = -1; }
|
catch (IOException e) { len = -1; }
|
||||||
@ -265,31 +294,34 @@ public abstract class StdAwk extends Awk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int writePipe (Extio extio, char[] buf, int len)
|
protected int writePipe (Pipe pipe, char[] buf, int len)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode();
|
int mode = pipe.getMode();
|
||||||
|
|
||||||
if (mode == Extio.MODE_PIPE_WRITE)
|
if (mode == Pipe.MODE_WRITE)
|
||||||
{
|
{
|
||||||
Writer osw;
|
//Writer wr = (Writer)pipe.getHandle ();
|
||||||
osw = (Writer)extio.getHandle();
|
RWE rw = (RWE)pipe.getHandle();
|
||||||
try { osw.write (buf, 0, len); }
|
try
|
||||||
catch (IOException e) { len = -1; }
|
{
|
||||||
|
rw.wr.write (buf, 0, len);
|
||||||
|
rw.wr.flush ();
|
||||||
|
}
|
||||||
|
catch (IOException e) { return -1; }
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int flushPipe (Extio extio)
|
protected int flushPipe (Pipe pipe)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = pipe.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_PIPE_WRITE)
|
if (mode == Pipe.MODE_WRITE)
|
||||||
{
|
{
|
||||||
Writer osw;
|
Writer wr = (Writer)pipe.getHandle ();
|
||||||
osw = (Writer)extio.getHandle ();
|
try { wr.flush (); }
|
||||||
try { osw.flush (); }
|
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -390,38 +422,6 @@ public abstract class StdAwk extends Awk
|
|||||||
{
|
{
|
||||||
String str = builtinFunctionArgumentToString (runid, args[0]);
|
String str = builtinFunctionArgumentToString (runid, args[0]);
|
||||||
return system (str);
|
return system (str);
|
||||||
|
|
||||||
/*
|
|
||||||
String str = builtinFunctionArgumentToString (runid, args[0]);
|
|
||||||
Process proc = null;
|
|
||||||
int n = 0;
|
|
||||||
|
|
||||||
str = builtinFunctionArgumentToString (runid, args[0]);
|
|
||||||
|
|
||||||
try { proc = popen (str); }
|
|
||||||
catch (IOException e) { n = -1; }
|
|
||||||
|
|
||||||
if (proc != null)
|
|
||||||
{
|
|
||||||
InputStream is;
|
|
||||||
byte[] buf = new byte[1024];
|
|
||||||
|
|
||||||
is = proc.getInputStream();
|
|
||||||
|
|
||||||
// TODO; better error handling... program execution.. io redirection???
|
|
||||||
try { while (is.read (buf) != -1) ; }
|
|
||||||
catch (IOException e) { n = -1; };
|
|
||||||
|
|
||||||
try { n = proc.waitFor (); }
|
|
||||||
catch (InterruptedException e)
|
|
||||||
{
|
|
||||||
proc.destroy ();
|
|
||||||
n = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Long (n);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* == utility functions == */
|
/* == utility functions == */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $Id: makefile.in,v 1.6 2007/05/25 11:49:42 bacon Exp $
|
# $Id: makefile.in,v 1.7 2007/05/26 10:58:38 bacon Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
NAME = aseawk
|
NAME = aseawk
|
||||||
@ -132,6 +132,18 @@ $(TMP_DIR)/ase/awk/StdAwk.class: StdAwk.java
|
|||||||
$(TMP_DIR)/ase/awk/Extio.class: Extio.java
|
$(TMP_DIR)/ase/awk/Extio.class: Extio.java
|
||||||
$(JAVAC) -classpath ../.. -d $(TMP_DIR) Extio.java
|
$(JAVAC) -classpath ../.. -d $(TMP_DIR) Extio.java
|
||||||
|
|
||||||
|
$(TMP_DIR)/ase/awk/IO.class: IO.java
|
||||||
|
$(JAVAC) -classpath ../.. -d $(TMP_DIR) IO.java
|
||||||
|
|
||||||
|
$(TMP_DIR)/ase/awk/Console.class: Console.java
|
||||||
|
$(JAVAC) -classpath ../.. -d $(TMP_DIR) Console.java
|
||||||
|
|
||||||
|
$(TMP_DIR)/ase/awk/File.class: File.java
|
||||||
|
$(JAVAC) -classpath ../.. -d $(TMP_DIR) File.java
|
||||||
|
|
||||||
|
$(TMP_DIR)/ase/awk/Pipe.class: Pipe.java
|
||||||
|
$(JAVAC) -classpath ../.. -d $(TMP_DIR) Pipe.java
|
||||||
|
|
||||||
$(TMP_DIR)/ase/awk/Exception.class: Exception.java
|
$(TMP_DIR)/ase/awk/Exception.class: Exception.java
|
||||||
$(JAVAC) -classpath ../.. -d $(TMP_DIR) Exception.java
|
$(JAVAC) -classpath ../.. -d $(TMP_DIR) Exception.java
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
* fixed bug (nextofile shown as nextfile in source output)
|
* fixed bug (nextofile shown as nextfile in source output)
|
||||||
* fixed bug (nextofile not allowed in the BEGIN and END block)
|
* fixed bug (nextofile not allowed in the BEGIN and END block)
|
||||||
* fixed bug (ASE_MALLOC/ASE_FREE defined wrongly causing test programs
|
* fixed bug (ASE_MALLOC/ASE_FREE defined wrongly causing sample programs
|
||||||
to crash in the debug mode when compiled with MSVC/C++.
|
to crash in the debug mode when compiled with MSVC/C++.
|
||||||
* fixed bug (the first character of the next record lost when RS are
|
* fixed bug (the first character of the next record lost when RS are
|
||||||
multiple characters)
|
multiple characters)
|
||||||
@ -10,11 +10,9 @@
|
|||||||
multiple characters)
|
multiple characters)
|
||||||
|
|
||||||
* added awk c++ classes (awk/Awk.hpp awk/Awk.cpp awk/StdAwk.hpp awk/StdAwk.cpp)
|
* added awk c++ classes (awk/Awk.hpp awk/Awk.cpp awk/StdAwk.hpp awk/StdAwk.cpp)
|
||||||
* added c++ test program (test/awk/Awk.cpp)
|
* added c++ sample program (test/awk/Awk.cpp)
|
||||||
|
|
||||||
* modified the java test program (test/awk/AseAwk.java) to be the same as
|
|
||||||
the c++ test program functionally
|
|
||||||
|
|
||||||
|
* changed test/awk/AseAwk.java to be funtionally identical to test/awk/Awk.cpp
|
||||||
* changed the way to invoke the main function (utl/main.h utl/main.c)
|
* changed the way to invoke the main function (utl/main.h utl/main.c)
|
||||||
|
|
||||||
[0.1.0]
|
[0.1.0]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: AseAwk.java,v 1.6 2007/05/25 16:55:02 bacon Exp $
|
* $Id: AseAwk.java,v 1.7 2007/05/26 10:23:52 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -62,7 +62,7 @@ public class AseAwk extends StdAwk
|
|||||||
{
|
{
|
||||||
URL url = AseAwk.class.getResource (
|
URL url = AseAwk.class.getResource (
|
||||||
AseAwk.class.getName() + ".class");
|
AseAwk.class.getName() + ".class");
|
||||||
File file = new File (url.getFile());
|
java.io.File file = new java.io.File (url.getFile());
|
||||||
|
|
||||||
String osname = System.getProperty ("os.name").toLowerCase();
|
String osname = System.getProperty ("os.name").toLowerCase();
|
||||||
String aseBase = file.getParentFile().getParentFile().getParent(
|
String aseBase = file.getParentFile().getParentFile().getParent(
|
||||||
@ -249,8 +249,6 @@ public class AseAwk extends StdAwk
|
|||||||
private String srcInName;
|
private String srcInName;
|
||||||
private String srcOutName;
|
private String srcOutName;
|
||||||
|
|
||||||
private Reader conReader;
|
|
||||||
private Writer conWriter;
|
|
||||||
private LinkedList conInNames;
|
private LinkedList conInNames;
|
||||||
private LinkedList conOutNames;
|
private LinkedList conOutNames;
|
||||||
private Iterator conInIter;
|
private Iterator conInIter;
|
||||||
@ -266,9 +264,6 @@ public class AseAwk extends StdAwk
|
|||||||
srcInName = null;
|
srcInName = null;
|
||||||
srcOutName = null;
|
srcOutName = null;
|
||||||
|
|
||||||
conReader = null;
|
|
||||||
conWriter = null;
|
|
||||||
|
|
||||||
conInNames = new LinkedList ();
|
conInNames = new LinkedList ();
|
||||||
conOutNames = new LinkedList ();
|
conOutNames = new LinkedList ();
|
||||||
|
|
||||||
@ -446,11 +441,11 @@ public class AseAwk extends StdAwk
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int openConsole (Extio extio)
|
protected int openConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
Reader rd;
|
Reader rd;
|
||||||
|
|
||||||
@ -467,10 +462,7 @@ public class AseAwk extends StdAwk
|
|||||||
}
|
}
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
try
|
try { con.setFileName (fn); }
|
||||||
{
|
|
||||||
setConsoleInputName (extio, fn);
|
|
||||||
}
|
|
||||||
catch (ase.awk.Exception e)
|
catch (ase.awk.Exception e)
|
||||||
{
|
{
|
||||||
try { rd.close(); }
|
try { rd.close(); }
|
||||||
@ -479,10 +471,10 @@ public class AseAwk extends StdAwk
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
conReader = rd;
|
con.setHandle (rd);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_CONSOLE_WRITE)
|
else if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
Writer wr;
|
Writer wr;
|
||||||
|
|
||||||
@ -499,10 +491,7 @@ public class AseAwk extends StdAwk
|
|||||||
}
|
}
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
try
|
try { con.setFileName (fn); }
|
||||||
{
|
|
||||||
setConsoleOutputName (extio, fn);
|
|
||||||
}
|
|
||||||
catch (ase.awk.Exception e)
|
catch (ase.awk.Exception e)
|
||||||
{
|
{
|
||||||
try { wr.close(); }
|
try { wr.close(); }
|
||||||
@ -511,7 +500,7 @@ public class AseAwk extends StdAwk
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
conWriter = wr;
|
con.setHandle (wr);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -519,54 +508,33 @@ public class AseAwk extends StdAwk
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int closeConsole (Extio extio)
|
protected int closeConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
if (conReader != null)
|
Reader rd = (Reader)con.getHandle();
|
||||||
|
if (rd != null && rd != stdin)
|
||||||
{
|
{
|
||||||
if (conReader == stdin)
|
try { rd.close (); }
|
||||||
{
|
|
||||||
conReader = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
conReader.close ();
|
|
||||||
conReader = null;
|
|
||||||
}
|
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_CONSOLE_WRITE)
|
else if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
if (conWriter != null)
|
Writer wr = (Writer)con.getHandle();
|
||||||
{
|
if (wr != null)
|
||||||
if (conWriter == stdout)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
conWriter.flush ();
|
wr.flush ();
|
||||||
conWriter = null;
|
if (wr != stdout) wr.close ();
|
||||||
}
|
}
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
conWriter.close ();
|
|
||||||
conWriter = null;
|
|
||||||
}
|
|
||||||
catch (IOException e) { return -1; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -574,15 +542,17 @@ public class AseAwk extends StdAwk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int readConsole (Extio extio, char[] buf, int len)
|
protected int readConsole (Console con, char[] buf, int len)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
|
Reader rd = (Reader)con.getHandle();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int n = conReader.read (buf, 0, len);
|
int n = rd.read (buf, 0, len);
|
||||||
if (n == -1) n = 0;
|
if (n == -1) n = 0;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
@ -592,16 +562,17 @@ public class AseAwk extends StdAwk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int writeConsole (Extio extio, char[] buf, int len)
|
protected int writeConsole (Console con, char[] buf, int len)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_WRITE)
|
if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
|
Writer wr = (Writer)con.getHandle();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
conWriter.write (buf, 0, len);
|
wr.write (buf, 0, len);
|
||||||
conWriter.flush ();
|
wr.flush ();
|
||||||
}
|
}
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
return len;
|
return len;
|
||||||
@ -610,13 +581,14 @@ public class AseAwk extends StdAwk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int flushConsole (Extio extio)
|
protected int flushConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_WRITE)
|
if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
try { conWriter.flush (); }
|
Writer wr = (Writer)con.getHandle();
|
||||||
|
try { wr.flush (); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -624,11 +596,11 @@ public class AseAwk extends StdAwk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int nextConsole (Extio extio)
|
protected int nextConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
if (!conInIter.hasNext()) return 0;
|
if (!conInIter.hasNext()) return 0;
|
||||||
String fn = (String)conInIter.next();
|
String fn = (String)conInIter.next();
|
||||||
@ -643,10 +615,7 @@ public class AseAwk extends StdAwk
|
|||||||
}
|
}
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
try
|
try { con.setFileName (fn); }
|
||||||
{
|
|
||||||
setConsoleInputName (extio, fn);
|
|
||||||
}
|
|
||||||
catch (ase.awk.Exception e)
|
catch (ase.awk.Exception e)
|
||||||
{
|
{
|
||||||
try { rd.close(); }
|
try { rd.close(); }
|
||||||
@ -654,13 +623,22 @@ public class AseAwk extends StdAwk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
try { conReader.close (); }
|
Reader tmp = (Reader)con.getHandle();
|
||||||
catch (IOException e) { return -1; }
|
if (tmp != stdin)
|
||||||
|
{
|
||||||
|
try { tmp.close (); }
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
try { rd.close (); }
|
||||||
|
catch (IOException e2) {}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
conReader = rd;
|
con.setHandle (rd);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_CONSOLE_WRITE)
|
else if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
if (!conOutIter.hasNext()) return 0;
|
if (!conOutIter.hasNext()) return 0;
|
||||||
String fn = (String)conOutIter.next();
|
String fn = (String)conOutIter.next();
|
||||||
@ -675,10 +653,7 @@ public class AseAwk extends StdAwk
|
|||||||
}
|
}
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
|
|
||||||
try
|
try { con.setFileName (fn); }
|
||||||
{
|
|
||||||
setConsoleOutputName (extio, fn);
|
|
||||||
}
|
|
||||||
catch (ase.awk.Exception e)
|
catch (ase.awk.Exception e)
|
||||||
{
|
{
|
||||||
try { wr.close(); }
|
try { wr.close(); }
|
||||||
@ -686,10 +661,19 @@ public class AseAwk extends StdAwk
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
try { conWriter.close (); }
|
Writer tmp = (Writer)con.getHandle();
|
||||||
catch (IOException e) { return -1; }
|
if (tmp != stdout)
|
||||||
|
{
|
||||||
|
try { tmp.close (); }
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
try { wr.close (); }
|
||||||
|
catch (IOException e2) {}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
conWriter = wr;
|
con.setHandle (wr);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: AseAwkPanel.java,v 1.1 2007/04/30 08:32:41 bacon Exp $
|
* $Id: AseAwkPanel.java,v 1.2 2007/05/26 10:23:52 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -10,9 +10,11 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.io.Writer;
|
||||||
|
|
||||||
import ase.awk.StdAwk;
|
import ase.awk.StdAwk;
|
||||||
import ase.awk.Extio;
|
import ase.awk.Console;
|
||||||
|
|
||||||
public class AseAwkPanel extends Panel
|
public class AseAwkPanel extends Panel
|
||||||
{
|
{
|
||||||
@ -81,9 +83,6 @@ public class AseAwkPanel extends Panel
|
|||||||
private StringReader srcIn;
|
private StringReader srcIn;
|
||||||
private StringWriter srcOut;
|
private StringWriter srcOut;
|
||||||
|
|
||||||
private StringReader conIn;
|
|
||||||
private StringWriter conOut;
|
|
||||||
|
|
||||||
public Awk (AseAwkPanel awkPanel) throws Exception
|
public Awk (AseAwkPanel awkPanel) throws Exception
|
||||||
{
|
{
|
||||||
super ();
|
super ();
|
||||||
@ -142,18 +141,18 @@ public class AseAwkPanel extends Panel
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int openConsole (Extio extio)
|
protected int openConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
conIn = new StringReader (awkPanel.getConsoleInput());
|
con.setHandle (new StringReader (awkPanel.getConsoleInput()));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_CONSOLE_WRITE)
|
else if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
conOut = new StringWriter ();
|
con.setHandle (new StringWriter ());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,20 +160,22 @@ public class AseAwkPanel extends Panel
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int closeConsole (Extio extio)
|
protected int closeConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
conIn.close ();
|
Reader rd = (Reader)con.getHandle();
|
||||||
|
try { rd.close (); }
|
||||||
|
catch (IOException e) { return -1; }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_CONSOLE_WRITE)
|
else if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
awkPanel.setConsoleOutput (conOut.toString());
|
Writer wr = (Writer)con.getHandle();
|
||||||
|
awkPanel.setConsoleOutput (wr.toString());
|
||||||
try { conOut.close (); }
|
try { wr.close (); }
|
||||||
catch (IOException e) { return -1; }
|
catch (IOException e) { return -1; }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -182,15 +183,17 @@ public class AseAwkPanel extends Panel
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int readConsole (Extio extio, char[] buf, int len)
|
protected int readConsole (Console con, char[] buf, int len)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
|
Reader rd = (Reader)con.getHandle();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int n = conIn.read (buf, 0, len);
|
int n = rd.read (buf, 0, len);
|
||||||
if (n == -1) n = 0;
|
if (n == -1) n = 0;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
@ -200,24 +203,26 @@ public class AseAwkPanel extends Panel
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int writeConsole (Extio extio, char[] buf, int len)
|
protected int writeConsole (Console con, char[] buf, int len)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_WRITE)
|
if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
conOut.write (buf, 0, len);
|
Writer wr = (Writer)con.getHandle();
|
||||||
|
try { wr.write (buf, 0, len); }
|
||||||
|
catch (IOException e) { return -1; }
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int flushConsole (Extio extio)
|
protected int flushConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_WRITE)
|
if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -225,15 +230,17 @@ public class AseAwkPanel extends Panel
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int nextConsole (Extio extio)
|
protected int nextConsole (Console con)
|
||||||
{
|
{
|
||||||
int mode = extio.getMode ();
|
int mode = con.getMode ();
|
||||||
|
|
||||||
if (mode == Extio.MODE_CONSOLE_READ)
|
if (mode == Console.MODE_READ)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
else if (mode == Extio.MODE_CONSOLE_WRITE)
|
else if (mode == Console.MODE_WRITE)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.cpp,v 1.22 2007/05/25 14:41:48 bacon Exp $
|
* $Id: Awk.cpp,v 1.23 2007/05/26 10:23:52 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ase/awk/StdAwk.hpp>
|
#include <ase/awk/StdAwk.hpp>
|
||||||
@ -73,7 +73,7 @@ public:
|
|||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
::Sleep (args[0].toInt() * 1000);
|
::Sleep (args[0].toInt() * 1000);
|
||||||
return ret->set (0);
|
return ret->set ((long_t)0);
|
||||||
#else
|
#else
|
||||||
return ret->set ((long_t)::sleep (args[0].toInt()));
|
return ret->set ((long_t)::sleep (args[0].toInt()));
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,7 +23,7 @@ BEGIN {
|
|||||||
#print 1 |
|
#print 1 |
|
||||||
# 1;
|
# 1;
|
||||||
|
|
||||||
print .0;
|
print 0.0;
|
||||||
print 10;
|
print 10;
|
||||||
|
|
||||||
print fflush ("abc");
|
print fflush ("abc");
|
||||||
|
Loading…
Reference in New Issue
Block a user