[Freeciv-Dev] trunk doesn't compile

2008-11-19 Thread Christian Knoke

Aktualisiert zu Revision 15316.

make[3]: Entering directory `/home/chris/freeciv/svn/trunk/server'
if gcc -DHAVE_CONFIG_H -I. -I. -I..  -I../utility -I./../common -I./../ai
-I../common/aicore -I./generator -I./scripting
-DLOCALEDIR=\/usr/local/share/locale\
-DDEFAULT_DATA_PATH=\.:data:~/.freeciv:/usr/local/share/freeciv\  -Wall
-Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -g
-O2 -MT edithand.o -MD -MP -MF .deps/edithand.Tpo -c -o edithand.o
edithand.c; \
then mv -f .deps/edithand.Tpo .deps/edithand.Po; else rm -f
.deps/edithand.Tpo; exit 1; fi
edithand.c:39:22: error: edithand.h: Datei oder Verzeichnis nicht gefunden
edithand.c:64: warning: no previous prototype for ‘edithand_init’
edithand.c:80: warning: no previous prototype for ‘edithand_free’
make[3]: *** [edithand.o] Fehler 1
make[3]: Leaving directory `/home/chris/freeciv/svn/trunk/server'
make[2]: *** [all-recursive] Fehler 1
make[2]: Leaving directory `/home/chris/freeciv/svn/trunk/server'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/home/chris/freeciv/svn/trunk'
make: *** [all] Fehler 2

Christian

-- 
Christian Knoke* * *http://cknoke.de
* * * * * * * * *  Ceterum censeo Microsoft esse dividendum.

___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


Re: [Freeciv-Dev] trunk doesn't compile

2008-11-19 Thread Madeline Book
On 11/19/08, Christian Knoke [EMAIL PROTECTED] wrote:

 Aktualisiert zu Revision 15316.

 edithand.c:39:22: error: edithand.h: Datei oder Verzeichnis nicht gefunden

Sorry, my mistake. I forgot to add the new file in r15316. It
should be there now. :|


---
俺が悪いのだ。

___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


Re: [Freeciv-Dev] trunk doesn't compile

2008-11-19 Thread Christian Knoke
Du schriebst am 19. Nov um 13:48 Uhr:
 On 11/19/08, Christian Knoke [EMAIL PROTECTED] wrote:
 
  Aktualisiert zu Revision 15316.
 
  edithand.c:39:22: error: edithand.h: Datei oder Verzeichnis nicht gefunden
 
 Sorry, my mistake. I forgot to add the new file in r15316. It
 should be there now. :|

Yes, thank you.

Christian

-- 
Christian Knoke* * *http://cknoke.de
* * * * * * * * *  Ceterum censeo Microsoft esse dividendum.

___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] (PR#40571) Detected fatal error in nation.c line 262

2008-11-19 Thread Christian Knoke

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40571 


with rev. 15317 trunk GTK the attached save game crashes when I start the
game and press F3.

[EMAIL PROTECTED]:~$ civclient
open /dev/sequencer: Datei oder Verzeichnis nicht gefunden
0: nation_of_player() has NULL nation
0: Detected fatal error in nation.c line 262:
0: bad nation
civclient: shared.c:772: real_die: Zusicherung »0« nicht erfüllt.
Abgebrochen (core dumped)

Core was generated by `/usr/local/bin/civclient -d 3 -l civclient.log'.
Program terminated with signal 6, Aborted.
#0  0xb7f7b410 in ?? ()
(gdb) bt full
#0  0xb7f7b410 in ?? ()
No symbol table info available.
#1  0xbf805b98 in ?? ()
No symbol table info available.
#2  0x0006 in ?? ()
No symbol table info available.
#3  0x2104 in ?? ()
No symbol table info available.
#4  0xb769a811 in raise () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#5  0xb769bfb9 in abort () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#6  0xb7693fbf in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#7  0x08099d4d in real_die (file=0x81610f4 nation.c, line=262,
format=0x8161178 bad nation) at shared.c:772
ap = 0xbf805d4c DP \b\034
__PRETTY_FUNCTION__ = real_die
#8  0x080ab66f in nation_of_player (pplayer=0x8205044) at nation.c:262
__PRETTY_FUNCTION__ = nation_of_player
#9  0x08141d61 in build_row (it=0xbf805e88, i=3) at plrdlg.c:599
plr = (struct player *) 0x8205044
pixbuf = (GdkPixbuf *) 0x8205044
style = value optimized out
weight = value optimized out
k = 2
__PRETTY_FUNCTION__ = build_row
#10 0x08142167 in update_players_dialog () at plrdlg.c:710
plrno = 141673584
i = value optimized out
it = {stamp = 977691990, user_data = 0x95a2fe0, user_data2 = 0x0,
user_data3 = 0x0}
it_next = {stamp = -1082106200, user_data = 0xb7d9e7e0, user_data2 =
0x9590bf0, user_data3 = 0x816ee7f}
#11 0x08143050 in popup_players_dialog (raise=true) at plrdlg.c:525
No locals.
#12 0xb7d8a148 in gtk_item_get_type () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#13 0xb798ee1b in g_cclosure_marshal_VOID__VOID () from
/usr/lib/libgobject-2.0.so.0
No symbol table info available.
#14 0xb798198b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#15 0xb7991f2d in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
No symbol table info available.
#16 0xb7993429 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#17 0xb79935d9 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#18 0xb7e94a0d in gtk_widget_can_activate_accel () from
/usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#19 0xb798198b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#20 0xb7991f2d in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
No symbol table info available.
#21 0xb7993208 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#22 0xb79935d9 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#23 0xb7cc6f89 in gtk_accel_group_activate () from
/usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#24 0xb7cc708a in gtk_accel_groups_activate () from
/usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#25 0xb7ea212a in gtk_window_activate_key () from
/usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#26 0xb7ea219c in gtk_window_activate_key () from
/usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#27 0xb7da6250 in _gtk_marshal_BOOLEAN__BOXED () from
/usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#28 0xb797ff49 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#29 0xb798198b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#30 0xb799256f in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
No symbol table info available.
#31 0xb7993208 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#32 0xb79935d9 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#33 0xb7e8ff64 in gtk_widget_get_default_style () from
/usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#34 0xb7d9fc0a in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#35 0xb7da0e07 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#36 0xb7c39eea in _gdk_events_init () from /usr/lib/libgdk-x11-2.0.so.0
No symbol table info available.
#37 0xb790a731 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#38 0xb790d7a6 in g_main_context_check () from 

