Added some code to handle -Oego,opt,asopt and the like.
authorceriel <none@none>
Tue, 10 Feb 1987 16:50:32 +0000 (16:50 +0000)
committerceriel <none@none>
Tue, 10 Feb 1987 16:50:32 +0000 (16:50 +0000)
By default, optimizers can be excluded by giving them a negative
priority in the description files. This is currently done for
the global optimizer

util/ack/data.h
util/ack/main.c
util/ack/scan.c

index 5208efc..f9f6d1a 100644 (file)
@@ -5,7 +5,9 @@
 EXTERN  char            *stopsuffix;    /* Suffix to stop at */
 EXTERN  char            *machine;       /* The machine id */
 EXTERN char            *callname;      /* argv[0] */
-EXTERN  char            *rts;           /* The runtime-system id */
+EXTERN  char            *rts;           /* The runtime-system */
+EXTERN  char            *rtsuf;         /* The runtime-system module suffix */
+EXTERN char            *Optlist;       /* Which optimizers */
 
 EXTERN  list_head       arguments;      /* List of arguments */
 EXTERN  list_head       flags;          /* List of flags */
index e4432de..3a68bf2 100644 (file)
@@ -175,6 +175,8 @@ vieuwargs(argc,argv) char **argv ; {
                        hide=YES ;
                        break ;
           case 'O':    Optflag++ ;
+                       Optlist= &argp[2] ;
+                       eaten=1 ;
                        break ;
           case 'v':    if ( argp[2] ) {
                                v_flag += atoi(&argp[2]) ;
index a43193f..67f00b4 100644 (file)
@@ -84,6 +84,7 @@ try(f_scan,suffix) list_elem *f_scan; char *suffix; {
                scan_found();
                return ;
        }
+       if (! f_scan) return;
        scanlist(f_scan, scan) {
                trafo= t_cont(*scan) ;
                if ( satisfy(trafo,suffix) ) {
@@ -129,10 +130,10 @@ try(f_scan,suffix) list_elem *f_scan; char *suffix; {
                                scan_found() ;
                                return ;
                        }
-                       if ( l_next(*scan) ) {
-                               try(l_next(*scan),trafo->t_out);
+                       if (! l_next(*scan) && !stopsuffix) {
+                               scan_found() ;
                        } else {
-                               if ( !stopsuffix ) scan_found() ;
+                               try(l_next(*scan),trafo->t_out);
                        }
                        trafo->t_scan= NO ;
                }