diff --git a/src/creport.c b/src/creport.c index 9c2d2c423..c077db5f0 100644 --- a/src/creport.c +++ b/src/creport.c @@ -361,10 +361,10 @@ static int cr_race(variant var, char *buffer, const void *userdata) static int cr_alliance(variant var, char *buffer, const void *userdata) { const alliance *al = (const alliance *)var.v; + unused_arg(userdata); if (al != NULL) { sprintf(buffer, "%d", al->id); } - unused_arg(userdata); return 0; } @@ -372,6 +372,7 @@ static int cr_skill(variant var, char *buffer, const void *userdata) { const faction *report = (const faction *)userdata; skill_t sk = (skill_t)var.i; + unused_arg(userdata); if (sk != NOSKILL) sprintf(buffer, "\"%s\"", translate(mkname("skill", skillnames[sk]), skillname(sk, @@ -384,6 +385,7 @@ static int cr_skill(variant var, char *buffer, const void *userdata) static int cr_order(variant var, char *buffer, const void *userdata) { order *ord = (order *)var.v; + unused_arg(userdata); if (ord != NULL) { char cmd[ORDERSIZE]; char *wp = buffer; @@ -393,13 +395,11 @@ static int cr_order(variant var, char *buffer, const void *userdata) *wp++ = '\"'; for (rp = cmd; *rp;) { - switch (*rp) { - case '\"': - case '\\': + char r = *rp++; + if (r == '\"' || r == '\\') { *wp++ = '\\'; - default: - *wp++ = *rp++; } + *wp++ = r; } *wp++ = '\"'; *wp++ = 0; diff --git a/src/give.c b/src/give.c index 6d1d525e8..e41ee19f5 100644 --- a/src/give.c +++ b/src/give.c @@ -165,8 +165,8 @@ struct order *ord) else if (n == 0) { int reserve = get_reservation(src, itype); if (reserve) { - msg_feedback(src, ord, "nogive_reserved", "resource reservation", - itype->rtype, reserve); + ADDMSG(&src->faction->msgs, msg_feedback(src, ord, "nogive_reserved", "resource reservation", + itype->rtype, reserve)); return -1; } error = 36; @@ -403,7 +403,7 @@ void give_unit(unit * u, unit * u2, order * ord) int maxt = max_transfers(); assert(u); - if (!rule_transfermen() && u->faction != u2->faction) { + if (!rule_transfermen() && u2 && u->faction != u2->faction) { cmistake(u, ord, 74, MSG_COMMERCE); return; } @@ -618,8 +618,6 @@ void give_cmd(unit * u, order * ord) * item-liste der unit, darum continue vor pointerumsetzten */ if (give_item(itm->number, itm->type, u, u2, ord) == 0) { given = true; - if (*itmp != itm) - continue; continue; } } diff --git a/src/magic.c b/src/magic.c index a9aa682ec..62fca7314 100644 --- a/src/magic.c +++ b/src/magic.c @@ -480,7 +480,7 @@ void pick_random_spells(faction * f, int level, spellbook * book, int num_spells } } - if (spellno < maxspell) { + if (sbe && spellno < maxspell) { if (!f->spellbook) { f->spellbook = create_spellbook(0); } diff --git a/src/names.c b/src/names.c index 71c4c6504..f608764d8 100644 --- a/src/names.c +++ b/src/names.c @@ -238,9 +238,6 @@ static const char *dragon_name(const unit * u) if (num_postfix == 0) num_postfix = -1; } - if (num_postfix <= 0) { - return NULL; - } if (u) { region *r = u->region; @@ -264,9 +261,16 @@ static const char *dragon_name(const unit * u) } } - rnd = num_postfix / 6; - rnd = (rng_int() % rnd) + ter * rnd; - + if (num_postfix <=0) { + return NULL; + } + else if (num_postfix < 6) { + rnd = rng_int() % num_postfix; + } + else { + rnd = num_postfix / 6; + rnd = (rng_int() % rnd) + ter * rnd; + } sprintf(zText, "dragon_postfix_%d", rnd); str = locale_getstring(default_locale, zText); diff --git a/src/util/log.c b/src/util/log.c index 33ca16abc..29b0e1151 100644 --- a/src/util/log.c +++ b/src/util/log.c @@ -15,6 +15,7 @@ without prior permission by the authors of Eressea. #include "unicode.h" #include +#include #include #include #include @@ -76,27 +77,24 @@ cp_convert(const char *format, char *buffer, size_t length, int codepage) void log_rotate(const char *filename, int maxindex) { - int n; if (_access(filename, 4) == 0) { char buffer[2][MAX_PATH]; - int src = 1; + int dst = 1; assert(strlen(filename) < sizeof(buffer[0]) - 4); - for (n = 0; n < maxindex; ++n) { - sprintf(buffer[0], "%s.%d", filename, n); - if (_access(filename, 0) != 0) { - break; + + sprintf(buffer[dst], "%s.%d", filename, maxindex); + while (maxindex > 0) { + int err, src = 1 - dst; + sprintf(buffer[src], "%s.%d", filename, --maxindex); + err = rename(buffer[src], buffer[dst]); + if (err != 0) { + log_error("log rotate %s: %s", buffer[dst], strerror(errno)); } + dst = src; } - if (_access(buffer[0], 0) == 0) { - unlink(buffer[0]); + if (rename(filename, buffer[dst]) != 0) { + log_error("log rotate %s: %s", buffer[dst], strerror(errno)); } - while (n--) { - int dst = 1 - src; - sprintf(buffer[src], "%s.%d", filename, n); - rename(buffer[src], buffer[dst]); - src = dst; - } - rename(filename, buffer[1 - src]); } }