[svn:parrot] r40267 - in branches/bsr_jsr_ret: . compilers/imcc compilers/ncigen compilers/ncigen/src/parser config/auto config/auto/sizes docs/book/draft docs/dev docs/pdds examples/languages/abc examples/languages/squaak examples/pge ext/SQLite3 include/parrot ports/cpan ports/cygwin ports/debian ports/fedora ports/mandriva ports/suse ports/ubuntu ports/ubuntu/patches runtime/parrot/languages runtime/parrot/library runtime/parrot/library/Math src src/call src/gc src/interp src/pmc src/runcore t/codingstd t/compilers/imcc/syn t/compilers/tge t/oo t/src t/tools tools/dev tools/util

whiteknight at svn.parrot.org whiteknight at svn.parrot.org
Sat Jul 25 17:46:26 UTC 2009


Author: whiteknight
Date: Sat Jul 25 17:46:23 2009
New Revision: 40267
URL: https://trac.parrot.org/parrot/changeset/40267

Log:
[bsr_jsr_ret] updating to trunk r40266. All tests are passing

Added:
   branches/bsr_jsr_ret/t/tools/pgegrep.t
      - copied unchanged from r40266, trunk/t/tools/pgegrep.t
   branches/bsr_jsr_ret/t/tools/testdata
      - copied unchanged from r40266, trunk/t/tools/testdata
Deleted:
   branches/bsr_jsr_ret/ports/ubuntu/patches/
   branches/bsr_jsr_ret/ports/ubuntu/rules
Modified:
   branches/bsr_jsr_ret/   (props changed)
   branches/bsr_jsr_ret/CREDITS
   branches/bsr_jsr_ret/MANIFEST
   branches/bsr_jsr_ret/compilers/imcc/optimizer.c
   branches/bsr_jsr_ret/compilers/imcc/symreg.c
   branches/bsr_jsr_ret/compilers/ncigen/NCIGENP6.pm
   branches/bsr_jsr_ret/compilers/ncigen/src/parser/actions.pm
   branches/bsr_jsr_ret/config/auto/gc.pm
   branches/bsr_jsr_ret/config/auto/sizes/intval_maxmin_c.in   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/README   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/appa_glossary.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/appb_patch_submission.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/appc_command_line_options.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/appd_build_options.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/appe_source_code.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch01_introduction.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch02_getting_started.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch04_compiler_tools.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch05_pge.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch06_nqp.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch07_dynpmcs.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch08_dynops.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch10_opcode_reference.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch11_directive_reference.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/ch12_operator_reference.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/chXX_hlls.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/chXX_library.pod   (props changed)
   branches/bsr_jsr_ret/docs/book/draft/chXX_testing_and_debugging.pod   (props changed)
   branches/bsr_jsr_ret/docs/dev/c_functions.pod   (props changed)
   branches/bsr_jsr_ret/docs/pdds/pdd30_install.pod   (contents, props changed)
   branches/bsr_jsr_ret/examples/languages/abc/   (props changed)
   branches/bsr_jsr_ret/examples/languages/squaak/   (props changed)
   branches/bsr_jsr_ret/examples/pge/demo.pir   (props changed)
   branches/bsr_jsr_ret/ext/SQLite3/gen_sqlite3.pl
   branches/bsr_jsr_ret/include/parrot/call.h   (props changed)
   branches/bsr_jsr_ret/include/parrot/gc_api.h   (props changed)
   branches/bsr_jsr_ret/include/parrot/global.h
   branches/bsr_jsr_ret/include/parrot/runcore_api.h   (props changed)
   branches/bsr_jsr_ret/include/parrot/runcore_trace.h   (props changed)
   branches/bsr_jsr_ret/ports/cpan/pause_guide.pod   (props changed)
   branches/bsr_jsr_ret/ports/cygwin/parrot-1.0.0-1.cygport   (props changed)
   branches/bsr_jsr_ret/ports/debian/changelog
   branches/bsr_jsr_ret/ports/debian/libparrot-dev.install.in   (props changed)
   branches/bsr_jsr_ret/ports/debian/libparrot.install.in   (props changed)
   branches/bsr_jsr_ret/ports/debian/parrot-devel.install.in
   branches/bsr_jsr_ret/ports/debian/parrot-doc.install.in   (props changed)
   branches/bsr_jsr_ret/ports/debian/parrot.install.in   (props changed)
   branches/bsr_jsr_ret/ports/debian/rules
   branches/bsr_jsr_ret/ports/fedora/parrot.spec.fedora   (props changed)
   branches/bsr_jsr_ret/ports/mandriva/parrot.spec.mandriva   (props changed)
   branches/bsr_jsr_ret/ports/suse/parrot.spec.suse   (props changed)
   branches/bsr_jsr_ret/ports/ubuntu/changelog
   branches/bsr_jsr_ret/ports/ubuntu/control.in
   branches/bsr_jsr_ret/runtime/parrot/languages/   (props changed)
   branches/bsr_jsr_ret/runtime/parrot/library/Curses.pir
   branches/bsr_jsr_ret/runtime/parrot/library/Math/Rand.pir   (props changed)
   branches/bsr_jsr_ret/runtime/parrot/library/P6object.pir
   branches/bsr_jsr_ret/src/call/ops.c   (props changed)
   branches/bsr_jsr_ret/src/call/pcc.c   (props changed)
   branches/bsr_jsr_ret/src/gc/alloc_memory.c   (contents, props changed)
   branches/bsr_jsr_ret/src/gc/alloc_register.c   (props changed)
   branches/bsr_jsr_ret/src/gc/alloc_resources.c   (props changed)
   branches/bsr_jsr_ret/src/gc/api.c   (props changed)
   branches/bsr_jsr_ret/src/gc/generational_ms.c   (props changed)
   branches/bsr_jsr_ret/src/gc/incremental_ms.c   (props changed)
   branches/bsr_jsr_ret/src/gc/malloc.c   (props changed)
   branches/bsr_jsr_ret/src/gc/malloc_trace.c   (props changed)
   branches/bsr_jsr_ret/src/gc/mark_sweep.c   (props changed)
   branches/bsr_jsr_ret/src/gc/system.c   (props changed)
   branches/bsr_jsr_ret/src/global.c
   branches/bsr_jsr_ret/src/interp/inter_cb.c   (props changed)
   branches/bsr_jsr_ret/src/interp/inter_create.c   (props changed)
   branches/bsr_jsr_ret/src/interp/inter_misc.c   (props changed)
   branches/bsr_jsr_ret/src/pmc/class.pmc
   branches/bsr_jsr_ret/src/runcore/cores.c   (props changed)
   branches/bsr_jsr_ret/src/runcore/main.c   (props changed)
   branches/bsr_jsr_ret/src/runcore/trace.c   (props changed)
   branches/bsr_jsr_ret/t/codingstd/c_function_docs.t
   branches/bsr_jsr_ret/t/compilers/imcc/syn/errors.t
   branches/bsr_jsr_ret/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/bsr_jsr_ret/t/oo/root_new.t   (props changed)
   branches/bsr_jsr_ret/t/src/embed.t   (props changed)
   branches/bsr_jsr_ret/t/tools/dump_pbc.t
   branches/bsr_jsr_ret/tools/dev/fetch_languages.pl   (props changed)
   branches/bsr_jsr_ret/tools/dev/mk_gitignore.pl   (props changed)
   branches/bsr_jsr_ret/tools/dev/pbc_to_exe.pir
   branches/bsr_jsr_ret/tools/util/perlcritic-cage.conf   (props changed)
   branches/bsr_jsr_ret/tools/util/pgegrep

