diff --git a/hawk/lib/HawkStd.cpp b/hawk/lib/HawkStd.cpp index c47e4ca5..09a19c82 100644 --- a/hawk/lib/HawkStd.cpp +++ b/hawk/lib/HawkStd.cpp @@ -412,9 +412,9 @@ int HawkStd::setioattr ( ptr[1] = args[1].toStr(&l[1]); ptr[2] = args[2].toStr(&l[2]); - if (hawk_find_oochar(ptr[0], l[0], HAWK_T('\0')) || - hawk_find_oochar(ptr[1], l[1], HAWK_T('\0')) || - hawk_find_oochar(ptr[2], l[2], HAWK_T('\0'))) + if (hawk_find_oochar_in_oochars(ptr[0], l[0], '\0') || + hawk_find_oochar_in_oochars(ptr[1], l[1], '\0') || + hawk_find_oochar_in_oochars(ptr[2], l[2], '\0')) { return ret.setInt ((hawk_int_t)-1); } @@ -489,8 +489,8 @@ int HawkStd::getioattr ( int xx = -1; /* ionames must not contains a null character */ - if (hawk_find_oochar(ptr[0], l[0], HAWK_T('\0')) == HAWK_NULL && - hawk_find_oochar(ptr[1], l[1], HAWK_T('\0')) == HAWK_NULL) + if (hawk_find_oochar_in_oochars(ptr[0], l[0], '\0') == HAWK_NULL && + hawk_find_oochar_in_oochars(ptr[1], l[1], '\0') == HAWK_NULL) { ioattr_t* ioattr = get_ioattr(ptr[0], l[0]); if (ioattr == HAWK_NULL) ioattr = &HawkStd::default_ioattr; diff --git a/hawk/lib/hawk-utl.h b/hawk/lib/hawk-utl.h index 9201b28c..37b409f9 100644 --- a/hawk/lib/hawk-utl.h +++ b/hawk/lib/hawk-utl.h @@ -593,25 +593,25 @@ HAWK_EXPORT void hawk_fill_bchars ( hawk_oow_t len ); -HAWK_EXPORT hawk_uch_t* hawk_find_uchar ( +HAWK_EXPORT hawk_uch_t* hawk_find_uchar_in_uchars ( const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t c ); -HAWK_EXPORT hawk_bch_t* hawk_find_bchar ( +HAWK_EXPORT hawk_bch_t* hawk_find_bchar_in_bchars ( const hawk_bch_t* ptr, hawk_oow_t len, hawk_bch_t c ); -HAWK_EXPORT hawk_uch_t* hawk_rfind_uchar ( +HAWK_EXPORT hawk_uch_t* hawk_rfind_uchar_in_uchars ( const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t c ); -HAWK_EXPORT hawk_bch_t* hawk_rfind_bchar ( +HAWK_EXPORT hawk_bch_t* hawk_rfind_bchar_in_bchars ( const hawk_bch_t* ptr, hawk_oow_t len, hawk_bch_t c @@ -622,11 +622,21 @@ HAWK_EXPORT hawk_uch_t* hawk_find_uchar_in_ucstr ( hawk_uch_t c ); +HAWK_EXPORT hawk_uch_t* hawk_rfind_uchar_in_ucstr ( + const hawk_uch_t* ptr, + hawk_uch_t c +); + HAWK_EXPORT hawk_bch_t* hawk_find_bchar_in_bcstr ( const hawk_bch_t* ptr, hawk_bch_t c ); +HAWK_EXPORT hawk_bch_t* hawk_rfind_bchar_in_bcstr ( + const hawk_bch_t* ptr, + hawk_bch_t c +); + HAWK_EXPORT hawk_uch_t* hawk_find_uchars_in_uchars ( const hawk_uch_t* str, hawk_oow_t strsz, @@ -799,9 +809,10 @@ HAWK_EXPORT hawk_oow_t hawk_subst_for_bcstr_to_bcstr ( # define hawk_count_oocstr_limited hawk_count_ucstr_limited # define hawk_fill_oochars hawk_fill_uchars -# define hawk_find_oochar hawk_find_uchar -# define hawk_rfind_oochar hawk_rfind_uchar +# define hawk_find_oochar_in_oochars hawk_find_uchar_in_uchars +# define hawk_rfind_oochar_in_oochars hawk_rfind_uchar_in_uchars # define hawk_find_oochar_in_oocstr hawk_find_uchar_in_ucstr +# define hawk_rfind_oochar_in_oocstr hawk_rfind_uchar_in_ucstr # define hawk_find_oochars_in_oochars hawk_find_uchars_in_uchars # define hawk_rfind_oochars_in_oochars hawk_rfind_uchars_in_uchars @@ -841,9 +852,10 @@ HAWK_EXPORT hawk_oow_t hawk_subst_for_bcstr_to_bcstr ( # define hawk_count_oocstr_limited hawk_count_bcstr_limited # define hawk_fill_oochars hawk_fill_bchars -# define hawk_find_oochar hawk_find_bchar -# define hawk_rfind_oochar hawk_rfind_bchar +# define hawk_find_oochar_in_oochars hawk_find_bchar_in_bchars +# define hawk_rfind_oochar_in_oochars hawk_rfind_bchar_in_bchars # define hawk_find_oochar_in_oocstr hawk_find_bchar_in_bcstr +# define hawk_rfind_oochar_in_oocstr hawk_rfind_bchar_in_bcstr # define hawk_find_oochars_in_oochars hawk_find_bchars_in_bchars # define hawk_rfind_oochars_in_oochars hawk_rfind_bchars_in_bchars diff --git a/hawk/lib/mod-sys.c b/hawk/lib/mod-sys.c index 06542637..82aa9e7c 100644 --- a/hawk/lib/mod-sys.c +++ b/hawk/lib/mod-sys.c @@ -2720,7 +2720,7 @@ static int fnc_getenv (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) { hawk_bch_t* val; - if (hawk_find_bchar(var, len, '\0')) + if (hawk_find_bchar_in_bchars(var, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); hawk_rtx_freevalbcstr (rtx, a0, var); @@ -2783,8 +2783,8 @@ static int fnc_setenv (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(var, var_len, '\0') || - hawk_find_bchar(val, val_len, '\0')) + if (hawk_find_bchar_in_bchars(var, var_len, '\0') || + hawk_find_bchar_in_bchars(val, val_len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -2824,7 +2824,7 @@ static int fnc_unsetenv (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(str, len, '\0')) + if (hawk_find_bchar_in_bchars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -2967,7 +2967,7 @@ static int fnc_system (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. make system return -1 */ - if (hawk_find_oochar(str, len, '\0')) + if (hawk_find_oochar_in_oochars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3036,7 +3036,7 @@ static int fnc_chroot (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(str, len, '\0')) + if (hawk_find_bchar_in_bchars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3088,7 +3088,7 @@ static int fnc_chmod (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(str, len, '\0')) + if (hawk_find_bchar_in_bchars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3133,7 +3133,7 @@ static int fnc_mkdir (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_oochar(str, len, '\0')) + if (hawk_find_oochar_in_oochars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3157,7 +3157,7 @@ static int fnc_mkdir (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(str, len, '\0')) + if (hawk_find_bchar_in_bchars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3209,7 +3209,7 @@ static int fnc_rmdir (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_oochar(str, len, '\0')) + if (hawk_find_oochar_in_oochars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3233,7 +3233,7 @@ static int fnc_rmdir (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(str, len, '\0')) + if (hawk_find_bchar_in_bchars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3287,7 +3287,7 @@ static int fnc_unlink (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_oochar(str, len, '\0')) + if (hawk_find_oochar_in_oochars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3311,7 +3311,7 @@ static int fnc_unlink (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(str, len, '\0')) + if (hawk_find_bchar_in_bchars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3370,7 +3370,7 @@ static int fnc_symlink (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - if (hawk_find_bchar(str1, len1, '\0') || hawk_find_bchar(str2, len2, '\0')) + if (hawk_find_bchar_in_bchars(str1, len1, '\0') || hawk_find_bchar_in_bchars(str2, len2, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -3422,7 +3422,7 @@ static int fnc_stat (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - if (hawk_find_bchar(str1, len1, '\0')) + if (hawk_find_bchar_in_bchars(str1, len1, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); hawk_rtx_freevalbcstr (rtx, a0, str1); @@ -3591,7 +3591,7 @@ static int fnc_utime (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } /* the target name contains a null character. */ - if (hawk_find_bchar(str, len, '\0')) + if (hawk_find_bchar_in_bchars(str, len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; @@ -4490,12 +4490,16 @@ done: sys::openlog("remote://192.168.1.23:1234/test", sys::LOG_OPT_PID | sys::LOG_OPT_NDELAY, sys::LOG_FAC_LOCAL0); for (i = 0; i < 10; i++) sys::writelog(sys::LOG_PRI_DEBUG, "hello world " i); sys::closelog(); + +local://xxx opens the local syslog using the openlog() call in the libc library. +openlog() affects the entire process. + +to open /dev/log on the local system for the current running context, +you can specify the remote:// with /dev/log. + sys::openlog("remote:///dev/log/xxx", sys::LOG_OPT_PID | sys::LOG_OPT_NDELAY, sys::LOG_FAC_LOCAL0); */ static void open_remote_log_socket (hawk_rtx_t* rtx, mod_ctx_t* mctx) { -#if defined(_WIN32) - /* TODO: implement this */ -#else int sck, flags; int domain = hawk_skad_family(&mctx->log.skad); int type = SOCK_DGRAM; @@ -4538,8 +4542,6 @@ open_socket: done: mctx->log.sck = sck; - -#endif } static int fnc_openlog (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) @@ -4547,7 +4549,7 @@ static int fnc_openlog (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) hawk_int_t rx = ERRNUM_TO_RC(HAWK_EOTHER); hawk_int_t opt, fac; hawk_ooch_t* ident = HAWK_NULL, * actual_ident; - hawk_oow_t ident_len; + hawk_oow_t ident_len, actual_ident_len; hawk_bch_t* mbs_ident; mod_ctx_t* mctx = (mod_ctx_t*)fi->mod->ctx; hawk_skad_t skad; @@ -4564,7 +4566,7 @@ static int fnc_openlog (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) /* the target name contains a null character. * make system return -1 */ - if (hawk_find_oochar(ident, ident_len, '\0')) + if (hawk_find_oochar_in_oochars(ident, ident_len, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_T("invalid identifier of length %zu containing '\\0'"), ident_len); goto done; @@ -4580,7 +4582,8 @@ static int fnc_openlog (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) log_type = SYSLOG_REMOTE; actual_ident = ident + 9; - slash = hawk_find_oochar_in_oocstr(actual_ident, '/'); + actual_ident_len = ident_len - 9; + slash = hawk_rfind_oochar_in_oochars(actual_ident, actual_ident_len, '/'); if (!slash) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_T("invalid identifier '%js' with remote address"), ident); @@ -4733,7 +4736,7 @@ static int fnc_writelog (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) msg = hawk_rtx_getvaloocstr(rtx, hawk_rtx_getarg(rtx, 1), &msglen); if (!msg) goto fail; - if (hawk_find_oochar(msg, msglen, '\0')) + if (hawk_find_oochar_in_oochars(msg, msglen, '\0')) { rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL); goto done; diff --git a/hawk/lib/std.c b/hawk/lib/std.c index c76920fa..54c7ebd9 100644 --- a/hawk/lib/std.c +++ b/hawk/lib/std.c @@ -3072,7 +3072,7 @@ static int fnc_setioattr (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - if (hawk_find_oochar(ptr[i], len[i], HAWK_T('\0'))) + if (hawk_find_oochar_in_oochars(ptr[i], len[i], '\0')) { fret = -1; goto done; @@ -3194,7 +3194,7 @@ static int fnc_getioattr (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - if (hawk_find_oochar(ptr[i], len[i], HAWK_T('\0'))) goto done; + if (hawk_find_oochar_in_oochars(ptr[i], len[i], '\0')) goto done; } ioattr = get_ioattr(&rxtn->cmgrtab, ptr[0], len[0]); diff --git a/hawk/lib/tre-match-pa.c b/hawk/lib/tre-match-pa.c index 1c3a3d54..5304d8a2 100644 --- a/hawk/lib/tre-match-pa.c +++ b/hawk/lib/tre-match-pa.c @@ -213,7 +213,7 @@ tre_tnfa_run_parallel(hawk_gem_t* gem, const tre_tnfa_t *tnfa, const void *strin int first = tnfa->first_char; if (len >= 0) - str_byte = hawk_find_bchar(orig_str, (size_t)len, first); + str_byte = hawk_find_bchar_in_bchars(orig_str, (size_t)len, first); else str_byte = hawk_find_bchar_in_bcstr(orig_str, first); if (str_byte == NULL) diff --git a/hawk/lib/utl-str.c b/hawk/lib/utl-str.c index 550fb9e0..4b38375a 100644 --- a/hawk/lib/utl-str.c +++ b/hawk/lib/utl-str.c @@ -508,7 +508,7 @@ void hawk_fill_bchars (hawk_bch_t* dst, hawk_bch_t ch, hawk_oow_t len) /* ------------------------------------------------------------------------ */ -hawk_uch_t* hawk_find_uchar (const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t c) +hawk_uch_t* hawk_find_uchar_in_uchars (const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t c) { const hawk_uch_t* end; @@ -522,7 +522,7 @@ hawk_uch_t* hawk_find_uchar (const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t c return HAWK_NULL; } -hawk_bch_t* hawk_find_bchar (const hawk_bch_t* ptr, hawk_oow_t len, hawk_bch_t c) +hawk_bch_t* hawk_find_bchar_in_bchars (const hawk_bch_t* ptr, hawk_oow_t len, hawk_bch_t c) { const hawk_bch_t* end; @@ -536,7 +536,7 @@ hawk_bch_t* hawk_find_bchar (const hawk_bch_t* ptr, hawk_oow_t len, hawk_bch_t c return HAWK_NULL; } -hawk_uch_t* hawk_rfind_uchar (const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t c) +hawk_uch_t* hawk_rfind_uchar_in_uchars (const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t c) { const hawk_uch_t* cur; @@ -550,7 +550,7 @@ hawk_uch_t* hawk_rfind_uchar (const hawk_uch_t* ptr, hawk_oow_t len, hawk_uch_t return HAWK_NULL; } -hawk_bch_t* hawk_rfind_bchar (const hawk_bch_t* ptr, hawk_oow_t len, hawk_bch_t c) +hawk_bch_t* hawk_rfind_bchar_in_bchars (const hawk_bch_t* ptr, hawk_oow_t len, hawk_bch_t c) { const hawk_bch_t* cur; @@ -575,6 +575,11 @@ hawk_uch_t* hawk_find_uchar_in_ucstr (const hawk_uch_t* ptr, hawk_uch_t c) return HAWK_NULL; } +hawk_uch_t* hawk_rfind_uchar_in_ucstr (const hawk_uch_t* ptr, hawk_uch_t c) +{ + return hawk_rfind_uchar_in_uchars(ptr, hawk_count_ucstr(ptr), c); +} + hawk_bch_t* hawk_find_bchar_in_bcstr (const hawk_bch_t* ptr, hawk_bch_t c) { while (*ptr != '\0') @@ -585,6 +590,12 @@ hawk_bch_t* hawk_find_bchar_in_bcstr (const hawk_bch_t* ptr, hawk_bch_t c) return HAWK_NULL; } + +hawk_bch_t* hawk_rfind_bchar_in_bcstr (const hawk_bch_t* ptr, hawk_bch_t c) +{ + return hawk_rfind_bchar_in_bchars(ptr, hawk_count_bcstr(ptr), c); +} + /* ------------------------------------------------------------------------ */ hawk_uch_t* hawk_find_uchars_in_uchars (const hawk_uch_t* str, hawk_oow_t strsz, const hawk_uch_t* sub, hawk_oow_t subsz, int ignorecase)