renamed qse_basenameasmbs() back to qse_mbsbasename()

renamed qse_basenameaswcs back to qse_wcsbasename()
added qse_get_log_priority_by_wcsname()
added qse_get_log_priority_by_mbsname()
added qse_get_log_facility_by_wcsname()
added qse_get_log_facility_by_mbsname()
added qse_wcsmbscmp(), qse_mbswcscmp()
added qse_wcsxmbscmp(), qse_mbsxwcscmp()
This commit is contained in:
2019-09-10 08:53:59 +00:00
parent f89efc150a
commit df8cff2451
15 changed files with 246 additions and 67 deletions

View File

@ -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;

View File

@ -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);
}

View File

@ -43,12 +43,12 @@
#if defined(QSE_HTTPD_DEBUG)
# include <qse/si/sio.h>
# include <qse/cmn/path.h>
# 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)

View File

@ -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;

View File

@ -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

View File

@ -27,6 +27,7 @@
#include <qse/si/log.h>
#include <qse/cmn/str.h>
#include <qse/cmn/time.h>
#include <qse/cmn/mbwc.h>
#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;