Modified: branches/bsr_jsr_ret/CREDITS
==============================================================================
--- branches/bsr_jsr_ret/CREDITS	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/CREDITS	Sat Jul 25 17:46:23 2009	(r40267)
@@ -928,6 +928,11 @@
 U: thgibbs
 E: thgibbs at deltafarms.com
 
+N: Ted Reed
+U: treed
+E: ted.reed at gmail.com
+D: cardinal
+
 N: Thilo Planz
 D: partcl tests and inspiration
 

Modified: branches/bsr_jsr_ret/MANIFEST
==============================================================================
--- branches/bsr_jsr_ret/MANIFEST	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/MANIFEST	Sat Jul 25 17:46:23 2009	(r40267)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Tue Jul 21 23:39:25 2009 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Fri Jul 24 04:46:26 2009 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -2080,6 +2080,7 @@
 t/tools/ops2pm/samples/pic_ops.original                     [test]
 t/tools/parrot_debugger.t                                   [test]
 t/tools/pbc_merge.t                                         [test]
+t/tools/pgegrep.t                                           [test]
 t/tools/pmc2c.t                                             [test]
 t/tools/pmc2cutils/00-qualify.t                             [test]
 t/tools/pmc2cutils/01-pmc2cutils.t                          [test]
@@ -2089,6 +2090,7 @@
 t/tools/pmc2cutils/05-gen_c.t                               [test]
 t/tools/pmc2cutils/08-pmc-pm.t                              [test]
 t/tools/pmc2cutils/README                                   []doc
+t/tools/testdata                                            [test]
 tools/build/addopstags.pl                                   []
 tools/build/c2str.pl                                        []
 tools/build/fixup_gen_file.pl                               []

Modified: branches/bsr_jsr_ret/compilers/imcc/optimizer.c
==============================================================================
--- branches/bsr_jsr_ret/compilers/imcc/optimizer.c	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/compilers/imcc/optimizer.c	Sat Jul 25 17:46:23 2009	(r40267)
@@ -1501,14 +1501,12 @@
         }
     }
 
-    /* Unreachable instructions */
 
