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:
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
124
qse/lib/si/log.c
124
qse/lib/si/log.c
@ -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;
|
||||
|
Reference in New Issue
Block a user