]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/rout.c
Update copyright notice
[empserver] / src / lib / commands / rout.c
index 7295226ef6ecc156319fdbb01d79df6fa4ba8762..7a32dfcbd59c29137891362c04db2640a2ac7300 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2010, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
  *  ---
  *
  *  rout.c: Show empire deliver routes
- * 
+ *
  *  Known contributors to this file:
- *     
+ *
  */
 
 #include <config.h>
 
-#include "misc.h"
-#include "player.h"
-#include "xy.h"
-#include "nat.h"
-#include "nsc.h"
-#include "sect.h"
+#include "commands.h"
 #include "item.h"
-#include "path.h"
-#include "file.h"
 #include "map.h"
-#include "commands.h"
 #include "optlist.h"
+#include "path.h"
 
 int
 rout(void)
@@ -61,49 +54,31 @@ rout(void)
     int ry;
     i_type i_del;
     int dir;
-    s_char *p;
-    s_char what[64];
-    s_char *str;
-    s_char buf1[1024];
+    char *p;
     /* Note this is not re-entrant anyway, so we keep the buffers
        around */
-    static s_char *mapbuf = (s_char *)0;
-    static s_char **map = (s_char **)0;
-    static s_char *buf = (s_char *)0;
+    static char *mapbuf = NULL;
+    static char **map = NULL;
     int i;
 
-    if ((ip = whatitem(player->argp[1], "What item? ")) == 0)
+    if (!(ip = whatitem(player->argp[1], "What item? ")))
        return RET_SYN;
     i_del = ip->i_uid;;
-    if (player->argp[2] == NULL) {
-       if ((str = getstring("(sects)? ", buf1)) == 0)
-           return RET_SYN;
-    } else {
-       str = player->argp[2];
-    }
-    if (*str == '*') {
-       sprintf(what, "%d:%d,%d:%d",
-               -WORLD_X / 2, WORLD_X / 2 - 1,
-               -WORLD_Y / 2, WORLD_Y / 2 - 1);
-       if (!snxtsct(&ns, what))
-           return RET_FAIL;
-    } else if (!snxtsct(&ns, str))
-       return RET_FAIL;
+    if (!snxtsct(&ns, player->argp[2]))
+       return RET_SYN;
     if (!mapbuf)
-       mapbuf = malloc((WORLD_Y * MAPWIDTH(3)) * sizeof(s_char));
+       mapbuf = malloc(WORLD_Y * MAPWIDTH(3));
     if (!map) {
-       map = malloc(WORLD_Y * sizeof(s_char *));
+       map = malloc(WORLD_Y * sizeof(char *));
        if (map && mapbuf) {
            for (i = 0; i < WORLD_Y; i++)
                map[i] = &mapbuf[MAPWIDTH(3) * i];
        } else if (map) {
            free(map);
-           map = (s_char **)0;
+           map = NULL;
        }
     }
-    if (!buf)
-       buf = malloc((MAPWIDTH(3) + 12) * sizeof(s_char));
-    if (!mapbuf || !map || !buf) {
+    if (!mapbuf || !map) {
        pr("Memory error, tell the deity.\n");
        logerror("malloc failed in rout\n");
        return RET_FAIL;
@@ -114,26 +89,21 @@ rout(void)
 
     natp = getnatp(player->cnum);
     xyrelrange(natp, &ns.range, &relrange);
-    memset(mapbuf, 0, ((WORLD_Y * MAPWIDTH(3))));
-    blankfill((s_char *)mapbuf, &ns.range, 3);
+    blankfill(mapbuf, &ns.range, 3);
     border(&relrange, "     ", " ");
 
     while (nxtsct(&ns, &sect)) {
        if (!player->owner)
            continue;
        p = &map[ns.dy][ns.dx * 2];
-       if ((dir = sect.sct_del[i_del] & 0x7) &&
-           nstr_exec(cond, ncond, &sect))
-           memcpy(p, routech[dir][0], 3);
+       dir = sect.sct_del[i_del] & 0x7;
+       if (dir && nstr_exec(cond, ncond, &sect))
+           memcpy(p, routech[dir], 3);
        p[1] = dchr[sect.sct_type].d_mnem;
     }
     for (row = 0, y = ns.range.ly; row < ns.range.height; y++, row++) {
        ry = yrel(natp, y);
-       memset(buf, 0, (MAPWIDTH(3) + 10));
-       sprintf(buf, "%4d ", ry);
-       memcpy(buf + 5, map[row], ns.range.width * 2 + 1);
-       sprintf(buf + 5 + ns.range.width * 2 + 1, " %-4d\n", ry);
-       pr("%s", buf);
+       pr("%4d %s %-4d\n", ry, map[row], ry);
        if (y >= WORLD_Y)
            y -= WORLD_Y;
     }