Age | Commit message (Collapse) | Author | Files |
|
* include/smap/module.h (SMAP_CAPA_DBCAP): New capability.
(smap_module) <smap_dbcap>: New member.
* modules/guile/guile.c (guile_dbcap): New function.
Raise the SMAP_CAPA_DBCAP capability.
* modules/lua/lua.c (mod_dbcap): New function.
Raise the SMAP_CAPA_DBCAP capability.
* src/module.c (_load_module): Check for pmod->smap_dbcap
if SMAP_CAPA_DBCAP is set.
* src/query.c (dbi_capa): New function.
(rule_fixup): Use dbi_capa to check the actual database
capabilities.
* NEWS: Document SMAP_CAPA_DBCAP
|
|
* NEWS: Document new condition.
* doc/smap.texi: Likewise.
* include/smap/stream.h (smap_null_stream_create)
(smap_memory_stream_create): New protos.
* lib/memstr.c: New file.
* lib/nullstr.c: New file.
* lib/Makefile.am: Add new sources.
* src/query.c (comp_in): New comparison type.
(comp_cond): New (union) member: dbi
(T_IN): New token.
(parse_dispatch_comp): Parse the construct "ARG in DB".
(rule_fixup): Traverse also the conditions resolving the DB part
to the actual database.
(compare): Take smap_conninfo as the third argument.
Handle comp_in.
(dispatch_query_pack): Remove superfluous parameter (conninfo).
It is already carried in struct query_pack.
|
|
* .gitignore: Update.
* Makefile.am (SUBDIRS): Remove libltdl
* configure.ac (LT_WITH_LTDL et al): Removed.
Check for libtool and dlopen explicitly.
* include/smap/module.h (SMAP_EXPORT): Remove.
(SMAP_MODULE_VERSION): Raise version number.
* modules/echo/echo.c: Change declaration of smap_module.
* modules/guile/guile.c: Likewise.
* modules/ldap/ldap.c: Likewise.
* modules/mailutils/mailutils.c: Likewise.
* modules/mysql/mysql.c: Likewise.
* modules/postgres/postgres.c: Likewise.
* modules/sed/sed.c: Likewise.
* src/Makefile.am (smapd_LDADD): Remove @LIBLTDL@
(noinst_HEADERS): Add list.h
* src/list.h: New file (from https://git.gnu.org.ua/micron.git)
* src/common.h (e2nrealloc): New proto.
* src/mem.c (e2nrealloc): New function.
* src/module.c (mod_load_path): Change data type.
(try_load_in_path): New function.
(_load_module): Try prepend path, LD_LIBRARY_PATH, SMAP_MODDIR,
and append path, in that order.
* src/query.c (dispatch_rule): Remove prev,next, add link
instead.
All uses changed
* src/smapd.h: Don't include ltdl.h.
Include list.h
(DCLATT,DCLDET,DCLLOC,DCLLIST,DCLIDLIST): Remove.
(struct smap_module_instance: Change type of handle to void*
Remove prev,next, add link instead.
(struct smap_database_instance): Remove prev,next, add link instead.
|
|
|
|
* .gitmodules (wordsplit): New module.
* configure.ac: Link lib/wordsplit/wordsplit.h to
include/smap/wordsplit.h
* include/smap/Makefile.am (pkginclude_HEADERS): Install wordsplit.h
from submodule.
* include/smap/wordsplit.h: Remove.
* lib/wordsplit.c: Remove.
* lib/Makefile.am: Access wordsplit sources from the submodule.
* modules/echo/Makefile.am (AM_CPPFLAGS): Add -I$(top_builddir)/include
* modules/guile/Makefile.am: Likewise.
* modules/ldap/Makefile.am: Likewise.
* modules/mailutils/Makefile.am: Likewise.
* modules/mysql/Makefile.am: Likewise.
* modules/postgres/Makefile.am: Likewise.
* modules/sed/Makefile.am: Likewise.
* src/Makefile.am: Likewise.
|
|
* include/smap/wordsplit.h: New version.
* lib/wordsplit.c: New version.
* modules/ldap/ldap.c (getvar): Rewrite to match new prototype.
* src/cfg.c (wrdse_to_ex): Remove WRDSE_NOSUPP.
|
|
* configure.ac: Detect LDAP. New option --with-ldap
* include/smap/parseopt.h (smap_option)<func>: Change signature.
(SMAP_DELIM_EQ,SMAP_DELIM_WS,SMAP_DELIM_MASK)
(SMAP_PARSE_SUCCESS,SMAP_PARSE_NOENT)
(SMAP_PARSE_INVAL): New defines.
(smap_parseline): New proto.
* include/smap/wordsplit.h (wordsplit)<ws_getvar>: Remove const
from the return value: the function should allocate memory.
(wordsplit_varnames): New proto.
* lib/wordsplit.c (ISVARBEG,ISVARCHR): New macros.
(wordsplit_varnames): New function
(expvar): ws_getvar allocates memory.
* lib/parseopt.c (find_opt): Take flags as additional argument.
Support case-insensitive comparison and whitespace delimiters.
(smap_parseline): New function.
(smap_parseopt): Rewrite using smap_parseline.
* modules/Makefile.am: Add ldap module.
* modules/ldap/Makefile.am: New file.
* modules/ldap/ldap.c: New file.
* modules/mysql/Makefile.am: Minor change.
* modules/mysql/mysql.c: Minor change.
* src/srvman.c (smap_server_new): Save url.
|
|
|
|
|
|
|
|
* include/smap/wordsplit.h: Rearrange WRDSF_ flags.
(WRDSF_WARNUNDEF): New flag.
(WRDSE_UNDEF): New error code.
* lib/wordsplit.c (expvar): Handle WRDSF_UNDEF and WRDSF_WARNUNDEF.
(wordsplit_perror, _wordsplit_errstr): Handle WRDSE_UNDEF.
* src/cfg.c (parse_config_loop): Level 1 enables WRDSF_WARNUNDEF.
* doc/debugcat.texi: Document level conf(5).
|
|
* src/smapd.c (debug_init): New category "conf".
* src/smapd.h (DBG_CONF): New constant.
* src/cfg.c (parse_config_loop): Add debugging
output.
(smapd_ws_debug): New function.
* lib/wordsplit.c (wordsplit_len): Fix character case in
debug output.
(wordsplit_init): Consistency checking for WRDSF_SHOWDBG.
(wordsplit_dump_nodes, wordsplit_len): Debugging output
is triggered by WRDSF_SHOWDBG flag.
* include/smap/wordsplit.h (wordsplit): New member ws_debug.
(WRDSF_SHOWDBG): New flag.
|
|
* include/smap/wordsplit.h (WRDSF_CESCAPES): New flag.
(wordsplit_unquote_char): Rename to
(wordsplit_quote_char): Rename to wordsplit_c_quote_char.
(wordsplit_quoted_length): Rename to wordsplit_c_quoted_length.
(wordsplit_quote_copy): Rename to wordsplit_c_quote_copy.
(wordsplit_unquote_copy): Rename to wordsplit_c_unquote_copy.
(wordsplit_sh_unquote_copy): New prototype.
* lib/wordsplit.c (wsnode_quoteremoval): New function.
(wsnode_coalesce): Only coalesce adjacent nodes, do not modify them.
(wordsplit_len): Introduce quote removal (actually, unescaping) pass.
|
|
* include/smap/wordsplit.h (WRDSF_KEEPUNDEF): New flag.
* lib/wordsplit.c (expvar): Expand undefined variables
to an empty string or keep them intact if WRDSF_KEEPUNDEF
is set.
Correctly handle multiword expansions.
(node_expand_vars): Propagate _WSNF_JOIN and _WSNF_QUOTE
to expvar.
|
|
* include/smap/wordsplit.h (WRDSF_NOSPLIT): New flag.
* lib/wordsplit.c (wordsplit_len): If WRDSF_NOSPLIT is set,
treat entire input as if it were in double quotes.
|
|
* modules/sed/Makefile.am: New file.
* modules/sed/transform.c: New file.
* modules/sed/transform.h: New file.
* modules/sed/sed.c: New file.
* configure.ac (AC_CONFIG_FILES): Add modules/sed/Makefile
* include/smap/module.h (smap_module)<smap_xform>: Rearrange
arguments. All uses changed.
* modules/Makefile.am (SUBDIRS): Add sed.
* src/module.c (_load_module): Fix v2 assertions.
* src/query.c (dispatch_query_pack): Change smap_xform
invocation.
Avoid freeing qp->storage entry before printing it.
* src/smapd.cfin: Add sample sed transformations.
* src/smapd.c (cfg_socket_mode): Remove unused argument.
|
|
* include/smap/module.h (smap_module)<smap_xform>: Change
signature.
* modules/guile/getpw.scm (smap-xform): Change signature.
* modules/guile/guile.c (guile_xform): Change signature.
* src/query.c: Change transform syntax. New syntax is:
"transform" "key"|"map" dbname.
* src/smapd.cfin [GUILE]: Add sample transform entries.
|
|
Argument transformations allow to change map and/or
key in the input query before actually processing it.
They are implemented at the module level, via additional
method in smap_module structure.
* include/smap/module.h (SMAP_MODULE_VERSION): Define to 2.
(SMAP_CAPA_DEFAULT): Change constant.
(SMAP_CAPA_XFORM): New define.
(smap_module)<smap_xform>: New member.
* src/module.c (_load_module): Fix consistency checking.
* src/query.c: New condition "key [op] value".
New target "transform dbname".
(query_cond_type): New constant query_cond_key.
(map_comparison): Rename to comparison. All uses changed.
(map_cond): Rename to comp_cond. All uses changed.
(dispatch_rule)<xform>: New member.
(query_tok)<T_TRANSFORM, T_KEY>: New tokens.
(query_kwtab): New keywords: key, transform.
(parse_dispatch_map): Rename to parse_dispatch_comp; change
signature. All uses changed.
(parse_subcond): Handle T_KEY token.
(parse_complex_dispatch): Handle T_KEY and T_TRANSFORM.
(rule_fixup): New function.
(link_dispatch_rules): Use rule_fixup.
(find_dispatch_rule): Second argument defines where to
start searching.
(dispatch_query): Handle transformations. Add checking of return
values.
* modules/guile/guile.c (guile_proc_ind)<xform_proc>: New index.
(guile_proc_name): New proc "xform".
(guile_init_db): Bail out if neither query nor xform is defined.
(guile_xform): New function.
(module): Add guile_xform.
* modules/guile/getpw.scm (smap-xform): Implement an example
transformation.
* modules/echo/echo.c (module): Update.
* modules/mailutils/mailutils.c: Likewise.
|
|
* include/smap/wordsplit.h (WRDSE_CBRACE): New error code.
* lib/wordsplit.c (wordsplit_init): Dont bail out on absense
of WRDSF_NOVAR.
(wsnode_insert): Bugfix.
(wordsplit_finish): Unquote is 1 by default.
(node_split_prefix, find_closing_cbrace)
(wordsplit_find_env, expvar, node_expand_vars)
(wordsplit_varexp): New functions.
(wordsplit_len): Implement variable expansion.
(_wordsplit_errstr, wordsplit_perror): Handle new error code.
|
|
* include/smap/wordsplit.h (wordsplit): New members
ws_env, ws_getvar, ws_head, ws_tail.
(WRDSF_ENV, WRDSF_GETVAR, WRDSF_DEBUG): New flags.
(WRDSE_USAGE): New error code.
* lib/wordsplit.c: Build intermediate parse tree.
(_ARGCV_WORD_SED_EXPR, _ARGCV_WORD_MASK): Remove.
(_wsplt_nomem): New function.
(wordsplit_init): Initialize ws_delim to " \t\n"
Initialize new structure members.
(alloc_space): Second argument gives requested number of
free slots.
(_WSNF_WORD, _WSNF_QUOTE, _WSNF_NOEXPAND)
(_WSNF_JOIN, _WSNF_SEXP): New constants.
(wordsplit_node): New structure.
(wsnode_flagstr, wsnode_ptr, wsnode_len)
(wsnode_new, wsnode_free, wsnode_append)
(wsnode_remove, wsnode_insert, wordsplit_add_segm)
(wordsplit_free_nodes, wordsplit_dump_nodes)
(coalesce_segment, wsnode_coalesce)
(wordsplit_finish): New functions.
(_WRDS_WORD, _WRDS_CONT): Remove constants.
(_WRDS_OK): New constant.
(scan_qstring): New function
(scan_word, wordsplit_len): Rewrite.
(wordsplit_perror, _worsplit_errstr): Handle WRDSE_USAGE.
|
|
* include/smap/wordsplit.h (wordsplit)<ws_errno>: New member.
(WRDSE_NOSUPP): New define.
(wordsplit_perror,wordsplit_strerror): New prototypes.
* lib/wordsplit.c (all functions): use wordsplit_perror
for diagnostics if WRDSF_SHOWERR is set; set ws_errno to
the actual error code before returning error.
(scan_word): Revise and fix return values.
(wordsplit_len): Correctly handle errors, in particular
WRDSE_QUOTE.
(wordsplit_perror, wordsplit_strerror): New functions.
* src/cfg.c (parse_config_loop): Use wordsplit_strerror
for diagnostics.
* src/module.c (smap_modules_init): Likewise.
* src/smapc.c (read_eval_loop): Use wordsplit_perror for
diagnostics.
|
|
* include/smap/module.h (smap_module) <smap_init_db>: Change
signature: pass database name as the first argument.
* modules/echo/echo.c (echo_init_db): Update signature.
* modules/guile/getpw.scm (smap-open): Likewise.
* modules/guile/guile.c (_guile_database)<dbname>: new member.
(call_init_handler): Pass #f if dbname is NULL.
(guile_init_db): Initialize db->dbname; fix invocation of
init_fun.
* modules/mailutils/mailutils.c (_mu_smap_db)<id>: New member.
(_mu_smap_result)<db>: New member.
(expand_reply_text): Initialize "db" key to the name of
the database.
(_mu_auth_query, _mu_mbq_query): Set res.db
(mod_mailutils_init_db): Update signature.
Initialize db->id.
* doc/ex-meta1.texi: New file.
* doc/Makefile.am (smap_TEXINFOS): Add ex-meta1.texi.
* doc/smap.texi: Finish server documentation.
|
|
All sources affected.
|
|
* include/smap/streamdef.h (_smap_stream)<size_hint>: Remove.
* lib/sockmapstr.c (read_payload_length): Add debug prints.
(ISDIGIT): New macro.
(_sockmap_input_stream_read): Be robust on invalid inputs.
If more space is needed, set _SMAP_STR_MORESPC bit, store the
requested size in *pret, and return ERANGE.
* lib/stream.c (_stream_realloc_buffer): New static.
(_stream_fill_full_buffered): Change handling of the
_SMAP_STR_MORESPC flag. Use _stream_realloc_buffer.
(_stream_fill_line_buffered): Use _stream_realloc_buffer.
|
|
* include/smap/stream.h (SMAP_IOCTL_SET_ARGS): New opcode.
(smap_trace_stream_create): New proto.
* lib/Makefile.am (libsmap_la_SOURCES): Add tracestr.c
* lib/tracestr.c: New file.
* lib/stderr.c (smap_openlog_stderr): Use specialized trace stream
for smap_trace_str.
* lib/syslog.c (smap_openlog_syslog): Likewise.
* src/cmdline.opt: New option trace-pattern.
* src/log.c (add_trace_pattern): New function.
(smap_log_init): Set up trace prefix patterns if requested.
* src/smapd.c (smap_kwtab): New statement trace-pattern.
* include/smap/stream.h (add_trace_pattern): New proto.
* lib/sockmapstr.c (_sockmap_stream_done): Honor SMAP_STREAM_NO_CLOSE.
|
|
Use fully fledged I/O streams (based on my earlier implementation
for Mailutils and Dico). Construct a sockmap stream which allows
to do all interactions transparently as if it were a line-oriented
protocol. Update everything accordingly.
* include/smap/ostr.h: delete
* lib/ostr.c: delete
* lib/smapostr.c: delete
* include/smap/printf.h: New file.
* include/smap/stream.h: New file.
* include/smap/streamdef.h: New file.
* lib/asnprintf.c: New file.
* lib/asprintf.c: New file.
* lib/fileoutstr.c: New file.
* lib/sockmapstr.c: New file.
* lib/syslogstr.c: New file.
* lib/stream.c: New file.
* lib/stream_printf.c: New file.
* lib/stream_vprintf.c: New file.
* lib/vasnprintf.c: New file.
* lib/xscript.c: New file.
* include/smap/Makefile.am: Update.
* lib/Makefile.am: Update.
* include/smap/diag.h (smap_error_str)
(smap_debug_str, smap_trace_str): Change type.
* include/smap/module.h (smap_module)<smap_query>: Change type of
ostr.
* lib/debug.c: Rewrite for new stream subsystem.
* lib/diag.c: Likewise.
* lib/stderr.c: Likewise.
* lib/syslog.c: Likewise.
* modules/echo/echo.c: Likewise.
* modules/guile/guile.c: Likewise.
* modules/mailutils/mailutils.c: Likewise.
* src/query.c: Likewise.
* src/smapc.c: Likewise.
* src/smapd.c: Likewise.
* src/smapd.h: Likewise.
|
|
* include/smap/url.h (SMAP_URLE_INVALID): New constant.
* lib/url.c (url_error_string): Add new string for SMAP_URLE_INVALID.
(split_connection): Return SMAP_URLE_INVALID on invalid URLs.
(smap_url_parse): Initialize proto, port and path to NULL.
* modules/mailutils/mailutils.c (checksize): Set res->auth.
(mod_mailutils_init): New options config-verbose and config-verbose.
Set mu_cfg_parser_verbose depending on the flags.
Collect gocs capabilities and call mu_libcfg_init.
* src/Makefile.am (INCLUDES): Add @LTDLINCL@.
* src/smapc.c (read_eval_loop): Handle comments.
* src/smapd.c (cfg_max_children, cfg_global_max_children): Bugfix.
(smap_kwtab): New keyword: trace.
* src/srvman.c: Use tcpwrappers only for AF_INET family.
|
|
* configure.ac: Check for readline.
* include/smap/url.h: New file
* include/smap/Makefile.am (pkginclude_HEADERS): Add url.h
* include/smap/diag.h (smap_debug_np, smap_debug_sp)
(smtp_debug_locate_n, smtp_debug_locate)
(smap_debug_alloc_n, smap_debug_alloc)
(smap_debug_printf, smap_debug_set): New protos.
(smap_debug): New macro.
* include/smap/ostr.h (smap_mapstr_debug_idx): New extern.
(smap_map_ostream_create): New proto.
* include/smap/wordsplit.h: Include stddef.h.
* lib/debug.c: New file.
* lib/Makefile.am (libsmap_la_SOURCES): Add new files.
* src/smapostr.c: Move to lib.
* src/url.c: Move to lib. Fix error reporting.
* src/common.h: New file.
* src/smapc.c: New file.
* src/smapccmd.opt: New file.
* src/.gitignore: Update.
* src/Makefile.am (bin_PROGRAMS): Add smapc.
(smapd_SOURCES): Remove smapostr.c and url.c.
(noinst_HEADERS): Add common.h
(smapc_SOURCES, smapc_LDADD): New vars.
(BUILT_SOURCES, EXTRA_DIST): Update.
* src/cmdline.opt: Update.
* src/getopt.m4 (print_help): Output the "Mandatory or optional" stanza
only if some options actually take arguments.
* src/log.c (debug_level, debug_printf)
(debug_set): Remove.
* src/mem.c: Do not include smapd.h. This source is shared between two
applications.
* src/smapd.c: Minor changes.
* src/smapd.h: Move some stuff to common.h
* src/srvman.c (smap_server_new): Use smap_url_parse.
* modules/echo/echo.c (echo_init_db): Bugfix: skip module name.
|
|
* src/smap.c: Renamed to src/smapd.c
* src/smap.h: Renamed to src/smapd.h
* configure.ac: Rename smap.c to smapd.c
* src/Makefile.am: Rename daemon to smapd. Install
it in sbindir.
* src/log.c: Rewrite using new library functions.
* src/smapd.h (progname, set_program_name): Remove.
(close_fds_above, close_fds_except): New protos.
* src/getopt.m4: Change version output to:
progname (pkgname) pkgversion.
* src/cfg.c: Reflect the changes.
* src/close-fds.c: Likewise.
* src/mem.c: Likewise.
* src/module.c: Likewise.
* src/smapd.c: Likewise.
* src/smapostr.c: Likewise.
* src/srvman.c: Likewise.
* src/url.c: Likewise.
* lib/progname.c: New file.
* lib/stderr.c: New file.
* lib/syslog.c: New file.
* lib/Makefile.am (libsmap_la_SOURCES): Add new files.
* include/smap/diag.h (smap_progname): New extern.
(smap_set_program_name, smap_openlog_stderr)
(smap_openlog_syslog): New protos.
* src/kwtrans.c: Remove accidentally committed file.
|
|
* configure.ac: Remove --with-mbq & --with-mu-auth
(MBQ_COND, MU_AUTH_COND): Remove condition.
(MAILUTILS_COND): New condition.
(AC_CONFIG_FILES): Remove mbq/ and mu-auth/, add mailutils instead.
* modules/Makefile.am (SUBDIRS): Remove mbq and mu-auth, add mailutils.
* modules/mailutils/Makefile.am: New file.
* modules/mailutils/mailutils.c: New file.
* modules/mailutils/mbq/*: Remove.
* modules/mailutils/mu-auth/*: Remove.
* include/smap/ostr.h (smap_ostream_write): Buffer is const.
* lib/ostr.c: Likewise.
* modules/guile/guile.c: Add missing includes.
* src/smap.h (MAX_DEBUG_COUNT): Fix constant.
|
|
* include/smap/parseopt.h: New file.
* lib/parseopt.c: New file.
* lib/Makefile.am (libsmap_la_SOURCES): Add parseopt.c.
* src/cfg.c (cfg_cur_line): New variable.
(read_line,parse_config): cfg_line keeps number of the line where the
current statement started. cfg_cur_line keeps the actual line number.
* src/module.c (smap_modules_unload): New function.
(link_databases): Merge into init_databases.
(init_databases): New function.
(close_databases): New function.
(free_databases: New function.
* src/query.c (route_query): Rewrite initialization sequence.
(match_map,match_cond): Minor fixes.
* src/smap.c (smap_session_server): Close databases before returning.
(smap_daemon): Return to caller, instead of exiting.
(main): Rewrite initialization sequence.
* src/smap.h: Include time.h
(DBG_DATABASE): New constant.
(smap_database_instance)<opened>: New member.
(link_databases): Remove proto.
(init_databases, free_databases, close_databases): New prototypes.
* gint: New module.
* Makefile.am (SUBDIRS): Add gint
(ACLOCAL_AMFLAGS): Likewise.
* bootstrap: Initialize submodules.
* configure.ac: Initialize GINT
* modules/Makefile.am (SUBDIRS): Add guile (conditionally)
* modules/guile/Makefile.am: New file.
* modules/guile/guile.c: New file.
* include/smap/Makefile.am (smap_module) <smap_open>
<smap_close>: New methods.
* modules/echo/echo.c: Update module interfaces. Add missing includes.
* modules/mbq/mbq.c: Likewise.
* modules/mu-auth/mu-auth.c: Likewise.
* lib/ostr.c: Add missing includes.
* lib/wordsplit.c: Likewise.
* src/srvman.c: Minor fixes.
* src/url.c: Likewise.
|
|
* NEWS: Update.
* configure.ac: New option --enable-mu-auth
* include/smap/module.h (smap_conninfo): New struct.
(smap_module)<smap_query>: Replace last 4 argumenst by
struct smap_conninfo const *.
* modules/echo/echo.c (echo_query): Update declaration.
* modules/mbq/mbq.c (mbq_query): Update declaration.
(cfg_param): Implement `onerror' configuration statement.
* src/Makefile.am (EXTRA_DIST): Add cmdline.c
* src/log.c (debug_set): Fix return statement.
* src/query.c (query_pack): Replace sa,salen by conninfo.
(match_cond): Update.
(route_query): Take struct smap_conninfo * as 2nd argument.
* src/smap.c (smap_session_server): Pass smap_conninfo * to
route_query.
* src/smap.h (route_query): New proto.
* src/srvman.c (smap_srvman_get_sockaddr): New function.
* src/srvman.h (smap_srvman_get_sockaddr): New proto.
* modules/Makefile.am (SUBDIRS): Add mu-auth (conditionally).
* modules/mu-auth/Makefile.am: New file.
* modules/mu-auth/mu-auth.c: New file.
|
|
* include/Makefile.am: New file.
* include/smap/Makefile.am: New file.
* include/smap/module.h: New file.
* lib/Makefile.am: New file.
* src/module.c: New file.
* src/query.c: New file.
* include/smap: New directory.
* src/kwtab.h: Move to include/smap.
* src/diag.h: Likewise.
* src/ostr.h: Likewise.
* src/wordsplit.h: Likewise.
* lib: New directory.
* src/kwtab.c: Move to lib
* src/ostr.c: Likewise.
* src/wordsplit.c: Likewise.
* lib/diag.c: New file.
* Makefile.am (SUBDIRS): Add include and lib
* configure.ac: Update.
* src/Makefile.am: Move installable headers to include/smap,
libraries to lib.
(smap_SOURCES): Add module.c, url.c, query.c.
(AM_CPPFLAGS): Define SMAP_MODDIR.
* src/log.c (smap_error_str, smap_debug_str)
(smap_trace_str): Move to lib/diag.c
(smap_verror, smap_error): Likewise.
* src/smap.c (smap_kwtab): Add new keywords.
(main): Initialize module subsystem.
* src/smap.h: Update.
* modules/Makefile.am: New file.
* modules/echo/Makefile.am: New file.
* modules/echo/echo.c: New file.
|