Add B<-o> option to a2p, for old awk; make new the default
Chip Salzenberg [Thu, 6 Mar 1997 15:48:20 +0000 (03:48 +1200)]
x2p/a2p.h
x2p/a2p.pod
x2p/a2py.c
x2p/walk.c

index f1ab124..b00b072 100644 (file)
--- a/x2p/a2p.h
+++ b/x2p/a2p.h
@@ -415,6 +415,7 @@ EXT bool nomemok INIT(FALSE);
 EXT char const_FS INIT(0);
 EXT char *namelist INIT(Nullch);
 EXT char fswitch INIT(0);
+EXT bool old_awk INIT(0);
 
 EXT int saw_FS INIT(0);
 EXT int maxfld INIT(0);
index 06c5ac7..fa726fb 100644 (file)
@@ -41,6 +41,12 @@ Any delimiter can be used to separate the field names.
 
 causes a2p to assume that input will always have that many fields.
 
+=item B<-o>
+
+tells a2p to use old awk behavior.  For now, the only difference is
+that old awk always has a line loop, even if there are no line
+actions, whereas new awk does not.
+
 =back
 
 =head2 "Considerations"
index 46ec604..ad685fe 100644 (file)
@@ -80,6 +80,9 @@ register char **env;
        case 'n':
            namelist = savestr(argv[0]+2);
            break;
+       case 'o':
+           old_awk = TRUE;
+           break;
        case '-':
            argc--,argv++;
            goto switch_end;
index 936f202..cb40073 100644 (file)
@@ -145,7 +145,7 @@ int minprec;                        /* minimum precedence without parens */
            if (saw_FNR)
                str_cat(str,"continue {\n    $FNRbase = $. if eof;\n}\n");
        }
-       else
+       else if (old_awk)
            str_cat(str,"while (<>) { }         # (no line actions)\n");
        if (ops[node+4].ival) {
            realexit = TRUE;