From bb5cd07ce5be7bbb420e26296a3592743a9189f5 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 25 Jan 2011 20:13:41 +0100 Subject: [PATCH] New relations_with() Relations checking with getrel() often needs a special case for "is same country". If you forget, you get behavior appropriate for a neutral foreign country, which is usually very wrong (see commit 16c68eb4 for an example). Unlike getrel(), relations_with() considers countries allied to themselves. Less dangerous. In fact, allied behavior is typically just right, so the special case isn't even needed. --- include/nat.h | 1 + src/lib/common/nat.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/nat.h b/include/nat.h index e8c0d736..f44d30d2 100644 --- a/include/nat.h +++ b/include/nat.h @@ -170,6 +170,7 @@ extern char *relatename(struct natstr *np, natid other); extern char *rejectname(struct natstr *np, natid other); extern char *natstate(struct natstr *np); extern int getrel(struct natstr *np, natid them); +extern int relations_with(natid, natid); extern int getrejects(natid them, struct natstr *np); extern int getcontact(struct natstr *np, natid them); extern void putrel(struct natstr *np, natid them, int relate); diff --git a/src/lib/common/nat.c b/src/lib/common/nat.c index e71e1cf8..1efc5b19 100644 --- a/src/lib/common/nat.c +++ b/src/lib/common/nat.c @@ -104,6 +104,16 @@ getrel(struct natstr *np, natid them) return np->nat_relate[them]; } +/* + * Return relations US has with THEM. + * Countries are considered allied to themselves. + */ +int +relations_with(natid us, natid them) +{ + return us == them ? ALLIED : getrel(getnatp(us), them); +} + int getrejects(natid them, struct natstr *np) {