@@ -55,6 +55,8 @@ struct actionSpec {
5555 ACTION_LIST_PTAGS = 1 << 2 ,
5656 } action ;
5757 const char * name ; /* for ACTION_FIND */
58+ bool canonicalizing ;
59+ struct canonWorkArea canon ;
5860};
5961
6062static const char * ProgramName ;
@@ -719,24 +721,17 @@ extern int main (int argc, char **argv)
719721 struct actionSpec actionSpec = {
720722 .action = ACTION_NONE ,
721723 .name = NULL ,
724+ .canonicalizing = false,
725+ .canon = {
726+ .cacheTable = NULL ,
727+ .ptags = false,
728+ /* .absoluteOnly = false, */
729+ },
722730 };
723731
724732 memset (& printOpts , 0 , sizeof (printOpts ));
725733 memset (& readOpts , 0 , sizeof (readOpts ));
726734
727- struct canonWorkArea canonWorkArea = {
728- .cacheTable = NULL ,
729- .ptags = false,
730- .absoluteOnly = false,
731- };
732- struct canonWorkArea canonWorkAreaAbsForm = {
733- .cacheTable = NULL ,
734- .ptags = false,
735- .absoluteOnly = true,
736- };
737- struct canonWorkArea * canon = NULL ;
738-
739-
740735 ProgramName = argv [0 ];
741736 setExecutableName (ProgramName );
742737 if (argc == 1 )
@@ -839,9 +834,15 @@ extern int main (int argc, char **argv)
839834 }
840835 }
841836 else if (strcmp (optname , "absolute - input ") == 0 )
842- canon = & canonWorkAreaAbsForm ;
837+ {
838+ actionSpec .canonicalizing = true;
839+ actionSpec .canon .absoluteOnly = true;
840+ }
843841 else if (strcmp (optname , "canonicalize - input ") == 0 )
844- canon = & canonWorkArea ;
842+ {
843+ actionSpec .canonicalizing = true;
844+ actionSpec .canon .absoluteOnly = false;
845+ }
845846#ifdef READTAGS_DSL
846847 else if (strcmp (optname , "filter ") == 0 )
847848 {
@@ -952,10 +953,12 @@ extern int main (int argc, char **argv)
952953 printUsage (stderr , 1 );
953954 break ;
954955 case 'A' :
955- canon = & canonWorkAreaAbsForm ;
956+ actionSpec .canonicalizing = true;
957+ actionSpec .canon .absoluteOnly = true;
956958 break ;
957959 case 'C' :
958- canon = & canonWorkArea ;
960+ actionSpec .canonicalizing = true;
961+ actionSpec .canon .absoluteOnly = false;
959962 break ;
960963#ifdef READTAGS_DSL
961964 case 'Q' :
@@ -1009,18 +1012,20 @@ extern int main (int argc, char **argv)
10091012
10101013 if (actionSpec .action & ACTION_LIST_PTAGS )
10111014 {
1012- if (canon )
1013- canon -> ptags = true;
1014- listTags (& inputSpec , 1 , & printOpts , canon );
1015- if (canon )
1016- canon -> ptags = false;
1015+ if (actionSpec .canonicalizing )
1016+ actionSpec .canon .ptags = true;
1017+ listTags (& inputSpec , 1 , & printOpts ,
1018+ actionSpec .canonicalizing ? & actionSpec .canon : NULL );
1019+ if (actionSpec .canonicalizing )
1020+ actionSpec .canon .ptags = false;
10171021 }
10181022
10191023 if (actionSpec .action & ACTION_FIND )
1020- findTag (& inputSpec , actionSpec .name , & readOpts , & printOpts , canon );
1024+ findTag (& inputSpec , actionSpec .name , & readOpts , & printOpts ,
1025+ actionSpec .canonicalizing ? & actionSpec .canon : NULL );
10211026 else if (actionSpec .action & ACTION_LIST )
1022- listTags (& inputSpec , 0 , & printOpts , canon );
1023-
1027+ listTags (& inputSpec , 0 , & printOpts ,
1028+ actionSpec . canonicalizing ? & actionSpec . canon : NULL );
10241029
10251030#ifdef READTAGS_DSL
10261031 if (Qualifier )
@@ -1031,11 +1036,8 @@ extern int main (int argc, char **argv)
10311036 f_destroy (Formatter );
10321037#endif
10331038
1034- if (canon )
1035- {
1036- if (canon -> cacheTable )
1037- canonFnameCacheTableDelete (canon -> cacheTable );
1038- }
1039+ if (actionSpec .canon .cacheTable )
1040+ canonFnameCacheTableDelete (actionSpec .canon .cacheTable );
10391041
10401042 if (inputSpec .tempFileName )
10411043 {
0 commit comments