parent
b442096677
commit
a24ce9a88c
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
- if external factor is down, don't add tons of random shit to the
|
- if external factor is down, don't add tons of random shit to the
|
||||||
dictionary
|
dictionary
|
||||||
- plugin: type "re" in edit word dialog --> hang
|
|
||||||
- word preview for parsing words
|
- word preview for parsing words
|
||||||
|
|
||||||
+ ui:
|
+ ui:
|
||||||
|
|
|
@ -133,8 +133,17 @@ public class ExternalFactor extends VocabularyLookup
|
||||||
|
|
||||||
int responseLength = in.readInt();
|
int responseLength = in.readInt();
|
||||||
byte[] response = new byte[responseLength];
|
byte[] response = new byte[responseLength];
|
||||||
in.readFully(response);
|
|
||||||
|
|
||||||
|
int n = 0;
|
||||||
|
while (n < response.length)
|
||||||
|
{
|
||||||
|
int count = in.read(response,n,response.length - n);
|
||||||
|
if (count < 0)
|
||||||
|
throw new EOFException();
|
||||||
|
System.err.println(new String(response,n,count));
|
||||||
|
n += count;
|
||||||
|
}
|
||||||
|
|
||||||
String responseStr = new String(response,"ASCII");
|
String responseStr = new String(response,"ASCII");
|
||||||
return responseStr;
|
return responseStr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,27 +6,30 @@ strings ;
|
||||||
|
|
||||||
TUPLE: buffer size ptr fill pos ;
|
TUPLE: buffer size ptr fill pos ;
|
||||||
|
|
||||||
: imalloc ( size -- address )
|
: malloc ( size -- address )
|
||||||
"int" "libc" "malloc" [ "ulong" ] alien-invoke ;
|
"ulong" "libc" "malloc" [ "ulong" ] alien-invoke ;
|
||||||
|
|
||||||
: ifree ( address -- )
|
: free ( address -- )
|
||||||
"void" "libc" "free" [ "ulong" ] alien-invoke ;
|
"void" "libc" "free" [ "ulong" ] alien-invoke ;
|
||||||
|
|
||||||
: irealloc ( address size -- address )
|
: realloc ( address size -- address )
|
||||||
"int" "libc" "realloc" [ "ulong" "ulong" ] alien-invoke ;
|
"ulong" "libc" "realloc" [ "ulong" "ulong" ] alien-invoke ;
|
||||||
|
|
||||||
: imemcpy ( dst src size -- )
|
: memcpy ( dst src size -- )
|
||||||
"void" "libc" "memcpy" [ "ulong" "ulong" "ulong" ] alien-invoke ;
|
"void" "libc" "memcpy" [ "ulong" "ulong" "ulong" ] alien-invoke ;
|
||||||
|
|
||||||
|
: check-ptr ( ptr -- ptr )
|
||||||
|
dup 0 = [ "Out of memory" throw ] when ;
|
||||||
|
|
||||||
C: buffer ( size -- buffer )
|
C: buffer ( size -- buffer )
|
||||||
2dup set-buffer-size
|
2dup set-buffer-size
|
||||||
swap imalloc swap [ set-buffer-ptr ] keep
|
swap malloc check-ptr swap [ set-buffer-ptr ] keep
|
||||||
0 swap [ set-buffer-fill ] keep
|
0 swap [ set-buffer-fill ] keep
|
||||||
0 swap [ set-buffer-pos ] keep ;
|
0 swap [ set-buffer-pos ] keep ;
|
||||||
|
|
||||||
: buffer-free ( buffer -- )
|
: buffer-free ( buffer -- )
|
||||||
#! Frees the C memory associated with the buffer.
|
#! Frees the C memory associated with the buffer.
|
||||||
dup buffer-ptr ifree 0 swap set-buffer-ptr ;
|
dup buffer-ptr free 0 swap set-buffer-ptr ;
|
||||||
|
|
||||||
: buffer-contents ( buffer -- string )
|
: buffer-contents ( buffer -- string )
|
||||||
#! Returns the current contents of the buffer.
|
#! Returns the current contents of the buffer.
|
||||||
|
@ -67,22 +70,29 @@ C: buffer ( size -- buffer )
|
||||||
#! Returns the amount of data that may be added to the buffer.
|
#! Returns the amount of data that may be added to the buffer.
|
||||||
dup buffer-size swap buffer-fill - ;
|
dup buffer-size swap buffer-fill - ;
|
||||||
|
|
||||||
|
: eof? ( buffer -- ? ) buffer-fill 0 = ;
|
||||||
|
|
||||||
|
: buffer-extend ( length buffer -- )
|
||||||
|
#! Increases the size of the buffer by length.
|
||||||
|
2dup buffer-ptr swap realloc check-ptr
|
||||||
|
over set-buffer-ptr set-buffer-size ;
|
||||||
|
|
||||||
: check-overflow ( string buffer -- )
|
: check-overflow ( string buffer -- )
|
||||||
buffer-capacity swap length < [
|
over length over buffer-capacity > [
|
||||||
"Buffer overflow" throw
|
dup eof? [
|
||||||
] when ;
|
>r length r> buffer-extend
|
||||||
|
] [
|
||||||
|
"Buffer overflow" throw
|
||||||
|
] ifte
|
||||||
|
] [
|
||||||
|
2drop
|
||||||
|
] ifte ;
|
||||||
|
|
||||||
: >buffer ( string buffer -- )
|
: >buffer ( string buffer -- )
|
||||||
2dup check-overflow
|
2dup check-overflow
|
||||||
[ dup buffer-ptr swap buffer-fill + string>memory ] 2keep
|
[ dup buffer-ptr swap buffer-fill + string>memory ] 2keep
|
||||||
[ buffer-fill swap length + ] keep set-buffer-fill ;
|
[ buffer-fill swap length + ] keep set-buffer-fill ;
|
||||||
|
|
||||||
: buffer-extend ( length buffer -- )
|
|
||||||
#! Increases the size of the buffer by length.
|
|
||||||
[ buffer-size + dup ] keep [ buffer-ptr swap ] keep
|
|
||||||
>r irealloc r>
|
|
||||||
[ set-buffer-ptr ] keep set-buffer-size ;
|
|
||||||
|
|
||||||
: n>buffer ( count buffer -- )
|
: n>buffer ( count buffer -- )
|
||||||
#! Increases the fill pointer by count.
|
#! Increases the fill pointer by count.
|
||||||
[ buffer-fill + ] keep set-buffer-fill ;
|
[ buffer-fill + ] keep set-buffer-fill ;
|
||||||
|
@ -97,7 +107,7 @@ C: buffer ( size -- buffer )
|
||||||
|
|
||||||
: buffer-append ( buffer buffer -- )
|
: buffer-append ( buffer buffer -- )
|
||||||
#! Append first buffer to second buffer.
|
#! Append first buffer to second buffer.
|
||||||
2dup buffer-end over buffer-ptr rot buffer-fill imemcpy
|
2dup buffer-end over buffer-ptr rot buffer-fill memcpy
|
||||||
>r buffer-fill r> n>buffer ;
|
>r buffer-fill r> n>buffer ;
|
||||||
|
|
||||||
: buffer-set ( string buffer -- )
|
: buffer-set ( string buffer -- )
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
IN: temporary
|
IN: temporary
|
||||||
USE: namespaces
|
USING: math parser stdio streams strings test ;
|
||||||
USE: parser
|
|
||||||
USE: streams
|
|
||||||
USE: test
|
|
||||||
USE: stdio
|
|
||||||
USE: math
|
|
||||||
|
|
||||||
[ 4 ] [ "/library/test/io/no-trailing-eol.factor" run-resource ] unit-test
|
[ 4 ] [ "/library/test/io/no-trailing-eol.factor" run-resource ] unit-test
|
||||||
|
|
||||||
|
@ -52,3 +47,5 @@ USE: math
|
||||||
[ -1 read ] unit-test-fails
|
[ -1 read ] unit-test-fails
|
||||||
|
|
||||||
[ "" ] [ 0 read ] unit-test
|
[ "" ] [ 0 read ] unit-test
|
||||||
|
|
||||||
|
[ ] [ "123" write 9000 CHAR: x fill write flush ] unit-test
|
||||||
|
|
|
@ -185,8 +185,6 @@ C: reader ( handle -- reader )
|
||||||
drop
|
drop
|
||||||
] ifte ;
|
] ifte ;
|
||||||
|
|
||||||
: eof? ( buffer -- ? ) buffer-fill 0 = ;
|
|
||||||
|
|
||||||
TUPLE: read-line-task ;
|
TUPLE: read-line-task ;
|
||||||
|
|
||||||
C: read-line-task ( port -- task )
|
C: read-line-task ( port -- task )
|
||||||
|
@ -295,8 +293,8 @@ C: writer ( fd -- writer )
|
||||||
#! If the buffer is empty and the string is too long,
|
#! If the buffer is empty and the string is too long,
|
||||||
#! extend the buffer.
|
#! extend the buffer.
|
||||||
dup pending-error
|
dup pending-error
|
||||||
dup eof? >r 2dup buffer-capacity > r> and [
|
dup eof? [
|
||||||
buffer-extend t
|
2drop t
|
||||||
] [
|
] [
|
||||||
[ buffer-fill + ] keep buffer-capacity <=
|
[ buffer-fill + ] keep buffer-capacity <=
|
||||||
] ifte ;
|
] ifte ;
|
||||||
|
|
Loading…
Reference in New Issue