diff --git a/lib/master.pike.in b/lib/master.pike.in
index cf30473af782b36891a0c11d216a36d492f060b3..b057f30fff7392f82320f7b3796c6e49dba013d2 100644
--- a/lib/master.pike.in
+++ b/lib/master.pike.in
@@ -1,6 +1,6 @@
 /* -*- Pike -*-
  *	
- * $Id: master.pike.in,v 1.119 2000/05/13 16:48:20 mast Exp $
+ * $Id: master.pike.in,v 1.120 2000/05/24 01:21:33 hubbe Exp $
  * 
  * Master-file for Pike.
  *
@@ -609,6 +609,10 @@ class dirnode
 	  module=tmp;
       return !module;
     }
+
+    mixed `[](string index) { if(module) return module[index]; }
+    array(string) _indices() { if(module) return indices(module); }
+    array _values() { if(module) return values(module); }
   }
 
   static mixed ind(string index)
@@ -705,6 +709,12 @@ class dirnode
     fill_cache();
     return values(cache)-({0});
   }
+
+  string _sprintf(int as)
+    {
+      return sprintf("master()->dirnode(%O)",dirname);
+    }
+  
 };
 
 static class ZERO_TYPE {};
@@ -715,6 +725,11 @@ class joinnode
   array(object|mapping) joined_modules;
   mapping(string:mixed) cache=([]);
 
+  string _sprintf(int as)
+    {
+      return sprintf("master()->joinnode(%O)",joined_modules);
+    }
+
   void create(array(object|mapping) _joined_modules)
   {
     joined_modules = _joined_modules;
diff --git a/src/modules/Parser/parser.c b/src/modules/Parser/parser.c
index a574ba4809b6827fd0d3449dfb15e17074e90585..825f06f907e24d045a4f19c97ab113d27c10651e 100644
--- a/src/modules/Parser/parser.c
+++ b/src/modules/Parser/parser.c
@@ -1,7 +1,7 @@
 #include "global.h"
 #include "stralloc.h"
 #include "global.h"
-RCSID("$Id: parser.c,v 1.5 1999/12/30 20:42:03 mast Exp $");
+RCSID("$Id: parser.c,v 1.6 2000/05/24 01:21:38 hubbe Exp $");
 #include "pike_macros.h"
 #include "interpret.h"
 #include "program.h"
@@ -144,7 +144,12 @@ static void parser_magic_index(INT32 args)
       push_int(0);
       SAFE_APPLY_MASTER("resolv",2);
       stack_swap();
-      f_index(2);
+      if(sp[-2].type == T_INT)
+      {
+	pop_stack();
+      }else{
+	f_index(2);
+      }
    }
    stack_swap();
    pop_stack();