libcfg+ TODO list ----------------- - standard files such as README, AUTHORS, TODO an so on are not installed into /usr/doc/ together with other documentation * when building on Gentoo Linux, make.conf CFLAGS are not used in addition to our libcfg+ compilation flags * implement functions for multi properties manipulation: - cfg_clear_properties() - cfg_add_properties() - cfg_remove_properties() - implement boolean datatypes initialization arguments properties; with '0', 'off' and 'disabled' defaults for FALSE and '1', 'on' and 'enabled' defaults for TRUE * cfg_set_cmdline_context() reimplementation from argc to begin_pos/end_pos; it will allow parse a subset of items from string array; also create cfg_(set|get)_cmdline_context_by_argc() macro to get old behaviour of cfg_(set|get)_cmdline_context() functions (begin_pos is 0, end_pos is argc-1, context has CFG_PROCESS_FIRST flag not set) * variable arguments (va) functions for property manipulation * clickable references to real properties of every virtual property in documentation * implement multiple outputs from single SGML sources; we need at least - man page - changelog * `make distcheck' doesn't work due to error during documentation generation; html/* and doxygen/* doesn't exists because they have hardcoded paths to sgml and *.h sources in its configuration files and appropriate Makefile parts + rewrite special properties manipulation - old code was removed, only in props.c was left commented - make appropriate changes in documentation - check doxygen documentation * rewrite context flags stuff * rewritten, but virtual properties need also implement * quotations reimplement * move Doxygen building stuff to doc/Makefile.in directory * linking to our library doesn't work (props.h is missing); we need also install another headers, prefered models in /usr/include: 1. cfg+.h, [cfg.h], cfg+/cfg+.c, cfg+/props.h 2. cfg+.h, [cfg.h], platon/cfg+.c, platon/props.h 3. cfg+.h, [cfg.h], platon/cfg+/cfg+.c, platon/cfg+/props.h or we can 4. modify existing code not to use #include "props.h" directive - if you fix this, try to compile and link examples/example.c again installed library into system (hint: use export LD_LIBRARY_PATH to specify place of library files when run example binary) - solution no. 4 was choosen and implemented - building stuff: * normal 'make' SHOULD NOT build documentation (not everyone have docbook installed on his or her system) * move examples into doc/ and make appropriate 'make install' update * name and version substitution in doc/sgml/libcfg+.sgml - done (rajo) * date substitution in doc/sgml/libcfg+.sgml * make install should call make install in doc/ * make install in doc/ should install into /usr/share/doc/ (?) these subdirectories: doxygen/ sgml/ html/ - finally /usr/doc/ was used * make doc should call make doxygen and make doc in doc/ - done (rajo); use 'make documentation' not 'make doc'; doc target conflict with name of directory * make doc in doc/ should call make html, make pdf, ... in doc/ - done (rajo) + make in doc/ should generate appropraite documentation format and move it into separate directory (available formats should be html, pdf, ps, tex, rtf, txt) * solve install problem when library files (especially symlinks) are already installed - if 'ln' is not present, than use 'cp -l' * doxygen building stuff move to doc/Makefile.in file - done (rajo) * think about CVS tag (not) in header * think about own CVS tag $Platon - implemented * rename to libcfg+; that cover: CVS project rename, cfg.c and cfg.h files rename, distribution directory name, ... * missing, rebuild, configure.in must be in distribution? - rebuild is useful - configure.in is for help purpose of users - missing - removed, because we don't know what it is for * objects from str/ are created in level-up directory - is it OK? - yes it is; use -o option to specify location of object files or use the same option for specifying new unique object filename in the same directory (so str/strplus.c will compile into str/strplus.o or str_strplus.o) * move sources into src/ subdirectory (also with str/) - done (rajo) * move documentation into doc/ or docs/ subdirectory - done (rajo) * implement config file end_pos (in both modes, positions and line) - line mode tested, works fine; position tests needed * get_cur_opt_idx() will return number of line in config file context - implemented; set CFG_FILE_LINE_USAGE flag to use line arithmetic - make clearly understandable stuff around cfg_reset_context() and cfg_set_(cmdline|cfgfile)_context() function - multi booleans in config file should be also initialized via var = value - option aliases (really needed?) - case insensitive options (isn't this a little bit strange idea?) + number of spaces in cfgfile option names should not be relevant in compare with real option names in file; that means "multi int" is the same as "multi int" and "multi\tint" - seems to be fixed, but needs testing + fix this bug: numbers in format 09 cannot be converted to decimal data type - it is not bug, it is feature: numbers started with 0 are considered to be in octal format; similary numbers started with 0x or 0X are considered to be in hexadecimal format; so 09 is really invalid, because in octal format this number is not correct - in cfgfile multi lines handling don't trim all left white characters in 2nd or more part of multi line, but substitute it for one space; this the same behaviour as it is for right white characters trims in all parts of multi lines excepts the last one * make cfgfile.c and cmdline.c to be standalone and compileable files; shared functions prefix by __cfg and move it to the shared.c; make HUGE warning in shared.h for normal user not to include that file * universal, but customizable cfg error handle stuff - should work fine * get_multi_line() will return return code according to error and pointer to buffer will be passed as function parameter * parameter to specify end of line postfixes for multi lines quotation thinking * (oh no! ;-) multi arguments quotations and separation (split_multi_arg() * function) single argument quotations (unquote_single_arg() function) + also ability to turn quotations off (any idea how will this be useful? ;-) - there is a possiblity to specify quotation prefixes/postfixes; just clear them to turn quotations off * functions str_left_trim(), str_right_trim() for white characters removing * macros ltrim(), rtrim() or str_ltrim(), str_ltrim() * macros str_trim(), strtrim(), trim() * leftover arguments dual mode: 1. can have valid options after leftover arguments 2. after first leftover argument is all cosidered as leftover argument Default initialization will be according to POSIXLY_CORRECT environment variable. Can be changed by changing context flags. - POSIXLY_CORRECT environment lookup not implemented * better stuff for manipulating with context flags (add, remove, clear, ...) - cfg_set_context_flag(), cfg_clear_context_flag() and getting info functions cfg_get_context_flag(), cfg_is_context_flag() * universal functions with strdyn context properties manipulation and create appropriate macros * cfg_add_cmdline_stop_str() and similar function should return result if item was successfully added into string list * for each numeric data type (INT, UINT, LONG, ...) tests if range checks works properly; for INT it doesn't - it works, but int and long seems to be the same datatype * fix ULONG argument parsing (there is strange strtoul() behaviour) * command line stop string implemented * create strdyn_create_ar() and link strdyn_duplicate() * boolean multi options initialization handling * multi options detection and error handling * string data type support added * string multi options initialization handling