]> mj.ucw.cz Git - libucw.git/log
libucw.git
18 years agoconf2: improved error messages (# of item in a list added)
Robert Spalek [Sat, 29 Apr 2006 12:07:33 +0000 (14:07 +0200)]
conf2: improved error messages (# of item in a list added)

18 years agoconf2: initialize dynamic arrays so that they are not NULL
Robert Spalek [Sat, 29 Apr 2006 11:24:30 +0000 (13:24 +0200)]
conf2: initialize dynamic arrays so that they are not NULL

18 years agoIntroduced a configuration post-processor sherlock/autoconf.cfg, which
Martin Mares [Fri, 28 Apr 2006 22:12:57 +0000 (00:12 +0200)]
Introduced a configuration post-processor sherlock/autoconf.cfg, which
works similarly to lib/autoconf.cfg, but generates settings specific
to Sherlock.

CONFIG_GATHERER and CONFIG_ANALYSER are now automatically decided upon,
but they still can be overridden manually or set by the custom config file.

18 years agoconf2: allow :clear on string attributes
Robert Spalek [Fri, 28 Apr 2006 16:51:22 +0000 (18:51 +0200)]
conf2: allow :clear on string attributes

18 years agoconf2 header: added (c) and #ifdef
Robert Spalek [Fri, 28 Apr 2006 14:47:12 +0000 (16:47 +0200)]
conf2 header: added (c) and #ifdef

18 years agoconf2: source files references in header files, and advanced journaling moved
Robert Spalek [Fri, 28 Apr 2006 14:44:13 +0000 (16:44 +0200)]
conf2: source files references in header files, and advanced journaling moved

18 years agoconf2.c split into 7 smaller modules conf-*.c with include conf-internal.h
Robert Spalek [Fri, 28 Apr 2006 14:31:02 +0000 (16:31 +0200)]
conf2.c split into 7 smaller modules conf-*.c with include conf-internal.h

18 years agotypo
Pavel Charvat [Fri, 28 Apr 2006 11:49:20 +0000 (13:49 +0200)]
typo

18 years agoThe --dumpconfig option stops the program after dumping.
Martin Mares [Fri, 28 Apr 2006 09:22:27 +0000 (11:22 +0200)]
The --dumpconfig option stops the program after dumping.

18 years agoImproved comments.
Martin Mares [Fri, 28 Apr 2006 09:20:15 +0000 (11:20 +0200)]
Improved comments.

18 years agoAdded stk_strjoin() as well.
Martin Mares [Fri, 28 Apr 2006 08:56:36 +0000 (10:56 +0200)]
Added stk_strjoin() as well.

18 years agoAdded a function for joining an array of strings, using an optional
Martin Mares [Fri, 28 Apr 2006 08:35:38 +0000 (10:35 +0200)]
Added a function for joining an array of strings, using an optional
separator.

18 years agoconf2: fixed 2 bugs in parsing nested configuration files
Robert Spalek [Fri, 28 Apr 2006 07:16:34 +0000 (09:16 +0200)]
conf2: fixed 2 bugs in parsing nested configuration files

18 years agosplit conf2.h into conf.h and getopt.h
Robert Spalek [Thu, 27 Apr 2006 23:31:57 +0000 (01:31 +0200)]
split conf2.h into conf.h and getopt.h

18 years agoconf: remove the old configuration mechanism whatsoever
Robert Spalek [Thu, 27 Apr 2006 22:41:36 +0000 (00:41 +0200)]
conf: remove the old configuration mechanism whatsoever

18 years agoRemoved the cf/sherlock2 hack (will move the config files in a minute).
Martin Mares [Thu, 27 Apr 2006 20:16:46 +0000 (22:16 +0200)]
Removed the cf/sherlock2 hack (will move the config files in a minute).

Also fixed a bug in parsing Includes. Robert, please verify the fix,
I am not sure I've done the right thing.

18 years agoconf2: postponing of commits fixed
Robert Spalek [Thu, 27 Apr 2006 16:33:09 +0000 (18:33 +0200)]
conf2: postponing of commits fixed

18 years agoconf2: fix appending to a dynamic array set to NULL
Robert Spalek [Thu, 27 Apr 2006 16:28:12 +0000 (18:28 +0200)]
conf2: fix appending to a dynamic array set to NULL

18 years agoconf2: when loading the initial configuration, commit only once at the end
Robert Spalek [Thu, 27 Apr 2006 16:26:15 +0000 (18:26 +0200)]
conf2: when loading the initial configuration, commit only once at the end

18 years agoconf2: polished error messages of commit-hooks
Robert Spalek [Thu, 27 Apr 2006 16:14:30 +0000 (18:14 +0200)]
conf2: polished error messages of commit-hooks

18 years agoshell/config: check the default value from the command-line
Robert Spalek [Thu, 27 Apr 2006 13:47:56 +0000 (15:47 +0200)]
shell/config: check the default value from the command-line

18 years agoshell/config: upgraded to use conf2 instead of conf
Robert Spalek [Thu, 27 Apr 2006 13:44:56 +0000 (15:44 +0200)]
shell/config: upgraded to use conf2 instead of conf

18 years agoCleaned up access-lists.
Martin Mares [Thu, 27 Apr 2006 12:23:58 +0000 (14:23 +0200)]
Cleaned up access-lists.

18 years agoconf2: unified clist operations with the rest of Sherlock
Robert Spalek [Thu, 27 Apr 2006 12:22:12 +0000 (14:22 +0200)]
conf2: unified clist operations with the rest of Sherlock

18 years agoconf2: list operation duplicate -> copy, and support for copying all nodes
Robert Spalek [Thu, 27 Apr 2006 10:48:55 +0000 (12:48 +0200)]
conf2: list operation duplicate -> copy, and support for copying all nodes

18 years agoconf2: implemented list operation duplicate
Robert Spalek [Thu, 27 Apr 2006 10:32:37 +0000 (12:32 +0200)]
conf2: implemented list operation duplicate

18 years agoadd a name of the user-defined type
Robert Spalek [Thu, 27 Apr 2006 08:39:57 +0000 (10:39 +0200)]
add a name of the user-defined type

18 years agoconf2: dumper of the configuration polished; support printing names of user types
Robert Spalek [Thu, 27 Apr 2006 08:39:27 +0000 (10:39 +0200)]
conf2: dumper of the configuration polished; support printing names of user types

18 years agoconf2: dumping of NULL strings polished
Robert Spalek [Thu, 27 Apr 2006 08:07:07 +0000 (10:07 +0200)]
conf2: dumping of NULL strings polished

18 years agoconf2: export low-level journalling functions for the filters
Robert Spalek [Wed, 26 Apr 2006 15:41:33 +0000 (17:41 +0200)]
conf2: export low-level journalling functions for the filters

18 years agoThe addrmask type has its own dumper now.
Martin Mares [Wed, 26 Apr 2006 09:48:47 +0000 (11:48 +0200)]
The addrmask type has its own dumper now.

18 years agoLookup lists are no longer char**, but byte**.
Martin Mares [Wed, 26 Apr 2006 09:48:14 +0000 (11:48 +0200)]
Lookup lists are no longer char**, but byte**.

18 years agoDumpers don't return anything, especially not a void pointer :-)
Martin Mares [Wed, 26 Apr 2006 09:47:44 +0000 (11:47 +0200)]
Dumpers don't return anything, especially not a void pointer :-)

18 years agoIf CONFIG_DEBUG is enabled, all programs support a --dumpconfig switch,
Martin Mares [Wed, 26 Apr 2006 09:38:39 +0000 (11:38 +0200)]
If CONFIG_DEBUG is enabled, all programs support a --dumpconfig switch,
which dumps the current configuration.

18 years agoconf2: lookup tables are byte** instead of char**
Robert Spalek [Wed, 26 Apr 2006 09:09:17 +0000 (11:09 +0200)]
conf2: lookup tables are byte** instead of char**

18 years agoconf2: include <getopt.h> again, it's tedious to write it everywhere
Robert Spalek [Tue, 25 Apr 2006 22:23:49 +0000 (00:23 +0200)]
conf2: include <getopt.h> again, it's tedious to write it everywhere

Polish a comment too.

18 years agoCF_LOOKUP lists must end with NULL.
Martin Mares [Tue, 25 Apr 2006 22:06:50 +0000 (00:06 +0200)]
CF_LOOKUP lists must end with NULL.

18 years agoipaccess filters now use CF_USER for (addr,mask) pairs, operations
Martin Mares [Tue, 25 Apr 2006 22:03:13 +0000 (00:03 +0200)]
ipaccess filters now use CF_USER for (addr,mask) pairs, operations
on lists now work fine.

18 years agoUse CF_LOOKUP.
Martin Mares [Tue, 25 Apr 2006 21:53:15 +0000 (23:53 +0200)]
Use CF_LOOKUP.

18 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config
Martin Mares [Tue, 25 Apr 2006 21:47:15 +0000 (23:47 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config

18 years agoDon't end error messages with a comma.
Martin Mares [Tue, 25 Apr 2006 21:46:56 +0000 (23:46 +0200)]
Don't end error messages with a comma.

18 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config
Robert Spalek [Tue, 25 Apr 2006 21:40:13 +0000 (23:40 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config

18 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config
Martin Mares [Tue, 25 Apr 2006 21:39:48 +0000 (23:39 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config

18 years agoconf2: dynamic arrays allow negative maximal length
Robert Spalek [Tue, 25 Apr 2006 21:39:03 +0000 (23:39 +0200)]
conf2: dynamic arrays allow negative maximal length

18 years agoMore ipaccess work-arounds (will be gone soon).
Martin Mares [Tue, 25 Apr 2006 21:37:28 +0000 (23:37 +0200)]
More ipaccess work-arounds (will be gone soon).

18 years agoconf: parsing IP address fixed
Robert Spalek [Tue, 25 Apr 2006 21:31:46 +0000 (23:31 +0200)]
conf: parsing IP address fixed

18 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config
Robert Spalek [Tue, 25 Apr 2006 21:29:35 +0000 (23:29 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config

18 years agoconf2: add 2 ASSERT's on checking the user-defined type size
Robert Spalek [Tue, 25 Apr 2006 21:28:04 +0000 (23:28 +0200)]
conf2: add 2 ASSERT's on checking the user-defined type size

18 years agoconf2: added support for user-defined types (tested on u16)
Robert Spalek [Tue, 25 Apr 2006 21:25:11 +0000 (23:25 +0200)]
conf2: added support for user-defined types (tested on u16)

18 years agoFixed operator priorities in cf_parse_ip().
Martin Mares [Tue, 25 Apr 2006 21:21:48 +0000 (23:21 +0200)]
Fixed operator priorities in cf_parse_ip().

18 years agoconf2: add basic type CT_LOOKUP that maps strings to integers
Robert Spalek [Tue, 25 Apr 2006 20:25:27 +0000 (22:25 +0200)]
conf2: add basic type CT_LOOKUP that maps strings to integers

Since I need to store both type==CT_LOOKUP and a pointer to the lookup
table, I moved the type out the union.  However, I have not blown up the
size of struct cf_item, because I have compressed class and type to 16
bits.

18 years agoA preliminary version of the new ipaccess module.
Martin Mares [Tue, 25 Apr 2006 12:08:34 +0000 (14:08 +0200)]
A preliminary version of the new ipaccess module.

18 years agoAdded CF_ARY_NUM and CF_JOURNAL_VAR.
Martin Mares [Tue, 25 Apr 2006 10:53:35 +0000 (12:53 +0200)]
Added CF_ARY_NUM and CF_JOURNAL_VAR.

18 years ago- fixed accepted double 0x prefix ("0x0x12345678") and
Pavel Charvat [Tue, 25 Apr 2006 07:54:00 +0000 (09:54 +0200)]
- fixed accepted double 0x prefix ("0x0x12345678") and
  negative numbers ("-0.-0.-0.-0") in IP parser

18 years agoThe "don't cf_load on error exit" optimization was wrong.
Martin Mares [Mon, 24 Apr 2006 21:53:48 +0000 (23:53 +0200)]
The "don't cf_load on error exit" optimization was wrong.

18 years agobopen_safe() in conf2 was leaking file descriptors. I've replaced it
Martin Mares [Mon, 24 Apr 2006 21:49:55 +0000 (23:49 +0200)]
bopen_safe() in conf2 was leaking file descriptors. I've replaced it
by a new bopen_try() in the fastbuf library and also cleaned up error
messages on unsuccessful file opens.

18 years agoStarted moving configuration sections to cf/sherlock2.
Martin Mares [Mon, 24 Apr 2006 21:38:47 +0000 (23:38 +0200)]
Started moving configuration sections to cf/sherlock2.

18 years agoDon't load the default config file when an invalid option error is going
Martin Mares [Mon, 24 Apr 2006 21:32:06 +0000 (23:32 +0200)]
Don't load the default config file when an invalid option error is going
to be reported.

18 years agoconf2: damn, I of course forgot to get rid of a debug message
Robert Spalek [Mon, 24 Apr 2006 18:02:34 +0000 (20:02 +0200)]
conf2: damn, I of course forgot to get rid of a debug message

18 years agoconf2: implemented committing only dirty sections
Robert Spalek [Mon, 24 Apr 2006 17:59:47 +0000 (19:59 +0200)]
conf2: implemented committing only dirty sections

This is now needed very much, because several commit-hooks allocate tens
of kilobytes of memory in the journal at each commit (e.g. alphabet.c)

18 years agoconf2: correct unescaping of C-strings
Robert Spalek [Mon, 24 Apr 2006 13:58:28 +0000 (15:58 +0200)]
conf2: correct unescaping of C-strings

18 years agofixed escape sequences parser
Pavel Charvat [Mon, 24 Apr 2006 13:02:54 +0000 (15:02 +0200)]
fixed escape sequences parser

18 years agoSimple parser for escape sequences.
Pavel Charvat [Mon, 24 Apr 2006 11:56:13 +0000 (13:56 +0200)]
Simple parser for escape sequences.

18 years agoconf2: report a bug when mixing line- and block- syntax improperly
Robert Spalek [Mon, 24 Apr 2006 09:12:44 +0000 (11:12 +0200)]
conf2: report a bug when mixing line- and block- syntax improperly

18 years agoconf2: insert a node into a list as soon as possible instead of at the end
Robert Spalek [Mon, 24 Apr 2006 08:54:15 +0000 (10:54 +0200)]
conf2: insert a node into a list as soon as possible instead of at the end

This allows user-defined parsers to see nodes during processing and they
can easier check for duplicates (see lang/lang.c).

18 years agoPointers to lists should be relative to current section, too.
Martin Mares [Sun, 23 Apr 2006 22:09:25 +0000 (00:09 +0200)]
Pointers to lists should be relative to current section, too.

18 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git
Robert Spalek [Sun, 23 Apr 2006 20:33:45 +0000 (22:33 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git

18 years agolib: revert unwanted commit
Robert Spalek [Sun, 23 Apr 2006 19:41:18 +0000 (21:41 +0200)]
lib: revert unwanted commit

damn, I tried to just delete one unwanted file from the list when
editing the commit-log, but cogito ignored the deletion and committed the
file anyway.  rollback then.

18 years agolib: converted to use conf2.c instead of conf.c
Robert Spalek [Sun, 23 Apr 2006 19:33:56 +0000 (21:33 +0200)]
lib: converted to use conf2.c instead of conf.c

18 years agoconf2: tested a few more test-cases and fixed/polished the code
Robert Spalek [Sun, 23 Apr 2006 19:13:08 +0000 (21:13 +0200)]
conf2: tested a few more test-cases and fixed/polished the code

- journal blocks are "transactions", don't overload the word "sections" too much
- added 2 long-term TODO's and 1 short-term FIXME
- the include command must be the last one on a line

18 years agoconf2: sorry, fix the commit-hook messages
Robert Spalek [Sun, 23 Apr 2006 13:04:20 +0000 (15:04 +0200)]
conf2: sorry, fix the commit-hook messages

18 years agoconf2: fix commit hooks
Robert Spalek [Sun, 23 Apr 2006 13:00:22 +0000 (15:00 +0200)]
conf2: fix commit hooks

18 years agoconf2: MJ's objections taken care of
Robert Spalek [Sun, 23 Apr 2006 12:44:40 +0000 (14:44 +0200)]
conf2: MJ's objections taken care of

18 years agoconf2: bugfixes in journaling
Robert Spalek [Sun, 23 Apr 2006 12:14:21 +0000 (14:14 +0200)]
conf2: bugfixes in journaling

- commented usage of cf_malloc() vs. xmalloc() in init-hooks
- commented buggy DYN_ALLOC(double) macro
- don't bzero() static sections
- use bopen_safe()

18 years agoconf2: verified and fixed all parsers
Robert Spalek [Sun, 23 Apr 2006 10:51:54 +0000 (12:51 +0200)]
conf2: verified and fixed all parsers

18 years agoconf2: fixed journaling of list operations
Robert Spalek [Sun, 23 Apr 2006 10:24:40 +0000 (12:24 +0200)]
conf2: fixed journaling of list operations

18 years agoconf2: lists seem to be debugged
Robert Spalek [Sun, 23 Apr 2006 10:03:23 +0000 (12:03 +0200)]
conf2: lists seem to be debugged

18 years agoconf2: 2 bugfixes concerning dynamic arrays and lists
Robert Spalek [Sun, 23 Apr 2006 09:41:15 +0000 (11:41 +0200)]
conf2: 2 bugfixes concerning dynamic arrays and lists

18 years agoconf2: debug dumping of memory into a fastbuf partially implemented
Robert Spalek [Sun, 23 Apr 2006 00:56:08 +0000 (02:56 +0200)]
conf2: debug dumping of memory into a fastbuf partially implemented

18 years agoconf2: another bug hunted
Robert Spalek [Sun, 23 Apr 2006 00:24:40 +0000 (02:24 +0200)]
conf2: another bug hunted

18 years agoconf2: removed handling of dirty pages
Robert Spalek [Sun, 23 Apr 2006 00:13:05 +0000 (02:13 +0200)]
conf2: removed handling of dirty pages

2 XXX's and 1 FIXME deleted by just omitting the whole functionality and
commiting _all_ pages after each reload.  it should not cost much more than
a bit of memory.

18 years agoconf2: debugged a lot
Robert Spalek [Sun, 23 Apr 2006 00:09:32 +0000 (02:09 +0200)]
conf2: debugged a lot

- closing_brace() confused current operation with the one on the stack a lot
- get_word() fix when recognizing = in the parameter name
- split_line() totally rewritten to 2 nice procedures: get_token() and
  split_command()
- #include back to include, otherwise it would be a comment
- local fastbufs in parse_fastbuf()

- the test file updated accordingly

18 years agoconf2: journaling of lists still doesn't work, doubles don't accept "." yet
Robert Spalek [Sat, 22 Apr 2006 15:41:14 +0000 (17:41 +0200)]
conf2: journaling of lists still doesn't work, doubles don't accept "." yet

18 years agoconf2-test: add a simple tester configuration file
Robert Spalek [Sat, 22 Apr 2006 15:32:26 +0000 (17:32 +0200)]
conf2-test: add a simple tester configuration file

18 years agoconf2: several bugfixes, and added interpolation of C-strings
Robert Spalek [Sat, 22 Apr 2006 15:31:15 +0000 (17:31 +0200)]
conf2: several bugfixes, and added interpolation of C-strings

18 years agoconf2: call commit-hooks on dirty sections
Robert Spalek [Sat, 22 Apr 2006 14:38:19 +0000 (16:38 +0200)]
conf2: call commit-hooks on dirty sections

I have, however, added 2 XXX's, because the whole concept of dirtiness has
not been thoroughly thought about.  It's indeed dirty.

18 years agoipaccess: move here temporarily cf_parse_ip()
Robert Spalek [Sat, 22 Apr 2006 13:53:21 +0000 (15:53 +0200)]
ipaccess: move here temporarily cf_parse_ip()

18 years agoconf: comment out parsers before I get rid of the module whatsoever
Robert Spalek [Sat, 22 Apr 2006 13:49:33 +0000 (15:49 +0200)]
conf: comment out parsers before I get rid of the module whatsoever

The parsers collide with conf2.c and I want to be able to have both modules
in the library before I convert all programs.

18 years agoconf2: fill in the skeleton of the tester
Robert Spalek [Sat, 22 Apr 2006 13:48:04 +0000 (15:48 +0200)]
conf2: fill in the skeleton of the tester

18 years agoconf2.c: enable the journal by default
Robert Spalek [Sat, 22 Apr 2006 13:47:06 +0000 (15:47 +0200)]
conf2.c: enable the journal by default

18 years agoconf2: added interface for accessing cf_items from outside
Robert Spalek [Sat, 22 Apr 2006 13:27:39 +0000 (15:27 +0200)]
conf2: added interface for accessing cf_items from outside

- find_item() changed to return a real pointer too
- added cf_find_item() and cf_write_item()
- enum operation moved to the header

18 years agoconf2: implemented a command-line parser and sections supporting unknown items
Robert Spalek [Sat, 22 Apr 2006 13:00:06 +0000 (15:00 +0200)]
conf2: implemented a command-line parser and sections supporting unknown items

18 years agoconf2: full implementation of the parser; only command-line parsing is missing
Robert Spalek [Sat, 22 Apr 2006 12:27:21 +0000 (14:27 +0200)]
conf2: full implementation of the parser; only command-line parsing is missing

plus:
- added macro TRY() polishing the code a bit
- cf_(re)load() and cf_set() return an int, not an error message
- names of operations stringified

18 years agoconf2: added a parser for IP addresses
Robert Spalek [Fri, 21 Apr 2006 18:06:41 +0000 (20:06 +0200)]
conf2: added a parser for IP addresses

plus added two error messages when trying to set an attribute without
giving any value

18 years agoconf2: bugfix in editing and adding before/after a node of a link list
Robert Spalek [Fri, 21 Apr 2006 17:44:13 +0000 (19:44 +0200)]
conf2: bugfix in editing and adding before/after a node of a link list

interpret_add_list() allocates memory himself, hence it is not suitable for
these operations.  since the real code is only 2 lines long, I moved the
functionality to closing_brace().  I changed its interface too, hence it
can be used much simpler and interpret_line() can be returned to its
original form.

18 years agoconf2: bugfix in tracing the recursion
Robert Spalek [Fri, 21 Apr 2006 16:28:16 +0000 (18:28 +0200)]
conf2: bugfix in tracing the recursion

18 years agoconf2: implemented all list operations in the interpreter
Robert Spalek [Fri, 21 Apr 2006 16:20:38 +0000 (18:20 +0200)]
conf2: implemented all list operations in the interpreter

- added operations OP_EDIT, OP_AFTER, OP_BEFORE, and flags OP_1ST, OP_2ND
  denoting the phase (forming a search query vs. filling in the data)
- add_to_list() extended to support all list operations
- definition of stack moved closer to the interpreter, because many
  functions don't need it
- implemented find_list_node(), opening_brace (former increase_stack), and
  closing_brace() that fully support all operations
- the top of interpret_line() rewritten too

18 years agoconf2: record used selectors when searching in lists
Robert Spalek [Fri, 21 Apr 2006 12:45:26 +0000 (14:45 +0200)]
conf2: record used selectors when searching in lists

- store number of entries to section flags
- find_item() fixed so that it correctly handles accesses to unknown
  top-level sections.  also setting an absolute attribute (i.e. not
  relative to the current section) starts with a caret now.
- added an u32 mask to the stack and record_selector() that fills it

18 years agoconf2: implement clearing a dynamic array
Robert Spalek [Fri, 21 Apr 2006 12:04:16 +0000 (14:04 +0200)]
conf2: implement clearing a dynamic array

18 years agoconf2: fix skipping unspecified parameters at the end of the line
Robert Spalek [Fri, 21 Apr 2006 11:49:37 +0000 (13:49 +0200)]
conf2: fix skipping unspecified parameters at the end of the line

Along the way, I precompute flags for each section at the initialization.
Some headers unified.