Add the Perl 5 to Perl 5 convertor scripts.
[p5sagit/p5-mst-13.2.git] / x2p / walk.c
index f8fad55..de1263f 100644 (file)
@@ -1,11 +1,10 @@
-/* $RCSfile: walk.c,v $$Revision: 4.1 $$Date: 92/08/07 18:29:31 $
+/*    walk.c
  *
- *    Copyright (c) 1991-2001, Larry Wall
+ *    Copyright (C) 1991, 1992, 1993, 1994, 1995, 1997, 1998, 1999,
+ *    2000, 2001, 2002, 2005 by Larry Wall and others
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
- *
- * $Log:       walk.c,v $
  */
 
 #include "EXTERN.h"
@@ -34,15 +33,14 @@ static void tab ( STR *str, int lvl );
 
 int prewalk ( int numit, int level, int node, int *numericptr );
 STR * walk ( int useval, int level, int node, int *numericptr, int minprec );
-
+#ifdef NETWARE
+char *savestr(char *str);
+char *cpytill(register char *to, register char *from, register int delim);
+char *instr(char *big, char *little);
+#endif
 
 STR *
 walk(int useval, int level, register int node, int *numericptr, int minprec)
-           
-          
-                  
-                
-                               /* minimum precedence without parens */
 {
     register int len;
     register STR *str;
@@ -52,7 +50,7 @@ walk(int useval, int level, register int node, int *numericptr, int minprec)
     STR *tmp2str;
     STR *tmp3str;
     char *t;
-    char *d, *s = 0;
+    char *d, *s;
     int numarg;
     int numeric = FALSE;
     STR *fstr;
@@ -655,13 +653,11 @@ sub Pick {\n\
        str_cat(str,", ");
        str_scat(str,fstr=walk(1,level,ops[node+2].ival,&numarg,P_COMMA+1));
        str_free(fstr);
-       str_cat(str,", ");
        if (len == 3) {
+           str_cat(str,", ");
            str_scat(str,fstr=walk(1,level,ops[node+3].ival,&numarg,P_COMMA+1));
            str_free(fstr);
        }
-       else
-           str_cat(str,"999999");
        str_cat(str,")");
        break;
     case OSTRING:
@@ -670,7 +666,7 @@ sub Pick {\n\
        break;
     case OSPLIT:
        str = str_new(0);
-       limit = ", 9999)";
+       limit = ", -1)";
        numeric = 1;
        tmpstr = walk(1,level,ops[node+2].ival,&numarg,P_MIN);
        if (useval)
@@ -822,11 +818,8 @@ sub Pick {\n\
        str_cat(str,")");
        break;
     case OGSUB:
-    case OSUB:
-       if (type == OGSUB)
-           s = "g";
-       else
-           s = "";
+    case OSUB: {
+       int gsub = type == OGSUB ? 1 : 0;
        str = str_new(0);
        tmpstr = str_new(0);
        i = 0;
@@ -856,6 +849,7 @@ sub Pick {\n\
            }
            *d = '\0';
            str_set(tmp2str,tokenbuf);
+           s = (char *) (gsub ? "/g" : "/");
        }
        else {
            tmp2str=walk(1,level,ops[node+2].ival,&numarg,P_MIN);
@@ -863,9 +857,10 @@ sub Pick {\n\
            str_scat(tmp3str,tmp2str);
            str_cat(tmp3str,").'\"') =~ s/&/\\$&/g, ");
            str_set(tmp2str,"eval $s_");
-           s = (char*)(*s == 'g' ? "ge" : "e");
+           s = (char *) (gsub ? "/ge" : "/e");
            i++;
        }
+       str_cat(tmp2str,s);
        type = ops[ops[node+1].ival].ival;
        len = type >> 8;
        type &= 255;
@@ -877,8 +872,6 @@ sub Pick {\n\
            str_scat(str,tmpstr);
            str_scat(str,fstr);
            str_scat(str,tmp2str);
-           str_cat(str,"/");
-           str_cat(str,s);
        }
        else if ((type == OFLD && !split_to_array) || (type == OVAR && len == 1)) {
            if (useval && i)
@@ -889,8 +882,6 @@ sub Pick {\n\
            str_scat(str,fstr);
            str_cat(str,"/");
            str_scat(str,tmp2str);
-           str_cat(str,"/");
-           str_cat(str,s);
        }
        else {
            i++;
@@ -903,8 +894,6 @@ sub Pick {\n\
            str_scat(str,tmpstr);
            str_cat(str,"/$s/");
            str_scat(str,tmp2str);
-           str_cat(str,"/");
-           str_cat(str,s);
        }
        if (useval && i)
            str_cat(str,")");
@@ -913,7 +902,7 @@ sub Pick {\n\
        str_free(tmp2str);
        str_free(tmp3str);
        numeric = 1;
-       break;
+       break; }
     case ONUM:
        str = walk(1,level,ops[node+1].ival,&numarg,P_MIN);
        numeric = 1;
@@ -1619,13 +1608,13 @@ emit_split(register STR *str, int level)
        str_cat(str,tokenbuf);
     }
     if (const_FS) {
-       sprintf(tokenbuf," = split(/[%c\\n]/, $_, 9999);\n",const_FS);
+       sprintf(tokenbuf," = split(/[%c\\n]/, $_, -1);\n",const_FS);
        str_cat(str,tokenbuf);
     }
     else if (saw_FS)
-       str_cat(str," = split($FS, $_, 9999);\n");
+       str_cat(str," = split($FS, $_, -1);\n");
     else
-       str_cat(str," = split(' ', $_, 9999);\n");
+       str_cat(str," = split(' ', $_, -1);\n");
     tab(str,level);
 }