+    /* Unreachable instructions */
 
     for (last = unit->instructions, ins = last->next;
          last && ins;
          ins = ins->next) {
-         if (!last && !ins)
-            break;
 
         if ((last->type & IF_goto) && !(ins->type & ITLABEL) &&
             STREQ(last->opname, "branch")) {

Modified: branches/bsr_jsr_ret/compilers/imcc/symreg.c
==============================================================================
--- branches/bsr_jsr_ret/compilers/imcc/symreg.c	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/compilers/imcc/symreg.c	Sat Jul 25 17:46:23 2009	(r40267)
@@ -642,10 +642,9 @@
     ASSERT_ARGS(mk_ident)
     char   * const fullname = _mk_fullname(pesky_global__namespace, name);
     SymReg *r = get_sym_by_name(&(IMCC_INFO(interp)->last_unit->hash), name);
-    if (r && r->set != t) {
-        IMCC_print_inc(interp);
-        IMCC_warning(interp, "Duplicated IDENTIFIER '%s'\n", fullname);
-    }
+    if (r && r->set != t)
+        IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
+                "syntax error, duplicated IDENTIFIER '%s'\n", fullname);
 
     r = mk_symreg(interp, fullname, t);
     r->type = VTIDENTIFIER;

Modified: branches/bsr_jsr_ret/compilers/ncigen/NCIGENP6.pm
==============================================================================
--- branches/bsr_jsr_ret/compilers/ncigen/NCIGENP6.pm	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/compilers/ncigen/NCIGENP6.pm	Sat Jul 25 17:46:23 2009	(r40267)
@@ -4,6 +4,8 @@
 # Copyright (C) 2008, Parrot Foundation.
 
 use v6;
+class NCIGENAST::FuncDecl {
+}
 
 evalfile('./ncigen.pbc', lang => 'Parrot');
 
@@ -12,9 +14,9 @@
 
     run("gcc -x c -E $fn > $pp_fn");
     my $compiler = compreg('NCIGEN');
-    my $ast = $compiler.parse(slurp($pp_fn));
+    my $match = $compiler.parse(slurp($pp_fn));
     unlink $pp_fn;
-    $ast.item();
+    $match.ast;
 }
 
 sub compreg {

Modified: branches/bsr_jsr_ret/compilers/ncigen/src/parser/actions.pm
==============================================================================
--- branches/bsr_jsr_ret/compilers/ncigen/src/parser/actions.pm	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/compilers/ncigen/src/parser/actions.pm	Sat Jul 25 17:46:23 2009	(r40267)
@@ -183,12 +183,12 @@
         if $struct_or_union {
             my $ident := $<struct_or_union_specifier><identifier><identifier>;
             if $ident {
-                $ident := strip_spaces($ident.text());
+                $ident := strip_spaces(~$ident);
             }
             else {
                 $ident := $<struct_or_union_specifier><identifier>;
                 if $ident {
-                    $ident := strip_spaces($ident.text());
+                    $ident := strip_spaces(~$ident);
                 }
                 else {
                     $ident := "anonymous_" ~~ $struct_or_union~~ "1";
@@ -232,7 +232,7 @@
         for $_<struct_declarator_list> {
             my $sm := $smt.clone();
             my $declarator := $_<struct_declarator><declarator>;
-            $sm.name(strip_spaces($declarator.text()));
+            $sm.name(strip_spaces(~$declarator));
             ispointer($declarator, $sm);
             $ast.push($sm);
         }

Modified: branches/bsr_jsr_ret/config/auto/gc.pm
==============================================================================
--- branches/bsr_jsr_ret/config/auto/gc.pm	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/config/auto/gc.pm	Sat Jul 25 17:46:23 2009	(r40267)
@@ -15,7 +15,7 @@
 In the future, we will have a C<--gc> command-line option which will enable
 the configurer to choose among the default and:
 
-=over4
+=over 4
 
 =item C<libc>
 

Modified: branches/bsr_jsr_ret/docs/pdds/pdd30_install.pod
==============================================================================
--- branches/bsr_jsr_ret/docs/pdds/pdd30_install.pod	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/docs/pdds/pdd30_install.pod	Sat Jul 25 17:46:23 2009	(r40267)
@@ -99,12 +99,20 @@
 formatted HTML. Has subdirectories for each format of documentation:
 F<pod/>, F<html/>, etc.
 
+=item F</usr/include/parrot/E<lt>versionE<gt>/>
+
+C header files for Parrot.  
+
+=item F</usr/src/parrot/E<lt>versionE<gt>/>
+
+PMC source files needed for building dynamic PMCs.  
+
 =back
 
 =head2 Dependencies
 
-Building core Parrot depends on Perl (including perldoc, which may be a
-separate package), libgdm and libreadline.
+Building core Parrot depends on Perl (including F<perldoc>, which may be a
+separate package), F<libgdm> and F<libreadline>.
 
 Building a language depends on a series of Parrot build tools, installed in
 F</usr/lib/parrot/E<lt>version/tools>. These tools will generally not be

Modified: branches/bsr_jsr_ret/ext/SQLite3/gen_sqlite3.pl
==============================================================================
--- branches/bsr_jsr_ret/ext/SQLite3/gen_sqlite3.pl	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/ext/SQLite3/gen_sqlite3.pl	Sat Jul 25 17:46:23 2009	(r40267)
@@ -17,17 +17,17 @@
 
 for (parse_ast($fn).hash().kv) -> $k,$v {
     #dump_node($v);
-    if ($v.WHAT eq "FuncDecl") {
+    if ($v.WHAT eq "NCIGENAST::FuncDecl()") {
         my @result = pir($v);
         my $cname       = @result[0];
         my $signature   = @result[1];
         my $source      = @result[2];
         my $suffix_name = @result[0];
-        my $suffix_name .= subst( /sqlite3_/, '' );
+        $suffix_name .= subst( /sqlite3_/, '' );
 
         my $pirname = %rename_table{$suffix_name} || $suffix_name;
 
-        say "    '_nci_init_symbol_'(lib, '$pirname', '$cname', '$signature') #$source";
+        say "    '_nci_init_symbol_'(lib, '$pirname', '$cname', '$signature')";
     }
 }
 print postamble();

Modified: branches/bsr_jsr_ret/include/parrot/global.h
==============================================================================
--- branches/bsr_jsr_ret/include/parrot/global.h	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/include/parrot/global.h	Sat Jul 25 17:46:23 2009	(r40267)
@@ -71,9 +71,10 @@
 PARROT_CAN_RETURN_NULL
 PMC * Parrot_get_namespace_keyed(PARROT_INTERP,
     ARGIN(PMC *base_ns),
-    ARGIN_NULLOK(PMC *pmc_key))
+    ARGIN(PMC *pmc_key))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -95,9 +96,10 @@
 PARROT_CAN_RETURN_NULL
 PMC * Parrot_make_namespace_keyed(PARROT_INTERP,
     ARGIN(PMC *base_ns),
-    ARGIN_NULLOK(PMC *pmc_key))
+    ARGIN(PMC *pmc_key))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -158,7 +160,8 @@
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_get_namespace_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
-    || PARROT_ASSERT_ARG(base_ns)
+    || PARROT_ASSERT_ARG(base_ns) \
+    || PARROT_ASSERT_ARG(pmc_key)
 #define ASSERT_ARGS_Parrot_get_namespace_keyed_str \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
@@ -168,7 +171,8 @@
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_make_namespace_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
-    || PARROT_ASSERT_ARG(base_ns)
+    || PARROT_ASSERT_ARG(base_ns) \
+    || PARROT_ASSERT_ARG(pmc_key)
 #define ASSERT_ARGS_Parrot_make_namespace_keyed_str \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \

Modified: branches/bsr_jsr_ret/ports/debian/changelog
==============================================================================
--- branches/bsr_jsr_ret/ports/debian/changelog	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/ports/debian/changelog	Sat Jul 25 17:46:23 2009	(r40267)
@@ -1,3 +1,13 @@
+parrot (1.4.0-1) unstable; urgency=low
+  * New upstream release
+  * debian/rules:
+    - New upstream configuration option --disable-rpath allows packages to
+      be built without rpath.
+  * parrot-devel.install.in
+    - Install pbc_to_exe binary and supporting library.
+
+ -- Allison Randal <allison at parrot.org>  Fri, 24 Jul 2009 23:54:07 -0700
+
 parrot (1.0.0-1) unstable; urgency=low
   * New upstream release
   * debian/control.in:

Modified: branches/bsr_jsr_ret/ports/debian/parrot-devel.install.in
==============================================================================
--- branches/bsr_jsr_ret/ports/debian/parrot-devel.install.in	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/ports/debian/parrot-devel.install.in	Sat Jul 25 17:46:23 2009	(r40267)
@@ -2,6 +2,7 @@
 usr/bin/pbc_disassemble
 usr/bin/pbc_dump
 usr/bin/pbc_merge
+usr/bin/pbc_to_exe
 usr/bin/parrot_config
 usr/lib/parrot/@VERSION@/tools/*
 usr/lib/parrot/@VERSION@/languages/nqp/*
@@ -19,5 +20,6 @@
 usr/lib/parrot/@VERSION@/languages/tge/*
 usr/lib/parrot/@VERSION@/library/TGE.pbc
 usr/lib/parrot/@VERSION@/VERSION
+usr/lib/parrot/@VERSION@/parrot_config.o
 usr/include/parrot/@VERSION@/pmc/*
 usr/src/parrot/@VERSION@/*

Modified: branches/bsr_jsr_ret/ports/debian/rules
==============================================================================
--- branches/bsr_jsr_ret/ports/debian/rules	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/ports/debian/rules	Sat Jul 25 17:46:23 2009	(r40267)
@@ -31,20 +31,21 @@
 configure: configure-stamp
 configure-stamp: debian-control-stamp
 	dh_testdir
-	perl Configure.pl --prefix=/usr
+	perl Configure.pl --prefix=/usr --disable-rpath
 	touch configure-stamp
 
 build: build-stamp
 
 build-stamp: configure-stamp 
 	dh_testdir
-	$(MAKE) installable
+	$(MAKE) installable LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}`pwd`/blib/lib
 	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" docs/running.pod debian/parrot.1
 	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" tools/util/parrot-config.pir debian/parrot_config.1
 	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/pbc_dump.c debian/pbc_dump.1
 	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/pbc_disassemble.c debian/pbc_disassemble.1
 	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/parrot_debugger.c debian/parrot_debugger.1
 	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/pbc_merge.c debian/pbc_merge.1
+	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" tools/dev/pbc_to_exe.pir debian/pbc_to_exe.1
 	touch build-stamp
 
 clean: debian-control-stamp
@@ -88,7 +89,7 @@
 	dh_testroot -a
 	dh_installchangelogs -a ChangeLog
 	dh_installman -pparrot-minimal debian/parrot.1
-	dh_installman -pparrot-devel debian/parrot_debugger.1 debian/pbc_disassemble.1 debian/pbc_dump.1 debian/pbc_merge.1 debian/parrot_config.1
+	dh_installman -pparrot-devel debian/parrot_debugger.1 debian/pbc_disassemble.1 debian/pbc_dump.1 debian/pbc_merge.1 debian/parrot_config.1 debian/pbc_to_exe.1
 	dh_installdocs -a
 	dh_strip -a
 	dh_compress -a

Modified: branches/bsr_jsr_ret/ports/ubuntu/changelog
==============================================================================
--- branches/bsr_jsr_ret/ports/ubuntu/changelog	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/ports/ubuntu/changelog	Sat Jul 25 17:46:23 2009	(r40267)
@@ -1,3 +1,19 @@
+parrot (1.4.0-1ubuntu1) karmic; urgency=low
+  * Merge from Debian unstable.
+  * Remove lpia patch, upstream fix included in new release.
+
+ -- Allison Randal <allison at parrot.org>  Sat, 25 Jul 2009 08:37:52 -0700
+
+parrot (1.4.0-1) unstable; urgency=low
+  * New upstream release
+  * debian/rules:
+    - New upstream configuration option --disable-rpath allows packages to
+      be built without rpath.
+  * parrot-devel.install.in
+    - Install pbc_to_exe binary and supporting library.
+
+ -- Allison Randal <allison at parrot.org>  Fri, 24 Jul 2009 23:54:07 -0700
+
 parrot (1.0.0-1ubuntu1) karmic; urgency=low
 
   [ Allison Randal ]

Modified: branches/bsr_jsr_ret/ports/ubuntu/control.in
==============================================================================
--- branches/bsr_jsr_ret/ports/ubuntu/control.in	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/ports/ubuntu/control.in	Sat Jul 25 17:46:23 2009	(r40267)
@@ -4,7 +4,7 @@
 Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
 XSBC-Original-Maintainer: Debian Parrot Maintainers <pkg-parrot-devel at lists.alioth.debian.org>
 Uploaders: Allison Randal <allison at parrot.org>, Nuno Carvalho <mestre.smash at gmail.com>, Patrick Michaud <pmichaud at pobox.com>
-Build-Depends: debhelper (>= 5.0.0), perl, perl-doc, libgdbm-dev, libreadline-dev, quilt
+Build-Depends: debhelper (>= 5.0.0), perl, perl-doc, libgdbm-dev, libreadline-dev
 Standards-Version: 3.8.1
 
 Package: parrot

Deleted: branches/bsr_jsr_ret/ports/ubuntu/rules
==============================================================================
--- branches/bsr_jsr_ret/ports/ubuntu/rules	Sat Jul 25 17:46:23 2009	(r40266)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,107 +0,0 @@
-#!/usr/bin/make -f
-
-include /usr/share/quilt/quilt.make
-
-CFLAGS = -Wall -g
-VERSION = $(shell cat VERSION)
-SOVERSION = $(VERSION)
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-	CFLAGS += -O0
-else
-	CFLAGS += -O2
-endif
-
-CONTROL_FILES = \
-  debian/control.in \
-  debian/parrot.install.in \
-  debian/parrot-minimal.install.in \
-  debian/parrot-doc.install.in \
-  debian/parrot-devel.install.in \
-  debian/libparrot.install.in \
-  debian/libparrot-dev.install.in
-
-debian-control-stamp: $(CONTROL_FILES) VERSION
-	for infile in $(CONTROL_FILES); do \
-	    outfile=`echo $$infile | sed "s/\.in$$//"`; \
-	    sed -e "s/@VERSION@/$(VERSION)/g" \
-	        -e "s/@SOVERSION@/$(SOVERSION)/g" \
-	            <$$infile >$$outfile; \
-	done
-	touch $@
-
-configure: configure-stamp
-configure-stamp: debian-control-stamp $(QUILT_STAMPFN)
-	dh_testdir
-	perl Configure.pl --prefix=/usr
-	touch configure-stamp
-
-build: build-stamp
-
-build-stamp: configure-stamp 
-	dh_testdir
-	$(MAKE) installable
-	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" docs/running.pod debian/parrot.1
-	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" tools/util/parrot-config.pir debian/parrot_config.1
-	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/pbc_dump.c debian/pbc_dump.1
-	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/pbc_disassemble.c debian/pbc_disassemble.1
-	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/parrot_debugger.c debian/parrot_debugger.1
-	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/pbc_info.c debian/pbc_info.1
-	pod2man --section=1 --release="Debian Project" --center="Debian GNU/Linux manual" src/pbc_merge.c debian/pbc_merge.1
-	touch build-stamp
-
-clean: debian-control-stamp unpatch
-	dh_testdir
-	dh_testroot
-	rm -f build-stamp configure-stamp debian-control-stamp debian/parrot.1 debian/parrot_config.1 debian/pbc_dump.1 debian/pbc_disassemble.1 debian/parrot-debugger.1 debian/pbc_info.1 debian/pbc_merge.1 debian/libparrot$(SOVERSION).install src/main.o installable_pbc_to_exe ext/Parrot-Embed/Makefile.PL test.c test.ldo
-	[ ! -f Makefile ] || $(MAKE) distclean
-	dh_clean 
-
-debian/libparrot$(SOVERSION).install: debian/libparrot.install VERSION
-	cp $< $@
-
-install: build debian/libparrot$(SOVERSION).install
-	dh_testdir
-	dh_testroot
-	dh_clean -k 
-	$(MAKE) install-dev DESTDIR=$(CURDIR)/debian/tmp
-	dh_installdirs
-	find $(CURDIR)/debian/tmp -type f
-	dh_install --sourcedir=$(CURDIR)/debian/tmp --list-missing
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-	dh_testdir -i 
-	dh_testroot -i
-	dh_installchangelogs -i ChangeLog
-	dh_installdocs -i
-	dh_link -plibparrot-dev usr/lib/libparrot.so.$(SOVERSION) usr/lib/libparrot.so
-	dh_compress -pparrot-doc -X.pod
-	dh_compress -plibparrot-dev
-	dh_fixperms -i
-	dh_installdeb -i
-	dh_gencontrol -i
-	dh_md5sums -i
-	dh_builddeb -i
-
-# Build architecture-dependent files here.
-binary-arch: build install
-	dh_testdir -a
-	dh_testroot -a
-	dh_installchangelogs -a ChangeLog
-	dh_installman -pparrot-minimal debian/parrot.1
-	dh_installman -pparrot-devel debian/parrot_debugger.1 debian/pbc_disassemble.1 debian/pbc_dump.1 debian/pbc_info.1 debian/pbc_merge.1 debian/parrot_config.1
-	dh_installdocs -a
-	dh_strip -a
-	dh_compress -a
-	dh_fixperms -a
-	dh_makeshlibs -plibparrot$(SOVERSION)
-	dh_shlibdeps -a -Llibparrot$(SOVERSION) -l$(CURDIR)/debian/libparrot$(SOVERSION)/usr/lib
-	dh_installdeb -a
-	dh_gencontrol -a
-	dh_md5sums -a
-	dh_builddeb -a
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure

Modified: branches/bsr_jsr_ret/runtime/parrot/library/Curses.pir
==============================================================================
--- branches/bsr_jsr_ret/runtime/parrot/library/Curses.pir	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/runtime/parrot/library/Curses.pir	Sat Jul 25 17:46:23 2009	(r40267)
@@ -687,6 +687,8 @@
 set_global 'mcprint', $P2
 dlfunc $P2, $P1, 'has_key', 'ii'
 set_global 'has_key', $P2
+.export_dl_func($P1, 'getmaxx', 'ip')
+.export_dl_func($P1, 'getmaxy', 'ip')
 
 .begin_return
 .end_return

Modified: branches/bsr_jsr_ret/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/bsr_jsr_ret/runtime/parrot/library/P6object.pir	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/runtime/parrot/library/P6object.pir	Sat Jul 25 17:46:23 2009	(r40267)
@@ -346,7 +346,8 @@
 .end
 
 
-=item register(parrotclass [, 'name'=>name] [, 'protoobject'=>proto] [, 'parent'=>parentclass] [, 'hll'=>hll])
+=item register(parrotclass [, 'name'=>name] [, 'protoobject'=>proto]
+               [, 'parent'=>parentclass] [, 'hll'=>hll] [, 'how'=>how)
 
 Sets objects of type C<parrotclass> to use C<protoobject>,
 and verifies that C<parrotclass> has P6object methods defined
@@ -359,6 +360,9 @@
 to map to a class name that already exists in Parrot (e.g., 'Hash'
 or 'Object').
 
+The C<how> parameter allows you to specify an already-existing metaclass
+instance to be used for this class rather than creating a new one.
+
 =cut
 
 .sub 'register' :method
@@ -423,7 +427,10 @@
     self.'add_parent'(item, 'to'=>parrotclass)
     goto parent_loop
   parent_done:
+    $I0 = isa parrotclass, 'P6object'
+    if $I0 goto isa_p6object_already
     self.'add_parent'('P6object', 'to'=>parrotclass)
+  isa_p6object_already:
 
     ##  determine parrotclass' canonical p6-name
     .local string name
@@ -441,16 +448,20 @@
     ns = split '::', name
   have_ns:
 
-    ##  get the metaclass (how) from :protoobject, or create one
+    ##  get the metaclass (how) from :how, or :protoobject, or create one
     .local pmc how
+    how = options['how']
+    unless null how goto have_how
     $P0 = options['protoobject']
     if null $P0 goto make_how
     how = $P0.'HOW'()
-    goto have_how
+    goto how_setup
   make_how:
     ##  create a metaclass for parrotclass
-    how = new 'P6metaclass'
+    $P0 = typeof self
+    how = new $P0
     setattribute how, 'parrotclass', parrotclass
+  have_how:
 
     ##  create an anonymous class for the protoobject
     .local pmc protoclass, protoobject
@@ -506,7 +517,7 @@
     push ns, 'EXPORT'
     push ns, 'ALL'
     set_root_global ns, $S0, protoobject
-    goto have_how
+    goto how_setup
 
     ##  anonymous classes have empty strings for shortname and longname
   anonymous_class:
@@ -515,7 +526,7 @@
     setattribute how, 'longname', longname
     setattribute how, 'shortname', shortname
 
-  have_how:
+  how_setup:
     ##  attach the metaclass object to the parrotclass
     setprop parrotclass, 'metaclass', how
 

Modified: branches/bsr_jsr_ret/src/gc/alloc_memory.c
==============================================================================
--- branches/bsr_jsr_ret/src/gc/alloc_memory.c	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/src/gc/alloc_memory.c	Sat Jul 25 17:46:23 2009	(r40267)
@@ -24,6 +24,15 @@
 #include "parrot/parrot.h"
 #include "parrot/memory.h"
 
+PARROT_DOES_NOT_RETURN
+static void failed_allocation(unsigned int line, unsigned long size) /* HEADERIZER SKIP */
+{
+    fprintf(stderr, "Failed allocation of %lu bytes\n", size);
+    do_panic(NULL, "Out of mem", __FILE__, line);
+}
+
+#define PANIC_OUT_OF_MEM(size) failed_allocation(__LINE__, (size))
+
 /* HEADERIZER HFILE: include/parrot/memory.h */
 
 /*
@@ -49,7 +58,7 @@
     fprintf(stderr, "Allocated %i at %p\n", size, ptr);
 #endif
     if (!ptr)
-        PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
     return ptr;
 }
 
@@ -80,7 +89,7 @@
     UNUSED(line);
 #endif
     if (!ptr)
-        PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
     return ptr;
 }
 
@@ -107,7 +116,7 @@
     fprintf(stderr, "Allocated %i at %p\n", size, ptr);
 #endif
     if (!ptr)
-        PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
     return ptr;
 }
 
@@ -139,7 +148,7 @@
     UNUSED(line);
 #endif
     if (!ptr)
-        PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
     return ptr;
 }
 
@@ -174,7 +183,7 @@
     fprintf(stderr, "Allocated %i at %p\n", size, ptr);
 #endif
     if (!ptr)
-         PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
     return ptr;
 }
 
@@ -207,7 +216,7 @@
     fprintf(stderr, "Allocated %i at %p\n", size, ptr);
 #endif
     if (!ptr)
-         PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
 
     if (size > old_size)
         memset((char*)ptr + old_size, 0, size - old_size);
@@ -247,7 +256,7 @@
     UNUSED(line);
 #endif
     if (!ptr)
-        PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
     return ptr;
 }
 
@@ -285,7 +294,7 @@
     UNUSED(line);
 #  endif
     if (!ptr)
-        PANIC(NULL, "Out of mem");
+        PANIC_OUT_OF_MEM(size);
     if (size > old_size)
         memset((char*)ptr + old_size, 0, size - old_size);
 

Modified: branches/bsr_jsr_ret/src/global.c
==============================================================================
--- branches/bsr_jsr_ret/src/global.c	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/src/global.c	Sat Jul 25 17:46:23 2009	(r40267)
@@ -205,20 +205,15 @@
         PMC *ns = base_ns;
 
         for (i = 0; i < n; ++i) {
-            if (!pmc_key)
-                Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                    "Passed a NULL pmc_key into VTABLE_get_string_keyed_int");
-            else {
-                STRING * const part = VTABLE_get_string_keyed_int(interp, pmc_key, i);
-                PMC *sub_ns = VTABLE_get_pmc_keyed_str(interp, ns, part);
-
-                if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, isans)) {
-                    sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
-                    if (PMC_IS_NULL(sub_ns))
-                        return PMCNULL;
-                }
-                ns = sub_ns;
+            STRING * const part = VTABLE_get_string_keyed_int(interp, pmc_key, i);
+            PMC *sub_ns = VTABLE_get_pmc_keyed_str(interp, ns, part);
+
+            if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, isans)) {
+                sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
+                if (PMC_IS_NULL(sub_ns))
+                    return PMCNULL;
             }
+            ns = sub_ns;
         }
         return ns;
     }
@@ -280,7 +275,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 PMC *
-Parrot_get_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN_NULLOK(PMC *pmc_key))
+Parrot_get_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN(PMC *pmc_key))
 {
     ASSERT_ARGS(Parrot_get_namespace_keyed)
     return internal_ns_keyed(interp, base_ns, pmc_key, 0);
@@ -327,7 +322,7 @@
 PARROT_CAN_RETURN_NULL
 PMC *
 Parrot_make_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns),
-        ARGIN_NULLOK(PMC *pmc_key))
+        ARGIN(PMC *pmc_key))
 {
     ASSERT_ARGS(Parrot_make_namespace_keyed)
     return internal_ns_keyed(interp, base_ns, pmc_key, INTERN_NS_CREAT);

Modified: branches/bsr_jsr_ret/src/pmc/class.pmc
==============================================================================
--- branches/bsr_jsr_ret/src/pmc/class.pmc	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/src/pmc/class.pmc	Sat Jul 25 17:46:23 2009	(r40267)
@@ -728,7 +728,7 @@
 
 /*
 
-=item C<void remove_method(STRING *name, PMC *sub)>
+=item C<void remove_method(STRING *name)>
 
 Removes the method with the given name.
 

Modified: branches/bsr_jsr_ret/t/codingstd/c_function_docs.t
==============================================================================
--- branches/bsr_jsr_ret/t/codingstd/c_function_docs.t	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/t/codingstd/c_function_docs.t	Sat Jul 25 17:46:23 2009	(r40267)
@@ -120,6 +120,7 @@
 config/gen/platform/solaris/math.c
 config/gen/platform/solaris/time.c
 examples/c/nanoparrot.c
+examples/c/pbc_info.c
 examples/compilers/japhc.c
 examples/embed/lorito.c
 src/atomic/gcc_x86.c

Modified: branches/bsr_jsr_ret/t/compilers/imcc/syn/errors.t
==============================================================================
--- branches/bsr_jsr_ret/t/compilers/imcc/syn/errors.t	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/t/compilers/imcc/syn/errors.t	Sat Jul 25 17:46:23 2009	(r40267)
@@ -78,9 +78,6 @@
 /^error:imcc:syntax error, unexpected IDENTIFIER, expecting/
 END_EXPECTED
 
-TODO: {
-  local $TODO = 'TT #767';
-
 pir_error_output_like( <<'END_PIR', <<'END_EXPECTED', 'no multiple .local, TT #767' );
 .sub main :main
   .local pmc p
@@ -90,8 +87,6 @@
 /^error:imcc:syntax error, duplicated IDENTIFIER/
 END_EXPECTED
 
-}
-
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4

Modified: branches/bsr_jsr_ret/t/tools/dump_pbc.t
==============================================================================
--- branches/bsr_jsr_ret/t/tools/dump_pbc.t	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/t/tools/dump_pbc.t	Sat Jul 25 17:46:23 2009	(r40267)
@@ -1,10 +1,10 @@
 #! perl
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
 =head1 NAME
 
-t/tools/dumb_pbc.t - test the script tools/utils/dump_pbc.t
+t/tools/dumb_pbc.t - test the script tools/utils/dump_pbc.pl
 
 =head1 SYNOPSIS
 

Copied: branches/bsr_jsr_ret/t/tools/pgegrep.t (from r40266, trunk/t/tools/pgegrep.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/bsr_jsr_ret/t/tools/pgegrep.t	Sat Jul 25 17:46:23 2009	(r40267, copy of r40266, trunk/t/tools/pgegrep.t)
@@ -0,0 +1,111 @@
+#! perl
+# Copyright (C) 2009, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/tools/pgegrep.t - test the script tools/utils/pgegrep
+
+=head1 SYNOPSIS
+
+    % prove t/tools/pgegrep.t
+
+=head1 DESCRIPTION
+
+Tests the features of of the C<pgegrep> utility.
+
+=cut
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+
+use Fatal qw{open close};
+use Test::More;
+use Parrot::Test tests => 10;
+use Parrot::Config;
+use File::Spec   ();
+
+my $testdata = File::Spec->catfile(qw{. t tools testdata });
+my $testdata_escaped = $testdata;
+$testdata_escaped =~ s!\\!\\\\!g;
+
+sub pgegrep_output_like {
+    my ($options, $snippet, $desc)  = @_;
+
+    my $PARROT  = ".$PConfig{slash}$PConfig{test_prog}";
+    my $pgegrep = File::Spec->catfile( qw{. tools util pgegrep} );
+    my $out     = `$PARROT $pgegrep $options`;
+
+    like( $out, $snippet, $desc );
+
+    return;
+}
+
+pgegrep_output_like(
+    '-V',
+    qr!\Qpgegrep v0.0.1\E!,
+    'pge reports correct version'
+);
+
+pgegrep_output_like(
+    "cat $testdata",
+    qr!keyboardcat!,
+    'basic sanity of matching a literal'
+);
+
+pgegrep_output_like(
+    "-n cat $testdata",
+    qr!1:keyboardcat!,
+    'matching a literal with line number'
+);
+
+pgegrep_output_like(
+    "--line-number cat $testdata",
+    qr!1:keyboardcat!,
+    'matching a literal with line number with long option'
+);
+
+pgegrep_output_like(
+    "-H cat $testdata",
+    qr!$testdata_escaped:keyboardcat!,
+    'matching a literal with file name'
+);
+
+pgegrep_output_like(
+    "--with-filename cat $testdata",
+    qr!$testdata_escaped:keyboardcat!,
+    'matching a literal with file name with long option'
+);
+
+
+pgegrep_output_like(
+    "-v cat $testdata",
+    qr!saxophonegiraffe!,
+    'test inversion of match'
+);
+
+pgegrep_output_like(
+    "--invert-match cat $testdata",
+    qr!saxophonegiraffe!,
+    'test inversion of match with long option'
+);
+
+pgegrep_output_like(
+    "-l cat $testdata",
+    qr!$testdata_escaped!,
+    'find files that match'
+);
+
+pgegrep_output_like(
+    "--files-with-matches cat $testdata",
+    qr!$testdata_escaped!,
+    'find files that match with long option'
+);
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Copied: branches/bsr_jsr_ret/t/tools/testdata (from r40266, trunk/t/tools/testdata)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/bsr_jsr_ret/t/tools/testdata	Sat Jul 25 17:46:23 2009	(r40267, copy of r40266, trunk/t/tools/testdata)
@@ -0,0 +1,2 @@
+keyboardcat
+saxophonegiraffe

Modified: branches/bsr_jsr_ret/tools/dev/pbc_to_exe.pir
==============================================================================
--- branches/bsr_jsr_ret/tools/dev/pbc_to_exe.pir	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/tools/dev/pbc_to_exe.pir	Sat Jul 25 17:46:23 2009	(r40267)
@@ -4,7 +4,7 @@
 
 =head1 NAME
 
-pbc_to_exe
+pbc_to_exe - compile bytecode to executable
 
 =head2 SYNOPSIS
 

Modified: branches/bsr_jsr_ret/tools/util/pgegrep
==============================================================================
--- branches/bsr_jsr_ret/tools/util/pgegrep	Sat Jul 25 16:26:16 2009	(r40266)
+++ branches/bsr_jsr_ret/tools/util/pgegrep	Sat Jul 25 17:46:23 2009	(r40267)
@@ -150,7 +150,7 @@
 		$I1 = File.'is_file'(filename)
 		.IfElse($I1, {
 			# Is a file
-			handle = open filename, '<'
+			handle = open filename, 'r'
 		},{
 			# Not a file, hopefully a directory
 			$I1 = File.'is_dir'(filename)


More information about the parrot-commits mailing list