2 * (c) Oleg Puchinin 2006
3 * graycardinalster@gmail.com
13 extern "C" struct env_t
*ENV
;
16 int main (int argc
, char ** argv
)
24 ENV
->sb_cmd
= sb_prname (argv
[0]);
26 if (argc
== 1 && !ENV
->sb_cmd
) {
31 ENV
->d_files
= new EArray (128);
33 d_opts
= new EArray (argc
);
35 for (i
= 0; i
< argc
; i
++)
36 d_opts
->add (argv
[i
]);
38 for (i
= 1; i
< d_opts
->get_size (); i
++) {
39 opt
= d_opts
->get (i
);
40 if (opt
[0] != '-' && index (opt
, '=')) {
46 ENV
->d_files
->add (strdup (d_opts
->get (i
)));
50 if (! opts_funcs (d_opts
, i
))
53 if (! opts_settings (d_opts
, i
))
56 if (! opts_kinds (d_opts
, i
))
59 if (d_opts
->get (i
)[0] == '-' && !validOption (d_opts
->get(i
))) {
60 fprintf (stderr
, "unknown option : %s\n", d_opts
->get (i
));
64 modding_optparse (&i
, 1);
65 } // for (i = 1; i < argc; i++)
67 n_files
= ENV
->d_files
->get_size ();
69 for (i
= 0; i
< argc
; i
++)
70 modding_optparse (&i
, 2);
72 if (NE (ENV
->language
, "C") && NE (ENV
->language
, "C++")) {
73 i
= modding_start (ENV
->sb_cmd
);
77 if (SB_FLGET (SB_FLCPP
))
78 ENV
->d_kinds
&= OT::Class
| OT::Struct
| OT::Function
79 | OT::Namespace
| OT::Define
;
81 switch (ENV
->sb_cmd
) {
83 make_ctags (ENV
->d_files
);
89 cgrep::cgrep (ENV
->d_files
);
92 call_tags (ENV
->d_files
);
95 tags (ENV
->d_files
, NULL
);
99 if (ENV
->sb_cmd
== cmd_makectags
||
100 ENV
->sb_cmd
== cmd_indent
||
101 ENV
->sb_cmd
== cmd_cgrep
) {
102 print_the_time (NULL
);
106 for (i
= 0; i
< n_files
; i
++) {
107 switch (ENV
->sb_cmd
) {
109 flist_main (ENV
->d_files
->get (i
));
112 THE_TT::the_tt_main (ENV
->d_files
->get(i
));
114 case cmd_give_structs
:
115 got_structs (ENV
->d_files
->get (i
));
118 kindsFile (ENV
->d_files
->get(i
), ENV
->d_kinds
);
123 if (ENV
->sb_cmd
== cmd_file
||
124 ENV
->sb_cmd
== cmd_the_tt
||
125 ENV
->sb_cmd
== cmd_give_structs
||
126 ENV
->sb_cmd
== cmd_kinds
)
130 ENV
->sb_cmd
= ENV
->sb_cmd
;
132 if (ENV
->sb_cmd
== cmd_the_tt
&& !n_files
) // THE_TT for stdin
133 THE_TT::the_tt_main ("-");
134 else if (ENV
->sb_cmd
== cmd_give_structs
&& !n_files
) {
136 print_the_time (NULL
);
140 if ((ENV
->sb_cmd
== cmd_kinds
|| ENV
->sb_cmd
== cmd_file
) && !n_files
) {
143 while (fgets (d_buf
, 1023, stdin
)) {
145 switch (ENV
->sb_cmd
) {
147 kindsFile (d_buf
, ENV
->d_kinds
);
156 if (!SB_FLGET (SB_FLRTREE
))
157 call_tree (ENV
->d_files
->get (0), 0);
159 reverse_calltree (ENV
->d_files
->get (0));
162 print_the_time (NULL
);
164 if (ENV
->immune_list
)
165 delete ENV
->immune_list
;
167 ENV
->d_files
->foreach (free
);