[Freeciv-Dev] (PR#40572) civclientrc file lost when drive is full

2008-11-19 Thread Christian Knoke

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40572 


Hello,

subject says it all, for trunk rev 15317 of GTK client.

Christian

-- 
Christian Knoke* * *http://cknoke.de
* * * * * * * * *  Ceterum censeo Microsoft esse dividendum.



___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] (PR#40571) Detected fatal error in nation.c line 262

2008-11-19 Thread Madeline Book

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40571 

 [chrisk - Wed Nov 19 20:14:53 2008]:
 
 
 with rev. 15317 trunk GTK the attached save game crashes when
 I start the game and press F3.

This is same as 40565. Patch in that ticket should fix it.


---
私の指がちょっと温かくならせて。

___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] (PR#40570) [Patch] marine explorers try to violate peace treaties and thus are stoped

2008-11-19 Thread Madeline Book

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40570 

 [EMAIL PROTECTED] - Wed Nov 19 07:45:23 2008]:
 
 Marine explorers stop if they try to travel to or trhough a marine 
 tile who's owner is at peace with the unit's owner.
 
 As a consequence the units are stoped and require player interaction 
 even though there are still unexplored reacheable tiles.

It would be helpful if you could post the savegame where this
behaviour occurs. This will also help others to test whether
your patch fixes it.


 The attached patch should fixe this issue in the vast majority of 
 cases. Only if ai_manage_explorer's best_title isn't reacheable does 
 the explorer stop, even if there are still other unexplored reachable 
 tiles.

