path: root/src
AgeCommit message (Collapse)AuthorFiles
13 daysUpdate copyright yearsHEADmasterSergey Poznyakoff13
2019-07-10Use wordsplit from submoduleSergey Poznyakoff3
2019-02-10Finish implementation of --allSergey Poznyakoff2
* doc/cflow.1: Document the --all --all behavior * doc/cflow.texi: Likewise. * src/main.c: Increment all_functions for each -A option. * src/output.c (tree_output): If one --all option is used, output graphs for all top-level functions (i.e. functions, not reachable from other ones). If used twice, output graphs for all global function. * tests/ New test. * tests/ Add new test. * tests/ Likewise.
2019-02-10Fix processing of typedef struct and struct declarations. Fix --xref mode.Sergey Poznyakoff5
Some constucts were processed incorrectly (see for examples). Unit-local types were not displayed in xref mode. * src/cflow.h (symbol_temp): Rename to symbol_temp. All uses changed. * src/output.c (tree_output): In all_functions mode: print all functions without explicit caller. * src/parser.c (save_token): Process curly braces. (fake_struct): Don't restore stack upon encountering identifier or modifier. See for testcases. (parse_variable_declaration): restore stack only if type_end is -1 (no tag encountered). See struct06 in (skip_struct): Minor change. * src/parser.h: Redefine token types as enum. * src/symbol.c (unit_local_list): New static. (static_free): Preserve unit-local symbols in unit_local_list in xref mode. (collect_symbols): Consider symbols from unit_local_list. * tests/ Add new testcases. * tests/ (CFLOW_TEST): New macro. Include new testcases. * tests/ New file. * tests/ New file. * tests/ Remove. * tests/ Remove. * tests/ Remove. * tests/ Remove. * .gitignore: Update.
2019-02-09Minor changeSergey Poznyakoff3
* src/output.c (tree_output): Make sure the main subtree is never output twice. * src/wordsplit.c: Update from grecs. * src/wordsplit.h: Likewise.
2019-02-08Fix Poznyakoff1
* src/parser.c (expression): Fix parsing of type casts. * tests/ New test case. * tests/ Add new test. * tests/ Add new test.
2019-02-08Include in output functions that don't call other functionsSergey Poznyakoff2
* src/output.c (tree_output): When outputting all graphs, skip only functions that have no source file information. * src/parser.c (declare): Don't install symbols with empty declarations.
2019-02-08Update copyright statementsSergey Poznyakoff11
2019-02-08New options: --all and --no-mainSergey Poznyakoff3
* NEWS: Document --all and --no-main * Version 1.5.90 * doc/cflow.texi: Document --all and --no-main * src/cflow.h (all_functions): New extern. * src/main.c: New options: -A (--all) and --no-main * src/output.c (tree_output): Output all graphs if all_functions is set or no main function is defined.
2019-01-22BugfixSergey Poznyakoff1
* src/main.c (main): Make sure preprocessor options are collected before parsing source files.
2017-01-02Happy GNU YearSergey Poznyakoff14
2016-11-14Include static symbols as root points in inverted graphs.Sergey Poznyakoff4
* src/cflow.h (linked_list_size): New function. * src/linked-list.c (linked_list_size): New function. * src/symbol.c (collect_symbols): Include static symbols, if allowed by sel. * src/main.c (parse_opt): Exclude static symbols for --xref
2016-11-11BugfixSergey Poznyakoff1
* src/parser.c (tokdel): Fix amount of memory to move. * THANKS: Niklas Angebrand
2016-05-16Version 1.5release-1_5Sergey Poznyakoff3
* NEWS: Version 1.5 * Likewise. * src/main.c (parse_opt): Bugfix. * src/parser.c: Include ctype.h. * src/symbol.c (hash_symbol_hasher): Fix signature.
2016-03-22Fix flowchart-generation rule in Makefile and in docsSergey Poznyakoff1
Don't use $@ in explicit rules.
2016-03-22Update copyright yearsSergey Poznyakoff14
2016-03-22Properly handle invalid inputSergey Poznyakoff1
See * src/parser.c (cleanup_stack): Ignore negative deltas. (parse_function_declaration): Don't set caller if the symbol is in automatic storage. Note: that means nested function definitions can't be handled. * tests/ New test case. * tests/ Add new test case. * tests/ Likewise.
2016-03-04Fix handling of such declarations as "struct x *a, *b";Sergey Poznyakoff1
* src/parser.c (fake_struct) (parse_variable_declaration): Correctly determine end of type. * tests/ New test case. * tests/ Add new test. * tests/ (CFLOW_CHECK_PROG): Don't add extra newline at the end of expout. All uses updated.
2015-03-02Update copyright yearsSergey Poznyakoff14
2014-02-07Use exit codes consistently.Sergey Poznyakoff6
* doc/cflow.1: Document exit codes. * doc/cflow.texi: Likewise. * src/cflow.h: Define exit code constants. * src/main.c: Use exit codes consistently. * src/output.c: Likewise. * src/parser.c: Likewise. * src/posix.c: Likewise. * src/rc.c: Likewise.
2014-02-07Use wordsplit.[ch] (from grecs) instead of the obsolete argcv.[ch]Sergey Poznyakoff6
2014-02-07Update copyright statements. Remove 'Front-Cover' clause from cflow.texiSergey Poznyakoff15
2014-02-07Output debugging info to stderr instead of stdout.Sergey Poznyakoff3
2014-02-07Correctly handle functions returning struct/unionSergey Poznyakoff2
This fixes bug #31792. * bootstrap (gnulib_extra_files): Remove "missing" * gnulib: Upgrade * gnulib.modules: Add xalloc. * src/ Use AM_CPPFLAGS instead of INCLUDES. * src/parser.c (token_type_str) (dbgtok,debugtoken): New diagnostic functions. (tokdel,tokins): New functions. (nexttoken): Clear yylval.str. Print token stack state. (putback): Copy all data to tok. Print token stack state. (file_error,restore (is_function): Hanlde struct, union and enum: all these can appear in the return type specification. (fake_struct): Don't destroy token stack. Use tokdel and tokins to modify it. (parse_variable_declaration): Likewise. * tests/ Add new testcases. * tests/ Likewise. * tests/ New file. * tests/ New file. * tests/ New file.
2011-10-11Final cleanup before the release.release-1_4Sergey Poznyakoff2
* NEWS: Update. * README: Update. * doc/cflow.texi: Update. * src/main.c (symbol_override): pass allocated argument to install. * src/parser.c (yyparse): Return 0.
2011-10-11Minor fix.Sergey Poznyakoff1
* src/parser.c (dcl): allow for qualifier wherever a modifier is allowed.
2011-10-11Improve the docs.Sergey Poznyakoff2
* doc/cflow.texi: Document symbol classes and aliases. * src/cflow.rc: Minor change. * src/main.c: Mention aliasing feature in the docstring for --symbol.
2011-10-10Improve parser. Allow users to declare aliases to other symbols.Sergey Poznyakoff7
The latter feature is useful for declaring reserved symbols such as __restrict or __inline, e.g. --symbol __restrict:=restrict instructs cflow to treat `__restrict' exactly as `restrict'. * src/ Minor fix in rule for flowgraph. * src/c.l (init_tokens): New function, separated from init_lex. Install qualifiers. * src/cflow.h (symbol_alias): New flag. (symbol)<alias>: New member. (INSTALL_DEFAULT,INSTALL_OVERWRITE) (INSTALL_CHECK_LOCAL,INSTALL_UNIT_LOCAL): New defines. * src/cflow.rc: Rewrite for use with --cpp='gcc -E' * src/main.c (symbol_override): Extend syntax to allow for defining aliases to other tokens (--symbol __inline:=inline). * src/parser.c (print_token): print qualifiers and ops. (file_error): Change signature. All uses changed. (save_token): Improve output spacing. (skip_balanced): Treat LBRACE0 and RBRACE0 as { and }. (is_function): allow for qualifiers and wrappers before defintion. (parse_function_declaration): Remove PARM_WRAPPER case: it is taken care of by the caller. (fake_struct): leave when '(' is encountered. (parse_variable_declaration): Allow for qualifiers before the identifier. (skip_struct): Use skip_balanced. (dcl): Handle wrappers. Leave if a semicolon is encountered. (dirdcl): Optimize handing of wrapper. (maybe_parm_list): Handle qualifiers. (declare): allow for wrappers. (declare_type): Pass INSTALL_UNIT_LOCAL as a flag to install. * src/symbol.c (lookup): Argument is const now. (install): Change semantics of the 2nd argument. (install_ident): Change the call to install accordingly. * tests/ Change spacing to reflect changes to save_token.
2011-10-10Improve local symbol detection.Sergey Poznyakoff5
* src/cflow.h (install): Change prototype. * src/parser.c (skip_balanced): Don't put extra token back. * src/symbol.c (install): Take two arguments, the 2nd one specifying whether the symbol can be local to the compilation unit. All uses updated. (delete_symbol): Don't delete symbol in reverse tree mode, if its callee list is not empty.
2011-10-09Complement a43d8894.Sergey Poznyakoff1
* src/parser.c (save_token): Hanlde [ and ]. Do not enforce space after ). * tests/ Reflect changes in spacing. * tests/ Likewise. * tests/ Likewise. * tests/ Likewise. * tests/ Likewise. * tests/ Likewise.
2011-10-09Accept qualifiers before declarations.Sergey Poznyakoff4
* src/c.l: Handle "inline" keyword. * src/main.c (symbol_optype): Add "qualifier". * src/parser.c (print_token): Correctly handle PARM_WRAPPER and STRING. (save_token): Handle QUALIFIER. In verbose mode, warn about unexpected symbols. (yyparse): Handle QUALIFIER and PARM_WRAPPER. * src/parser.h (QUALIFIER): New define.
2011-10-09Allow for wrappers following the structure definition.Sergey Poznyakoff4
* src/c.l (get_token): do not call yylex if previous call returned EOF. (source): Clear EOF indicator. * src/linked-list.c: Placate gcc warnings. * src/output.c: Likewise. * src/parser.c (skip_balanced): New function. (skip_struct): Allow for a wrapper after closing brace. * tests/ New testcase. * tests/ New testcase. * tests/ Add new testcases. * tests/ Likewise. * NEWS, Set version 1.4 * THANKS: Update.
2011-10-08BugfixSergey Poznyakoff1
* src/parser.c (func_body): Reset caller when the topmost block is closed.
2011-08-17Fix the output of branch marks in tree mode.Shigio YAMAGUCHI1
* src/output.c (direct_tree) (inverted_tree): Use is_last instead of is_printable to decide what mark to use for the line. * tests/ New testcase. * tests/ Add * tests/ Include
2010-01-02Update copyright years.Sergey Poznyakoff12
Happy GNU Year!
2009-11-09Housekeeping changes.Sergey Poznyakoff4
* .gitmodules: Make gnulib a submodule. * (SUBDIRS): Rename `lib' to `gnu'. * Likewise. * README-hacking: Update * bootstrap, bootstrap.conf: Update. * gnulib.modules: Remove `malloc'. * lib/ Remove. * lib/argcv.c, lib/argcv.h: Move to src. * po/, src/ Reflect the above changes. * src/parser.c (declare): Improve diagnostic messages.
2009-11-08Speed-up recursive call detection.Sergey Poznyakoff5
* src/depmap.c: New file. * src/ Add depmap.c. * src/cflow.h (struct symbol.ord): New member. (collect_symbols): Change signature. All callers updated. (collect_functions): New proto. (symbol_is_function): New proto. (cflow_depmap_t): New data type. (depmap_alloc, depmap_set) (depmap_isset, depmap_tc): New prototypes. * src/output.c (symbol_is_function): New function. (scan_tree): Remove. (tree_output): Use depmap to find out recursive calls. * src/symbol.c (static_func_list): New list. (static_free): Add static functions to static_func_list. (collect_symbols): Return size_t. Take additional number of slots in the 3rd argument. (collect_functions): New function.
2009-11-08Fix parsing of typedefs after `struct'.Sergey Poznyakoff1
* src/c.l: Include cflow.h (and, consequently, config.h) at the top of the generated source. (prev_token): New static. (get_token): Set prev_token. (ident): Treat any valid identifier after struct/union/enum as identifier (do not attempt any symbol lookup).
2009-07-01Bugfix.Sergey Poznyakoff1
* src/parser.c (parse_variable_declaration): Skip eventual modifiers before the ident.
2009-06-28Use doubly-linked lists to keep statics and autos.Sergey Poznyakoff5
* src/ (cflow_SOURCES): Order sources. * src/cflow.h (struct linked_list_entry): Add new member: list. (struct symbol): New members: owner, entry (install_ident, ident_change_storage): New prototypes. (linked_list_iterate, linked_list_unlink) (data_in_list): New prototypes. * src/linked-list.c (linked_list_append) (linked_list_iterate): Update for doubly-linked lists. (linked_list_unlink): New function. (linked_list_prepend): Comment out: not used this far. * src/parser.c: Use install_ident and ident_change_storage. * src/symbol.c: Keep information about automatic variables/parameters (on a per-function basis) and static identifiers (on a per-module basis) in two separate linked lists. This speeds up cleanup procedures.
2009-06-28Provide a general-purpose type for singly-linked list.Sergey Poznyakoff5
* src/cflow.h (Cons, Consptr, CAR, CDR): Remove (struct linked_list_entry): New type. (struct linked_list): New type. (linked_list_free_data_fp): New typedef. (struct symbol): Change types of ref_line, callee and caller to struct linked_list. All usages changed. (linked_list_head): New define. (linked_list_create, linked_list_destroy) (linked_list_append, linked_list_prepend): New prototypes. (cleanup, append_to_list): Remove * src/main.c (arglist): Change type to struct linked_list * src/output.c, src/parser.c, src/symbol.c: Use new linked list functions.
2009-06-28Minor changes.Sergey Poznyakoff1
* Improve ChangeLog rule * Remove AH_BOTTOM * gnulib.modules: Add argp-version-etc, progname. Remove version-etc. * src/main.c: Use argp-version-etc
2009-06-28Fix coredump (tiny change)Naohiro Ooiwa1
* src/main.c (symbol_override): Fix conditional logic to prevent coredump on invalid usage. Require that the argument always have ':' in it.
2009-02-06Update docsSergey Poznyakoff1
2009-02-06Switch to gitSergey Poznyakoff2
2007-06-27Relicense under GPLv3Sergey Poznyakoff11
2007-05-18Remove --license optionSergey Poznyakoff1
2007-05-18Add version-etc moduleSergey Poznyakoff1
2007-05-18UpdateSergey Poznyakoff1
2007-05-18Update for the recent gnulibSergey Poznyakoff1

Return to:

Send suggestions and report system problems to the System administrator.