#ifndef _CHARSET_CHARCONV_H
#define _CHARSET_CHARCONV_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define charset_name ucw_charset_name
+#define conv_in_to_ucs ucw_conv_in_to_ucs
+#define conv_init ucw_conv_init
+#define conv_set_charset ucw_conv_set_charset
+#define conv_ucs_to_out ucw_conv_ucs_to_out
+#define conv_ucs_to_x ucw_conv_ucs_to_x
+#define conv_x_count ucw_conv_x_count
+#define conv_x_to_ucs ucw_conv_x_to_ucs
+#define find_charset_by_name ucw_find_charset_by_name
+#endif
+
struct conv_context {
/* Parameters supplied by the caller */
* of the GNU Lesser General Public License.
*/
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define fb_wrap_charconv_in ucw_fb_wrap_charconv_in
+#define fb_wrap_charconv_out ucw_fb_wrap_charconv_out
+#endif
+
struct fastbuf *fb_wrap_charconv_in(struct fastbuf *f, int cs_from, int cs_to);
struct fastbuf *fb_wrap_charconv_out(struct fastbuf *f, int cs_from, int cs_to);
#include <ucw/mempool.h>
#include <charset/charconv.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define mp_strconv ucw_mp_strconv
+#endif
+
byte *mp_strconv(struct mempool *mp, const byte *s, uns cs_in, uns cs_out);
-static inline byte *
-mp_strconv_to_utf8(struct mempool *mp, const byte *s, uns cs_in)
+static inline byte *mp_strconv_to_utf8(struct mempool *mp, const byte *s, uns cs_in)
{ return mp_strconv(mp, s, cs_in, CONV_CHARSET_UTF8); }
-static inline byte *
-mp_strconv_from_utf8(struct mempool *mp, const byte *s, uns cs_out)
+static inline byte *mp_strconv_from_utf8(struct mempool *mp, const byte *s, uns cs_out)
{ return mp_strconv(mp, s, CONV_CHARSET_UTF8, cs_out); }
#endif
#include <charset/charconv.h>
#include <alloca.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define stk_strconv_init ucw_stk_strconv_init
+#define stk_strconv_step ucw_stk_strconv_step
+#endif
+
/* The following macros convert strings between given charsets (CONV_CHARSET_x). */
#define stk_strconv(s, cs_in, cs_out) \
#ifndef _CHARSET_UNICAT_H
#define _CHARSET_UNICAT_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define Uexpand_lig ucw_Uexpand_lig
+#endif
+
extern const byte *_U_cat[];
extern const u16 *_U_upper[], *_U_lower[], *_U_unaccent[];
#include <ucw/workqueue.h>
#include <ucw/clists.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define asio_cleanup_queue ucw_asio_cleanup_queue
+#define asio_get ucw_asio_get
+#define asio_init_queue ucw_asio_init_queue
+#define asio_put ucw_asio_put
+#define asio_submit ucw_asio_submit
+#define asio_sync ucw_asio_sync
+#define asio_wait ucw_asio_wait
+#endif
+
/*
* This module takes care of scheduling and executing asynchronous I/O requests
* on files opened with O_DIRECT. It is primarily used by the fb-direct fastbuf
* of the GNU Lesser General Public License.
*/
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define base224_decode ucw_base224_decode
+#define base224_encode ucw_base224_encode
+#endif
+
/**
* Encodes @len bytes of data pointed to by @src by base224 encoding.
* Stores them in @dest and returns the number of bytes the output
* of the GNU Lesser General Public License.
*/
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define base64_decode ucw_base64_decode
+#define base64_encode ucw_base64_encode
+#endif
+
/**
* Encodes @len bytes of data pointed to by @src by base64 encoding.
* Stores them in @dest and returns the number of bytes the output
#ifndef _UCW_BBUF_H
#define _UCW_BBUF_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define bb_printf ucw_bb_printf
+#define bb_printf_at ucw_bb_printf_at
+#define bb_vprintf ucw_bb_vprintf
+#define bb_vprintf_at ucw_bb_vprintf_at
+#endif
+
#define GBUF_TYPE byte
#define GBUF_PREFIX(x) bb_##x
#include <ucw/gbuf.h>
#include <string.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define bit_array_count_bits ucw_bit_array_count_bits
+#define bit_array_xrealloc ucw_bit_array_xrealloc
+#endif
+
typedef u32 *bitarray_t; // Must be initialized by bit_array_xmalloc(), bit_array_zero() or bit_array_set_all()
#define BIT_ARRAY_WORDS(n) (((n)+31)/32)
#ifndef _UCW_BITOPS_H
#define _UCW_BITOPS_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define bit_fls ucw_bit_fls
+#define ffs_table ucw_ffs_table
+#endif
+
/* Find highest bit set (i.e., the floor of the binary logarithm) (bit-fls.c) */
int bit_fls(u32 x); /* bit_fls(0)=-1 */
#ifndef _UCW_BITSIG_H
#define _UCW_BITSIG_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define bitsig_free ucw_bitsig_free
+#define bitsig_init ucw_bitsig_init
+#define bitsig_insert ucw_bitsig_insert
+#define bitsig_member ucw_bitsig_member
+#endif
+
struct bitsig;
struct bitsig *bitsig_init(uns perrlog, uns maxn);
#include <ucw/threads.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define cf_add_dirty ucw_cf_add_dirty
+#define cf_commit_all ucw_cf_commit_all
+#define cf_done_stack ucw_cf_done_stack
+#define cf_find_subitem ucw_cf_find_subitem
+#define cf_init_stack ucw_cf_init_stack
+#define cf_interpret_line ucw_cf_interpret_line
+#define cf_journal_delete ucw_cf_journal_delete
+#define cf_journal_swap ucw_cf_journal_swap
+#define cf_obtain_context ucw_cf_obtain_context
+#define cf_op_names ucw_cf_op_names
+#define cf_sections ucw_cf_sections
+#define cf_type_names ucw_cf_type_names
+#define cf_type_size ucw_cf_type_size
+#endif
+
/* Item stack used by conf-intr.c */
#define MAX_STACK_SIZE 16
#include <ucw/clists.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define cf_close_group ucw_cf_close_group
+#define cf_declare_rel_section ucw_cf_declare_rel_section
+#define cf_declare_section ucw_cf_declare_section
+#define cf_delete_context ucw_cf_delete_context
+#define cf_dump_sections ucw_cf_dump_sections
+#define cf_find_item ucw_cf_find_item
+#define cf_get_pool ucw_cf_get_pool
+#define cf_init_section ucw_cf_init_section
+#define cf_journal_block ucw_cf_journal_block
+#define cf_journal_commit_transaction ucw_cf_journal_commit_transaction
+#define cf_journal_new_transaction ucw_cf_journal_new_transaction
+#define cf_journal_rollback_transaction ucw_cf_journal_rollback_transaction
+#define cf_load ucw_cf_load
+#define cf_malloc ucw_cf_malloc
+#define cf_malloc_zero ucw_cf_malloc_zero
+#define cf_modify_item ucw_cf_modify_item
+#define cf_new_context ucw_cf_new_context
+#define cf_open_group ucw_cf_open_group
+#define cf_parse_double ucw_cf_parse_double
+#define cf_parse_int ucw_cf_parse_int
+#define cf_parse_ip ucw_cf_parse_ip
+#define cf_parse_u64 ucw_cf_parse_u64
+#define cf_printf ucw_cf_printf
+#define cf_reload ucw_cf_reload
+#define cf_revert ucw_cf_revert
+#define cf_set ucw_cf_set
+#define cf_set_journalling ucw_cf_set_journalling
+#define cf_strdup ucw_cf_strdup
+#define cf_switch_context ucw_cf_switch_context
+#endif
+
struct mempool;
/***
* Adapted for LibUCW by Martin Mares <mj@ucw.cz> in 2012.
*/
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define crc_tableil8_o32 ucw_crc_tableil8_o32
+#define crc_tableil8_o40 ucw_crc_tableil8_o40
+#define crc_tableil8_o48 ucw_crc_tableil8_o48
+#define crc_tableil8_o56 ucw_crc_tableil8_o56
+#define crc_tableil8_o64 ucw_crc_tableil8_o64
+#define crc_tableil8_o72 ucw_crc_tableil8_o72
+#define crc_tableil8_o80 ucw_crc_tableil8_o80
+#define crc_tableil8_o88 ucw_crc_tableil8_o88
+#endif
+
extern u32 crc_tableil8_o32[256];
extern u32 crc_tableil8_o40[256];
extern u32 crc_tableil8_o48[256];
#ifndef _UCW_CRC_H
#define _UCW_CRC_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define crc32_hash_buffer ucw_crc32_hash_buffer
+#define crc32_init ucw_crc32_init
+#endif
+
/**
* Internal CRC calculator context.
* You should use it just as an opaque handle only.
#include <sys/types.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define daemon_control ucw_daemon_control
+#define daemon_exit ucw_daemon_exit
+#define daemon_init ucw_daemon_init
+#define daemon_run ucw_daemon_run
+#endif
+
/** Parameters passed to the daemon helper. **/
struct daemon_params {
uns flags; // DAEMON_FLAG_xxx
#ifndef _UCW_ELTPOOL_H
#define _UCW_ELTPOOL_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define ep_alloc_slow ucw_ep_alloc_slow
+#define ep_delete ucw_ep_delete
+#define ep_new ucw_ep_new
+#define ep_total_size ucw_ep_total_size
+#endif
+
/***
* [[defs]]
* Definitions
#include <string.h>
#include <alloca.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define bbcopy_slow ucw_bbcopy_slow
+#define bclose ucw_bclose
+#define bclose_file_helper ucw_bclose_file_helper
+#define bconfig ucw_bconfig
+#define beof_slow ucw_beof_slow
+#define bfdopen ucw_bfdopen
+#define bfdopen_internal ucw_bfdopen_internal
+#define bfdopen_shared ucw_bfdopen_shared
+#define bfilesize ucw_bfilesize
+#define bfilesync ucw_bfilesync
+#define bfix_tmp_file ucw_bfix_tmp_file
+#define bflush ucw_bflush
+#define bfmmopen_internal ucw_bfmmopen_internal
+#define bgetc_slow ucw_bgetc_slow
+#define bgets ucw_bgets
+#define bgets0 ucw_bgets0
+#define bgets_bb ucw_bgets_bb
+#define bgets_mp ucw_bgets_mp
+#define bgets_nodie ucw_bgets_nodie
+#define bgets_stk_init ucw_bgets_stk_init
+#define bgets_stk_step ucw_bgets_stk_step
+#define bopen ucw_bopen
+#define bopen_fd_name ucw_bopen_fd_name
+#define bopen_file ucw_bopen_file
+#define bopen_file_try ucw_bopen_file_try
+#define bopen_limited_fd ucw_bopen_limited_fd
+#define bopen_tmp ucw_bopen_tmp
+#define bopen_tmp_file ucw_bopen_tmp_file
+#define bopen_try ucw_bopen_try
+#define bpeekc_slow ucw_bpeekc_slow
+#define bprintf ucw_bprintf
+#define bputc_slow ucw_bputc_slow
+#define bread_slow ucw_bread_slow
+#define brefill ucw_brefill
+#define brewind ucw_brewind
+#define bseek ucw_bseek
+#define bsetpos ucw_bsetpos
+#define bskip_slow ucw_bskip_slow
+#define bspout ucw_bspout
+#define bthrow ucw_bthrow
+#define bwrite_slow ucw_bwrite_slow
+#define fb_tie ucw_fb_tie
+#define fbatomic_internal_write ucw_fbatomic_internal_write
+#define fbatomic_open ucw_fbatomic_open
+#define fbbuf_init_read ucw_fbbuf_init_read
+#define fbbuf_init_write ucw_fbbuf_init_write
+#define fbdir_cheat ucw_fbdir_cheat
+#define fbdir_open_fd_internal ucw_fbdir_open_fd_internal
+#define fbgrow_create ucw_fbgrow_create
+#define fbgrow_create_mp ucw_fbgrow_create_mp
+#define fbgrow_get_buf ucw_fbgrow_get_buf
+#define fbgrow_reset ucw_fbgrow_reset
+#define fbgrow_rewind ucw_fbgrow_rewind
+#define fbmem_clone_read ucw_fbmem_clone_read
+#define fbmem_create ucw_fbmem_create
+#define fbmulti_append ucw_fbmulti_append
+#define fbmulti_create ucw_fbmulti_create
+#define fbmulti_remove ucw_fbmulti_remove
+#define fbpar_cf ucw_fbpar_cf
+#define fbpar_def ucw_fbpar_def
+#define fbpool_end ucw_fbpool_end
+#define fbpool_init ucw_fbpool_init
+#define fbpool_start ucw_fbpool_start
+#define open_tmp ucw_open_tmp
+#define temp_file_name ucw_temp_file_name
+#define vbprintf ucw_vbprintf
+#endif
+
/***
* === Internal structure [[internal]]
*
#include <ucw/fastbuf.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define fbsock_create ucw_fbsock_create
+#endif
+
struct fbsock_params { /** Configuration of socket fastbuf. **/
int fd;
int fd_is_shared;
#include <ucw/fastbuf.h>
#include <ucw/unicode.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define bget_utf16_be_slow ucw_bget_utf16_be_slow
+#define bget_utf16_le_slow ucw_bget_utf16_le_slow
+#define bget_utf8_32_slow ucw_bget_utf8_32_slow
+#define bget_utf8_slow ucw_bget_utf8_slow
+#define bput_utf16_be_slow ucw_bput_utf16_be_slow
+#define bput_utf16_le_slow ucw_bput_utf16_le_slow
+#define bput_utf8_32_slow ucw_bput_utf8_32_slow
+#define bput_utf8_slow ucw_bput_utf8_slow
+#endif
+
/* ** UTF-8 ** */
int bget_utf8_slow(struct fastbuf *b, uns repl);
#include <ucw/fastbuf.h>
#include <ucw/varint.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define bget_varint_slow ucw_bget_varint_slow
+#define bput_varint_slow ucw_bput_varint_slow
+#endif
+
u64 bget_varint_slow(struct fastbuf *b, u64 repl);
void bput_varint_slow(struct fastbuf *b, u64 u);
#ifndef _UCW_GARY_H
#define _UCW_GARY_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define gary_fix ucw_gary_fix
+#define gary_free ucw_gary_free
+#define gary_init ucw_gary_init
+#define gary_push_helper ucw_gary_push_helper
+#define gary_set_size ucw_gary_set_size
+#endif
+
struct gary_hdr {
size_t num_elts;
size_t have_space;
#ifndef _UCW_GETOPT_H
#define _UCW_GETOPT_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define cf_def_file ucw_cf_def_file
+#define cf_env_file ucw_cf_env_file
+#define cf_getopt ucw_cf_getopt
+#define reset_getopt ucw_reset_getopt
+#endif
+
#ifdef CONFIG_UCW_OWN_GETOPT
#include <ucw/getopt/getopt-sh.h>
#else
#include <ucw/lib.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define hash_block ucw_hash_block
+#define hash_block_aligned ucw_hash_block_aligned
+#define hash_string ucw_hash_string
+#define hash_string_aligned ucw_hash_string_aligned
+#define hash_string_nocase ucw_hash_string_nocase
+#define str_len ucw_str_len
+#define str_len_aligned ucw_str_len_aligned
+#endif
+
/*** === String hashes [[strhash]] ***/
/* The following functions need str to be aligned to sizeof(uns). */
#include <fcntl.h>
#include <unistd.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define careful_read ucw_careful_read
+#define careful_write ucw_careful_write
+#define mmap_file ucw_mmap_file
+#define munmap_file ucw_munmap_file
+#define sync_dir ucw_sync_dir
+#endif
+
#ifdef CONFIG_UCW_LARGE_FILES
#define ucw_open open64
#include <ucw/clists.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define ip_addrmask_match ucw_ip_addrmask_match
+#define ip_addrmask_type ucw_ip_addrmask_type
+#define ipaccess_cf ucw_ipaccess_cf
+#define ipaccess_check ucw_ipaccess_check
+#endif
+
extern struct cf_section ipaccess_cf;
int ipaccess_check(clist *l, u32 ip);
#include <ucw/config.h>
#include <stdarg.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define assert_failed ucw_assert_failed
+#define assert_failed_noinfo ucw_assert_failed_noinfo
+#define big_alloc ucw_big_alloc
+#define big_alloc_zero ucw_big_alloc_zero
+#define big_free ucw_big_free
+#define die ucw_die
+#define log_die_hook ucw_log_die_hook
+#define log_file ucw_log_file
+#define log_fork ucw_log_fork
+#define log_init ucw_log_init
+#define log_pid ucw_log_pid
+#define log_title ucw_log_title
+#define msg ucw_msg
+#define page_alloc ucw_page_alloc
+#define page_alloc_zero ucw_page_alloc_zero
+#define page_free ucw_page_free
+#define page_realloc ucw_page_realloc
+#define random_max ucw_random_max
+#define random_max_u64 ucw_random_max_u64
+#define random_u32 ucw_random_u32
+#define random_u64 ucw_random_u64
+#define vdie ucw_vdie
+#define vmsg ucw_vmsg
+#define xfree ucw_xfree
+#define xmalloc ucw_xmalloc
+#define xmalloc_zero ucw_xmalloc_zero
+#define xrealloc ucw_xrealloc
+#define xstrdup ucw_xstrdup
+#endif
+
/*** === Macros for handling structures, offsets and alignment ***/
#define CHECK_PTR_TYPE(x, type) ((x)-(type)(x) + (type)(x)) /** Check that a pointer @x is of type @type. Fail compilation if not. **/
#ifndef _UCW_LIZARD_H
#define _UCW_LIZARD_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define adler32_update ucw_adler32_update
+#define lizard_alloc ucw_lizard_alloc
+#define lizard_compress ucw_lizard_compress
+#define lizard_decompress ucw_lizard_decompress
+#define lizard_decompress_safe ucw_lizard_decompress_safe
+#define lizard_free ucw_lizard_free
+#endif
+
/***
* [[basic]]
* Basic application
#ifndef _UCW_LOG_INTERNAL_H_
#define _UCW_LOG_INTERNAL_H_
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define log_pass_msg ucw_log_pass_msg
+#define log_stream_default ucw_log_stream_default
+#define log_streams ucw_log_streams
+#define log_streams_after ucw_log_streams_after
+#define log_type_names ucw_log_type_names
+#endif
+
/*
* Pass a message to a stream.
* @depth prevents loops.
#include <ucw/clists.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define log_add_substream ucw_log_add_substream
+#define log_check_configured ucw_log_check_configured
+#define log_close_all ucw_log_close_all
+#define log_close_stream ucw_log_close_stream
+#define log_configured ucw_log_configured
+#define log_find_type ucw_log_find_type
+#define log_new_configured ucw_log_new_configured
+#define log_new_fd ucw_log_new_fd
+#define log_new_file ucw_log_new_file
+#define log_new_stream ucw_log_new_stream
+#define log_new_syslog ucw_log_new_syslog
+#define log_register_type ucw_log_register_type
+#define log_rm_substream ucw_log_rm_substream
+#define log_set_default_stream ucw_log_set_default_stream
+#define log_set_format ucw_log_set_format
+#define log_stream_by_flags ucw_log_stream_by_flags
+#define log_switch ucw_log_switch
+#define log_switch_disable ucw_log_switch_disable
+#define log_switch_enable ucw_log_switch_enable
+#define log_syslog_facility_exists ucw_log_syslog_facility_exists
+#define log_type_name ucw_log_type_name
+#endif
+
/*** === Messages and streams ***/
/**
#include <signal.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define block_io_add ucw_block_io_add
+#define block_io_del ucw_block_io_del
+#define block_io_read ucw_block_io_read
+#define block_io_set_timeout ucw_block_io_set_timeout
+#define block_io_write ucw_block_io_write
+#define file_add ucw_file_add
+#define file_chg ucw_file_chg
+#define file_debug ucw_file_debug
+#define file_del ucw_file_del
+#define hook_add ucw_hook_add
+#define hook_debug ucw_hook_debug
+#define hook_del ucw_hook_del
+#define main_cleanup ucw_main_cleanup
+#define main_current ucw_main_current
+#define main_debug_context ucw_main_debug_context
+#define main_delete ucw_main_delete
+#define main_destroy ucw_main_destroy
+#define main_get_time ucw_main_get_time
+#define main_init ucw_main_init
+#define main_loop ucw_main_loop
+#define main_new ucw_main_new
+#define main_step ucw_main_step
+#define main_switch_context ucw_main_switch_context
+#define main_teardown ucw_main_teardown
+#define process_add ucw_process_add
+#define process_debug ucw_process_debug
+#define process_del ucw_process_del
+#define process_fork ucw_process_fork
+#define rec_io_add ucw_rec_io_add
+#define rec_io_del ucw_rec_io_del
+#define rec_io_parse_line ucw_rec_io_parse_line
+#define rec_io_set_timeout ucw_rec_io_set_timeout
+#define rec_io_start_read ucw_rec_io_start_read
+#define rec_io_stop_read ucw_rec_io_stop_read
+#define rec_io_write ucw_rec_io_write
+#define signal_add ucw_signal_add
+#define signal_debug ucw_signal_debug
+#define signal_del ucw_signal_del
+#define timer_add ucw_timer_add
+#define timer_add_rel ucw_timer_add_rel
+#define timer_debug ucw_timer_debug
+#define timer_del ucw_timer_del
+#endif
+
/***
* [[basic]]
* Basic operations
#ifndef _UCW_MD5_H
#define _UCW_MD5_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define md5_final ucw_md5_final
+#define md5_hash_buffer ucw_md5_hash_buffer
+#define md5_init ucw_md5_init
+#define md5_transform ucw_md5_transform
+#define md5_update ucw_md5_update
+#endif
+
/**
* Internal MD5 hash state.
* You should use it just as an opaque handle only.
#ifndef _UCW_POOLS_H
#define _UCW_POOLS_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define mp_alloc ucw_mp_alloc
+#define mp_alloc_internal ucw_mp_alloc_internal
+#define mp_alloc_noalign ucw_mp_alloc_noalign
+#define mp_alloc_zero ucw_mp_alloc_zero
+#define mp_delete ucw_mp_delete
+#define mp_flush ucw_mp_flush
+#define mp_grow_internal ucw_mp_grow_internal
+#define mp_init ucw_mp_init
+#define mp_memdup ucw_mp_memdup
+#define mp_multicat ucw_mp_multicat
+#define mp_new ucw_mp_new
+#define mp_open ucw_mp_open
+#define mp_pop ucw_mp_pop
+#define mp_printf ucw_mp_printf
+#define mp_printf_append ucw_mp_printf_append
+#define mp_push ucw_mp_push
+#define mp_realloc ucw_mp_realloc
+#define mp_realloc_zero ucw_mp_realloc_zero
+#define mp_restore ucw_mp_restore
+#define mp_spread_internal ucw_mp_spread_internal
+#define mp_start ucw_mp_start
+#define mp_start_internal ucw_mp_start_internal
+#define mp_start_noalign ucw_mp_start_noalign
+#define mp_stats ucw_mp_stats
+#define mp_str_from_mem ucw_mp_str_from_mem
+#define mp_strdup ucw_mp_strdup
+#define mp_strjoin ucw_mp_strjoin
+#define mp_total_size ucw_mp_total_size
+#define mp_vprintf ucw_mp_vprintf
+#define mp_vprintf_append ucw_mp_vprintf_append
+#endif
+
/***
* [[defs]]
* Definitions
#ifndef _UCW_PARTMAP_H
#define _UCW_PARTMAP_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define partmap_close ucw_partmap_close
+#define partmap_load ucw_partmap_load
+#define partmap_open ucw_partmap_open
+#define partmap_size ucw_partmap_size
+#endif
+
struct partmap {
int fd;
ucw_off_t file_size;
#include <ucw/lib.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define isprime ucw_isprime
+#define next_table_prime ucw_next_table_prime
+#define nextprime ucw_nextprime
+#define prev_table_prime ucw_prev_table_prime
+#endif
+
/* prime.c */
/**
#ifndef _UCW_PROCESS_H
#define _UCW_PROCESS_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define echo_command ucw_echo_command
+#define echo_command_v ucw_echo_command_v
+#define exec_command ucw_exec_command
+#define exec_command_v ucw_exec_command_v
+#define format_exit_status ucw_format_exit_status
+#define getproctitle ucw_getproctitle
+#define run_command ucw_run_command
+#define run_command_v ucw_run_command_v
+#define setproctitle ucw_setproctitle
+#define setproctitle_init ucw_setproctitle_init
+#endif
+
/* proctitle.c */
// Must be called before parsing of arguments
#ifndef _UCW_REGEX_H
#define _UCW_REGEX_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define rx_compile ucw_rx_compile
+#define rx_free ucw_rx_free
+#define rx_match ucw_rx_match
+#define rx_subst ucw_rx_subst
+#endif
+
typedef struct regex regex;
regex *rx_compile(const char *r, int icase);
#include <ucw/clists.h>
#include <ucw/threads.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define res_add ucw_res_add
+#define res_alloc ucw_res_alloc
+#define res_detach ucw_res_detach
+#define res_drop ucw_res_drop
+#define res_dump ucw_res_dump
+#define res_eltpool ucw_res_eltpool
+#define res_for_fd ucw_res_for_fd
+#define res_free ucw_res_free
+#define res_malloc ucw_res_malloc
+#define res_malloc_zero ucw_res_malloc_zero
+#define res_mempool ucw_res_mempool
+#define res_realloc ucw_res_realloc
+#define res_subpool ucw_res_subpool
+#define rp_commit ucw_rp_commit
+#define rp_delete ucw_rp_delete
+#define rp_detach ucw_rp_detach
+#define rp_dump ucw_rp_dump
+#define rp_new ucw_rp_new
+#endif
+
/**
* A resource pool. It contains a name of the pool (which is printed
* in all debugging dumps, otherwise it is not used) and a bunch of
#ifndef _UCW_SHA1_H
#define _UCW_SHA1_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define sha1_final ucw_sha1_final
+#define sha1_hash_buffer ucw_sha1_hash_buffer
+#define sha1_hmac ucw_sha1_hmac
+#define sha1_hmac_final ucw_sha1_hmac_final
+#define sha1_hmac_init ucw_sha1_hmac_init
+#define sha1_hmac_update ucw_sha1_hmac_update
+#define sha1_init ucw_sha1_init
+#define sha1_update ucw_sha1_update
+#endif
+
/**
* Internal SHA1 state.
* You should use it just as an opaque handle only.
#ifndef _UCW_SIGHANDLER_H
#define _UCW_SIGHANDLER_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define handle_signal ucw_handle_signal
+#define set_signal_handler ucw_set_signal_handler
+#define unhandle_signal ucw_unhandle_signal
+#endif
+
typedef int (*ucw_sighandler_t)(int); // gets signum, returns nonzero if abort() should be called
void handle_signal(int signum);
#ifndef _UCW_SIGNAMES_H
#define _UCW_SIGNAMES_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define sig_name_to_number ucw_sig_name_to_number
+#define sig_number_to_name ucw_sig_number_to_name
+#endif
+
/***
* POSIX lacks facilities for conversion between signal names
* and signal numbers. They are available in LibUCW, but please
#include <ucw/clists.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define cf_2string_list_config ucw_cf_2string_list_config
+#define cf_string_list_config ucw_cf_string_list_config
+#define simp2_append ucw_simp2_append
+#define simp_append ucw_simp_append
+#endif
+
/***
* To simplify very common usage of circular linked links, whose nodes can hold only one or two trivial values,
* we define some generic node types, called the simple nodes.
#ifndef _UCW_SLISTS_H
#define _UCW_SLISTS_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define slist_insert_before ucw_slist_insert_before
+#define slist_prev ucw_slist_prev
+#define slist_remove ucw_slist_remove
+#endif
+
/**
* Common header for list nodes.
**/
#include <ucw/clists.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define asort_run ucw_asort_run
+#define asort_start_threads ucw_asort_start_threads
+#define asort_stop_threads ucw_asort_stop_threads
+#define sbuck_drop ucw_sbuck_drop
+#define sbuck_has_file ucw_sbuck_has_file
+#define sbuck_have ucw_sbuck_have
+#define sbuck_new ucw_sbuck_new
+#define sbuck_read ucw_sbuck_read
+#define sbuck_size ucw_sbuck_size
+#define sbuck_swap_out ucw_sbuck_swap_out
+#define sbuck_write ucw_sbuck_write
+#define sorter_add_radix_bits ucw_sorter_add_radix_bits
+#define sorter_alloc ucw_sorter_alloc
+#define sorter_alloc_buf ucw_sorter_alloc_buf
+#define sorter_bufsize ucw_sorter_bufsize
+#define sorter_debug ucw_sorter_debug
+#define sorter_fb_params ucw_sorter_fb_params
+#define sorter_free_buf ucw_sorter_free_buf
+#define sorter_max_multiway_bits ucw_sorter_max_multiway_bits
+#define sorter_max_radix_bits ucw_sorter_max_radix_bits
+#define sorter_min_multiway_bits ucw_sorter_min_multiway_bits
+#define sorter_min_radix_bits ucw_sorter_min_radix_bits
+#define sorter_prepare_buf ucw_sorter_prepare_buf
+#define sorter_radix_threshold ucw_sorter_radix_threshold
+#define sorter_run ucw_sorter_run
+#define sorter_small_fb_params ucw_sorter_small_fb_params
+#define sorter_small_input ucw_sorter_small_input
+#define sorter_stream_bufsize ucw_sorter_stream_bufsize
+#define sorter_thread_chunk ucw_sorter_thread_chunk
+#define sorter_thread_threshold ucw_sorter_thread_threshold
+#define sorter_threads ucw_sorter_threads
+#define sorter_trace ucw_sorter_trace
+#define sorter_trace_array ucw_sorter_trace_array
+#endif
+
/* Configuration variables */
extern uns sorter_trace, sorter_trace_array, sorter_stream_bufsize;
extern uns sorter_debug, sorter_min_radix_bits, sorter_max_radix_bits, sorter_add_radix_bits;
#include <stdio.h>
#include <ucw/string.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define stk_array_join ucw_stk_array_join
+#define stk_array_len ucw_stk_array_len
+#define stk_fsize_internal ucw_stk_fsize_internal
+#define stk_hexdump_internal ucw_stk_hexdump_internal
+#define stk_printf_internal ucw_stk_printf_internal
+#define stk_vprintf_internal ucw_stk_vprintf_internal
+#endif
+
#define stk_strdup(s) ({ const char *_s=(s); uns _l=strlen(_s)+1; char *_x=alloca(_l); memcpy(_x, _s, _l); _x; })
#define stk_strndup(s,n) ({ const char *_s=(s); uns _l=strnlen(_s,(n)); char *_x=alloca(_l+1); memcpy(_x, _s, _l); _x[_l]=0; _x; })
#define stk_strcat(s1,s2) ({ const char *_s1=(s1); const char *_s2=(s2); uns _l1=strlen(_s1); uns _l2=strlen(_s2); char *_x=alloca(_l1+_l2+1); memcpy(_x,_s1,_l1); memcpy(_x+_l1,_s2,_l2+1); _x; })
#ifndef _UCW_STRING_H
#define _UCW_STRING_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define hex_to_mem ucw_hex_to_mem
+#define mem_to_hex ucw_mem_to_hex
+#define str_count_char ucw_str_count_char
+#define str_format_flags ucw_str_format_flags
+#define str_has_prefix ucw_str_has_prefix
+#define str_has_suffix ucw_str_has_suffix
+#define str_hier_prefix ucw_str_hier_prefix
+#define str_hier_suffix ucw_str_hier_suffix
+#define str_match_pattern ucw_str_match_pattern
+#define str_match_pattern_nocase ucw_str_match_pattern_nocase
+#define str_sepsplit ucw_str_sepsplit
+#define str_unesc ucw_str_unesc
+#define str_wordsplit ucw_str_wordsplit
+#define strnlen ucw_strnlen
+#endif
+
/* string.c */
#ifdef CONFIG_DARWIN
#ifndef _UCW_TBF_H_
#define _UCW_TBF_H_
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define tbf_init ucw_tbf_init
+#define tbf_limit ucw_tbf_limit
+#endif
+
/** A data structure describing a single TBF. **/
struct token_bucket_filter {
double rate; // Number of tokens received per second
#ifndef _UCW_TIMER_H
#define _UCW_TIMER_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define get_timer ucw_get_timer
+#define get_timestamp ucw_get_timestamp
+#define init_timer ucw_init_timer
+#define switch_timer ucw_switch_timer
+#define timestamp_type ucw_timestamp_type
+#endif
+
/***
* === Timestamps
*
#include <setjmp.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define trans_caught ucw_trans_caught
+#define trans_cleanup ucw_trans_cleanup
+#define trans_commit ucw_trans_commit
+#define trans_current_exc ucw_trans_current_exc
+#define trans_dump ucw_trans_dump
+#define trans_fold ucw_trans_fold
+#define trans_get_current ucw_trans_get_current
+#define trans_get_pool ucw_trans_get_pool
+#define trans_init ucw_trans_init
+#define trans_open ucw_trans_open
+#define trans_rollback ucw_trans_rollback
+#define trans_throw ucw_trans_throw
+#define trans_throw_exc ucw_trans_throw_exc
+#define trans_vthrow ucw_trans_vthrow
+#endif
+
/** A structure describing a transaction. All fields are for internal use only. **/
struct trans {
struct trans *prev_trans;
#include <ucw/unaligned.h>
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define utf8_strlen ucw_utf8_strlen
+#define utf8_strnlen ucw_utf8_strnlen
+#endif
+
/* Macros for handling UTF-8 */
#define UNI_REPLACEMENT 0xfffc /** Unicode value used as a default replacement of invalid characters. **/
#ifndef _UCW_URL_H
#define _UCW_URL_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define url_auto_canonicalize_rel ucw_url_auto_canonicalize_rel
+#define url_canon_split_rel ucw_url_canon_split_rel
+#define url_canonicalize ucw_url_canonicalize
+#define url_deescape ucw_url_deescape
+#define url_enescape ucw_url_enescape
+#define url_enescape_friendly ucw_url_enescape_friendly
+#define url_error ucw_url_error
+#define url_has_repeated_component ucw_url_has_repeated_component
+#define url_identify_protocol ucw_url_identify_protocol
+#define url_normalize ucw_url_normalize
+#define url_pack ucw_url_pack
+#define url_proto_names ucw_url_proto_names
+#define url_split ucw_url_split
+#endif
+
#define MAX_URL_SIZE 1024
/* Non-control meanings of control characters */
#ifndef _UCW_VARINT_H
#define _UCW_VARINT_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define varint_get_big ucw_varint_get_big
+#define varint_put_big ucw_varint_put_big
+#endif
+
/***
* The encoding works in the following way:
*
* of the GNU Lesser General Public License.
*/
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define wp_compile ucw_wp_compile
+#define wp_match ucw_wp_match
+#define wp_min_size ucw_wp_min_size
+#endif
+
struct wildpatt;
struct mempool;
#ifndef _UCW_WORKQUEUE_H
#define _UCW_WORKQUEUE_H
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define raw_queue_cleanup ucw_raw_queue_cleanup
+#define raw_queue_get ucw_raw_queue_get
+#define raw_queue_init ucw_raw_queue_init
+#define raw_queue_put ucw_raw_queue_put
+#define raw_queue_try_get ucw_raw_queue_try_get
+#define work_queue_cleanup ucw_work_queue_cleanup
+#define work_queue_init ucw_work_queue_init
+#define work_submit ucw_work_submit
+#define work_try_wait ucw_work_try_wait
+#define work_wait ucw_work_wait
+#define worker_pool_cleanup ucw_worker_pool_cleanup
+#define worker_pool_init ucw_worker_pool_init
+#endif
+
/*
* A thread pool is a set of threads receiving work requests from a common queue,
* each work request contains a pointer to a function inside the thread.