]> git.pond.sub.org Git - empserver/commit
Fix do_map()'s misuse of snxtsct() for testing argument syntax
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 9 Apr 2011 12:57:42 +0000 (14:57 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 14 Apr 2011 18:21:22 +0000 (20:21 +0200)
commit16daa4007cdf4736c97dbc8ff186e77f343eac15
treee80b258e21a8e5d30cd6f88700ccaffc8a561770
parentbaee0744ff38eb6232162c138c56f4839d8520d2
Fix do_map()'s misuse of snxtsct() for testing argument syntax

It assumes snxtsct() fails only when the argument can't be parsed.  It
can also fail when the condition argument has errors.  `map # ?xxx'
first complains about xxx, then maps around ship#0.  Broken since
Chainsaw 2 introduced smap, pmap and lmap.

Use sarg_type() to recognize sectors vs. unit argument.  `map # ?xxx'
now fails as it should.

Subtle side effect: do_map() no longer prompts for argument "",
because snxtsct() is now guarded by sarg_type().  Impact on callers:

* display_region_map() is not affected, because it never passes "".

* map() passes on "" arguments.  Change it to prompt in that case.
  Consistent with how other commands behave.  No functional change.

* do_unit_move() passes on "" arguments.  Keep it that way.  This
  changes navigate and march sub-commands 'M' and 'B' not to prompt
  for "" arguments, which is consistent with sub-command 'm' of move,
  test and transport.
src/lib/commands/map.c
src/lib/subs/maps.c