diff --git a/bin/cut.c b/bin/cut.c index 57c0d666..5fd2b8f8 100644 --- a/bin/cut.c +++ b/bin/cut.c @@ -325,40 +325,35 @@ static void stop_run (int signo) #endif } -static void do_nothing (int unused) -{ - /* do nothing */ -} - static void set_intr_run (void) { #if defined(SIGTERM) - hawk_main_set_signal_handler (SIGTERM, stop_run, 0); + hawk_main_set_signal_handler(SIGTERM, stop_run, 0); #endif #if defined(SIGHUP) - hawk_main_set_signal_handler (SIGHUP, stop_run, 0); + hawk_main_set_signal_handler(SIGHUP, stop_run, 0); #endif #if defined(SIGINT) - hawk_main_set_signal_handler (SIGINT, stop_run, 0); + hawk_main_set_signal_handler(SIGINT, stop_run, 0); #endif #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) - hawk_main_set_signal_handler (SIGPIPE, do_nothing, 0); + hawk_main_set_signal_handler(SIGPIPE, hawk_main_do_nothing_on_signal, 0); #endif } static void unset_intr_run (void) { #if defined(SIGTERM) - hawk_main_unset_signal_handler (SIGTERM); + hawk_main_unset_signal_handler(SIGTERM); #endif #if defined(SIGHUP) - hawk_main_unset_signal_handler (SIGHUP); + hawk_main_unset_signal_handler(SIGHUP); #endif #if defined(SIGINT) - hawk_main_unset_signal_handler (SIGINT); + hawk_main_unset_signal_handler(SIGINT); #endif #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) - hawk_main_unset_signal_handler (SIGPIPE); + hawk_main_unset_signal_handler(SIGPIPE); #endif } diff --git a/bin/hawk.c b/bin/hawk.c index 8c8f6862..aba626e8 100644 --- a/bin/hawk.c +++ b/bin/hawk.c @@ -125,56 +125,50 @@ static void stop_run (int signo) #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) int e = errno; #endif - /*hawk_haltall(hawk_rtx_gethawk(app_rtx));*/ - hawk_rtx_halt (app_rtx); - + hawk_rtx_halt(app_rtx); #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) errno = e; #endif } -static void do_nothing (int unused) -{ -} - static void set_intr_pipe (void) { #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) - hawk_main_set_signal_handler (SIGPIPE, do_nothing, 0); + hawk_main_set_signal_handler(SIGPIPE, hawk_main_do_nothing_on_signal, 0); #endif } static void unset_intr_pipe (void) { #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) - hawk_main_unset_signal_handler (SIGPIPE); + hawk_main_unset_signal_handler(SIGPIPE); #endif } static void set_intr_run (void) { #if defined(SIGTERM) - hawk_main_set_signal_handler (SIGTERM, stop_run, 0); + hawk_main_set_signal_handler(SIGTERM, stop_run, 0); #endif #if defined(SIGHUP) - hawk_main_set_signal_handler (SIGHUP, stop_run, 0); + hawk_main_set_signal_handler(SIGHUP, stop_run, 0); #endif #if defined(SIGINT) - hawk_main_set_signal_handler (SIGINT, stop_run, 0); + hawk_main_set_signal_handler(SIGINT, stop_run, 0); #endif } static void unset_intr_run (void) { #if defined(SIGTERM) - hawk_main_unset_signal_handler (SIGTERM); + hawk_main_unset_signal_handler(SIGTERM); #endif #if defined(SIGHUP) - hawk_main_unset_signal_handler (SIGHUP); + hawk_main_unset_signal_handler(SIGHUP); #endif #if defined(SIGINT) - hawk_main_unset_signal_handler (SIGINT); + hawk_main_unset_signal_handler(SIGINT); #endif } diff --git a/bin/main.c b/bin/main.c index e317a536..3cd47723 100644 --- a/bin/main.c +++ b/bin/main.c @@ -187,6 +187,13 @@ int hawk_main_unset_signal_handler (int sig) /* -------------------------------------------------------- */ +void hawk_main_do_nothing_on_signal (int unused) +{ + /* do nothing */ +} + +/* -------------------------------------------------------- */ + int hawk_main_collect_into_xarg (const hawk_bcs_t* path, hawk_main_xarg_t* xarg) { if (xarg->size <= xarg->capa) diff --git a/bin/main.h b/bin/main.h index c2da76bf..390d8380 100644 --- a/bin/main.h +++ b/bin/main.h @@ -55,7 +55,7 @@ void hawk_main_print_warning (const hawk_bch_t* fmt, ...); int hawk_main_set_signal_handler (int sig, hawk_main_sig_handler_t handler, int extra_flags); int hawk_main_unset_signal_handler (int sig); - +void hawk_main_do_nothing_on_signal (int sig); int hawk_main_collect_into_xarg (const hawk_bcs_t* path, hawk_main_xarg_t* xarg); void hawk_main_purge_xarg (hawk_main_xarg_t* xarg); diff --git a/bin/sed.c b/bin/sed.c index 84eeac99..50a45129 100644 --- a/bin/sed.c +++ b/bin/sed.c @@ -377,51 +377,44 @@ static void stop_run (int signo) #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) int e = errno; #endif - hawk_sed_halt(g_sed); - #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) errno = e; #endif } -static void do_nothing (int unused) -{ -} - static void set_intr_run (void) { #if defined(SIGTERM) - hawk_main_set_signal_handler (SIGTERM, stop_run, 0); + hawk_main_set_signal_handler(SIGTERM, stop_run, 0); #endif #if defined(SIGHUP) - hawk_main_set_signal_handler (SIGHUP, stop_run, 0); + hawk_main_set_signal_handler(SIGHUP, stop_run, 0); #endif #if defined(SIGINT) - hawk_main_set_signal_handler (SIGINT, stop_run, 0); + hawk_main_set_signal_handler(SIGINT, stop_run, 0); #endif #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) - hawk_main_set_signal_handler (SIGPIPE, do_nothing, 0); + hawk_main_set_signal_handler(SIGPIPE, hawk_main_do_nothing_on_signal, 0); #endif } static void unset_intr_run (void) { #if defined(SIGTERM) - hawk_main_unset_signal_handler (SIGTERM); + hawk_main_unset_signal_handler(SIGTERM); #endif #if defined(SIGHUP) - hawk_main_unset_signal_handler (SIGHUP); + hawk_main_unset_signal_handler(SIGHUP); #endif #if defined(SIGINT) - hawk_main_unset_signal_handler (SIGINT); + hawk_main_unset_signal_handler(SIGINT); #endif #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) - hawk_main_unset_signal_handler (SIGPIPE); + hawk_main_unset_signal_handler(SIGPIPE); #endif } - #if defined(HAWK_ENABLE_SEDTRACER) static void trace_exec (hawk_sed_t* sed, hawk_sed_tracer_op_t op, const hawk_sed_cmd_t* cmd) { diff --git a/lib/Std.cpp b/lib/Std.cpp index 25f5cfc3..6079282c 100644 --- a/lib/Std.cpp +++ b/lib/Std.cpp @@ -111,6 +111,8 @@ static hawk_sio_t* open_sio_std (Hawk* hawk, HawkStd::Run* run, hawk_sio_std_t s HAWK_T("stderr"), }; + // at least either hawk or run must be non null + //sio = hawk_sio_openstd ((run? ((Hawk::hawk_t*)*(Hawk*)*run)->mmgr: hawk->getMmgr()), 0, std, flags); sio = hawk_sio_openstd((run? (hawk_gem_t*)*run: (hawk_gem_t*)*hawk), 0, std, flags); if (sio == HAWK_NULL) diff --git a/lib/fnc.c b/lib/fnc.c index d3256b40..be4a4d75 100644 --- a/lib/fnc.c +++ b/lib/fnc.c @@ -860,7 +860,8 @@ static int fnc_split (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int use_array) hawk_oocs_t tok; hawk_int_t nflds; - int x, byte_str, do_fld = 0; + int is_byte_str; + int x, do_fld = 0; int switch_fs_to_bchr = 0; str.ptr = HAWK_NULL; @@ -874,6 +875,7 @@ static int fnc_split (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int use_array) str.ptr = HAWK_NULL; str.len = 0; + is_byte_str = 0; /* field seperator */ t0 = a2? a2: hawk_rtx_getgbl(rtx, HAWK_GBL_FS); /* if a2 is not available, get the value from FS */ @@ -934,13 +936,13 @@ static int fnc_split (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int use_array) case HAWK_VAL_BCHR: case HAWK_VAL_MBS: case HAWK_VAL_BOB: - byte_str = 1; + is_byte_str = 1; str.ptr = do_fld? (hawk_ooch_t*)hawk_rtx_valtobcstrdup(rtx, a0, &str.len): (hawk_ooch_t*)hawk_rtx_getvalbcstr(rtx, a0, &str.len); break; default: - byte_str = 0; + is_byte_str = 0; str.ptr = do_fld? hawk_rtx_valtooocstrdup(rtx, a0, &str.len): hawk_rtx_getvaloocstr(rtx, a0, &str.len); break; @@ -948,7 +950,7 @@ static int fnc_split (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int use_array) if (HAWK_UNLIKELY(!str.ptr)) goto oops; - if (byte_str && switch_fs_to_bchr) + if (is_byte_str && switch_fs_to_bchr) { HAWK_ASSERT (fs_free = fs.ptr); @@ -975,20 +977,20 @@ static int fnc_split (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int use_array) { if (fs_rex) { - p = byte_str? (hawk_ooch_t*)hawk_rtx_tokbcharsbyrex(rtx, (hawk_bch_t*)str.ptr, org_len, (hawk_bch_t*)p, str.len, fs_rex, (hawk_bcs_t*)&tok): + p = is_byte_str? (hawk_ooch_t*)hawk_rtx_tokbcharsbyrex(rtx, (hawk_bch_t*)str.ptr, org_len, (hawk_bch_t*)p, str.len, fs_rex, (hawk_bcs_t*)&tok): hawk_rtx_tokoocharsbyrex(rtx, str.ptr, org_len, p, str.len, fs_rex, &tok); if (p && hawk_rtx_geterrnum(rtx) != HAWK_ENOERR) goto oops; } else if (do_fld) { - /* [NOTE] even if byte_str is true, the field seperator is of the ooch type. + /* [NOTE] even if is_byte_str is true, the field seperator is of the ooch type. * there may be some data truncation and related issues */ - p = byte_str? (hawk_ooch_t*)hawk_rtx_fldbchars(rtx, (hawk_bch_t*)p, str.len, fs.ptr[1], fs.ptr[2], fs.ptr[3], fs.ptr[4], (hawk_bcs_t*)&tok): + p = is_byte_str? (hawk_ooch_t*)hawk_rtx_fldbchars(rtx, (hawk_bch_t*)p, str.len, fs.ptr[1], fs.ptr[2], fs.ptr[3], fs.ptr[4], (hawk_bcs_t*)&tok): hawk_rtx_fldoochars(rtx, p, str.len, fs.ptr[1], fs.ptr[2], fs.ptr[3], fs.ptr[4], &tok); } else { - p = byte_str? (hawk_ooch_t*)hawk_rtx_tokbcharswithbchars(rtx, (hawk_bch_t*)p, str.len, (hawk_bch_t*)fs.ptr, fs.len, (hawk_bcs_t*)&tok): + p = is_byte_str? (hawk_ooch_t*)hawk_rtx_tokbcharswithbchars(rtx, (hawk_bch_t*)p, str.len, (hawk_bch_t*)fs.ptr, fs.len, (hawk_bcs_t*)&tok): hawk_rtx_tokoocharswithoochars(rtx, p, str.len, fs.ptr, fs.len, &tok); } @@ -1004,7 +1006,7 @@ static int fnc_split (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int use_array) * create a numeric value if the string is a number */ /*t2 = hawk_rtx_makestrvalwithoocs(rtx, &tok);*/ /*t2 = hawk_rtx_makenstrvalwithoocs(rtx, &tok); */ - t2 = byte_str? hawk_rtx_makenumormbsvalwithbchars(rtx, (hawk_bch_t*)tok.ptr, tok.len): + t2 = is_byte_str? hawk_rtx_makenumormbsvalwithbchars(rtx, (hawk_bch_t*)tok.ptr, tok.len): hawk_rtx_makenumorstrvalwithoochars(rtx, tok.ptr, tok.len); if (HAWK_UNLIKELY(!t2)) goto oops; @@ -1034,19 +1036,19 @@ static int fnc_split (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int use_array) } } - if (byte_str) + if (is_byte_str) str.len = org_len - ((hawk_bch_t*)p - (hawk_bch_t*)str.ptr); else str.len = org_len - (p - str.ptr); } if (do_fld) { hawk_rtx_freemem(rtx, str.ptr); } - else if (byte_str) { hawk_rtx_freevalbcstr(rtx, a0, (hawk_bch_t*)str.ptr); } + else if (is_byte_str) { hawk_rtx_freevalbcstr(rtx, a0, (hawk_bch_t*)str.ptr); } else { hawk_rtx_freevaloocstr(rtx, a0, str.ptr); } if (fs_free) { - if (byte_str && switch_fs_to_bchr) + if (is_byte_str && switch_fs_to_bchr) hawk_rtx_freevalbcstr(rtx, t0, (hawk_bch_t*)fs_free); else hawk_rtx_freevaloocstr(rtx, t0, fs_free); @@ -1070,13 +1072,13 @@ oops: if (str.ptr) { if (do_fld) { hawk_rtx_freemem(rtx, str.ptr); } - else if (byte_str) { hawk_rtx_freevalbcstr(rtx, a0, (hawk_bch_t*)str.ptr); } + else if (is_byte_str) { hawk_rtx_freevalbcstr(rtx, a0, (hawk_bch_t*)str.ptr); } else { hawk_rtx_freevaloocstr(rtx, a0, str.ptr); } } if (fs_free) { - if (byte_str && switch_fs_to_bchr) + if (is_byte_str && switch_fs_to_bchr) hawk_rtx_freevalbcstr(rtx, t0, (hawk_bch_t*)fs_free); else hawk_rtx_freevaloocstr(rtx, t0, fs_free); @@ -1473,6 +1475,9 @@ static int __substitute (hawk_rtx_t* rtx, hawk_oow_t max_count) s1.ptr = HAWK_NULL; s1.len = 0; + s2.ptr = HAWK_NULL; + s2.len = 0; + nargs = hawk_rtx_getnargs(rtx); a0 = hawk_rtx_getarg(rtx, 0); a1 = hawk_rtx_getarg(rtx, 1); @@ -1702,6 +1707,9 @@ int hawk_fnc_gensub (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) s1.ptr = HAWK_NULL; s1.len = 0; + s2.ptr = HAWK_NULL; + s2.len = 0; + nargs = hawk_rtx_getnargs(rtx); a0 = hawk_rtx_getarg(rtx, 0); /* pattern */ a1 = hawk_rtx_getarg(rtx, 1); /* substitute */ diff --git a/lib/gem-nwif2.c b/lib/gem-nwif2.c index bfb757fe..3c7e35e7 100644 --- a/lib/gem-nwif2.c +++ b/lib/gem-nwif2.c @@ -100,7 +100,7 @@ static int prefix_to_in6 (int prefix, struct in6_addr* in6) if (prefix < 0 || prefix > HAWK_SIZEOF(*in6) * 8) return -1; - HAWK_MEMSET (in6, 0, HAWK_SIZEOF(*in6)); + HAWK_MEMSET(in6, 0, HAWK_SIZEOF(*in6)); for (i = 0; ; i++) { if (prefix > 8) @@ -120,9 +120,10 @@ static int prefix_to_in6 (int prefix, struct in6_addr* in6) } #endif -static HAWK_INLINE void copy_to_skad (struct sockaddr* sa, hawk_skad_t* skad) +static HAWK_INLINE void copy_to_skad (struct sockaddr* sa, hawk_oow_t sa_size, hawk_skad_t* skad) { - HAWK_MEMCPY (skad, sa, HAWK_SIZEOF(*skad)); + /* assume *skad is large enough */ + HAWK_MEMCPY(skad, sa, sa_size); } /* @@ -168,7 +169,7 @@ static int get_nwifs (hawk_gem_t* gem, int s, int f, hawk_xptl_t* nwifs) ifn.lifn_flags = 0; if (ioctl(s, SIOCGLIFNUM, &ifn) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); goto oops; } @@ -185,7 +186,7 @@ static int get_nwifs (hawk_gem_t* gem, int s, int f, hawk_xptl_t* nwifs) b.ptr = hawk_gem_allocmem(gem, b.len); if (b.ptr == HAWK_NULL) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); goto oops; } @@ -196,7 +197,7 @@ static int get_nwifs (hawk_gem_t* gem, int s, int f, hawk_xptl_t* nwifs) if (ioctl(s, SIOCGLIFCONF, &ifc) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); goto oops; } @@ -258,7 +259,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) #endif #else /* no implementation */ - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); goto oops; #endif @@ -276,7 +277,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) tmp = hawk_gem_allocmem(gem, HAWK_SIZEOF(*tmp)); if (tmp == HAWK_NULL) goto oops; - HAWK_MEMSET (tmp, 0, HAWK_SIZEOF(*tmp)); + HAWK_MEMSET(tmp, 0, HAWK_SIZEOF(*tmp)); tmp->next = head; head = tmp; @@ -287,7 +288,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) #endif if (head->name == HAWK_NULL) goto oops; - copy_to_skad ((struct sockaddr*)&ifr->lifr_addr, &head->addr); + copy_to_skad((struct sockaddr*)&ifr->lifr_addr, HAWK_SIZEOF(ifr->lifr_addr), &head->addr); hawk_copy_bcstr (ifrbuf.lifr_name, HAWK_COUNTOF(ifrbuf.lifr_name), ifr->lifr_name); if (ioctl(s, SIOCGLIFFLAGS, &ifrbuf) <= -1) goto sys_oops; @@ -295,13 +296,13 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) if (ifrbuf.lifr_flags & IFF_BROADCAST) { if (ioctl(s, SIOCGLIFBRDADDR, &ifrbuf) <= -1) goto sys_oops; - copy_to_skad ((struct sockaddr*)&ifrbuf.lifr_addr, &head->bcast); + copy_to_skad((struct sockaddr*)&ifrbuf.lifr_addr, HAWK_SIZEOF(ifrbuf.lifr_addr), &head->bcast); head->flags |= HAWK_IFCFG_BCAST; } if (ifrbuf.lifr_flags & IFF_POINTOPOINT) { if (ioctl(s, SIOCGLIFDSTADDR, &ifrbuf) <= -1) goto sys_oops; - copy_to_skad ((struct sockaddr*)&ifrbuf.lifr_addr, &head->ptop); + copy_to_skad((struct sockaddr*)&ifrbuf.lifr_addr, HAWK_SIZEOF(ifrbuf.lifr_addr), &head->ptop); head->flags |= HAWK_IFCFG_PTOP; } @@ -309,7 +310,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) head->index = ifrbuf.lifr_index; if (ioctl(s, SIOCGLIFNETMASK, &ifrbuf) <= -1) goto sys_oops; - copy_to_skad ((struct sockaddr*)&ifrbuf.lifr_addr, &head->mask); + copy_to_skad((struct sockaddr*)&ifrbuf.lifr_addr, HAWK_SIZEOF(ifrbuf.lifr_addr), &head->mask); } hawk_gem_freemem (gem, nwifs.ptr); @@ -320,7 +321,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) return 0; sys_oops: - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); oops: if (head) free_nwifcfg (cfg->mmgr, head); if (nwifs.ptr) hawk_gem_freemem (gem, nwifs.ptr); @@ -424,17 +425,17 @@ static void read_proc_net_if_inet6 (hawk_gem_t* gem, hawk_ifcfg_t* cfg, struct i static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* ifr) { #if defined(_WIN32) - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #elif defined(__OS2__) - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #elif defined(__DOS__) - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); return -1; @@ -443,7 +444,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i struct lifreq lifrbuf; hawk_oow_t ml, wl; - HAWK_MEMSET (&lifrbuf, 0, HAWK_SIZEOF(lifrbuf)); + HAWK_MEMSET(&lifrbuf, 0, HAWK_SIZEOF(lifrbuf)); hawk_copy_bcstr (lifrbuf.lifr_name, HAWK_SIZEOF(lifrbuf.lifr_name), ifr->ifr_name); @@ -460,35 +461,32 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i if (ioctl (s, SIOCGLIFMTU, &lifrbuf) <= -1) return -1; cfg->mtu = lifrbuf.lifr_mtu; - hawk_clear_skad (&cfg->addr); - hawk_clear_skad (&cfg->mask); - hawk_clear_skad (&cfg->bcast); - hawk_clear_skad (&cfg->ptop); - HAWK_MEMSET (cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw)); + hawk_clear_skad(&cfg->addr); + hawk_clear_skad(&cfg->mask); + hawk_clear_skad(&cfg->bcast); + hawk_clear_skad(&cfg->ptop); + HAWK_MEMSET(cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw)); - if (ioctl (s, SIOCGLIFADDR, &lifrbuf) >= 0) - copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_addr, &cfg->addr); + if (ioctl(s, SIOCGLIFADDR, &lifrbuf) >= 0) + copy_to_skad((struct sockaddr*)&lifrbuf.lifr_addr, HAWK_SIZEOF(lifrbuf.lifr_addr), &cfg->addr); - if (ioctl (s, SIOCGLIFNETMASK, &lifrbuf) >= 0) - copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_addr, &cfg->mask); + if (ioctl(s, SIOCGLIFNETMASK, &lifrbuf) >= 0) + copy_to_skad((struct sockaddr*)&lifrbuf.lifr_addr, HAWK_SIZEOF(lifrbuf.lifr_addr), &cfg->mask); - if ((cfg->flags & HAWK_IFCFG_BCAST) && - ioctl (s, SIOCGLIFBRDADDR, &lifrbuf) >= 0) + if ((cfg->flags & HAWK_IFCFG_BCAST) && ioctl(s, SIOCGLIFBRDADDR, &lifrbuf) >= 0) { - copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_broadaddr, &cfg->bcast); + copy_to_skad((struct sockaddr*)&lifrbuf.lifr_broadaddr, HAWK_SIZEOF(lifrbuf.lifr_broadaddr), &cfg->bcast); } - if ((cfg->flags & HAWK_IFCFG_PTOP) && - ioctl (s, SIOCGLIFDSTADDR, &lifrbuf) >= 0) + if ((cfg->flags & HAWK_IFCFG_PTOP) && ioctl(s, SIOCGLIFDSTADDR, &lifrbuf) >= 0) { - copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_dstaddr, &cfg->ptop); + copy_to_skad((struct sockaddr*)&lifrbuf.lifr_dstaddr, HAWK_SIZEOF(lifrbuf.lifr_dstAddr), &cfg->ptop); } #if defined(SIOCGENADDR) { - if (ioctl(s, SIOCGENADDR, ifr) >= 0 && - HAWK_SIZEOF(ifr->ifr_enaddr) >= HAWK_SIZEOF(cfg->ethw)) + if (ioctl(s, SIOCGENADDR, ifr) >= 0 && HAWK_SIZEOF(ifr->ifr_enaddr) >= HAWK_SIZEOF(cfg->ethw)) { - HAWK_MEMCPY (cfg->ethw, ifr->ifr_enaddr, HAWK_SIZEOF(cfg->ethw)); + HAWK_MEMCPY(cfg->ethw, ifr->ifr_enaddr, HAWK_SIZEOF(cfg->ethw)); } /* TODO: try DLPI if SIOCGENADDR fails... */ } @@ -503,7 +501,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i #if defined(SIOCGIFINDEX) if (ioctl(s, SIOCGIFINDEX, ifr) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); return -1; } #if defined(HAVE_STRUCT_IFREQ_IFR_IFINDEX) @@ -517,7 +515,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i if (ioctl(s, SIOCGIFFLAGS, ifr) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); return -1; } cfg->flags = 0; @@ -528,7 +526,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i if (ioctl(s, SIOCGIFMTU, ifr) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); return -1; } #if defined(HAVE_STRUCT_IFREQ_IFR_MTU) @@ -540,47 +538,47 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i cfg->mtu = ifr->ifr_metric; #endif - hawk_clear_skad (&cfg->addr); - hawk_clear_skad (&cfg->mask); - hawk_clear_skad (&cfg->bcast); - hawk_clear_skad (&cfg->ptop); - HAWK_MEMSET (cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw)); + hawk_clear_skad(&cfg->addr); + hawk_clear_skad(&cfg->mask); + hawk_clear_skad(&cfg->bcast); + hawk_clear_skad(&cfg->ptop); + HAWK_MEMSET(cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw)); if (cfg->type == HAWK_IFCFG_IN6) { struct if_laddrreq iflrbuf; - HAWK_MEMSET (&iflrbuf, 0, HAWK_SIZEOF(iflrbuf)); + HAWK_MEMSET(&iflrbuf, 0, HAWK_SIZEOF(iflrbuf)); hawk_copy_bcstr (iflrbuf.iflr_name, HAWK_SIZEOF(iflrbuf.iflr_name), ifr->ifr_name); if (ioctl(s, SIOCGLIFADDR, &iflrbuf) >= 0) { hawk_skad_alt_t* skad; - copy_to_skad ((struct sockaddr*)&iflrbuf.addr, &cfg->addr); + copy_to_skad((struct sockaddr*)&iflrbuf.addr, HAWK_SIZEOF(iflrbuf.addr), &cfg->addr); skad = (hawk_skad_alt_t*)&cfg->mask; skad->in6.sin6_family = HAWK_AF_INET6; prefix_to_in6 (iflrbuf.prefixlen, &skad->in6.sin6_addr); if (cfg->flags & HAWK_IFCFG_PTOP) - copy_to_skad ((struct sockaddr*)&iflrbuf.dstaddr, &cfg->ptop); + copy_to_skad((struct sockaddr*)&iflrbuf.dstaddr, HAWK_SIZEOF(iflrbuf.dstaddr), &cfg->ptop); } } else { if (ioctl(s, SIOCGIFADDR, ifr) >= 0) - copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->addr); + copy_to_skad((struct sockaddr*)&ifr->ifr_addr, HAWK_SIZEOF(ifr->ifr_addr), &cfg->addr); if (ioctl(s, SIOCGIFNETMASK, ifr) >= 0) - copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->mask); + copy_to_skad((struct sockaddr*)&ifr->ifr_addr, HAWK_SIZEOF(ifr->ifr_addr), &cfg->mask); if ((cfg->flags & HAWK_IFCFG_BCAST) && ioctl(s, SIOCGIFBRDADDR, ifr) >= 0) { - copy_to_skad ((struct sockaddr*)&ifr->ifr_broadaddr, &cfg->bcast); + copy_to_skad((struct sockaddr*)&ifr->ifr_broadaddr, HAWK_SIZEOF(ifr->ifr_boradaddr), &cfg->bcast); } if ((cfg->flags & HAWK_IFCFG_PTOP) && ioctl(s, SIOCGIFDSTADDR, ifr) >= 0) { - copy_to_skad ((struct sockaddr*)&ifr->ifr_dstaddr, &cfg->ptop); + copy_to_skad((struct sockaddr*)&ifr->ifr_dstaddr, HAWK_SIZEOF(ifr->ifr_dstaddr), &cfg->ptop); } } @@ -619,7 +617,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i * so long as the data is long enough */ if (sadl->sdl_alen >= HAWK_COUNTOF(cfg->ethw)) { - HAWK_MEMCPY (cfg->ethw, LLADDR(sadl), HAWK_SIZEOF(cfg->ethw)); + HAWK_MEMCPY(cfg->ethw, LLADDR(sadl), HAWK_SIZEOF(cfg->ethw)); break; } @@ -640,7 +638,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i #if defined(SIOCGIFINDEX) if (ioctl(s, SIOCGIFINDEX, ifr) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); return -1; } @@ -654,9 +652,9 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i cfg->index = 0; #endif - if (ioctl (s, SIOCGIFFLAGS, ifr) <= -1) + if (ioctl(s, SIOCGIFFLAGS, ifr) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); return -1; } cfg->flags = 0; @@ -667,7 +665,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i if (ioctl(s, SIOCGIFMTU, ifr) <= -1) { - hawk_gem_seterrnum (gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); + hawk_gem_seterrnum(gem, HAWK_NULL, hawk_syserr_to_errnum(errno)); return -1; } #if defined(HAVE_STRUCT_IFREQ_IFR_MTU) @@ -679,14 +677,16 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i cfg->mtu = ifr->ifr_metric; #endif - hawk_clear_skad (&cfg->addr); - hawk_clear_skad (&cfg->mask); - hawk_clear_skad (&cfg->bcast); - hawk_clear_skad (&cfg->ptop); - HAWK_MEMSET (cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw)); + hawk_clear_skad(&cfg->addr); + hawk_clear_skad(&cfg->mask); + hawk_clear_skad(&cfg->bcast); + hawk_clear_skad(&cfg->ptop); + HAWK_MEMSET(cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw)); - if (ioctl(s, SIOCGIFADDR, ifr) >= 0) copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->addr); - if (ioctl(s, SIOCGIFNETMASK, ifr) >= 0) copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->mask); + if (ioctl(s, SIOCGIFADDR, ifr) >= 0) + copy_to_skad((struct sockaddr*)&ifr->ifr_addr, HAWK_SIZEOF(ifr->ifr_addr), &cfg->addr); + if (ioctl(s, SIOCGIFNETMASK, ifr) >= 0) + copy_to_skad((struct sockaddr*)&ifr->ifr_addr, HAWK_SIZEOF(ifr->ifr_addr), &cfg->mask); #if defined(__linux) if (hawk_skad_get_family(&cfg->addr) == HAWK_AF_UNSPEC && hawk_skad_get_family(&cfg->mask) == HAWK_AF_UNSPEC && cfg->type == HAWK_IFCFG_IN6) @@ -697,20 +697,15 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i #endif if ((cfg->flags & HAWK_IFCFG_BCAST) && ioctl(s, SIOCGIFBRDADDR, ifr) >= 0) - { - copy_to_skad ((struct sockaddr*)&ifr->ifr_broadaddr, &cfg->bcast); - } + copy_to_skad((struct sockaddr*)&ifr->ifr_broadaddr, HAWK_SIZEOF(ifr->ifr_broadaddr), &cfg->bcast); if ((cfg->flags & HAWK_IFCFG_PTOP) && ioctl(s, SIOCGIFDSTADDR, ifr) >= 0) - { - copy_to_skad ((struct sockaddr*)&ifr->ifr_dstaddr, &cfg->ptop); - } + copy_to_skad((struct sockaddr*)&ifr->ifr_dstaddr, HAWK_SIZEOF(ifr->ifr_dstaddr), &cfg->ptop); #if defined(SIOCGIFHWADDR) if (ioctl(s, SIOCGIFHWADDR, ifr) >= 0) - if (ioctl(s, SIOCGIFHWADDR, ifr) >= 0) { - HAWK_MEMCPY (cfg->ethw, ifr->ifr_hwaddr.sa_data, HAWK_SIZEOF(cfg->ethw)); + HAWK_MEMCPY(cfg->ethw, ifr->ifr_hwaddr.sa_data, HAWK_SIZEOF(cfg->ethw)); } #elif defined(MACIOC_GETADDR) { @@ -720,8 +715,8 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i int strfd; hawk_bch_t devname[HAWK_COUNTOF(ifr->ifr_name) + 5 + 1]; - hawk_copy_bcstr_unlimited (devname, HAWK_MT("/dev/")); - hawk_copy_bcstr_unlimited (&devname[5], ifr->ifr_name); + hawk_copy_bcstr_unlimited(devname, HAWK_MT("/dev/")); + hawk_copy_bcstr_unlimited(&devname[5], ifr->ifr_name); if ((strfd = HAWK_OPEN(devname, O_RDONLY, 0)) >= 0) { hawk_uint8_t buf[HAWK_SIZEOF(cfg->ethw)]; @@ -732,7 +727,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i strioc.ic_len = HAWK_SIZEOF (buf); strioc.ic_dp = buf; if (ioctl(strfd, I_STR, (char *) &strioc) >= 0) - HAWK_MEMCPY (cfg->ethw, buf, HAWK_SIZEOF(cfg->ethw)); + HAWK_MEMCPY(cfg->ethw, buf, HAWK_SIZEOF(cfg->ethw)); HAWK_CLOSE (strfd); } @@ -743,7 +738,7 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i #else /* TODO */ - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #endif } @@ -754,7 +749,7 @@ static void get_moreinfo (int s, hawk_ifcfg_t* cfg, struct ifreq* ifr) { /* get link status */ struct ethtool_value ev; - HAWK_MEMSET (&ev, 0, HAWK_SIZEOF(ev)); + HAWK_MEMSET(&ev, 0, HAWK_SIZEOF(ev)); ev.cmd= ETHTOOL_GLINK; ifr->ifr_data = (void*)&ev; if (ioctl(s, SIOCETHTOOL, ifr) >= 0) cfg->flags |= ev.data? HAWK_IFCFG_LINKUP: HAWK_IFCFG_LINKDOWN; @@ -799,15 +794,15 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) { #if defined(_WIN32) /* TODO */ - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #elif defined(__OS2__) /* TODO */ - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #elif defined(__DOS__) /* TODO */ - hawk_gem_seterrnum (gem, HAWK_NULL, HAWK_ENOIMPL); + hawk_gem_seterrnum(gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #else int x = -1, s = -1; @@ -833,7 +828,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg) /* TODO: support lookup by ifindex */ } - HAWK_MEMSET (&ifr, 0, sizeof(ifr)); + HAWK_MEMSET(&ifr, 0, sizeof(ifr)); #if defined(HAWK_OOCH_IS_BCH) hawk_copy_bcstr (ifr.ifr_name, HAWK_SIZEOF(ifr.ifr_name), cfg->name); #else diff --git a/lib/parse.c b/lib/parse.c index 2b7f532f..eb1e1a6f 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -6032,7 +6032,7 @@ static hawk_nde_t* parse_primary_ident (hawk_t* hawk, const hawk_loc_t* xloc) if (nsegs <= 1) { nde = parse_primary_ident_noseg(hawk, xloc, &name[0]); - if (!nde) hawk_freemem(hawk, name[0].ptr); + if (HAWK_UNLIKELY(!nde)) hawk_freemem(hawk, name[0].ptr); } else { @@ -6042,7 +6042,7 @@ static hawk_nde_t* parse_primary_ident (hawk_t* hawk, const hawk_loc_t* xloc) for (capa = 0, i = 0; i < nsegs; i++) capa += name[i].len + 2; /* +2 for :: */ full.ptr = hawk_allocmem(hawk, HAWK_SIZEOF(*full.ptr) * (capa + 1)); - if (full.ptr) + if (HAWK_LIKELY(full.ptr)) { capa = hawk_copy_oochars_to_oocstr_unlimited(&full.ptr[0], name[0].ptr, name[0].len); for (i = 1; i < nsegs; i++) diff --git a/lib/run.c b/lib/run.c index 140df118..be5e172b 100644 --- a/lib/run.c +++ b/lib/run.c @@ -2130,7 +2130,7 @@ static HAWK_INLINE int run_block0 (hawk_rtx_t* rtx, hawk_nde_blk_t* nde) if (n <= -1) { hawk_rtx_refdownval(rtx, rtx->inrec.d0); - ADJERR_LOC(rtx, &nde->loc); + /* ADJERR_LOC(rtx, &nde->loc); - can't adjust error location as nde is null */ return -1; } @@ -2138,7 +2138,7 @@ static HAWK_INLINE int run_block0 (hawk_rtx_t* rtx, hawk_nde_blk_t* nde) if (n <= -1) { hawk_rtx_refdownval(rtx, rtx->inrec.d0); - ADJERR_LOC(rtx, &nde->loc); + /* ADJERR_LOC(rtx, &nde->loc); - can't adjust error location as nde is null */ return -1; } @@ -6002,8 +6002,8 @@ static hawk_val_t* eval_binop_mul (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t hawk_int_t l1, l2; hawk_flt_t r1, r2; - n1 = hawk_rtx_valtonum (rtx, left, &l1, &r1); - n2 = hawk_rtx_valtonum (rtx, right, &l2, &r2); + n1 = hawk_rtx_valtonum(rtx, left, &l1, &r1); + n2 = hawk_rtx_valtonum(rtx, right, &l2, &r2); if (n1 <= -1 || n2 <= -1) { @@ -6026,8 +6026,8 @@ static hawk_val_t* eval_binop_div (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t hawk_flt_t r1, r2; hawk_val_t* res; - n1 = hawk_rtx_valtonum (rtx, left, &l1, &r1); - n2 = hawk_rtx_valtonum (rtx, right, &l2, &r2); + n1 = hawk_rtx_valtonum(rtx, left, &l1, &r1); + n2 = hawk_rtx_valtonum(rtx, right, &l2, &r2); if (n1 <= -1 || n2 <= -1) { @@ -6047,29 +6047,24 @@ static hawk_val_t* eval_binop_div (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t if (((hawk_int_t)l1 % (hawk_int_t)l2) == 0) { - res = hawk_rtx_makeintval ( - rtx, (hawk_int_t)l1 / (hawk_int_t)l2); + res = hawk_rtx_makeintval(rtx, (hawk_int_t)l1 / (hawk_int_t)l2); } else { - res = hawk_rtx_makefltval ( - rtx, (hawk_flt_t)l1 / (hawk_flt_t)l2); + res = hawk_rtx_makefltval(rtx, (hawk_flt_t)l1 / (hawk_flt_t)l2); } break; case 1: - res = hawk_rtx_makefltval ( - rtx, (hawk_flt_t)r1 / (hawk_flt_t)l2); + res = hawk_rtx_makefltval(rtx, (hawk_flt_t)r1 / (hawk_flt_t)l2); break; case 2: - res = hawk_rtx_makefltval ( - rtx, (hawk_flt_t)l1 / (hawk_flt_t)r2); + res = hawk_rtx_makefltval(rtx, (hawk_flt_t)l1 / (hawk_flt_t)r2); break; case 3: - res = hawk_rtx_makefltval ( - rtx, (hawk_flt_t)r1 / (hawk_flt_t)r2); + res = hawk_rtx_makefltval(rtx, (hawk_flt_t)r1 / (hawk_flt_t)r2); break; } @@ -6083,8 +6078,8 @@ static hawk_val_t* eval_binop_idiv (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_ hawk_flt_t r1, r2, quo; hawk_val_t* res; - n1 = hawk_rtx_valtonum (rtx, left, &l1, &r1); - n2 = hawk_rtx_valtonum (rtx, right, &l2, &r2); + n1 = hawk_rtx_valtonum(rtx, left, &l1, &r1); + n2 = hawk_rtx_valtonum(rtx, right, &l2, &r2); if (n1 <= -1 || n2 <= -1) { @@ -6101,23 +6096,22 @@ static hawk_val_t* eval_binop_idiv (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_ hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EDIVBY0); return HAWK_NULL; } - res = hawk_rtx_makeintval ( - rtx, (hawk_int_t)l1 / (hawk_int_t)l2); + res = hawk_rtx_makeintval(rtx, (hawk_int_t)l1 / (hawk_int_t)l2); break; case 1: quo = (hawk_flt_t)r1 / (hawk_flt_t)l2; - res = hawk_rtx_makeintval (rtx, (hawk_int_t)quo); + res = hawk_rtx_makeintval(rtx, (hawk_int_t)quo); break; case 2: quo = (hawk_flt_t)l1 / (hawk_flt_t)r2; - res = hawk_rtx_makeintval (rtx, (hawk_int_t)quo); + res = hawk_rtx_makeintval(rtx, (hawk_int_t)quo); break; case 3: quo = (hawk_flt_t)r1 / (hawk_flt_t)r2; - res = hawk_rtx_makeintval (rtx, (hawk_int_t)quo); + res = hawk_rtx_makeintval(rtx, (hawk_int_t)quo); break; } @@ -6178,8 +6172,8 @@ static hawk_val_t* eval_binop_exp (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t hawk_flt_t r1, r2; hawk_val_t* res; - n1 = hawk_rtx_valtonum (rtx, left, &l1, &r1); - n2 = hawk_rtx_valtonum (rtx, right, &l2, &r2); + n1 = hawk_rtx_valtonum(rtx, left, &l1, &r1); + n2 = hawk_rtx_valtonum(rtx, right, &l2, &r2); if (n1 <= -1 || n2 <= -1) { diff --git a/lib/sed.c b/lib/sed.c index 0e8a358d..e20d0fd1 100644 --- a/lib/sed.c +++ b/lib/sed.c @@ -452,7 +452,7 @@ static int add_command_block (hawk_sed_t* sed) hawk_sed_cmd_blk_t* b; b = (hawk_sed_cmd_blk_t*)hawk_sed_callocmem(sed, HAWK_SIZEOF(*b)); - if (b == HAWK_NULL) return -1; + if (HAWK_UNLIKELY(!b)) return -1; b->next = HAWK_NULL; b->len = 0; @@ -815,7 +815,7 @@ static hawk_sed_adr_t* get_address (hawk_sed_t* sed, hawk_sed_adr_t* a, int exte else if (c == HAWK_T('/')) { /* /REGEX/ */ - a->u.rex = compile_rex_address (sed, c); + a->u.rex = compile_rex_address(sed, c); if (a->u.rex == HAWK_NULL) return HAWK_NULL; a->type = HAWK_SED_ADR_REX; NXTSC (sed, c, HAWK_NULL); @@ -830,7 +830,7 @@ static hawk_sed_adr_t* get_address (hawk_sed_t* sed, hawk_sed_adr_t* a, int exte return HAWK_NULL; } - a->u.rex = compile_rex_address (sed, c); + a->u.rex = compile_rex_address(sed, c); if (a->u.rex == HAWK_NULL) return HAWK_NULL; a->type = HAWK_SED_ADR_REX; NXTSC (sed, c, HAWK_NULL); @@ -886,7 +886,7 @@ do { \ hawk_ooecs_t* t = HAWK_NULL; t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 128); - if (t == HAWK_NULL) goto oops; + if (HAWK_UNLIKELY(!t)) goto oops; c = CURSC (sed); @@ -994,7 +994,7 @@ static int get_label (hawk_sed_t* sed, hawk_sed_cmd_t* cmd) return -1; } - if (hawk_map_insert ( + if (hawk_map_insert( &sed->tmp.labs, HAWK_OOECS_PTR(&sed->tmp.lab), HAWK_OOECS_LEN(&sed->tmp.lab), cmd, 0) == HAWK_NULL) @@ -1062,7 +1062,7 @@ static int get_branch_target (hawk_sed_t* sed, hawk_sed_cmd_t* cmd) } t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32); - if (t == HAWK_NULL) goto oops; + if (HAWK_UNLIKELY(!t)) goto oops; while (IS_LABCHAR(c)) { @@ -1072,7 +1072,7 @@ static int get_branch_target (hawk_sed_t* sed, hawk_sed_cmd_t* cmd) if (terminate_command (sed) <= -1) goto oops; - pair = hawk_map_search (&sed->tmp.labs, HAWK_OOECS_PTR(t), HAWK_OOECS_LEN(t)); + pair = hawk_map_search(&sed->tmp.labs, HAWK_OOECS_PTR(t), HAWK_OOECS_LEN(t)); if (pair == HAWK_NULL) { /* label not resolved yet */ @@ -1111,7 +1111,7 @@ static int get_file (hawk_sed_t* sed, hawk_oocs_t* xstr) } t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32); - if (t == HAWK_NULL) goto oops; + if (HAWK_UNLIKELY(!t)) goto oops; do { @@ -1205,7 +1205,7 @@ static int get_subst (hawk_sed_t* sed, hawk_sed_cmd_t* cmd) hawk_ooecs_clear(t[0]); t[1] = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32); - if (t[1] == HAWK_NULL) goto oops; + if (HAWK_UNLIKELY(!t[1])) goto oops; if (pickup_rex(sed, delim, 0, cmd, t[0]) <= -1) goto oops; if (pickup_rex(sed, delim, 1, cmd, t[1]) <= -1) goto oops; @@ -1324,7 +1324,7 @@ static int get_transet (hawk_sed_t* sed, hawk_sed_cmd_t* cmd) } t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32); - if (t == HAWK_NULL) goto oops; + if (HAWK_UNLIKELY(!t)) goto oops; NXTSC_GOTO(sed, c, oops); while (c != delim) @@ -1393,7 +1393,7 @@ static int add_cut_selector_block (hawk_sed_t* sed, hawk_sed_cmd_t* cmd) hawk_sed_cut_sel_t* b; b = (hawk_sed_cut_sel_t*)hawk_sed_callocmem(sed, HAWK_SIZEOF(*b)); - if (b == HAWK_NULL) return -1; + if (HAWK_UNLIKELY(!b)) return -1; b->next = HAWK_NULL; b->len = 0; @@ -2137,11 +2137,11 @@ static int write_str (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len) for (i = 0; i < len; i++) { - /*if (write_char (sed, str[i]) <= -1) return -1;*/ + /*if (write_char(sed, str[i]) <= -1) return -1;*/ sed->e.out.buf[sed->e.out.len++] = str[i]; if (sed->e.out.len >= HAWK_COUNTOF(sed->e.out.buf)) { - if (flush (sed) <= -1) return -1; + if (flush(sed) <= -1) return -1; flush_needed = 0; } /* TODO: handle different line ending convension... */ @@ -2152,13 +2152,12 @@ static int write_str (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len) return 0; } -static int write_first_line ( - hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len) +static int write_first_line (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len) { hawk_oow_t i; for (i = 0; i < len; i++) { - if (write_char (sed, str[i]) <= -1) return -1; + if (write_char(sed, str[i]) <= -1) return -1; /* TODO: handle different line ending convension... */ if (str[i] == HAWK_T('\n')) break; } @@ -2175,14 +2174,14 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width) HAWK_ASSERT(base >= 2 && base <= 36); - if (x < 0) + /*if (x < 0) { if (write_char(sed, HAWK_T('-')) <= -1) return -1; if (width > 0) width--; - } + }*/ x = x / base; - if (x < 0) x = -x; + /*if (x < 0) x = -x;*/ while (x > 0) { @@ -2195,13 +2194,13 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width) { while (--width > dig) { - if (write_char (sed, HAWK_T('0')) <= -1) return -1; + if (write_char(sed, HAWK_T('0')) <= -1) return -1; } } while (y > 0) { - if (write_char (sed, NTOC(y % base)) <= -1) return -1; + if (write_char(sed, NTOC(y % base)) <= -1) return -1; y = y / base; dig--; } @@ -2209,10 +2208,10 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width) while (dig > 0) { dig--; - if (write_char (sed, HAWK_T('0')) <= -1) return -1; + if (write_char(sed, HAWK_T('0')) <= -1) return -1; } - if (last < 0) last = -last; - if (write_char (sed, NTOC(last)) <= -1) return -1; + /*if (last < 0) last = -last;*/ + if (write_char(sed, NTOC(last)) <= -1) return -1; return 0; } @@ -2224,8 +2223,7 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width) #define WRITE_NUM(sed,num,base,width) \ do { if (write_num(sed,num,base,width) <= -1) return -1; } while (0) -static int write_str_clearly ( - hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len) +static int write_str_clearly (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len) { const hawk_ooch_t* p = str; const hawk_ooch_t* end = str + len; @@ -2238,50 +2236,50 @@ static int write_str_clearly ( switch (c) { case HAWK_T('\\'): - WRITE_STR (sed, HAWK_T("\\\\"), 2); + WRITE_STR(sed, HAWK_T("\\\\"), 2); break; /*case HAWK_T('\0'): - WRITE_STR (sed, HAWK_T("\\0"), 2); + WRITE_STR(sed, HAWK_T("\\0"), 2); break;*/ case HAWK_T('\n'): - WRITE_STR (sed, HAWK_T("$\n"), 2); + WRITE_STR(sed, HAWK_T("$\n"), 2); break; case HAWK_T('\a'): - WRITE_STR (sed, HAWK_T("\\a"), 2); + WRITE_STR(sed, HAWK_T("\\a"), 2); break; case HAWK_T('\b'): - WRITE_STR (sed, HAWK_T("\\b"), 2); + WRITE_STR(sed, HAWK_T("\\b"), 2); break; case HAWK_T('\f'): - WRITE_STR (sed, HAWK_T("\\f"), 2); + WRITE_STR(sed, HAWK_T("\\f"), 2); break; case HAWK_T('\r'): - WRITE_STR (sed, HAWK_T("\\r"), 2); + WRITE_STR(sed, HAWK_T("\\r"), 2); break; case HAWK_T('\t'): - WRITE_STR (sed, HAWK_T("\\t"), 2); + WRITE_STR(sed, HAWK_T("\\t"), 2); break; case HAWK_T('\v'): - WRITE_STR (sed, HAWK_T("\\v"), 2); + WRITE_STR(sed, HAWK_T("\\v"), 2); break; default: { - if (hawk_is_ooch_print(c)) WRITE_CHAR (sed, c); + if (hawk_is_ooch_print(c)) WRITE_CHAR(sed, c); else { #if defined(HAWK_OOCH_IS_BCH) - WRITE_CHAR (sed, HAWK_T('\\')); - WRITE_NUM (sed, (unsigned char)c, 8, HAWK_SIZEOF(hawk_ooch_t)*3); + WRITE_CHAR(sed, HAWK_T('\\')); + WRITE_NUM(sed, (hawk_bchu_t)c, 8, HAWK_SIZEOF(hawk_ooch_t)*3); #else if (HAWK_SIZEOF(hawk_ooch_t) <= 2) { - WRITE_STR (sed, HAWK_T("\\u"), 2); + WRITE_STR(sed, HAWK_T("\\u"), 2); } else { - WRITE_STR (sed, HAWK_T("\\U"), 2); + WRITE_STR(sed, HAWK_T("\\U"), 2); } - WRITE_NUM (sed, c, 16, HAWK_SIZEOF(hawk_ooch_t)*2); + WRITE_NUM(sed, (hawk_oochu_t)c, 16, HAWK_SIZEOF(hawk_ooch_t)*2); #endif } } @@ -2289,7 +2287,7 @@ static int write_str_clearly ( } if (len > 1 && end[-1] != HAWK_T('\n')) - WRITE_STR (sed, HAWK_T("$\n"), 2); + WRITE_STR(sed, HAWK_T("$\n"), 2); return 0; } @@ -2394,7 +2392,7 @@ static int write_file (hawk_sed_t* sed, hawk_sed_cmd_t* cmd, int first_line) for (i = 0; i < n; i++) { - if (write_char (sed, buf[i]) <= -1) return -1; + if (write_char(sed, buf[i]) <= -1) return -1; /* TODO: support different line end convension */ if (buf[i] == HAWK_T('\n')) goto done; @@ -2424,7 +2422,7 @@ static int link_append (hawk_sed_t* sed, hawk_sed_cmd_t* cmd) /* otherwise, link it using a linked list */ app = hawk_sed_allocmem(sed, HAWK_SIZEOF(*app)); - if (app == HAWK_NULL) + if (HAWK_UNLIKELY(!app)) { ADJERR_LOC (sed, &cmd->loc); return -1; @@ -2785,13 +2783,13 @@ static int split_into_fields_for_cut ( if (sed->e.cutf.flds == sed->e.cutf.sflds) { tmp = hawk_sed_allocmem(sed, HAWK_SIZEOF(*tmp) * nsz); - if (tmp == HAWK_NULL) return -1; + if (HAWK_UNLIKELY(!tmp)) return -1; HAWK_MEMCPY (tmp, sed->e.cutf.flds, HAWK_SIZEOF(*tmp) * sed->e.cutf.cflds); } else { tmp = hawk_sed_reallocmem(sed, sed->e.cutf.flds, HAWK_SIZEOF(*tmp) * nsz); - if (tmp == HAWK_NULL) return -1; + if (HAWK_UNLIKELY(!tmp)) return -1; } sed->e.cutf.flds = tmp; @@ -3718,7 +3716,7 @@ int hawk_sed_exec (hawk_sed_t* sed, hawk_sed_io_impl_t inf, hawk_sed_io_impl_t o #if defined(HAWK_ENABLE_SED_TRACER) if (sed->opt.tracer) sed->opt.tracer(sed, HAWK_SED_TRACER_EXEC, c); #endif - j = exec_cmd (sed, c); + j = exec_cmd(sed, c); if (j == HAWK_NULL) { ret = -1; goto done; } if (j == &sed->cmd.quit_quiet) goto done; if (j == &sed->cmd.quit) @@ -3866,7 +3864,7 @@ const hawk_ooch_t* hawk_sed_setcompidwithucstr (hawk_sed_t* sed, const hawk_uch_ len = hawk_count_oocstr(id); #endif cid = hawk_sed_allocmem(sed, HAWK_SIZEOF(*cid) + ((len + 1) * HAWK_SIZEOF(hawk_ooch_t))); - if (cid == HAWK_NULL) + if (HAWK_UNLIKELY(!cid)) { /* mark that an error has occurred */ sed->src.unknown_cid.buf[0] = HAWK_T('\0'); @@ -3944,7 +3942,7 @@ void hawk_sed_getspace (hawk_sed_t* sed, hawk_sed_space_t space, hawk_oocs_t* st void* hawk_sed_allocmem (hawk_sed_t* sed, hawk_oow_t size) { void* ptr = HAWK_MMGR_ALLOC(hawk_sed_getmmgr(sed), size); - if (ptr == HAWK_NULL) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM); + if (HAWK_UNLIKELY(!ptr)) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM); return ptr; } @@ -3959,7 +3957,7 @@ void* hawk_sed_callocmem (hawk_sed_t* sed, hawk_oow_t size) void* hawk_sed_reallocmem (hawk_sed_t* sed, void* ptr, hawk_oow_t size) { void* nptr = HAWK_MMGR_REALLOC(hawk_sed_getmmgr(sed), ptr, size); - if (nptr == HAWK_NULL) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM); + if (HAWK_UNLIKELY(!nptr)) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM); return nptr; } diff --git a/lib/utl-str.c b/lib/utl-str.c index 3e19dda4..297c3c62 100644 --- a/lib/utl-str.c +++ b/lib/utl-str.c @@ -2564,7 +2564,7 @@ hawk_oow_t hawk_uint_to_ucstr (hawk_uint_t value, int radix, const hawk_uch_t* p /* non-zero values */ len = prefix_len; - if (t < 0) { t = -t; len++; } + /*if (t < 0) { t = -t; len++; } not needed for an unsigned number */ while (t > 0) { len++; t /= radix; } if (buf == HAWK_NULL) @@ -2578,7 +2578,7 @@ hawk_oow_t hawk_uint_to_ucstr (hawk_uint_t value, int radix, const hawk_uch_t* p ret = len; t = value; - if (t < 0) t = -t; + /*if (t < 0) t = -t; not needed for an unsigned number */ while (t > 0) { @@ -2590,7 +2590,7 @@ hawk_oow_t hawk_uint_to_ucstr (hawk_uint_t value, int radix, const hawk_uch_t* p t /= radix; } - if (value < 0) + /*if (value < 0) { for (i = 1; i <= prefix_len; i++) { @@ -2600,9 +2600,9 @@ hawk_oow_t hawk_uint_to_ucstr (hawk_uint_t value, int radix, const hawk_uch_t* p buf[--len] = '-'; } else - { + {*/ for (i = 0; i < prefix_len; i++) buf[i] = prefix[i]; - } + /*}*/ return ret; } @@ -2640,7 +2640,7 @@ hawk_oow_t hawk_uint_to_bcstr (hawk_uint_t value, int radix, const hawk_bch_t* p /* non-zero values */ len = prefix_len; - if (t < 0) { t = -t; len++; } + /*if (t < 0) { t = -t; len++; }*/ while (t > 0) { len++; t /= radix; } if (buf == HAWK_NULL) @@ -2654,7 +2654,7 @@ hawk_oow_t hawk_uint_to_bcstr (hawk_uint_t value, int radix, const hawk_bch_t* p ret = len; t = value; - if (t < 0) t = -t; + /*if (t < 0) t = -t; */ while (t > 0) { @@ -2666,7 +2666,7 @@ hawk_oow_t hawk_uint_to_bcstr (hawk_uint_t value, int radix, const hawk_bch_t* p t /= radix; } - if (value < 0) + /*if (value < 0) { for (i = 1; i <= prefix_len; i++) { @@ -2676,9 +2676,9 @@ hawk_oow_t hawk_uint_to_bcstr (hawk_uint_t value, int radix, const hawk_bch_t* p buf[--len] = '-'; } else - { + {*/ for (i = 0; i < prefix_len; i++) buf[i] = prefix[i]; - } + /*}*/ return ret; } diff --git a/lib/val-prv.h b/lib/val-prv.h index 82f06263..289d77c9 100644 --- a/lib/val-prv.h +++ b/lib/val-prv.h @@ -137,8 +137,8 @@ struct hawk_val_rchunk_t #define HAWK_VTR_TO_INT(p) \ (((hawk_uintptr_t)(p) & HAWK_VTR_SIGN_BIT)? HAWK_VTR_TO_INT_NEGATIVE(p): HAWK_VTR_TO_INT_POSITIVE(p)) -#define HAWK_VTR_TO_CHAR(p) ((hawk_ooch_t)((hawk_uintptr_t)(p) >> HAWK_VTR_NUM_TYPE_BITS_LO)) -#define HAWK_VTR_TO_BCHR(p) ((hawk_ooch_t)((hawk_uintptr_t)(p) >> HAWK_VTR_NUM_TYPE_BITS_LOHI)) +#define HAWK_VTR_TO_CHAR(p) ((hawk_ooch_t)(hawk_oochu_t)((hawk_uintptr_t)(p) >> HAWK_VTR_NUM_TYPE_BITS_LO)) +#define HAWK_VTR_TO_BCHR(p) ((hawk_bch_t)(hawk_bchu_t)((hawk_uintptr_t)(p) >> HAWK_VTR_NUM_TYPE_BITS_LOHI)) #define HAWK_GET_VAL_TYPE(p) (HAWK_VTR_IS_INT(p)? HAWK_VAL_INT: \ HAWK_VTR_IS_CHAR(p)? HAWK_VAL_CHAR: \ diff --git a/t/h-002.hawk b/t/h-002.hawk index e070d63f..d64b2450 100644 --- a/t/h-002.hawk +++ b/t/h-002.hawk @@ -222,6 +222,10 @@ function main() tap_ensure (x, "the tiger- pounces on the dog-dog", @SCRIPTNAME, @SCRIPTLINE); x = gensub(/(tiger|(dog))/, "[&]", 'g', "the tiger pounces on the dog"); tap_ensure (x, "the [tiger] pounces on the [dog]", @SCRIPTNAME, @SCRIPTLINE); + x = gensub(/(tiger|(dog))/, "[\\0]", 'g', "the tiger pounces on the dog"); + tap_ensure (x, "the [tiger] pounces on the [dog]", @SCRIPTNAME, @SCRIPTLINE); + x = gensub(/((apple)|(turtle)|(orange)|(tiger)|(dog))/, "[\\6]", 'g', "the tiger pounces on the dog"); + tap_ensure (x, "the [] pounces on the [dog]", @SCRIPTNAME, @SCRIPTLINE); } {