%% options copyright owner = Dirk Krause copyright year = 2015-xxxx license = bsd %% header /** @file Simple conversion from char to dkChar. CRT on Windows: Not used. */ #ifndef DK4CONF_H_INCLUDED #include "dk4conf.h" #endif #ifndef DK4TYPES_H_INCLUDED #include "dk4types.h" #endif #ifndef DK4ERROR_H_INCLUDED #include "dk4error.h" #endif #ifdef __cplusplus extern "C" { #endif /** Recode string from ASCII (0x00 to 0x7F) to dkChar. Use this function only for real ASCII source strings with characters in range 0x00 to 0x7F (i.e. to convert numbers, dates, or english text). @param dstb Destination buffer. @param szdstb Size of destination buffer (number of dkChar). @param src Source string to convert. @param erp Error report, may be NULL. @return 1 on success, 0 on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if dstb or src is NULL or szdstb is 0, - DK4_E_BUFFER_TOO_SMALL
if the dstb buffer is too small. */ int dk4recode_char_to_dk( dkChar *dstb, size_t szdstb, const char *src, dk4_er_t *erp ); #ifdef __cplusplus } #endif %% module #include "dk4rec22.h" #ifndef DK4STR8_H_INCLUDED #include "dk4str8.h" #endif $!trace-include int dk4recode_char_to_dk( dkChar *dstb, size_t szdstb, const char *src, dk4_er_t *erp ) { int back = 0; if ((NULL != dstb) && (NULL != src) && (0 < szdstb)) { if (dk4str8_len(src) < szdstb) { while ('\0' != *src) { *(dstb++) = (dkChar)((unsigned char)(*(src++))); } *dstb = dkT('\0'); back = 1; } else { dk4error_set_simple_error_code(erp, DK4_E_BUFFER_TOO_SMALL); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; }