The code in the patch seems alright, but the style could be
improved. Please follow the coding style guidelines at:

http://freeciv.wikia.com/wiki/Coding_Style

Basically, just make your code look like the rest of the source
code. In particular:
- Make a comment header for every new function.
- Do not put a space between the pointer star '*' and the
  function argument name.
- Line up multi-line function arguments to one column past the
  '(' after the function name, using spaces.
- Put a space after the 'if' keyword.
- Put a space after the the closing parenthesis of an 'if'
  condition.
- Do not put a space after the '!' operator.
- Do not use c++ style comments.
- Be sure to use an indentation width of 2 spaces in the code
  that you add.

I realize this is a lot for such a small patch, but most of the
time nobody wants to have to reformat other people's code just
so that they can put it in the repository. And were it to happen
that anybody could use their own style anytime they felt like
it, the source tree would become much harder to maintain over
time.


---
お役所仕事は、いただきます〜

___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] (PR#40573) [Editor] Tile bases property

2008-11-19 Thread Madeline Book

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40573 

Attached patch implements a property for viewing and
modifying bases on a tile in the property editor. Thus
also copy/paste mode is made to work for the base tool.
Hence the patch builds on the one in 40569.


Incidentally, just for the sake of putting it out there,
it seems to me that specials and bases are very similar
in how they are handled, at least from the point of view
of the data structures. It might therefore be beneficial
to generalize specials so that they are loaded from the
ruleset sort of like how bases are loaded now. This
would allow consistent handling of these kinds of game
entities (rather than having a separate bitvector for
each of them). Continuing along this line of reasoning,
I don't see why we should not include resources in
this group of meta-specials as well; a mechanism
similar to unit classes could be used to control whether
more than one is allowed on a single tile. Anyway, that
is just a random idea I had; if anyone cares to comment
or work on it feel free to cut-and-paste this into a new
ticket.


---
オッカムの剃刀の原点をご存知ですか。
 client/editor.c   |   33 +++-
 client/gui-gtk-2.0/editprop.c |   66 +++--
 common/packets.def|1 +
 server/edithand.c |   11 +++
 4 files changed, 106 insertions(+), 5 deletions(-)

diff --git a/client/editor.c b/client/editor.c
index ac24808..d5b89f8 100644
--- a/client/editor.c
+++ b/client/editor.c
@@ -1486,6 +1486,33 @@ void edit_buffer_copy(struct edit_buffer *ebuf, const struct tile *ptile)
 }
 
 /
+  Helper function to fill in an edit packet with the tile's current values.
+/
+static void fill_tile_edit_packet(struct packet_edit_tile *packet,
+  const struct tile *ptile)
+{
+  const struct resource *presource;
+  const struct terrain *pterrain;
+  const struct nation_type *pnation;
+
+  if (!packet || !ptile) {
+return;
+  }
+  packet-id = tile_index(ptile);
+  packet-specials = tile_specials(ptile);
+  packet-bases = tile_bases(ptile);
+
+  presource = tile_resource(ptile);
+  packet-resource = presource ? resource_number(presource) : -1;
+
+  pterrain = tile_terrain(ptile);
+  packet-terrain = pterrain ? terrain_number(pterrain) : -1;
+
+  pnation = map_get_startpos(ptile);
+  packet-startpos_nation = pnation ? nation_number(pnation) : -1;
+}
+
+/
   Helper function for edit_buffer_paste(). Do a single paste of the stuff set
   in the buffer on the virtual tile to the destination tile 'ptile_dest'.
 /
