From 2ab008fdb12eb5442441a9f56f6656f4577b945b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Sat, 20 Jan 2001 05:46:43 -0800
Subject: [PATCH] made static modules behave more like dynamic modules..

Rev: lib/modules/__builtin_dirnode.pmod:1.1
Rev: src/modules/static_module_makefile.in:1.59
Rev: src/testsuite.in:1.377
---
 lib/modules/__builtin_dirnode.pmod    | 12 ++++++++++++
 src/modules/static_module_makefile.in |  9 +++++----
 src/testsuite.in                      |  4 ++--
 3 files changed, 19 insertions(+), 6 deletions(-)
 create mode 100644 lib/modules/__builtin_dirnode.pmod

diff --git a/lib/modules/__builtin_dirnode.pmod b/lib/modules/__builtin_dirnode.pmod
new file mode 100644
index 0000000000..4541961566
--- /dev/null
+++ b/lib/modules/__builtin_dirnode.pmod
@@ -0,0 +1,12 @@
+#pike __REAL_VERSION__
+
+mapping cache=([]);
+
+mixed `[](string s)
+{
+  if(!zero_type(cache[s])) return cache[s];
+  mixed tmp=_static_modules[s];
+  if(programp(tmp)) tmp=tmp();
+  return cache[s]=tmp;
+}
+
diff --git a/src/modules/static_module_makefile.in b/src/modules/static_module_makefile.in
index f339ffbdaa..e6f194ec66 100644
--- a/src/modules/static_module_makefile.in
+++ b/src/modules/static_module_makefile.in
@@ -1,5 +1,5 @@
 #
-# $Id: static_module_makefile.in,v 1.58 2000/08/14 16:02:24 grubba Exp $
+# $Id: static_module_makefile.in,v 1.59 2001/01/20 13:46:43 hubbe Exp $
 #
 
 
@@ -92,12 +92,13 @@ config.status: $(SRCDIR)/configure
 
 module.pmod: Makefile
 	@echo "Making module.pmod" ; if [ -f $(SRCDIR)/module.pmod.in ]; then \
-	   sed -e "s/@module@/_static_modules.$(MODNAME)/" <$(SRCDIR)/module.pmod.in >module.pmod ;\
+	   sed -e "s/@module@/__builtin_dirnode.$(MODNAME)/" <$(SRCDIR)/module.pmod.in >module.pmod ;\
 	else \
 	  if [ -f ./module.pmod.in ]; then \
-	   sed -e "s/@module@/_static_modules.$(MODNAME)/" <./module.pmod.in >module.pmod ;\
+	   sed -e "s/@module@/__builtin_dirnode.$(MODNAME)/" <./module.pmod.in >module.pmod ;\
 	  else \
-	    echo >module.pmod "#if constant(_static_modules.$(MODNAME));" ;\
+	    echo >>module.pmod "#pike __REAL_VERSION__" ;\
+	    echo >>module.pmod "#if constant(_static_modules.$(MODNAME));" ;\
 	    echo >>module.pmod "inherit _static_modules.$(MODNAME);" ;\
 	    echo >>module.pmod "#endif" ;\
 	  fi ;\
diff --git a/src/testsuite.in b/src/testsuite.in
index 6aa7842f8f..1496420a3f 100644
--- a/src/testsuite.in
+++ b/src/testsuite.in
@@ -1,4 +1,4 @@
-test_true([["$Id: testsuite.in,v 1.376 2001/01/19 15:19:51 mast Exp $"]]);
+test_true([["$Id: testsuite.in,v 1.377 2001/01/20 13:46:42 hubbe Exp $"]]);
 
 cond([[all_constants()->_verify_internals]],
 [[
@@ -5658,7 +5658,7 @@ test_equal(lower_case((string) ({
 
 // - next_object
 test_true(objectp(next_object()))
-test_any(int e;object o=next_object(); for(e=0;e<10000 && o;e++) o=next_object(o); return o,0)
+test_any(int e;object o=next_object(); for(e=0;e<10000 && (o || objectp(o));e++) o=next_object(o); return o,0)
 
 // - object_program
 test_true(programp(object_program(this_object())))
-- 
GitLab