-- plugin should not exit jEdit on fatal errors\r
-- auto insert USE:\r
-- add a socket timeout\r
-- don't allow multiple reads on the same port\r
-- multiple tasks should be able to write to the same port\r
-- jvm factor -- still supporting httpd?\r
-- make inferior.factor nicer to use\r
-- telnetd printing signal 13, and other problems\r
-\r
+ docs:\r
\r
- unparse examples\r
\r
+ listener/plugin:\r
\r
+- plugin should not exit jEdit on fatal errors\r
+- make inferior.factor nicer to use\r
+- auto insert USE:\r
- balance needs USE:\r
- fedit broken with listener\r
- maple-like: press enter at old commands to evaluate there\r
\r
+ native:\r
\r
+- add a socket timeout\r
+- don't allow multiple reads on the same port\r
+- multiple tasks should be able to write to the same port\r
- is the profiler using correct stack depth?\r
- bignums\r
- >lower, >upper for strings\r
- telnetd and httpd should use multitasking\r
- sbuf-hashcode\r
- vector-hashcode\r
-- clarify suspend -vs- yield - toplevel\r
- irc: stack underflow?\r
- ignore SIGPIPE\r
- accept multi-line input in listener\r
\r
+ misc:\r
\r
+- jvm factor -- still supporting httpd?\r
+- dissolve builtins vocabulary\r
- ifte* combinator\r
- 'cascading' styles\r
- jedit ==> jedit-word, jedit takes a file name\r
#! The boot word is run by the intepreter when starting from
#! an object database.
+ 10 "base" set
+
! Some flags are *on* by default, unless user specifies
! -no-<flag> CLI switch
t "user-init" set
"/library/platform/native/parser.factor"
"/library/platform/native/parse-syntax.factor"
"/library/platform/native/parse-stream.factor"
- "/library/platform/native/unparser.factor"
+ "/library/format.factor"
+ "/library/platform/native/unparser.factor"
"/library/styles.factor"
"/library/vocabulary-style.factor"
"/library/prettyprint.factor"
"/library/platform/native/parser.factor"
"/library/platform/native/parse-syntax.factor"
"/library/platform/native/parse-stream.factor"
- "/library/format.factor"
- "/library/platform/native/unparser.factor"
"/library/platform/native/init.factor"
] [
cross-compile-resource
#! Convert an integer to its hexadecimal representation.
16 >base ;
+DEFER: unparse
+
: unparse-ratio ( num -- str )
<% dup
numerator unparse %
userenv[STDIN_ENV] = tag_object(port(PORT_READ,0));
userenv[STDOUT_ENV] = tag_object(port(PORT_WRITE,1));
+ /* debug_fd = fdopen(3,"w"); */
+
read_fd_count = 0;
init_io_tasks(&read_fd_set,read_io_tasks);
{
struct sigaction custom_sigaction;
struct sigaction profiling_sigaction;
+ struct sigaction ign_sigaction;
custom_sigaction.sa_sigaction = signal_handler;
custom_sigaction.sa_flags = SA_SIGINFO;
profiling_sigaction.sa_sigaction = profiling_step;
profiling_sigaction.sa_flags = SA_SIGINFO;
+ ign_sigaction.sa_handler = SIG_IGN;
sigaction(SIGABRT,&custom_sigaction,NULL);
sigaction(SIGFPE,&custom_sigaction,NULL);
sigaction(SIGBUS,&custom_sigaction,NULL);
sigaction(SIGSEGV,&custom_sigaction,NULL);
- sigaction(SIGPIPE,&custom_sigaction,NULL);
+ sigaction(SIGPIPE,&ign_sigaction,NULL);
sigaction(SIGPROF,&profiling_sigaction,NULL);
}
int i;
for(i = 0; i < USER_ENV; i++)
userenv[i] = 0;
+ profile_depth = 0;
}
#define EXECUTE(w) ((XT)(w->xt))()
{
timerclear(&prof_timer.it_interval);
timerclear(&prof_timer.it_value);
+
+ profile_depth = 0;
}
else
{
{
if(write_step(port))
{
- if(port->buf_pos == port->buf_fill)
+ if(port->buf_pos == port->buf_fill || port->io_error != F)
{
- /* All written */
+ /* All written, or I/O error is preventing further
+ transaction */
port->buf_pos = 0;
port->buf_fill = 0;
return true;