added hio_byte_to_ucstr(), hio_copy_ucstr_to_uchars(), hio_copy_bcstr_to_bchars()
This commit is contained in:
		| @ -13,6 +13,10 @@ EXTRA_DIST = \ | |||||||
| 	utl-str.c.m4 \ | 	utl-str.c.m4 \ | ||||||
| 	utl-str.m4 | 	utl-str.m4 | ||||||
|  |  | ||||||
|  | BUILT_SOURCES = \ | ||||||
|  | 	hio-utl.h \ | ||||||
|  | 	utl-str.c  | ||||||
|  |  | ||||||
| ################################################## | ################################################## | ||||||
| # MAIN LIBRARY  | # MAIN LIBRARY  | ||||||
| ################################################## | ################################################## | ||||||
| @ -140,10 +144,9 @@ install-data-hook: | |||||||
| uninstall-hook: | uninstall-hook: | ||||||
| 	@rm -f "$(DESTDIR)$(includedir)/hio-cfg.h" | 	@rm -f "$(DESTDIR)$(includedir)/hio-cfg.h" | ||||||
|  |  | ||||||
| $(srcdir)/hio-utl.h: utl-str.m4 hio-utl.h.m4 | hio-utl.h: utl-str.m4 hio-utl.h.m4 | ||||||
| 	m4 -I$(srcdir) $(srcdir)/hio-utl.h.m4 > $(srcdir)/hio-utl.h | 	m4 -I$(srcdir) $(srcdir)/hio-utl.h.m4 > $(srcdir)/hio-utl.h | ||||||
|  |  | ||||||
| # do NOT put $(srcdir) before utl-str.c |  | ||||||
| utl-str.c: utl-str.m4 utl-str.c.m4  | utl-str.c: utl-str.m4 utl-str.c.m4  | ||||||
| 	m4 -I$(srcdir) $(srcdir)/utl-str.c.m4 > $(srcdir)/utl-str.c | 	m4 -I$(srcdir) $(srcdir)/utl-str.c.m4 > $(srcdir)/utl-str.c | ||||||
|  |  | ||||||
|  | |||||||
| @ -434,6 +434,10 @@ EXTRA_DIST = \ | |||||||
| 	utl-str.c.m4 \ | 	utl-str.c.m4 \ | ||||||
| 	utl-str.m4 | 	utl-str.m4 | ||||||
|  |  | ||||||
|  | BUILT_SOURCES = \ | ||||||
|  | 	hio-utl.h \ | ||||||
|  | 	utl-str.c  | ||||||
|  |  | ||||||
|  |  | ||||||
| ################################################## | ################################################## | ||||||
| # MAIN LIBRARY  | # MAIN LIBRARY  | ||||||
| @ -471,7 +475,7 @@ libhio_la_CFLAGS = $(CFLAGS_LIB_COMMON) $(am__append_3) | |||||||
| libhio_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) $(am__append_4) | libhio_la_LDFLAGS = $(LDFLAGS_LIB_COMMON) $(am__append_4) | ||||||
| libhio_la_LIBADD = $(LIBADD_LIB_COMMON) $(SSL_LIBS) $(SOCKET_LIBS) \ | libhio_la_LIBADD = $(LIBADD_LIB_COMMON) $(SSL_LIBS) $(SOCKET_LIBS) \ | ||||||
| 	$(SENDFILE_LIBS) $(am__append_5) $(am__append_6) | 	$(SENDFILE_LIBS) $(am__append_5) $(am__append_6) | ||||||
| all: hio-cfg.h | all: $(BUILT_SOURCES) hio-cfg.h | ||||||
| 	$(MAKE) $(AM_MAKEFLAGS) all-am | 	$(MAKE) $(AM_MAKEFLAGS) all-am | ||||||
|  |  | ||||||
| .SUFFIXES: | .SUFFIXES: | ||||||
| @ -1053,13 +1057,15 @@ distdir-am: $(DISTFILES) | |||||||
| 	  fi; \ | 	  fi; \ | ||||||
| 	done | 	done | ||||||
| check-am: all-am | check-am: all-am | ||||||
| check: check-am | check: $(BUILT_SOURCES) | ||||||
|  | 	$(MAKE) $(AM_MAKEFLAGS) check-am | ||||||
| all-am: Makefile $(LTLIBRARIES) $(HEADERS) hio-cfg.h | all-am: Makefile $(LTLIBRARIES) $(HEADERS) hio-cfg.h | ||||||
| installdirs: | installdirs: | ||||||
| 	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ | 	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ | ||||||
| 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \ | 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \ | ||||||
| 	done | 	done | ||||||
| install: install-am | install: $(BUILT_SOURCES) | ||||||
|  | 	$(MAKE) $(AM_MAKEFLAGS) install-am | ||||||
| install-exec: install-exec-am | install-exec: install-exec-am | ||||||
| install-data: install-data-am | install-data: install-data-am | ||||||
| uninstall: uninstall-am | uninstall: uninstall-am | ||||||
| @ -1089,6 +1095,7 @@ distclean-generic: | |||||||
| maintainer-clean-generic: | maintainer-clean-generic: | ||||||
| 	@echo "This command is intended for maintainers to use" | 	@echo "This command is intended for maintainers to use" | ||||||
| 	@echo "it deletes files that may require special tools to rebuild." | 	@echo "it deletes files that may require special tools to rebuild." | ||||||
|  | 	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) | ||||||
| clean: clean-am | clean: clean-am | ||||||
|  |  | ||||||
| clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ | clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ | ||||||
| @ -1246,7 +1253,8 @@ ps-am: | |||||||
| uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES | uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES | ||||||
| 	@$(NORMAL_INSTALL) | 	@$(NORMAL_INSTALL) | ||||||
| 	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook | 	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook | ||||||
| .MAKE: all install-am install-data-am install-strip uninstall-am | .MAKE: all check install install-am install-data-am install-strip \ | ||||||
|  | 	uninstall-am | ||||||
|  |  | ||||||
| .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ | .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ | ||||||
| 	clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ | 	clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ | ||||||
| @ -1278,10 +1286,9 @@ install-data-hook: | |||||||
| uninstall-hook: | uninstall-hook: | ||||||
| 	@rm -f "$(DESTDIR)$(includedir)/hio-cfg.h" | 	@rm -f "$(DESTDIR)$(includedir)/hio-cfg.h" | ||||||
|  |  | ||||||
| $(srcdir)/hio-utl.h: utl-str.m4 hio-utl.h.m4 | hio-utl.h: utl-str.m4 hio-utl.h.m4 | ||||||
| 	m4 -I$(srcdir) $(srcdir)/hio-utl.h.m4 > $(srcdir)/hio-utl.h | 	m4 -I$(srcdir) $(srcdir)/hio-utl.h.m4 > $(srcdir)/hio-utl.h | ||||||
|  |  | ||||||
| # do NOT put $(srcdir) before utl-str.c |  | ||||||
| utl-str.c: utl-str.m4 utl-str.c.m4  | utl-str.c: utl-str.m4 utl-str.c.m4  | ||||||
| 	m4 -I$(srcdir) $(srcdir)/utl-str.c.m4 > $(srcdir)/utl-str.c | 	m4 -I$(srcdir) $(srcdir)/utl-str.c.m4 > $(srcdir)/utl-str.c | ||||||
|  |  | ||||||
|  | |||||||
| @ -412,6 +412,18 @@ HIO_EXPORT hio_oow_t hio_copy_bchars_to_bcstr_unlimited ( | |||||||
| 	hio_oow_t        len | 	hio_oow_t        len | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | HIO_EXPORT hio_oow_t hio_copy_ucstr_to_uchars ( | ||||||
|  | 	hio_uch_t*        dst, | ||||||
|  | 	hio_oow_t         dlen, | ||||||
|  | 	const hio_uch_t*  src | ||||||
|  | ); | ||||||
|  |  | ||||||
|  | HIO_EXPORT hio_oow_t hio_copy_bcstr_to_bchars ( | ||||||
|  | 	hio_bch_t*        dst, | ||||||
|  | 	hio_oow_t         dlen, | ||||||
|  | 	const hio_bch_t*  src | ||||||
|  | ); | ||||||
|  |  | ||||||
| HIO_EXPORT hio_oow_t hio_copy_ucstr ( | HIO_EXPORT hio_oow_t hio_copy_ucstr ( | ||||||
| 	hio_uch_t*       dst, | 	hio_uch_t*       dst, | ||||||
| 	hio_oow_t        len, | 	hio_oow_t        len, | ||||||
| @ -647,6 +659,17 @@ HIO_EXPORT hio_oow_t hio_byte_to_bcstr ( | |||||||
| 	hio_bch_t     fill | 	hio_bch_t     fill | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | #define HIO_BYTE_TO_UCSTR_RADIXMASK (0xFF) | ||||||
|  | #define HIO_BYTE_TO_UCSTR_LOWERCASE (1 << 8) | ||||||
|  |   | ||||||
|  | HIO_EXPORT hio_oow_t hio_byte_to_ucstr ( | ||||||
|  | 	hio_uint8_t   byte,   | ||||||
|  | 	hio_uch_t*    buf, | ||||||
|  | 	hio_oow_t     size, | ||||||
|  | 	int           flagged_radix, | ||||||
|  | 	hio_uch_t     fill | ||||||
|  | ); | ||||||
|  |  | ||||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||||
| #define HIO_CHARS_TO_INT_MAKE_OPTION(e,ltrim,rtrim,base) (((!!(e)) << 0) | ((!!(ltrim)) << 2) | ((!!(rtrim)) << 3) | ((base) << 8)) | #define HIO_CHARS_TO_INT_MAKE_OPTION(e,ltrim,rtrim,base) (((!!(e)) << 0) | ((!!(ltrim)) << 2) | ((!!(rtrim)) << 3) | ((base) << 8)) | ||||||
| #define HIO_CHARS_TO_INT_GET_OPTION_E(option) ((option) & 1) | #define HIO_CHARS_TO_INT_GET_OPTION_E(option) ((option) & 1) | ||||||
|  | |||||||
| @ -413,6 +413,18 @@ HIO_EXPORT hio_oow_t hio_copy_bchars_to_bcstr_unlimited ( | |||||||
| 	hio_oow_t        len | 	hio_oow_t        len | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | HIO_EXPORT hio_oow_t hio_copy_ucstr_to_uchars ( | ||||||
|  | 	hio_uch_t*        dst, | ||||||
|  | 	hio_oow_t         dlen, | ||||||
|  | 	const hio_uch_t*  src | ||||||
|  | ); | ||||||
|  |  | ||||||
|  | HIO_EXPORT hio_oow_t hio_copy_bcstr_to_bchars ( | ||||||
|  | 	hio_bch_t*        dst, | ||||||
|  | 	hio_oow_t         dlen, | ||||||
|  | 	const hio_bch_t*  src | ||||||
|  | ); | ||||||
|  |  | ||||||
| HIO_EXPORT hio_oow_t hio_copy_ucstr ( | HIO_EXPORT hio_oow_t hio_copy_ucstr ( | ||||||
| 	hio_uch_t*       dst, | 	hio_uch_t*       dst, | ||||||
| 	hio_oow_t        len, | 	hio_oow_t        len, | ||||||
| @ -648,6 +660,17 @@ HIO_EXPORT hio_oow_t hio_byte_to_bcstr ( | |||||||
| 	hio_bch_t     fill | 	hio_bch_t     fill | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | #define HIO_BYTE_TO_UCSTR_RADIXMASK (0xFF) | ||||||
|  | #define HIO_BYTE_TO_UCSTR_LOWERCASE (1 << 8) | ||||||
|  |   | ||||||
|  | HIO_EXPORT hio_oow_t hio_byte_to_ucstr ( | ||||||
|  | 	hio_uint8_t   byte,   | ||||||
|  | 	hio_uch_t*    buf, | ||||||
|  | 	hio_oow_t     size, | ||||||
|  | 	int           flagged_radix, | ||||||
|  | 	hio_uch_t     fill | ||||||
|  | ); | ||||||
|  |  | ||||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||||
| #define HIO_CHARS_TO_INT_MAKE_OPTION(e,ltrim,rtrim,base) (((!!(e)) << 0) | ((!!(ltrim)) << 2) | ((!!(rtrim)) << 3) | ((base) << 8)) | #define HIO_CHARS_TO_INT_MAKE_OPTION(e,ltrim,rtrim,base) (((!!(e)) << 0) | ((!!(ltrim)) << 2) | ((!!(rtrim)) << 3) | ((base) << 8)) | ||||||
| #define HIO_CHARS_TO_INT_GET_OPTION_E(option) ((option) & 1) | #define HIO_CHARS_TO_INT_GET_OPTION_E(option) ((option) & 1) | ||||||
|  | |||||||
| @ -417,6 +417,38 @@ hio_oow_t hio_copy_bchars_to_bcstr_unlimited (hio_bch_t* dst, const hio_bch_t* s | |||||||
| 	return i; | 	return i; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | hio_oow_t hio_copy_ucstr_to_uchars (hio_uch_t* dst, hio_oow_t len, const hio_uch_t* src) | ||||||
|  | { | ||||||
|  | 	/* no null termination */ | ||||||
|  | 	hio_uch_t* p, * p2; | ||||||
|  |  | ||||||
|  | 	p = dst; p2 = dst + len - 1; | ||||||
|  |  | ||||||
|  | 	while (p < p2) | ||||||
|  | 	{ | ||||||
|  | 		if (*src == '\0') break; | ||||||
|  | 		*p++ = *src++; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return p - dst; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | hio_oow_t hio_copy_bcstr_to_bchars (hio_bch_t* dst, hio_oow_t len, const hio_bch_t* src) | ||||||
|  | { | ||||||
|  | 	/* no null termination */ | ||||||
|  | 	hio_bch_t* p, * p2; | ||||||
|  |  | ||||||
|  | 	p = dst; p2 = dst + len - 1; | ||||||
|  |  | ||||||
|  | 	while (p < p2) | ||||||
|  | 	{ | ||||||
|  | 		if (*src == '\0') break; | ||||||
|  | 		*p++ = *src++; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return p - dst; | ||||||
|  | } | ||||||
|  |  | ||||||
| hio_oow_t hio_copy_ucstr (hio_uch_t* dst, hio_oow_t len, const hio_uch_t* src) | hio_oow_t hio_copy_ucstr (hio_uch_t* dst, hio_oow_t len, const hio_uch_t* src) | ||||||
| { | { | ||||||
| 	hio_uch_t* p, * p2; | 	hio_uch_t* p, * p2; | ||||||
|  | |||||||
| @ -63,6 +63,9 @@ dnl -- | |||||||
| fn_copy_chars_to_cstr_unlimited(hio_copy_uchars_to_ucstr_unlimited, hio_uch_t) | fn_copy_chars_to_cstr_unlimited(hio_copy_uchars_to_ucstr_unlimited, hio_uch_t) | ||||||
| fn_copy_chars_to_cstr_unlimited(hio_copy_bchars_to_bcstr_unlimited, hio_bch_t) | fn_copy_chars_to_cstr_unlimited(hio_copy_bchars_to_bcstr_unlimited, hio_bch_t) | ||||||
| dnl -- | dnl -- | ||||||
|  | fn_copy_cstr_to_chars(hio_copy_ucstr_to_uchars, hio_uch_t) | ||||||
|  | fn_copy_cstr_to_chars(hio_copy_bcstr_to_bchars, hio_bch_t) | ||||||
|  | dnl -- | ||||||
| fn_copy_cstr(hio_copy_ucstr, hio_uch_t) | fn_copy_cstr(hio_copy_ucstr, hio_uch_t) | ||||||
| fn_copy_cstr(hio_copy_bcstr, hio_bch_t) | fn_copy_cstr(hio_copy_bcstr, hio_bch_t) | ||||||
| dnl -- | dnl -- | ||||||
|  | |||||||
| @ -221,6 +221,25 @@ hio_oow_t _fn_name_ (_char_type_* dst, const _char_type_* src, hio_oow_t len) | |||||||
| popdef([[_fn_name_]])popdef([[_char_type_]])dnl | popdef([[_fn_name_]])popdef([[_char_type_]])dnl | ||||||
| ]])dnl | ]])dnl | ||||||
| dnl --------------------------------------------------------------------------- | dnl --------------------------------------------------------------------------- | ||||||
|  | define([[fn_copy_cstr_to_chars]], [[pushdef([[_fn_name_]], $1)pushdef([[_char_type_]], $2)dnl | ||||||
|  | hio_oow_t _fn_name_ (_char_type_* dst, hio_oow_t len, const _char_type_* src) | ||||||
|  | { | ||||||
|  | 	/* no null termination */ | ||||||
|  | 	_char_type_* p, * p2; | ||||||
|  |  | ||||||
|  | 	p = dst; p2 = dst + len - 1; | ||||||
|  |  | ||||||
|  | 	while (p < p2) | ||||||
|  | 	{ | ||||||
|  | 		if (*src == '\0') break; | ||||||
|  | 		*p++ = *src++; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return p - dst; | ||||||
|  | } | ||||||
|  | popdef([[_fn_name_]])popdef([[_char_type_]])dnl | ||||||
|  | ]])dnl | ||||||
|  | dnl --------------------------------------------------------------------------- | ||||||
| define([[fn_copy_cstr]], [[pushdef([[_fn_name_]], $1)pushdef([[_char_type_]], $2)dnl | define([[fn_copy_cstr]], [[pushdef([[_fn_name_]], $1)pushdef([[_char_type_]], $2)dnl | ||||||
| hio_oow_t _fn_name_ (_char_type_* dst, hio_oow_t len, const _char_type_* src) | hio_oow_t _fn_name_ (_char_type_* dst, hio_oow_t len, const _char_type_* src) | ||||||
| { | { | ||||||
|  | |||||||
| @ -180,6 +180,40 @@ const hio_uch_t* hio_find_ucstr_word_in_ucstr (const hio_uch_t* str, const hio_u | |||||||
|  |  | ||||||
| /* ========================================================================= */ | /* ========================================================================= */ | ||||||
|  |  | ||||||
|  | hio_oow_t hio_byte_to_ucstr (hio_oob_t byte, hio_uch_t* buf, hio_oow_t size, int flagged_radix, hio_uch_t fill) | ||||||
|  | { | ||||||
|  | 	hio_uch_t tmp[(HIO_SIZEOF(hio_oob_t) * HIO_BITS_PER_BYTE)]; | ||||||
|  | 	hio_uch_t* p = tmp, * bp = buf, * be = buf + size - 1; | ||||||
|  | 	int radix; | ||||||
|  | 	hio_uch_t radix_char; | ||||||
|  |  | ||||||
|  | 	radix = (flagged_radix & HIO_BYTE_TO_UCSTR_RADIXMASK); | ||||||
|  | 	radix_char = (flagged_radix & HIO_BYTE_TO_UCSTR_LOWERCASE)? 'a': 'A'; | ||||||
|  | 	if (radix < 2 || radix > 36 || size <= 0) return 0; | ||||||
|  |  | ||||||
|  | 	do  | ||||||
|  | 	{ | ||||||
|  | 		hio_uint8_t digit = byte % radix;	 | ||||||
|  | 		if (digit < 10) *p++ = digit + '0'; | ||||||
|  | 		else *p++ = digit + radix_char - 10; | ||||||
|  | 		byte /= radix; | ||||||
|  | 	} | ||||||
|  | 	while (byte > 0); | ||||||
|  |  | ||||||
|  | 	if (fill != '\0')  | ||||||
|  | 	{ | ||||||
|  | 		while (size - 1 > p - tmp)  | ||||||
|  | 		{ | ||||||
|  | 			*bp++ = fill; | ||||||
|  | 			size--; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	while (p > tmp && bp < be) *bp++ = *--p; | ||||||
|  | 	*bp = '\0'; | ||||||
|  | 	return bp - buf; | ||||||
|  | } | ||||||
|  |  | ||||||
| hio_oow_t hio_byte_to_bcstr (hio_uint8_t byte, hio_bch_t* buf, hio_oow_t size, int flagged_radix, hio_bch_t fill) | hio_oow_t hio_byte_to_bcstr (hio_uint8_t byte, hio_bch_t* buf, hio_oow_t size, int flagged_radix, hio_bch_t fill) | ||||||
| { | { | ||||||
| 	hio_bch_t tmp[(HIO_SIZEOF(hio_uint8_t) * HIO_BITS_PER_BYTE)]; | 	hio_bch_t tmp[(HIO_SIZEOF(hio_uint8_t) * HIO_BITS_PER_BYTE)]; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user