diff --git a/s/build b/s/build index 3f193a7bd..ea0f5f3d0 100755 --- a/s/build +++ b/s/build @@ -4,7 +4,6 @@ while [ ! -d $ROOT/.git ]; do ROOT=`dirname $ROOT` done -[ -z "$CC" ] && CC=clang [ -z "$BUILD" ] && BUILD=Debug [ -z "$JOBS" ] && [ "" != "which nproc" ] && JOBS=`nproc` @@ -14,11 +13,15 @@ JOBS=`distcc -j` if [ -z "$JOBS" ] ; then JOBS=1 elif [ $JOBS -gt 1 ] ; then +[ -z "$CC" ] && [ ! -z `which clang` ] && CC="clang" +[ -z "$CC" ] && [ ! -z `which gcc` ] && CC="gcc" +[ -z "$CC" ] && [ ! -z `which tcc` ] && CC="tcc" +[ -z "$CC" ] && [ ! -z `which cc` ] && CC="cc" CC="$DISTCC $CC" MAKEOPTS=-j$JOBS fi fi -echo "Building with CC=$CC and $JOBS jobs" +echo "Building with $JOBS jobs" if [ ! -d $ROOT/$BUILD ]; then echo "cannot find build directory $BUILD in $ROOT. did you run cmake-init?" diff --git a/s/cmake-init b/s/cmake-init index 3a8408b1a..05bae5540 100755 --- a/s/cmake-init +++ b/s/cmake-init @@ -10,7 +10,7 @@ done [ -z $BUILD ] && BUILD=Debug MACHINE=`uname -m` -[ -z "$CC" ] && [ ! -z `which gcc` ] && CC="clang" +[ -z "$CC" ] && [ ! -z `which clang` ] && CC="clang" [ -z "$CC" ] && [ ! -z `which gcc` ] && CC="gcc" [ -z "$CC" ] && [ ! -z `which tcc` ] && CC="tcc" [ -z "$CC" ] && [ ! -z `which cc` ] && CC="cc" diff --git a/s/install b/s/install index 31b94052d..5daa7cbc9 100755 --- a/s/install +++ b/s/install @@ -11,6 +11,7 @@ done DEST=$(dirname $ROOT)/server MACHINE=`uname -m` +[ -z "$CC" ] && [ ! -z `which clang` ] && CC="clang" [ -z "$CC" ] && [ ! -z `which gcc` ] && CC="gcc" [ -z "$CC" ] && [ ! -z `which tcc` ] && CC="tcc" [ -z "$CC" ] && [ ! -z `which cc` ] && CC="cc" diff --git a/src/battle.c b/src/battle.c index a47db8163..319aa4151 100644 --- a/src/battle.c +++ b/src/battle.c @@ -1691,7 +1691,7 @@ void do_combatmagic(battle * b, combatmagic_t was) if (was == DO_PRECOMBATSPELL) { for (s = b->sides; s != b->sides + b->nsides; ++s) { fighter *fig = 0; - if (fval(s->faction, FFL_CURSED) && s->bf->attacker) { + if (s->bf->attacker && fval(s->faction, FFL_CURSED)) { spell *sp = find_spell("igjarjuk"); if (sp) { int si; diff --git a/src/kernel/spell.c b/src/kernel/spell.c index 6b161fc99..05e1ab8e8 100644 --- a/src/kernel/spell.c +++ b/src/kernel/spell.c @@ -113,7 +113,7 @@ spell *find_spell(const char *name) cb_get_kv(match, &sp, sizeof(sp)); } else { - log_warning("find_spell: could not find spell '%s'\n", name); + log_debug("find_spell: could not find spell '%s'\n", name); } return sp; } diff --git a/src/reports.c b/src/reports.c index f09344ee1..ce66d273f 100644 --- a/src/reports.c +++ b/src/reports.c @@ -120,27 +120,27 @@ const char *combatstatus[] = { "status_avoid", "status_flee" }; -const char *report_kampfstatus(const unit * u, const struct locale *lang) +size_t report_status(const unit * u, const struct locale *lang, char *fsbuf, size_t buflen) { - static char fsbuf[64]; // FIXME: static return value const char * status = LOC(lang, combatstatus[u->status]); + size_t len = 0; if (!status) { const char *lname = locale_name(lang); struct locale *wloc = get_or_create_locale(lname); log_error("no translation for combat status %s in %s", combatstatus[u->status], lname); locale_setstring(wloc, combatstatus[u->status], combatstatus[u->status]); - strlcpy(fsbuf, combatstatus[u->status], sizeof(fsbuf)); + len = strlcpy(fsbuf, combatstatus[u->status], buflen); } else { - strlcpy(fsbuf, status, sizeof(fsbuf)); + len = strlcpy(fsbuf, status, buflen); } if (fval(u, UFL_NOAID)) { - strcat(fsbuf, ", "); - strcat(fsbuf, LOC(lang, "status_noaid")); + len += strlcat(fsbuf+len, ", ", buflen-len); + len += strlcat(fsbuf+len, LOC(lang, "status_noaid"), buflen-len); } - return fsbuf; + return len; } const char *hp_status(const unit * u) @@ -564,7 +564,7 @@ size_t size) const char *c = hp_status(u); c = c ? LOC(f->locale, c) : 0; bufp = STRLCPY(bufp, ", ", size); - bufp = STRLCPY(bufp, report_kampfstatus(u, f->locale), size); + bufp += report_status(u, f->locale, bufp, size); if (c || fval(u, UFL_HUNGER)) { bufp = STRLCPY(bufp, " (", size); if (c) { diff --git a/src/reports.h b/src/reports.h index 2b3f9d51d..2c71803c3 100644 --- a/src/reports.h +++ b/src/reports.h @@ -85,8 +85,8 @@ extern "C" { const char *trailinto(const struct region *r, const struct locale *lang); - const char *report_kampfstatus(const struct unit *u, - const struct locale *lang); + size_t report_status(const struct unit *u, + const struct locale *lang, char *buf, size_t siz); void register_reports(void); diff --git a/src/spy.c b/src/spy.c index 7343213c9..eeca4e1d1 100644 --- a/src/spy.c +++ b/src/spy.c @@ -59,10 +59,12 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * Spionage des Spions */ void spy_message(int spy, const unit * u, const unit * target) { - const char *str = report_kampfstatus(target, u->faction->locale); + char status[32]; + + report_status(target, u->faction->locale, status, sizeof(status)); ADDMSG(&u->faction->msgs, msg_message("spyreport", "spy target status", u, - target, str)); + target, status)); if (spy > 20) { sc_mage *mage = get_mage(target); /* for mages, spells and magic school */