diff --git a/qse/cmd/awk/awk.c b/qse/cmd/awk/awk.c index e8024400..f5d1e999 100644 --- a/qse/cmd/awk/awk.c +++ b/qse/cmd/awk/awk.c @@ -1126,11 +1126,11 @@ static void open_mpi (mpi_t* mpi, int argc, qse_achar_t* argv[]) #if defined(USE_LTDL) #if defined(QSE_ACHAR_IS_MCHAR) - if (qse_mbscmp (qse_basenameasmbs(argv[0]), QSE_MT("qseawkmp")) != 0 && - qse_mbscmp (qse_basenameasmbs(argv[0]), QSE_MT("qseawkmpi")) != 0) return; + if (qse_mbscmp(qse_mbsbasename(argv[0]), QSE_MT("qseawkmp")) != 0 && + qse_mbscmp(qse_mbsbasename(argv[0]), QSE_MT("qseawkmpi")) != 0) return; #else - if (qse_wcscmp (qse_basenameaswcs(argv[0]), QSE_WT("qseawkmp")) != 0 && - qse_wcscmp (qse_basenameaswcs(argv[0]), QSE_WT("qseawkmpi")) != 0) return; + if (qse_wcscmp(qse_wcsbasename(argv[0]), QSE_WT("qseawkmp")) != 0 && + qse_wcscmp(qse_wcsbasename(argv[0]), QSE_WT("qseawkmpi")) != 0) return; #endif if (lt_dlinit () != 0) return; diff --git a/qse/cmd/http/httpd.c b/qse/cmd/http/httpd.c index 64d05793..76bc6c4c 100644 --- a/qse/cmd/http/httpd.c +++ b/qse/cmd/http/httpd.c @@ -879,7 +879,7 @@ found: if (apath) { const qse_mchar_t* base; - base = qse_basenameasmbs (apath); + base = qse_mbsbasename (apath); for (i = 0; i < QSE_COUNTOF(loccfg->auth_rule); i++) { @@ -977,7 +977,7 @@ found: #endif if (!qinfo->xpath_nx) { - xpath_base = qse_basenameasmbs (qinfo->xpath); + xpath_base = qse_mbsbasename (qinfo->xpath); for (i = 0; i < QSE_COUNTOF(loccfg->cgi); i++) { struct cgi_t* cgi; @@ -1004,7 +1004,7 @@ found: qse_size_t i; const qse_mchar_t* xpath_base; - xpath_base = qse_basenameasmbs (qinfo->xpath); + xpath_base = qse_mbsbasename (qinfo->xpath); *(const qse_mchar_t**)result = QSE_NULL; for (i = 0; i < QSE_COUNTOF(loccfg->mime); i++) @@ -1043,7 +1043,7 @@ found: id = (code == QSE_HTTPD_SERVERSTD_DIRACC)? 0: 1; - xpath_base = qse_basenameasmbs (qinfo->xpath); + xpath_base = qse_mbsbasename (qinfo->xpath); *(int*)result = 200; for (i = 0; i < QSE_COUNTOF(loccfg->access[id]); i++) diff --git a/qse/configure b/qse/configure index 11afb28d..55e03fc7 100755 --- a/qse/configure +++ b/qse/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for qse 0.8.3. +# Generated by GNU Autoconf 2.69 for qse 0.8.4. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='qse' PACKAGE_TARNAME='qse' -PACKAGE_VERSION='0.8.3' -PACKAGE_STRING='qse 0.8.3' +PACKAGE_VERSION='0.8.4' +PACKAGE_STRING='qse 0.8.4' PACKAGE_BUGREPORT='Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)' PACKAGE_URL='http://code.miflux.com/@qse' @@ -1414,7 +1414,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures qse 0.8.3 to adapt to many kinds of systems. +\`configure' configures qse 0.8.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1484,7 +1484,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of qse 0.8.3:";; + short | recursive ) echo "Configuration of qse 0.8.4:";; esac cat <<\_ACEOF @@ -1629,7 +1629,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -qse configure 0.8.3 +qse configure 0.8.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2413,7 +2413,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by qse $as_me 0.8.3, which was +It was created by qse $as_me 0.8.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3288,7 +3288,7 @@ fi # Define the identity of the package. PACKAGE='qse' - VERSION='0.8.3' + VERSION='0.8.4' cat >>confdefs.h <<_ACEOF @@ -24311,7 +24311,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by qse $as_me 0.8.3, which was +This file was extended by qse $as_me 0.8.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24378,7 +24378,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -qse config.status 0.8.3 +qse config.status 0.8.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/qse/configure.ac b/qse/configure.ac index ec93cf62..f00cf5b4 100644 --- a/qse/configure.ac +++ b/qse/configure.ac @@ -4,7 +4,7 @@ dnl Make sure you change the version information dnl in include/qse/conf_*.h whenever you change the version dnl here. Those files don't depend on autoconf, thus requiring dnl manual change. -AC_INIT([qse],[0.8.3],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[http://code.miflux.com/@qse]) +AC_INIT([qse],[0.8.4],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[http://code.miflux.com/@qse]) AC_CONFIG_HEADER([include/qse/config.h]) AC_CONFIG_AUX_DIR([ac]) diff --git a/qse/include/qse/cmn/path.h b/qse/include/qse/cmn/path.h index a97fc3f2..33fbd8b0 100644 --- a/qse/include/qse/cmn/path.h +++ b/qse/include/qse/cmn/path.h @@ -129,10 +129,10 @@ QSE_EXPORT int qse_ismbsdrivecurpath ( ); /** - * The qse_basenameasmbs() function returns the pointer to the file name + * The qse_mbsbasename() function returns the pointer to the file name * segment in a multibyte path name. */ -QSE_EXPORT const qse_mchar_t* qse_basenameasmbs ( +QSE_EXPORT const qse_mchar_t* qse_mbsbasename ( const qse_mchar_t* path ); @@ -237,10 +237,10 @@ QSE_EXPORT int qse_iswcsdrivecurpath ( ); /** - * The qse_basenameaswcs() function returns the pointer to the file name + * The qse_wcsbasename() function returns the pointer to the file name * segment in a wide-character path name. */ -QSE_EXPORT const qse_wchar_t* qse_basenameaswcs ( +QSE_EXPORT const qse_wchar_t* qse_wcsbasename ( const qse_wchar_t* path ); @@ -313,7 +313,7 @@ QSE_EXPORT qse_wchar_t* qse_mergewcspathdup ( # define qse_isdrivepath(p) qse_ismbsdrivepath(p) # define qse_isdriveabspath(p) qse_ismbsdriveabspath(p) # define qse_isdrivecurpath(p) qse_ismbsdrivecurpath(p) -# define qse_basename(path) qse_basenameasmbs(path) +# define qse_basename(path) qse_mbsbasename(path) # define qse_pathcore(p) qse_mbspathcore(p) # define qse_canonpath(p,c,f) qse_canonmbspath(p,c,f) # define qse_mergepathdup(d,f,m) qse_mergembspathdup(d,f,m) @@ -323,7 +323,7 @@ QSE_EXPORT qse_wchar_t* qse_mergewcspathdup ( # define qse_isdrivepath(p) qse_iswcsdrivepath(p) # define qse_isdriveabspath(p) qse_iswcsdriveabspath(p) # define qse_isdrivecurpath(p) qse_iswcsdrivecurpath(p) -# define qse_basename(path) qse_basenameaswcs(path) +# define qse_basename(path) qse_wcsbasename(path) # define qse_pathcore(p) qse_wcspathcore(p) # define qse_canonpath(p,c,f) qse_canonwcspath(p,c,f) # define qse_mergepathdup(d,f,m) qse_mergewcspathdup(d,f,m) diff --git a/qse/include/qse/cmn/str.h b/qse/include/qse/cmn/str.h index cef51ff6..2298274c 100644 --- a/qse/include/qse/cmn/str.h +++ b/qse/include/qse/cmn/str.h @@ -1418,6 +1418,31 @@ QSE_EXPORT int qse_wcszcasecmp ( # define qse_strzcasecmp qse_wcszcasecmp #endif +/** + * The wcsmbscmp() function compares a wide-character string + * wit a byte string without considering charcter encoding. + * It compares each wide-character in s1 with each byte in s2. + */ +QSE_EXPORT int qse_wcsmbscmp ( + const qse_wchar_t* s1, + const qse_mchar_t* s2 +); + +#define qse_mbswcscmp(s1, s2) (-qse_wcsmbscmp(s2, s1)) + +QSE_EXPORT int qse_wcsxmbscmp ( + const qse_wchar_t* s1, + qse_size_t ln, + const qse_mchar_t* s2 +); + +QSE_EXPORT int qse_mbsxwcscmp ( + const qse_mchar_t* s1, + qse_size_t ln, + const qse_wchar_t* s2 +); + + QSE_EXPORT qse_mchar_t* qse_mbsdup ( const qse_mchar_t* str, qse_mmgr_t* mmgr diff --git a/qse/include/qse/si/log.h b/qse/include/qse/si/log.h index 2f7134f3..b6aac2b9 100644 --- a/qse/include/qse/si/log.h +++ b/qse/include/qse/si/log.h @@ -290,11 +290,22 @@ static QSE_INLINE void* qse_log_getxtn (qse_log_t* log) { return QSE_XTN(log); } #define qse_log_getxtn(log) (QSE_XTN(log)) #endif -QSE_EXPORT void qse_log_setident ( - qse_log_t* log, - const qse_char_t* ident +QSE_EXPORT void qse_log_setidentwithmbs ( + qse_log_t* log, + const qse_mchar_t* ident ); +QSE_EXPORT void qse_log_setidentwithwcs ( + qse_log_t* log, + const qse_wchar_t* ident +); + +#if defined(QSE_CHAR_IS_MCHAR) +# define qse_log_setident qse_log_setidentwithmbs +#else +# define qse_log_setident qse_log_setidentwithwcs +#endif + /** * \return 0 on success, -1 on failure */ @@ -385,16 +396,34 @@ QSE_EXPORT qse_size_t qse_make_log_priority_name ( * \return an integer bitwised-ORed of priority bits if \a name is valid. * 0 if \a name is invalid or empty. */ -QSE_EXPORT int qse_get_log_priority_by_name ( - const qse_char_t* name, - const qse_char_t* delim +QSE_EXPORT int qse_get_log_priority_by_mbsname ( + const qse_mchar_t* name, + const qse_mchar_t* delim ); -QSE_EXPORT int qse_get_log_facility_by_name ( - const qse_char_t* name, +QSE_EXPORT int qse_get_log_priority_by_wcsname ( + const qse_wchar_t* name, + const qse_wchar_t* delim +); + +QSE_EXPORT int qse_get_log_facility_by_mbsname ( + const qse_mchar_t* name, qse_log_facility_t* fcode ); +QSE_EXPORT int qse_get_log_facility_by_wcsname ( + const qse_wchar_t* name, + qse_log_facility_t* fcode +); + +#if defined(QSE_CHAR_IS_MCHAR) +# define qse_get_log_priority_by_name qse_get_log_priority_by_mbsname +# define qse_get_log_facility_by_name qse_get_log_facility_by_mbsname +#else +# define qse_get_log_priority_by_name qse_get_log_priority_by_wcsname +# define qse_get_log_facility_by_name qse_get_log_facility_by_wcsname +#endif + #ifdef __cplusplus } #endif diff --git a/qse/lib/cmn/path-base.c b/qse/lib/cmn/path-base.c index b4153f06..5bae51d1 100644 --- a/qse/lib/cmn/path-base.c +++ b/qse/lib/cmn/path-base.c @@ -30,7 +30,7 @@ #define IS_MSEP(c) QSE_ISPATHMBSEP(c) #define IS_WSEP(c) QSE_ISPATHWCSEP(c) -const qse_mchar_t* qse_basenameasmbs (const qse_mchar_t* path) +const qse_mchar_t* qse_mbsbasename (const qse_mchar_t* path) { const qse_mchar_t* p, * last = QSE_NULL; @@ -42,7 +42,7 @@ const qse_mchar_t* qse_basenameasmbs (const qse_mchar_t* path) return (last == QSE_NULL)? path: (last + 1); } -const qse_wchar_t* qse_basenameaswcs (const qse_wchar_t* path) +const qse_wchar_t* qse_wcsbasename (const qse_wchar_t* path) { const qse_wchar_t* p, * last = QSE_NULL; @@ -61,7 +61,7 @@ qse_mchar_t* qse_substmbsbasenamedup (const qse_mchar_t* path, const qse_mchar_t qse_mcstr_t seg[3]; qse_size_t idx = 0; - b = qse_basenameasmbs(path); + b = qse_mbsbasename(path); if (b) { seg[idx].ptr = (qse_mchar_t*)path; @@ -85,7 +85,7 @@ qse_wchar_t* qse_substwcsbasenamedup (const qse_wchar_t* path, const qse_wchar_t qse_wcstr_t seg[3]; qse_size_t idx = 0; - b = qse_basenameaswcs(path); + b = qse_wcsbasename(path); if (b) { seg[idx].ptr = (qse_wchar_t*)path; diff --git a/qse/lib/cmn/str-cmp.c b/qse/lib/cmn/str-cmp.c index e7f4741a..36c2fff5 100644 --- a/qse/lib/cmn/str-cmp.c +++ b/qse/lib/cmn/str-cmp.c @@ -275,3 +275,42 @@ int qse_wcszcasecmp (const qse_wchar_t* s1, const qse_wchar_t* s2, qse_size_t n) return (QSE_TOWUPPER((qse_wchau_t)*s1) > QSE_TOWUPPER((qse_wchau_t)*s2))? 1: -1; } + +/* ------------------------------------------------------------- */ + +int qse_wcsmbscmp (const qse_wchar_t* s1, const qse_mchar_t* s2) +{ + while (*s1 == *s2) + { + if (*s1 == QSE_WT('\0')) return 0; + s1++; s2++; + } + + return (*s1 > *s2)? 1: -1; +} + +int qse_wcsxmbscmp (const qse_wchar_t* s1, qse_size_t ln, const qse_mchar_t* s2) +{ + const qse_wchar_t* end = s1 + ln; + + while (s1 < end && *s2 != QSE_MT('\0')) + { + if (*s1 != *s2) return ((qse_wchau_t)*s1 > (qse_wchau_t)(qse_mchau_t)*s2)? 1: -1; + s1++; s2++; + } + + return (s1 < end)? 1: ((*s2 == QSE_MT('\0'))? 0: -1); +} + +int qse_mbsxwcscmp (const qse_mchar_t* s1, qse_size_t ln, const qse_wchar_t* s2) +{ + const qse_mchar_t* end = s1 + ln; + + while (s1 < end && *s2 != QSE_WT('\0')) + { + if (*s1 != *s2) return ((qse_wchau_t)(qse_mchau_t)*s1 > (qse_wchau_t)*s2)? 1: -1; + s1++; s2++; + } + + return (s1 < end)? 1: ((*s2 == QSE_WT('\0'))? 0: -1); +} diff --git a/qse/lib/http/httpd.h b/qse/lib/http/httpd.h index 1ace9831..e9499464 100644 --- a/qse/lib/http/httpd.h +++ b/qse/lib/http/httpd.h @@ -43,12 +43,12 @@ #if defined(QSE_HTTPD_DEBUG) # include # include -# define HTTPD_DBGOUT0(fmt) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__)) -# define HTTPD_DBGOUT1(fmt,a1) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1)) -# define HTTPD_DBGOUT2(fmt,a1,a2) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2)) -# define HTTPD_DBGOUT3(fmt,a1,a2,a3) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2), (a3)) -# define HTTPD_DBGOUT4(fmt,a1,a2,a3,a4) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2), (a3), (a4)) -# define HTTPD_DBGOUT5(fmt,a1,a2,a3,a4,a5) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2), (a3), (a4), (a5)) +# define HTTPD_DBGOUT0(fmt) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__)) +# define HTTPD_DBGOUT1(fmt,a1) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1)) +# define HTTPD_DBGOUT2(fmt,a1,a2) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2)) +# define HTTPD_DBGOUT3(fmt,a1,a2,a3) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2), (a3)) +# define HTTPD_DBGOUT4(fmt,a1,a2,a3,a4) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2), (a3), (a4)) +# define HTTPD_DBGOUT5(fmt,a1,a2,a3,a4,a5) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2), (a3), (a4), (a5)) #else # define HTTPD_DBGOUT0(fmt) # define HTTPD_DBGOUT1(fmt,a1) diff --git a/qse/lib/si/App.cpp b/qse/lib/si/App.cpp index dbd0306d..c1754dd0 100644 --- a/qse/lib/si/App.cpp +++ b/qse/lib/si/App.cpp @@ -321,7 +321,7 @@ int App::unset_signal_handler_no_mutex(int sig, int ignore) sa.sa_handler = (SignalHandler)App::_sighrs[1][sig]; } - if (::sigaction (sig, &sa, QSE_NULL) <= -1) return -1; + if (::sigaction(sig, &sa, QSE_NULL) <= -1) return -1; App::_sighrs[0][sig] = 0; App::_sighrs[1][sig] = 0; diff --git a/qse/lib/si/fs-prv.h b/qse/lib/si/fs-prv.h index ff782f5d..bdbdca2e 100644 --- a/qse/lib/si/fs-prv.h +++ b/qse/lib/si/fs-prv.h @@ -94,14 +94,14 @@ # define canon_fspath(path,canon,flags) qse_canonmbspath(path,canon,flags) # define merge_fspath_dup(dir,file,mmgr) qse_mergembspathdup(dir,file,mmgr) # define get_fspath_core(fspath) qse_mbspathcore(fspath) -# define get_fspath_base(fspath) qse_basenameasmbs(fspath) +# define get_fspath_base(fspath) qse_mbsbasename(fspath) # define IS_FSPATHSEP(x) QSE_ISPATHMBSEP(x) # define QSE_FS_T(x) QSE_MT(x) #else # define canon_fspath(fspath,canon,flags) qse_canonwcspath(fspath,canon,flags) # define merge_fspath_dup(dir,file,mmgr) qse_mergewcspathdup(dir,file,mmgr) # define get_fspath_core(fspath) qse_wcspathcore(fspath) -# define get_fspath_base(fspath) qse_basenameaswcs(fspath) +# define get_fspath_base(fspath) qse_wcsbasename(fspath) # define IS_FSPATHSEP(x) QSE_ISPATHWCSEP(x) # define QSE_FS_T(x) QSE_WT(x) #endif diff --git a/qse/lib/si/log.c b/qse/lib/si/log.c index 68b2b71e..71a985cb 100644 --- a/qse/lib/si/log.c +++ b/qse/lib/si/log.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "../cmn/mem-prv.h" #include "../cmn/va_copy.h" @@ -204,7 +205,7 @@ qse_log_t* qse_log_open (qse_mmgr_t* mmgr, qse_size_t xtnsize, const qse_char_t* log = (qse_log_t*) QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_log_t) + xtnsize); if (log) { - if (qse_log_init (log, mmgr, ident, potflags, target) <= -1) + if (qse_log_init(log, mmgr, ident, potflags, target) <= -1) { QSE_MMGR_FREE (mmgr, log); return QSE_NULL; @@ -234,7 +235,7 @@ int qse_log_init (qse_log_t* log, qse_mmgr_t* mmgr, const qse_char_t* ident, int { if (qse_strlen(target->file) >= QSE_COUNTOF(log->t.file.pathbuf)) { - log->t.file.path = qse_strdup (target->file, log->mmgr); + log->t.file.path = qse_strdup(target->file, log->mmgr); if (!log->t.file.path) return -1; } else @@ -321,7 +322,7 @@ void qse_log_fini (qse_log_t* log) } -void qse_log_setident (qse_log_t* log, const qse_char_t* ident) +static QSE_INLINE void set_ident (qse_log_t* log, const qse_char_t* ident) { /* set the base identifer to use */ if (ident) @@ -339,10 +340,36 @@ void qse_log_setident (qse_log_t* log, const qse_char_t* ident) closelog (); log->t.syslog.opened = 0; /* it will be opened again with the new identifier in the - * output function if necessary. */ + * output function if necessary. */ } } + +void qse_log_setidentwithmbs (qse_log_t* log, const qse_mchar_t* ident) +{ +#if defined(QSE_CHAR_IS_MCHAR) + set_ident(log, ident); +#else + qse_wchar_t* id; + id = qse_mbstowcsdup(ident, QSE_NULL, log->mmgr); + if (id) set_ident(log, id); /* don't care about failure */ + QSE_MMGR_FREE (log->mmgr, id); +#endif +} + +void qse_log_setidentwithwcs (qse_log_t* log, const qse_wchar_t* ident) +{ +#if defined(QSE_CHAR_IS_MCHAR) + qse_mchar_t* id; + id = qse_wcstombsdup(ident, QSE_NULL, log->mmgr); + if (id) set_ident(log, id); /* don't care about failure */ + QSE_MMGR_FREE (log->mmgr, id); +#else + set_ident(log, ident); +#endif +} + + int qse_log_settarget (qse_log_t* log, int flags, const qse_log_target_t* target) { qse_char_t* target_file = QSE_NULL; @@ -566,7 +593,7 @@ void qse_log_reportv (qse_log_t* log, const qse_char_t* ident, int pri, const qs if (!log->dmsgbuf) goto done; #if defined(QSE_CHAR_IS_WCHAR) - if (!log->wmsgbuf) log->wmsgbuf = qse_wcs_open (log->mmgr, 0, 0); + if (!log->wmsgbuf) log->wmsgbuf = qse_wcs_open(log->mmgr, 0, 0); if (!log->wmsgbuf) goto done; #endif @@ -602,30 +629,30 @@ void qse_log_reportv (qse_log_t* log, const qse_char_t* ident, int pri, const qs if (log->ident[0]) { - if (qse_mbs_fcat (log->dmsgbuf, identfmt, log->ident) == (qse_size_t)-1) goto done; + if (qse_mbs_fcat(log->dmsgbuf, identfmt, log->ident) == (qse_size_t)-1) goto done; if (ident && ident[0] && - qse_mbs_fcat (log->dmsgbuf, identparenfmt, ident) == (qse_size_t)-1) goto done; + qse_mbs_fcat(log->dmsgbuf, identparenfmt, ident) == (qse_size_t)-1) goto done; id_out = 1; } else { if (ident && ident[0]) { - if (qse_mbs_fcat (log->dmsgbuf, identfmt, ident) == (qse_size_t)-1) goto done; + if (qse_mbs_fcat(log->dmsgbuf, identfmt, ident) == (qse_size_t)-1) goto done; id_out = 1; } } if (log->flags & QSE_LOG_INCLUDE_PID) { - fpdilen = qse_mbs_fcat (log->dmsgbuf, QSE_MT("[%d]"), (int)QSE_GETPID()); + fpdilen = qse_mbs_fcat(log->dmsgbuf, QSE_MT("[%d]"), (int)QSE_GETPID()); if (fpdilen == (qse_size_t)-1) goto done; id_out = 1; } if (id_out) { - fpdilen = qse_mbs_fcat (log->dmsgbuf, QSE_MT(": ")); + fpdilen = qse_mbs_fcat(log->dmsgbuf, QSE_MT(": ")); if (fpdilen == (qse_size_t)-1) goto done; } else @@ -635,10 +662,10 @@ void qse_log_reportv (qse_log_t* log, const qse_char_t* ident, int pri, const qs va_copy (xap, ap); #if defined(QSE_CHAR_IS_MCHAR) - if (qse_mbs_vfcat (log->dmsgbuf, fmt, xap) == (qse_size_t)-1) goto done; + if (qse_mbs_vfcat(log->dmsgbuf, fmt, xap) == (qse_size_t)-1) goto done; #else - if (qse_wcs_vfmt (log->wmsgbuf, fmt, xap) == (qse_size_t)-1 || - qse_mbs_fcat (log->dmsgbuf, QSE_MT("%.*ls"), QSE_WCS_LEN(log->wmsgbuf), QSE_WCS_PTR(log->wmsgbuf)) == (qse_size_t)-1) goto done; + if (qse_wcs_vfmt(log->wmsgbuf, fmt, xap) == (qse_size_t)-1 || + qse_mbs_fcat(log->dmsgbuf, QSE_MT("%.*ls"), QSE_WCS_LEN(log->wmsgbuf), QSE_WCS_PTR(log->wmsgbuf)) == (qse_size_t)-1) goto done; #endif if (log->flags & QSE_LOG_SYSLOG) @@ -762,22 +789,26 @@ qse_size_t qse_make_log_priority_name (int pri, const qse_char_t* delim, qse_cha return tlen; } -int qse_get_log_priority_by_name (const qse_char_t* name, const qse_char_t* delim) +int qse_get_log_priority_by_wcsname (const qse_wchar_t* name, const qse_wchar_t* delim) { qse_size_t i; - qse_cstr_t tok; - const qse_char_t* ptr; + qse_wcstr_t tok; + const qse_wchar_t* ptr; int pri = 0; ptr = name; while (ptr) { - ptr = qse_strtok (ptr, delim, &tok); + ptr = qse_wcstok(ptr, delim, &tok); if (tok.ptr) { for (i = 0; i < QSE_COUNTOF(__priority_names); i++) { + #if defined(QSE_CHAR_IS_MCHAR) + if (qse_wcsxmbscmp(tok.ptr, tok.len, __priority_names[i]) == 0) + #else if (qse_strxcmp(tok.ptr, tok.len, __priority_names[i]) == 0) + #endif { pri |= (1UL << i); break; @@ -790,14 +821,69 @@ int qse_get_log_priority_by_name (const qse_char_t* name, const qse_char_t* deli return pri; } +int qse_get_log_priority_by_mbsname (const qse_mchar_t* name, const qse_mchar_t* delim) +{ + qse_size_t i; + qse_mcstr_t tok; + const qse_mchar_t* ptr; + int pri = 0; -int qse_get_log_facility_by_name (const qse_char_t* name, qse_log_facility_t* fcode) + ptr = name; + while (ptr) + { + ptr = qse_mbstok(ptr, delim, &tok); + if (tok.ptr) + { + for (i = 0; i < QSE_COUNTOF(__priority_names); i++) + { + #if defined(QSE_CHAR_IS_MCHAR) + if (qse_strxcmp(tok.ptr, tok.len, __priority_names[i]) == 0) + #else + if (qse_mbsxwcscmp(tok.ptr, tok.len, __priority_names[i]) == 0) + #endif + { + pri |= (1UL << i); + break; + } + } + if (i >= QSE_COUNTOF(__priority_names)) return 0; /* unknown name included */ + } + } + + return pri; +} + +int qse_get_log_facility_by_wcsname (const qse_wchar_t* name, qse_log_facility_t* fcode) { qse_size_t i; for (i = 0; i < QSE_COUNTOF(__syslog_fac_info); i++) { - if (qse_strcmp (__syslog_fac_info[i].name, name) == 0) + #if defined(QSE_CHAR_IS_MCHAR) + if (qse_mbswcscmp(__syslog_fac_info[i].name, name) == 0) + #else + if (qse_wcscmp(__syslog_fac_info[i].name, name) == 0) + #endif + { + *fcode = __syslog_fac_info[i].code; + return 0; + } + } + + return -1; +} + +int qse_get_log_facility_by_mbsname (const qse_mchar_t* name, qse_log_facility_t* fcode) +{ + qse_size_t i; + + for (i = 0; i < QSE_COUNTOF(__syslog_fac_info); i++) + { + #if defined(QSE_CHAR_IS_MCHAR) + if (qse_mbscmp(__syslog_fac_info[i].name, name) == 0) + #else + if (qse_wcsmbscmp(__syslog_fac_info[i].name, name) == 0) + #endif { *fcode = __syslog_fac_info[i].code; return 0; diff --git a/qse/samples/awk/awk15.c b/qse/samples/awk/awk15.c index 0e7f425f..ea81aa01 100644 --- a/qse/samples/awk/awk15.c +++ b/qse/samples/awk/awk15.c @@ -61,7 +61,7 @@ int main (int argc, char* argv[]) else if (argc == 2 && qse_mbscmp(argv[1], "-w") == 0) omode = 2; else { - qse_fprintf (QSE_STDERR, QSE_T("USAGE: %hs [-m | -w]\n"), qse_basenameasmbs(argv[0])); + qse_fprintf (QSE_STDERR, QSE_T("USAGE: %hs [-m | -w]\n"), qse_mbsbasename(argv[0])); ret = -1; goto oops; } } diff --git a/qse/samples/cry/sha01.c b/qse/samples/cry/sha01.c index d822b3fb..9bdb8553 100644 --- a/qse/samples/cry/sha01.c +++ b/qse/samples/cry/sha01.c @@ -166,7 +166,7 @@ int main (int argc, char* argv[]) switch (c) { case 'h': - print_usage (qse_basenameasmbs(argv[0])); + print_usage (qse_mbsbasename(argv[0])); return 0; case 'k':