/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
*
* ---
*
- * See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
- * related information and legal notices. It is expected that any future
- * projects/authors will amend these files as needed.
+ * See files README, COPYING and CREDITS in the root of the source
+ * tree for related information and legal notices. It is expected
+ * that future projects/authors will amend these files as needed.
*
* ---
*
* cons.c: Consider a loan or treaty
- *
+ *
* Known contributors to this file:
- *
+ *
*/
-#include "misc.h"
-#include "player.h"
+#include <config.h>
+
+#include "commands.h"
#include "loan.h"
-#include "nat.h"
-#include "treaty.h"
#include "news.h"
-#include "xy.h"
-#include "nsc.h"
-#include "file.h"
-#include "commands.h"
#include "optlist.h"
+#include "treaty.h"
/*
* Things common to a loan or treaty.
struct ltcomstr {
int type; /* EF_LOAN or EF_TREATY */
int num; /* number */
- s_char *name; /* "loan" or "treaty" */
- s_char *Name; /* "Loan" or "Treaty" */
+ char *name; /* "loan" or "treaty" */
+ char *Name; /* "Loan" or "Treaty" */
natid proposer; /* country offering */
natid proposee; /* country offered to */
natid mailee; /* who gets mail about it */
- s_char op; /* 'a', 'd', or 'p' */
+ char op; /* 'a', 'd', or 'p' */
union {
struct lonstr l; /* the loan */
struct trtstr t; /* the treaty */
static int
cons_choose(struct ltcomstr *ltcp)
{
- s_char *p;
+ static int lon_or_trt[] = { EF_LOAN, EF_TREATY, EF_BAD };
+ char *p;
struct lonstr *lp;
struct trtstr *tp;
- s_char prompt[128];
- s_char buf[1024];
+ char prompt[128];
+ char buf[1024];
memset(ltcp, 0, sizeof(*ltcp));
if (getstarg(player->argp[1], "loan or treaty? ", buf) == 0)
return RET_SYN;
- ltcp->type = ef_byname(buf);
+ ltcp->type = ef_byname_from(buf, lon_or_trt);
switch (ltcp->type) {
case EF_TREATY:
if (!opt_TREATIES) {
}
ltcp->mailee = (ltcp->proposer == player->cnum)
? ltcp->proposee : ltcp->proposer;
- while ((p =
- getstarg(player->argp[3], "Accept, decline or postpone? ",
- buf)) && *p) {
- if (*p == 'a' || *p == 'd' || *p == 'p')
- break;
- player->argp[3] = 0;
- }
- if (p == 0 || *p == 0)
+ p = getstarg(player->argp[3], "Accept, decline or postpone? ", buf);
+ if (!p || (*p != 'a' && *p != 'd' && *p != 'p'))
return RET_SYN;
ltcp->op = *p;
return RET_OK;
return RET_OK;
}
if (!getloan(ltcp->num, lp)) {
- pr("loan_accept: can't read loan; get help!\n");
- return RET_SYS;
+ logerror("loan_accept: can't read loan");
+ pr("can't read loan; get help!\n");
+ return RET_FAIL;
}
if (lp->l_status == LS_FREE) { /* other guy retratcted already */
late(ltcp);
}
/* check to see if a loan already exists */
snxtitem_all(&nstr, EF_LOAN);
- while (nxtitem(&nstr, (s_char *)&loan)) {
+ while (nxtitem(&nstr, &loan)) {
if (loan.l_status == LS_SIGNED && loan.l_lonee == lp->l_loner
&& (loan.l_loner == lp->l_lonee)) {
pr("He already owes you money - make him repay his loan!\n");
(void)time(&lp->l_lastpay);
lp->l_duedate = lp->l_ldur * 86400 + lp->l_lastpay;
lp->l_status = LS_SIGNED;
- if (!putloan(ltcp->num, (s_char *)lp)) {
+ if (!putloan(ltcp->num, lp)) {
pr("Problem writing lp->to disk; get help!\n");
return RET_FAIL;
}
lp = <cp->u.l;
if (!getloan(ltcp->num, lp)) {
- pr("Decline: can't read loan; get help!\n");
- return RET_SYS;
+ logerror("loan_decline: can't read loan");
+ pr("can't read loan; get help!\n");
+ return RET_FAIL;
}
/* loan got accepted somehow between now and last time we checked */
if (lp->l_status == LS_SIGNED) {
}
lp->l_status = LS_FREE;
if (!putloan(ltcp->num, lp)) {
- pr("loan_decline: can't write loan; get help!\n");
- return RET_SYS;
+ logerror("loan_decline: can't write loan");
+ pr("can't write loan; get help!\n");
+ return RET_FAIL;
}
decline(ltcp);
return RET_OK;
return RET_OK;
}
if (!gettre(ltcp->num, tp)) {
- pr("Accept: can't read treaty; get help!\n");
- return RET_SYS;
+ pr("treaty_accept: can't read treaty");
+ pr("can't read treaty; get help!\n");
+ return RET_FAIL;
}
if (tp->trt_status == TS_FREE) { /* treaty offer withdrawn */
late(ltcp);
}
tp->trt_status = TS_SIGNED;
if (!puttre(ltcp->num, tp)) {
+ pr("treaty_accept: can't write treaty");
pr("Problem saving treaty; get help!\n");
- return RET_SYS;
+ return RET_FAIL;
}
accpt(ltcp);
pr("Treaty in effect until %s", ctime(&tp->trt_exp));
tp = <cp->u.t;
if (!gettre(ltcp->num, tp)) {
- pr("Decline: can't read treaty; get help!\n");
- return RET_SYS;
+ logerror("treaty_decline: can't read treaty");
+ pr("can't read treaty; get help!\n");
+ return RET_FAIL;
}
/* treaty got signed somehow between now and last time we read it */
if (tp->trt_status == TS_SIGNED) {
}
tp->trt_status = TS_FREE;
if (!puttre(ltcp->num, tp)) {
+ logerror("treaty_decline: can't write treaty");
pr("Problem saving treaty; get help!\n");
- return RET_SYS;
+ return RET_FAIL;
}
decline(ltcp);
return RET_OK;