@@ -1522,12 +1549,14 @@ static void paste_tile(struct edit_buffer *ebuf,
   dsend_packet_edit_tile_resource(my_conn, x, y, value, 1);
   break;
 case EBT_SPECIAL:
-  tile_packet.id = tile_index(ptile_dest);
+  fill_tile_edit_packet(tile_packet, ptile_dest);
   tile_packet.specials = tile_specials(vtile);
   send_packet_edit_tile(my_conn, tile_packet);
   break;
 case EBT_BASE:
-  /* FIXME: Implement as property and send like specials. */
+  fill_tile_edit_packet(tile_packet, ptile_dest);
+  tile_packet.bases = tile_bases(vtile);
+  send_packet_edit_tile(my_conn, tile_packet);
   break;
 case EBT_UNIT:
   unit_list_iterate(vtile-units, vunit) {
diff --git a/client/gui-gtk-2.0/editprop.c b/client/gui-gtk-2.0/editprop.c
index 79a7dd3..b38eb2e 100644
--- a/client/gui-gtk-2.0/editprop.c
+++ b/client/gui-gtk-2.0/editprop.c
@@ -184,6 +184,7 @@ enum value_types {
   VALTYPE_BUILT_ARRAY,/* struct built_status[B_LAST] */
   VALTYPE_INVENTIONS_ARRAY,   /* bool[A_LAST] */
   VALTYPE_BV_SPECIAL,
+  VALTYPE_BV_BASES,
   VALTYPE_NATION,
   VALTYPE_TILE_VISION_DATA/* struct tile_vision_data */
 };
@@ -207,6 +208,7 @@ union propval_data {
   GdkPixbuf *v_pixbuf;
   struct built_status *v_built;
   bv_special v_bv_special;
+  bv_bases v_bv_bases;
   struct nation_type *v_nation;
   bool *v_inventions;
   struct tile_vision_data *v_tile_vision;
@@ -281,6 +283,7 @@ enum object_property_ids {
   OPID_TILE_XY,
   OPID_TILE_RESOURCE,
   OPID_TILE_SPECIALS,
+  OPID_TILE_BASES,
   OPID_TILE_VISION, /* tile_known and tile_seen */
 
   OPID_UNIT_IMAGE,
@@ -760,6 +763,9 @@ static const char *valtype_get_name(int valtype)
   case VALTYPE_BV_SPECIAL:
 return bv_special;
 break;
+  case VALTYPE_BV_BASES:
+return bv_bases;
+break;
   case VALTYPE_NATION:
 return nation;
 break;
@@ -863,9 +869,6 @@ static int propval_as_string(struct propval *pv, char *buf, int buflen)
 
   case VALTYPE_BV_SPECIAL:
 

[Freeciv-Dev] (PR#40529) command /take - sends garbage text if it fails

2008-11-19 Thread Madeline Book

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40529 

 [book - Tue Oct 14 02:25:33 2008]:
 
 If a detached or observer connection does /take - when the
 game is running and there are no free players to attach to,
 instead of an error message the client receives invalid utf8
 causing the chatline to display a completely blank line and
 a gtk warning:
 
 (civclient:4943): Gtk-CRITICAL **: gtk_text_buffer_emit_insert: 
 assertion `g_utf8_validate (text, len, NULL)' failed

Attached patch fixes the is_allowed_to_take() function
to always set the reason string when it returns FALSE
so that the above sending of an uninitialized string
does not occur.

Also, a few other little things found during testing
are fixed:
- attach_connection_to_player() sets the player name
  to the connection username for a completely new player
  created in pregame (avoids noname in take command
  message).
- Added NB warning to is_allowed_to_take() comment
  header.
- Added fairly detailed reason strings for the auto-
  taking case in is_allowed_to_take().
- Added periods to the ends of a few take command
  messages.



---
「なりたくない」と返事してもいいですか。
diff --git a/server/connecthand.c b/server/connecthand.c
index b6072cd..13d1407 100644
--- a/server/connecthand.c
+++ b/server/connecthand.c
@@ -486,12 +486,21 @@ bool attach_connection_to_player(struct connection *pconn,
 pplayer-user_turns = 0; /* reset for a new user */
 pplayer-is_connected = TRUE;
 
-/* If we are attached to a player in pregame from
- * find_uncontrolled_player above, then that player
- * will be an AI created by aifill. So turn off AI
- * mode if it is still on. */
-if (server_state() == S_S_INITIAL  pplayer-ai.control) {
-  pplayer-ai.control = FALSE;
+if (server_state() == S_S_INITIAL) {
+  /* If we are attached to a player in pregame from
+   * find_uncontrolled_player above, then that player
+   * will be an AI created by aifill. So turn off AI
+   * mode if it is still on. */
+  if (pplayer-ai.control) {
+pplayer-ai.control = FALSE;
+  }
+  /* If we are attached to a completely new player in
+   * pregame, set its name to the connection's user
+   * name so that the take command message will not
+   * display noname. */
+  if (0 == strcmp(player_name(pplayer), ANON_PLAYER_NAME)) {
+sz_strlcpy(pplayer-name, pconn-username);
+  }
 }
   }
 
diff --git a/server/stdinhand.c b/server/stdinhand.c
index d9d92d9..d568ae4 100644
--- a/server/stdinhand.c
+++ b/server/stdinhand.c
@@ -2633,7 +2633,10 @@ static bool set_command(struct connection *caller, char *str, bool check)
 }
 
 /**
- check game.allow_take for permission to take or observe a player
+  Check game.allow_take for permission to take or observe a player.
+
+  NB: If this function returns FALSE, then callers expect that 'msg' will
+  be filled in with a NULL-terminated string containing the reason.
 **/
 static bool is_allowed_to_take(struct player *pplayer, bool will_obs, 
char *msg)
@@ -2655,7 +2658,36 @@ static bool is_allowed_to_take(struct player *pplayer, bool will_obs,
 }
   } else if (!pplayer  !will_obs) {
 /* Auto-taking a new player */
-return game.info.is_new_game  (S_S_INITIAL == server_state());
+
+if (!game.info.is_new_game || server_state() != S_S_INITIAL) {
+  mystrlcpy(msg, _(You cannot take a new player at this time.),
+MAX_LEN_MSG);
+  return FALSE;
+}
+
+if (player_count() = game.info.max_players) {
+  my_snprintf(msg, MAX_LEN_MSG,
+  /* TRANS: Do not translate maxplayers. */
+  PL_(You cannot take a new player because 
+  the maximum of %d player has already 
+  been reached (maxplayers setting).,
+  You cannot take a new player because 
+  the maximum of %d players has already 
+  been reached (maxplayers setting).,
+  game.info.max_players),
+  game.info.max_players);
+  return FALSE;
+}
+
+if (player_count() = player_slot_count()) {
+  mystrlcpy(msg, _(You cannot take a new player because there 
+   are no free player slots.),
+MAX_LEN_MSG);
+  return FALSE;
+}
+
+return TRUE;
+
   } else if (is_barbarian(pplayer)) {
 if (!(allow = strchr(game.allow_take, 'b'))) {
   if (will_obs) {
@@ -2969,7 +3001,7 @@ static bool take_command(struct connection *caller, char *str, bool check)
   /* taking your own player makes no sense. */
   if ((NULL != pplayer  !pconn-observer  pplayer == pconn-playing)
|| (NULL == pplayer  !pconn-observer  NULL != 

[Freeciv-Dev] (PR#40529) command /take - sends garbage text if it fails

2008-11-19 Thread Madeline Book

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40529 

 [book - Thu Nov 20 05:31:37 2008]:
 
 Attached patch fixes the is_allowed_to_take() function
 to always set the reason string when it returns FALSE
 so that the above sending of an uninitialized string
 does not occur.

And here's the S2_1 version.


---
喋るな、蛆虫。

diff --git a/server/stdinhand.c b/server/stdinhand.c
index 0d7c7b4..5195a5c 100644
--- a/server/stdinhand.c
+++ b/server/stdinhand.c
@@ -2639,7 +2639,10 @@ static bool set_command(struct connection *caller, char *str, bool check)
 }
 
 /**
- check game.allow_take for permission to take or observe a player
+  Check game.allow_take for permission to take or observe a player.
+
+  NB: If this function returns FALSE, then callers expect that 'msg' will
+  be filled in with a NULL-terminated string containing the reason.
 **/
 static bool is_allowed_to_take(struct player *pplayer, bool will_obs, 
char *msg)
@@ -2661,7 +2664,36 @@ static bool is_allowed_to_take(struct player *pplayer, bool will_obs,
 }
   } else if (!pplayer  !will_obs) {
 /* Auto-taking a new player */
-return game.info.is_new_game  (S_S_INITIAL == server_state());
+
+if (!game.info.is_new_game || server_state() != S_S_INITIAL) {
+  mystrlcpy(msg, _(You cannot take a new player at this time.),
+MAX_LEN_MSG);
+  return FALSE;
+}
+
+if (player_count() = game.info.max_players) {
+  my_snprintf(msg, MAX_LEN_MSG,
+  /* TRANS: Do not translate maxplayers. */
+  PL_(You cannot take a new player because 
+  the maximum of %d player has already 
+  been reached (maxplayers setting).,
+  You cannot take a new player because 
+  the maximum of %d players has already 
+  been reached (maxplayers setting).,
+  game.info.max_players),
+  game.info.max_players);
+  return FALSE;
+}
+
+if (player_count() = MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS) {
+  mystrlcpy(msg, _(You cannot take a new player because there 
+   are no free player slots.),
+MAX_LEN_MSG);
+  return FALSE;
+}
+
+return TRUE;
+
   } else if (is_barbarian(pplayer)) {
 if (!(allow = strchr(game.allow_take, 'b'))) {
   if (will_obs) {
@@ -2973,7 +3005,7 @@ static bool take_command(struct connection *caller, char *str, bool check)
   /* taking your own player makes no sense. */
   if ((pplayer  !pconn-observer  pconn-player == pplayer)
   || (!pplayer  !pconn-observer  pconn-player)) {
-cmd_reply(CMD_TAKE, caller, C_FAIL, _(%s already controls %s),
+cmd_reply(CMD_TAKE, caller, C_FAIL, _(%s already controls %s.),
   pconn-username,
   player_name(pconn-player));
 goto end;
@@ -2987,7 +3019,7 @@ static bool take_command(struct connection *caller, char *str, bool check)
(game.info.nplayers = game.info.max_players
   || game.info.nplayers - game.info.nbarbarians = game.playable_nations)) {
 cmd_reply(CMD_TAKE, caller, C_FAIL,
-  _(There is no free player slot for %s),
+  _(There is no free player slot for %s.),
   pconn-username);
 goto end;
   }
@@ -3098,7 +3130,7 @@ static bool take_command(struct connection *caller, char *str, bool check)
   send_conn_info(pconn-self, game.est_connections);
 
   if (res) {
-cmd_reply(CMD_TAKE, caller, C_OK, _(%s now controls %s (%s, %s)), 
+cmd_reply(CMD_TAKE, caller, C_OK, _(%s now controls %s (%s, %s).),
   pconn-username,
   player_name(pplayer), 
   is_barbarian(pplayer)
@@ -3110,7 +3142,7 @@ static bool take_command(struct connection *caller, char *str, bool check)
   ? _(Alive)
   : _(Dead));
   } else {
-cmd_reply(CMD_TAKE, caller, C_FAIL, _(%s failed to attach to any player),
+cmd_reply(CMD_TAKE, caller, C_FAIL, _(%s failed to attach to any player.),
   pconn-username);
   }
 
___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev