summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--Makefile.in11
-rw-r--r--array.c19
-rw-r--r--ext/extmk.rb.in2
-rw-r--r--ext/tcltklib/tcltklib.c36
-rw-r--r--file.c26
-rw-r--r--lib/tk.rb7
-rw-r--r--sample/ruby-mode.el2
8 files changed, 75 insertions, 40 deletions
diff --git a/ChangeLog b/ChangeLog
index 82a5159da6..5c8b1f8ad3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,19 @@
+Fri Apr 17 11:58:30 1998 NAGAI Hidetoshi <nagai@dumbo.ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): thread and interrupt check.
+
Fri Apr 17 11:06:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
* struct.c (struct_aset): struct member can be set by member name.
+Fri Apr 17 00:47:19 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/extmk.rb.in: added m68k-human support
+
+ * file.c (LOCK_SH): defines moved.
+
+ * array.c (ary_flatten_bang): simplified loop.
+
Thu Apr 16 16:52:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
* experimental release 1.1b9_11.
diff --git a/Makefile.in b/Makefile.in
index d6b80e9f31..ebdaeb7fac 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -89,12 +89,15 @@ clean:; @rm -f $(OBJS) $(LIBRUBY) $(MAINOBJ) rbconfig.rb
./miniruby$(binsuffix) -Xext extmk.rb clean; \
fi
-realclean: clean
- @rm -f Makefile ext/extmk.rb ext/config.cache
- @rm -f config.cache config.h config.log config.status
- @rm -f parse.c lex.c *~ core *.core gmon.out
+distclean: clean
+ @rm -f Makefile ext/extmk.rb config.h
+ @rm -f ext/config.cache config.cache config.log config.status
+ @rm -f parse.c *~ core *.core gmon.out y.tab.c y.output
@rm -f ruby$(binsuffix) miniruby$(binsuffix)
+realclean: distclean
+ @rm -f lex.c
+
test: miniruby$(binsuffix)
@./miniruby$(binsuffix) $(srcdir)/rubytest.rb
diff --git a/array.c b/array.c
index d88c333dd2..157ac16558 100644
--- a/array.c
+++ b/array.c
@@ -1242,22 +1242,13 @@ ary_flatten_bang(ary)
int mod = 0;
ary_modify(ary);
- for (;;) {
- int lmod = 0;
-
- for (i=0; i<RARRAY(ary)->len; i++) {
- if (TYPE(RARRAY(ary)->ptr[i]) == T_ARRAY) {
- VALUE ary2 = RARRAY(ary)->ptr[i];
-
- ary_replace(ary, i, RARRAY(ary2)->len, ary2);
- i += RARRAY(ary2)->len - 1;
- lmod++;
- }
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ VALUE ary2 = RARRAY(ary)->ptr[i];
+ if (TYPE(ary2) == T_ARRAY) {
+ ary_replace(ary, i--, 1, ary2);
+ mod = 1;
}
- if (lmod == 0) break;
- mod = lmod;
}
-
if (mod == 0) return Qnil;
return ary;
}
diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in
index fbc455840c..0dae66b874 100644
--- a/ext/extmk.rb.in
+++ b/ext/extmk.rb.in
@@ -67,7 +67,7 @@ LINK = "@CC@ -o conftest -I#{$topdir} " + CFLAGS + " %s @LDFLAGS@ %s conftest.c
CPP = "@CPP@ @CPPFLAGS@ -I#{$topdir} " + CFLAGS + " %s conftest.c"
end
-if /win32|djgpp|mingw32/i =~ PLATFORM
+if /win32|djgpp|mingw32|m68k-human/i =~ PLATFORM
$null = open("nul", "w")
else
$null = open("/dev/null", "w")
diff --git a/ext/tcltklib/tcltklib.c b/ext/tcltklib/tcltklib.c
index aa2cf71be0..058fe94042 100644
--- a/ext/tcltklib/tcltklib.c
+++ b/ext/tcltklib/tcltklib.c
@@ -33,16 +33,52 @@ int *tclDummyMathPtr = (int *) matherr;
/*---- module TclTkLib ----*/
+/* Tk_ThreadTimer */
+typedef struct {
+ Tcl_TimerToken token;
+ int flag;
+} Tk_ThreadTimerData;
+
+/* timer callback */
+void _timer_for_thread (ClientData clientData)
+{
+ Tk_ThreadTimerData *timer = (Tk_ThreadTimerData *) clientData;
+
+ timer->flag = 0;
+ CHECK_INTS;
+#ifdef THREAD
+ if (!thread_critical) thread_schedule();
+#endif
+
+ timer->token = Tk_CreateTimerHandler(200, _timer_for_thread,
+ (ClientData) timer);
+ timer->flag = 1;
+}
+
/* execute Tk_MainLoop */
static VALUE
lib_mainloop(VALUE self)
{
+ Tk_ThreadTimerData *timer;
+
+ timer = (Tk_ThreadTimerData *) ckalloc(sizeof(Tk_ThreadTimerData));
+ timer->flag = 0;
+ timer->token = Tk_CreateTimerHandler(200, _timer_for_thread,
+ (ClientData) timer);
+ timer->flag = 1;
+
DUMP1("start Tk_Mainloop");
while (Tk_GetNumMainWindows() > 0) {
Tcl_DoOneEvent(0);
}
DUMP1("stop Tk_Mainloop");
+#ifdef THREAD
+ if (timer->flag) {
+ Tk_DeleteTimerHandler(timer->token);
+ }
+#endif
+
return Qnil;
}
diff --git a/file.c b/file.c
index 75a6da7e21..20189a3e6a 100644
--- a/file.c
+++ b/file.c
@@ -1412,6 +1412,19 @@ file_truncate(obj, len)
return INT2FIX(0);
}
+# ifndef LOCK_SH
+# define LOCK_SH 1
+# endif
+# ifndef LOCK_EX
+# define LOCK_EX 2
+# endif
+# ifndef LOCK_NB
+# define LOCK_NB 4
+# endif
+# ifndef LOCK_UN
+# define LOCK_UN 8
+# endif
+
#if defined(THREAD) && defined(EWOULDBLOCK)
static int
thread_flock(fd, op)
@@ -1713,19 +1726,6 @@ Init_File()
rb_define_method(cFile, "flock", file_flock, 1);
-# ifndef LOCK_SH
-# define LOCK_SH 1
-# endif
-# ifndef LOCK_EX
-# define LOCK_EX 2
-# endif
-# ifndef LOCK_NB
-# define LOCK_NB 4
-# endif
-# ifndef LOCK_UN
-# define LOCK_UN 8
-# endif
-
mConst = rb_define_module_under(cFile, "Constants");
rb_define_const(cFile, "LOCK_SH", INT2FIX(LOCK_SH));
rb_define_const(cFile, "LOCK_EX", INT2FIX(LOCK_EX));
diff --git a/lib/tk.rb b/lib/tk.rb
index b10274100d..1f6d0ef7f5 100644
--- a/lib/tk.rb
+++ b/lib/tk.rb
@@ -268,13 +268,6 @@ module TkCore
end
def mainloop
- if defined?(Thread)
- INTERP._eval("proc rb_after {} {
- ruby {Thread.pass};
- after 200 rb_after
- }")
- INTERP._eval("rb_after")
- end
TclTkLib.mainloop
end
diff --git a/sample/ruby-mode.el b/sample/ruby-mode.el
index f7e2fddbfa..3a5bab86ce 100644
--- a/sample/ruby-mode.el
+++ b/sample/ruby-mode.el
@@ -655,7 +655,7 @@ An end of a defun is found by moving forward from the beginning of one."
'("\\(^\\|[^_]\\)\\b\\([A-Z]+[a-zA-Z0-9_]*\\)"
2 font-lock-type-face)
;; functions
- '("^\\s *def[ \t]+[^ \t(]*"
+ '("^\\s *def[ \t]+[^ \t(]*$"
0 font-lock-function-name-face t))
"*Additional expressions to highlight in ruby mode.")
(if (and (>= (string-to-int emacs-version) 19)