DELTA 18081 895 816
SVN  ‘X‘_ €< ‡ ‘€<server.ENDREP
DELTA 17772 40078 484
SVN  ð_ðt ßS ˜ ‘	ßV                        ENDREP
DELTA 17900 0 627
SVN  ‚Öi‚ØC‡T †o €m «	ˆ@› Ž%³d£ Å>Â… ‚q‚ˆ€‚ ƒM‚Œ   m‚u€ƒ KÑ~ PÒ? ¢‚´Nutility */
#include "bitvector.h"
#include "fcintl.h"
#include "log.h"
#include "mem.h"
#include "rand.h"
#include "support.h"

/* common */
#include "game.h"
#include "government.h"
#include "map.h"
#include "packets.h"
#include "playerNULL != group && !nation_isnation_group_name_translation(groupint ii = 0;
  nation_leader_list_iterate(nation_leaders(nation_by_number
                                            (selected_nation)), pleader) {
    items = g_list_prepend(items, (gpointer) nation_leader_name(pleader));
    i++;
  } nation_leader_list_iterate_endistruct nation_leader *pleader;
  const gchar *name;

  name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(races_leader)->entry));

  if ((pleader = nation_leader_by_name(nation_by_number(selected_nation),
                                       name))) {
    selected_sex = nation_leader_is_male(pleader);
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(races_sex[selected_sex]),
                                 TRUEENDREP
DELTA 18082 19180 167
SVN  †  †  UŽ: ¥@ š „Èc¥Z O„è=€‚{ s…€y€$ ‰„ôn O„è=€‚{ s…€y€s Æ…„! M„è=€„+ ‚K…ÏG¤ ‚0…Ò  Ë4…ÔL€$city_report_dialog_popdownconst struct nation_leader_list *leaders =
        nation_leaders(nation_by_number(pSetup->nation));
    const struct nation_leader *pleader;

    pSetup->selected_leader++;
    pleader = nation_leader_list_get(leaders, pSetup->selected_leader);

    /* change leadaer sex */
    if (pSetup->leader_sex != nation_leader_is_male(pleader)) {
      change_sex_callback(NULL);
    }
nation_leader_name(pleader));
    
    FC_FREE(pLeaderName);
    pLeaderName = fc_strdup(nation_leader_name(pleader));

    if (nation_leader_list_size(leaders) - 1const struct nation_leader_list *leaders =
        nation_leaders(nation_by_number(pSetup->nation));
    const struct nation_leader *pleader;

    pSetup->selected_leader--;
    pleader = nation_leader_list_get(leaders, pSetup->selected_leader);

    /* change leadaer sex */
    if (pSetup->leader_sex != nation_leader_is_male(pleader)) {
      change_sex_callback(NULL);
    }
nation_leader_name(pleader));

    FC_FREE(pLeaderName);
    pLeaderName = fc_strdup(nation_leader_name(pleader));
const struct nation_leader_list *leaders =
      nation_leaders(nation_by_number(pSetup->nation));
  const struct nation_leader *pleader;

  pSetup->selected_leader = fc_rand(nation_leader_list_size(leaders));
  pleader = nation_leader_list_get(leaders, pSetup->selected_leader);
  copy_chars_to_string16(pSetup->pName_Edit->string16,
                         nation_leader_name(pleader));

  FC_FREE(pLeaderName);
  pLeaderName = fc_strdup(nation_leader_name(pleader));

  /* initialize leader sex */
  pSetup->leader_sex = nation_leader_is_male(pleader)1 < nation_leader_list_size(leaders)nation_leader_list_size(leaders)OW;
  i = (area.h - adj_size(43) - h) / 2;
  setup_vertical_widgets_position(TARGETS_COL,
	area.x + adj_size(10),
	area.y + i - adj_size(4),
	  0, 0, pNationDlg->pB†  ­~¬Z  ¬Z$ENDREP
DELTA 18101 341 223
SVN  ‚ñL‚òe‡ ‚°n  ‚‚±M€„+ †‚¶Q€‚X ²L‚¿ j = 0;
  nation_leader_list_iterate(nation_leaders(race), pleader) {
    entry =
      XtVaCreateManagedWidget(nation_leader_name(pleader),
                              smeBSBObjectClass,
                              races_leader_pick_popupmenu,
                              NULL);
    XtAddCallback(entry, XtNcallback, races_leader_pick_callback,
                  INT_TO_XTPOINTER(local_nation_count * j
                                   + nation_index(race)));
    j++;
  } nation_leader_list_iterate_end;

  races_leader_set_values(race, fc_rand(jconst struct nation_leader *pleader =
      nation_leader_list_get(nation_leaders(race), lead);

  XtVaSetValues(races_leader, XtNstring, nation_leader_name(pleader), NULL);
  XawTextSetInsertionPoint(races_leader,
                           strlen(nation_leader_name(pleader)));

  races_sex_buttons_set_current(!nation_leader_is_male(pleader)ENDREP
DELTA 18270 13093 5111
SVN  †  †  += †‹- €H ‚† €ˆD n†™%€T Q…Ç~› L¾  ƒ†œ|€‚Bfor (i = 0; i < packet->ngroups; i++) {
    struct nation_group *pgroup;

    pgroup = nation_group_new(packet->groups[i]);
    fc_assert(NULL != pgroup);
    fc_assert(i == nation_group_index(pgroup)acket)
{
  struct nation_type *pnation = nation_by_number(packet->id);
  int i;

  fc_assert_ret_msg(NULL != pnation, "Bad nation %d.", packet->id);

  name_set(&pnation->adjective, packet->adjective);
  name_set(&pnation->noun_plural, packet->noun_plural);
  sz_strlcpy(pnation->flag_graphic_str, packet->graphic_str);
  sz_strlcpy(pnation->flag_graphic_alt, packet->graphic_alt);
  pnation->city_style = packet->city_style;
  for (i = 0; i < packet->leader_count; i++) {
    (void) nation_leader_new(pnation, packet->leader_name[i],
                             packet->leader_is_male[i]);
  }

  pnation->is_available = packet->is_available;
  pnation->is_playable = packet->is_playable;
  pnation->barb_type = packet->barbarian_type;

  if ('\0' != packet->legend[0]) {
    pnation->legend = fc_strdup(_(packet->legend));
  } else {
    pnation->legend = fc_strdup("");
  }

  for (i = 0; i < packet->ngroups; i++) {
    struct nation_group *pgroup = nation_group_by_number(packet->groups[i]);

    if (NULL != pgroup) {
      nation_group_list_append(pnation->groups, pgroup);
    } elsenation), packet->groups[i]);
    }
  }

  tileset_setup_nation_flag(tileset, pnation
  Handle city style packet(cs->reqs.size == packet->reqs_count);
  cs->replaced_by = packet->replaced_by;

  name_set(&cs->name, packet->name);
  sz_strlcpy(cs->graphic, packet->graphic);
  sz_strlcpy(cs->graphic_alt, packet->graphic_alt);
  sz_strlcpy(cs->oceanic_graphic, packet->oceanic_graphic);
  sz_strlcpy(cs->oceanic_graphic_alt, packet->oc†  ÝPÛ  Û‚BENDREP
DELTA 18026 0 3446
SVN  ËËWG ‹Z €G ¿6‹Y#define MAX_NUM_LEADERS MAX_NUM_ITEMS
#define MAX_NUM_NATION_GROUPS 128ENDREP
DELTA 17856 602 360
SVN  ÃNÄ(E Ü$ ° ©sÜ• ½L†homecaughtunits   = GAME_DEFAULT_HOMECAUGHTUNITSnation_groups_init();ENDREP
DELTA 13038 767695 12393
SVN  ‚zõ…|†m ‡# €„N Nˆ~¸ @…@€ƒ" Xò €Q @…@€‡" WÁ3 Wm€n ƒ“2€ 5“J½ ¨:€z EÜµ "¢<€ EÜ³ 8¢9€y EÜµ .«/€N ­%œ …S«,£ ƒ±r€L Rò  @…@€E Xò ¤ @…@€# EÜ« HÕ|€ƒ EÜ€J @…@€w EÜ€_ @…@€‚M JÜz¶ @…@€ EÜµ @…@€ Rò €„v @…@€ ]ò µ @…@€W EÜ€Q @…@€ƒJ EÜ€N @…@€p EÜ´ @…@€‚s EÜ€H @…@€‚_ EÜ€E @…@€U EÜ¼ @…@€ EÜ€K @…@€‚C EÜ€F @…@€7 ]ò ” @…@€E EÜ RÉZ  ‚KË;  ƒsÎ EÜ§ @…@€ EÜ€ @…@€ EÜš SÒ{€Y Rò ‘ @…@€ Rò ¨ EÕ€T EÜ¶ EÕ€] EÜµ EÕ€h EÜ· EÕ€ V¡@¦ EÕ€‚ EÜ‘ sÕQ€„1 DÝ  xÕL€ƒi EÜ pÒ^€I DÝ ½ @…@€u EÜ­ @…@ Næ8  bç} ð=µ EÜ¯ @…@€ EÜ¯ @…@€n EÜ wèR€… EÜ§ JÏ/‡ jô8‘ a¡@ Bö€t JÜz€e EÕ€2 EÜ€M ¨:€ EÜ€D ¨:€ EÜ ú €‚B Rò — @…@€$ Rò ¨ EÕ€` EÜ¶ EÕ€i EÜµ EÕ€t EÜ· EÕ€# V¡@¦ EÕ€‚; EÜ³ @…@€E EÜ …ý.€C EÜ€S @…@€‡/* utility */
#include "fcintl.h"
#include "log.h"
#include "mem.h"
#include "support.h"

/* common */
#include "connection.h"
#include "game.h"
#include "government.h"
#include "player.h"
#include "tech.h"

#include "nation.h"


/* Nation group structure. */
struct nation_group {
  struct name_translation name;

  union {
    struct {
      /* Only used in the server (./server/). */

      /* How much the AI will try to select a nation in the same group */
      int match;
    } server;

    struct {
      /* Only used at the client. */
      /* Nothing yet. */
    } client;
  };
};*************
  Runs action if the nation is not valid.
************/
#ifdef DEBUG
#define NATION_CHECK(pnation, action)                                       \
    fc_assert_action(nation_check(pnation,                                  \
                                  log_do_output_for_level(LOG_ERROR),       \
                                  __FILE__, __FUNCTION__, __LINE__), action)
#else
#define NATION_CHECK(pnation, action) /* Do Nothing. */
#endif /* DEBUG */s TRUE if the nation is valid, else, print an error message and
  returns FALSE.
************/
static inline bool nation_check(const struct nation_type *pnation,
                                bool do_output, const char *file,
                                const char *function, int line)
{
  if (0 == nation_count()) {
    if (do_output) {
      do_log(file, function, line, TRUE, LOG_ERROR,
             "Function called before nations setup.");
    }
    return FALSE;
  }
  if (NULL == pnation) {
    if (do_output) {
      do_log(file, function, line, TRUE, LOG_ERROR,
             "This function has NULL nation argument.");
    }
    return FALSE;
  }
  if (pnation->item_number < 0
      || pnation->item_number >= nation_count()
      || &nations[nation_index(pnation)] != pnation) {
    if (do_output) {
      do_log(file, function, line, TRUE, LOG_ERROR,
             "This function has bad nation number %d (count %d).",
             pnation->item_number, nation_count());
    }
    return FALSE;nation_by_translated_name(const char *name)
{
  nations_iterate(pnation) {
    if (0 == strcmp(nation_adjectivnation_by_rule_name(const char *name)
{
  const char *qname = Qn_(name);

  nations_iterate(pnation) {
    if (0 == fc_strcasecmp(nation_rule_name(pnation), q the (untranslated) rule name of the nation (adjective form).rule_name(const struct nation_type *pnation)
{
  NATION_CHECK(pnation, return "");
  return rule_name(&pnation->adjective)*************
  Return the (translated) adjective foradjective_translation(const struct nation_type *pnation)
{
  NATION_CHECK(pnation, return "");
  return name_translation(&pnation->adjective)*************
  Return the (translated) plural nounconst struct nation_type *pnation)
{
  NATION_CHECK(pnation, return "");
  return name_translation(&pnation->noun_plural)*************
  Return the (translated) adjective foradjective_for_player(const struct player *pplayer)
{
  return nation_adjectivethe (translated) plural nounNATION_CHECK(nation, return FALSE);NATION_CHECK(nation, return NOT_A_BARBARIAN);
  return nation->barb_type;
}
Nation leader.
************/
struct nation_leader {
  char *name;
  bool is_male;
};s the list the nation leader names.
************/
const struct nation_leader_list *
nation_leaders(const struct nation_type *pnation)
{
  NATION_CHECK(pnation, return NULL);
  return pnation->leaders*************
  Create a new leader for the*************/
struct nation_leader *nation_leader_new(struct nation_type *pnation,
                                        const char *name, bool is_male)
{
  struct nation_leader *pleader;

  NATION_CHECK(pnation, return NULL);
  pleader = fc_malloc(sizeof(*pleader));
  pleader->name = fc_strdup(name);
  pleader->is_male = is_male;

  nation_leader_list_append(pnation->leaders, pleader);
  return pleader*************
  Destroy a nation leader created with nation_leader_new().
************/
static void nation_leader_destroy(struct nation_leader *pleader)
{
  free(pleader->name);
  free(pleader)*************
  Returns the nation leader structure which match 'name' or NULL if not
  found.
************/
struct nation_leader *
nation_leader_by_name(const struct nation_type *pnation, const char *name)
{
  NATION_CHECK(pnation, return NULL);
  nation_leader_list_iterate(pnation->leaders, pleader) {
    if (0 == fc_strcasecmp(name, pleader->name)) {
      return pleader;
    }
  } nation_leader_list_iterate_end;
  return*************
  Return the name of the nation leader.
************/
const char *nation_leader_name(const struct nation_leader *pleader)
{
  fc_assert_ret_val(NULL != pleader, NULL);
  return pleader->name*************
  Return the sex of the nation leader.
************/
bool nation_leader_is_male(const struct nation_leader *pleader)
{
  fc_assert_ret_val(NULL != pleader, TRUE);
  return pleader->is_male;
}
Nation default cities. The nation_city structure holds information about
  a default choice for the city name. The 'name' field is, of course, just
  the name for the city. The 'river' and 'terrain' fields are entries
  recording whether the terrain is present near the city - we give higher
  priority to cities which have matching terrain. In the case of a river we
  only care if the city is _on_ the river, for other terrain features we
  give the bonus if the city is close to the terrain.

  This is controlled through the nation's ruleset like this:
    cities = "Washington (ocean, river, swamp)", "New York (!mountains)"
************/
struct nation_city {
  char *name;
  enum nation_city_preference river;
  enum nation_city_preference terrain[MAX_NUM_TERRAINS];
};default cities of the nation (server only function).
************/
const struct nation_city_list *
nation_cities(const struct nation_type *pnation)
{
  NATION_CHECK(pnation, return NULL);
  fc_assert_ret_val(is_server(), NULL);

  return pnation->server.default_cities*************
  Create a new default city for the nation (server only function).
************/
struct nation_city *nation_city_new(struct nation_type *pnation,
                                    const char *name)
{
  struct nation_city *pncity;

  NATION_CHECK(pnation, return NULL);
  fc_assert_ret_val(is_server(), NULL);

  fc_assert(0 == NCP_NONE);
  pncity = fc_calloc(1, sizeof(*pncity));       /* Set NCP_NONE. */
  pncity->name = fc_strdup(name);

  nation_city_list_append(pnation->server.default_cities, pncity);
  return pncity*************
  Destroy a default nation city created with nation_city_new().
************/
static void nation_city_destroy(struct nation_city *pncity)
{
  free(pncity->name);
  free(pncity)*************
  Reverts the nation city preference.
************/
enum nation_city_preference
nation_city_preference_revert(enum nation_city_preference prefer)
{
  switch (prefer) {
  case NCP_DISLIKE:
    return NCP_LIKE;
  case NCP_NONE:
    return NCP_NONE;
  case NCP_LIKE:
    return NCP_DISLIKE;
  }

  log_error("%s(): Wrong nation_city_preference variant (%d).",
            __FUNCTION__, prefer);
  return NCP_NONE*************
  Set the default nation city preference for the terrain.
************/
void nation_city_set_terrain_preference(struct nation_city *pncity,
                                        const struct terrain *pterrain,
                                        enum nation_city_preference prefer)
{
  fc_assert_ret(NULL != pncity);
  fc_assert_ret(NULL != pterrain);
  pncity->terrain[terrain_index(pterrain)] = prefer*************
  Set the default nation city preference about rivers.
************/
void nation_city_set_river_preference(struct nation_city *pncity,
                                      enum nation_city_preference prefer)
{
  fc_assert_ret(NULL != pncity);
  pncity->river = prefer*************
  Return the name of the default nation city.
************/
const char *nation_city_name(const struct nation_city *pncity)
{
  fc_assert_ret_val(NULL != pncity, NULL);
  return pncity->name*************
  Return the default nation city preference for the terrain.
************/
enum nation_city_preference
nation_city_terrain_preference(const struct nation_city *pncity,
                               const struct terrain *pterrain)
{
  fc_assert_ret_val(NULL != pncity, NCP_DISLIKE);
  fc_assert_ret_val(NULL != pterrain, NCP_DISLIKE);
  return pncity->terrain[terrain_index(pterrain)]*************
  Return the default nation city preference for rivers.
************/
enum nation_city_preference
nation_city_river_preference(const struct nation_city *pncity)
{
  fc_assert_ret_val(NULL != pncity, NCP_DISLIKE);
  return pncity->river;
}
nation of a player.
************/
struct nation_type *nation_of_player(const struct player *pplayer)
{
  fc_assert_ret_val(NULL != pplayer, NULL);
  NATION_CHECK(pplayer->nation, return NULL);
  return pplayer->nationfc_assert_ret_val(pcity != NULL,fc_assert_ret_val(punit != NULL,nations + nation***********
  Return the nation index.
**********/
Nation_type_id nation_number(const struct nation_type *pnation)
{
  fc_assert_ret_val(NULL != pnation, -1);
  return pnation->item_number***********
  Return the nation index.

  Currently same as nation_number(), paired with nation_count()
  indicates use as an array index.
**********/
Nation_type_id nation_index(const struct nation_type *pnation)
{
  fc_assert_ret_val(NULL != pnation, -1);
  return pnation - nations*************
  Return the*************/
Nation_type_id nation_count(void)
{
  return game.control.nation_count;
}
Nation iterator.
************/
struct nation_iter {
  struct iterator vtable;
  struct nation_type *p, *end;
};
#define NATION_ITER(p) ((struct nation_iter *)(p))Implementation of iterator 'sizeof' func*************/
size_t nation_iter_sizeof(void)
{
  return sizeof(struct nation_iter)*************
  Implementation of iterator 'next' func*************/
static void nation_iter_next(struct iterator *iter)
{
  NATION_ITER(iter)->p++*************
  Implementation of iterator 'get' func*************/
static void *nation_iter_get(const struct iterator *iter)
{
  return NATION_ITER(iter)->p*************
  Implementation of iterator 'valid' func*************/
static bool nation_iter_valid(const struct iterator *iter)
{
  struct nation_iter *it = NATION_ITER(iter);
  return it->p < it->enImplementation of iterator 'init' func*************/
struct iterator *nation_iter_init(struct nation_iter *it)
{
  it->vtable.next = nation_iter_next;
  it->vtable.get = nation_iter_get;
  it->vtable.valid = nation_iter_valid;
  it->p = nations;
  it->end = nations + nation_count();
  return ITERATOR(it)*************
  A*************/
static void nation_init(struct nation_type *pnation)
{
  memset(pnation, 0, sizeof(*pnation));

  pnation->item_number = pnation - nations;
  pnation->leaders = nation_leader_list_new_full(nation_leader_destroy);
  pnation->groups = nation_group_list_new();

  if (is_server()) {
    pnation->server.default_cities =
        nation_city_list_new_full(nation_city_destroy);
    pnation->server.civilwar_nations = nation_list_new();
    pnation->server.parent_nations = nation_list_new();
    pnation->server.conflicts_with = nation_list_new();
  }*************
 *************/
static void nation_free(struct nation_type *pnation)
{
  free(pnation->legend);
  nation_leader_list_destroy(pnation->leaders);
  nation_group_list_destroy(pnation->groups);

  if (is_server()) {
    nation_city_list_destroy(pnation->server.default_cities);
    nation_list_destroy(pnation->server.civilwar_nations);
    nation_list_destroy(pnation->server.parent_nations);
    nation_list_destroy(pnation->server.conflicts_with);
  }

  memset(pnation, 0, sizeof(*pnation))*************
 *************/
void nations_alloc(int num)
{
  int i;

  nations = fc_malloc(sizeof(*nations) * num);
  game.control.nation_count = num;

  for (i = 0; i < num; i++) {
    nation_init(nations + i);
  }*************
  De-allocate the currently allocated nations.
************/
void nations_free(void)
{
  int i;

  if (NULL == nations) {
    return;
  }

  for (i = 0; i < game.control.nation_count; i++) {
    nation_free(nations + i);
  }

  free(nations);
  nations = NULL;
  game.control.nation_count = 0*************
  Returns nation's city style.
NATION_CHECK(pnation, return 0);nation_group_count(void)
{
  return num_nation_groups*************
  Return the nation group index.
************/
int nation_group_index(const struct nation_group *pgroup)
{
  fc_assert_ret_val(NULL != pgroup, -1);
  return pgroup - nation_groups*************
  Return the nation group index.
************/
int nation_group_number(const struct nation_group *pgroup)
{
  return nation_group_index(pgroup)*************/
struct nation_group *nation_group_new(const char *name)
{
  struct nation_group *pgroup;

  if (MAX_NUM_NATION_GROUPS <= num_nation_groups) {
    log_error("Too many groups of nations (%d is the maximum).",
              MAX_NUM_NATION_GROUPS);
    return NULL;
  }

  /* Print the name and truncate if needed. */
  pgroup = nation_groups + num_nation_groups;
  name_set(&pgroup->name, name);
  if (NULL != nation_group_by_rule_name(rule_name(&pgroup->name))) {
    log_error("Duplicate nation group name %s.", rule_name(&pgroup->name));
    return NULL;
  }

  if (is_server()) {
    pgroup->server.match = 0;
  }
  num_nation_groups++;

  return pgroup*************
  Return the nation groupgroup *nation_groups + ination_group_by_rule_name(const char *name)
{
  const char *qname = Qn_(name);

  nation_groups_iterate(pgroup) {
    if (0 == fc_strcasecmp(rule_name(&pgroup->name), qname)) {
      return pgroup;
    }
  } nation_groups_iterate_end;

  return*************
  Set how much the AI will try to select a nation in the same group.
  Server only func*************/
void nation_group_set_match(struct nation_group *pgroup, int match)
{
  fc_assert_ret(is_server());
  fc_assert_ret(NULL != pgroup);
  pgroup->server.match = match*************
  Return the (untranslated) rule name of a group of the nation.group_rule_name(const struct nation_group *pgroup)
{
  fc_assert_ret_val(NULL != pgroup, NULL);
  return rule_name(&pgroup->name)*************
  Return the translated name of a group of the nation.group_name_translation(const struct nation_group *pgroup)
{
  fc_assert_ret_val(NULL != pgroup, NULL);
  return name_translation(&pgroup->name)nation_is_in_group(const struct nation_type *pnation,
                        const struct nation_group *pgroup)
{
  fc_assert_ret_val(NULL != pnation, FALSE);

  nation_group_list_iterate(pnation->groups, agroup) {
    if (agroup == pgroup) {
      return TRUE;
    }
  } nation_group_list_iterate_end;
  return FALSE;
}
Nation group iterator.
************/
struct nation_group_iter {
  struct iterator vtable;
  struct nation_group *p, *end;
};
#define NATION_GROUP_ITER(p) ((struct nation_group_iter *)(p))Implementation of iterator 'sizeof' func*************/
size_t nation_group_iter_sizeof(void)
{
  return sizeof(struct nation_group_iter)*************
  Implementation of iterator 'next' func*************/
static void nation_group_iter_next(struct iterator *iter)
{
  NATION_GROUP_ITER(iter)->p++*************
  Implementation of iterator 'get' func*************/
static void *nation_group_iter_get(const struct iterator *iter)
{
  return NATION_GROUP_ITER(iter)->p*************
  Implementation of iterator 'valid' func*************/
static bool nation_group_iter_valid(const struct iterator *iter)
{
  struct nation_group_iter *it = NATION_GROUP_ITER(iter);
  return it->p < it->enImplementation of iterator 'init' func*************/
struct iterator *nation_group_iter_init(struct nation_group_iter *it)
{
  it->vtable.next = nation_group_iter_next;
  it->vtable.get = nation_group_iter_get;
  it->vtable.valid = nation_group_iter_valid;
  it->p = nation_groups;
  it->end = nation_groups + nation_group_count();
  return ITERATOR(it)*************
  Initializes all nation group data.
************/
void nation_groups_init(void)
{
  num_nation_groups = 0ing == pplayer)
	           || pconn->access_level >= ALLOW_CTRL)))*************
  Returns how much two nations looks good in the same game.
  Negative return value means that we really really don't want these
  nations together. 'ignore_conflicts' has no effect on client side
************/
int nations_match(const struct nation_type *pnation1,
                  const struct nation_type *pnation2,
                  bool ignore_conflicts)
{
  int sum = 0;

  fc_assert_ret_val(is_server(), -1);
  NATION_CHECK(pnation1, return -1);
  NATION_CHECK(pnation2, return -1);

  /* Scottish is a good civil war nation for British */
  if (!ignore_conflicts) {
    nation_list_iterate(pnation1->server.conflicts_with, pnation0) {
      if (pnation0 == pnation2) {
        return -1;
      }
    } nation_list_iterate_end;

    nation_list_iterate(pnation2->server.conflicts_with, pnation0) {
      if (pnation0 == pnation1) {
        return -1;
      }
    } nation_list_iterate_end;
  }

  nation_group_list_iterate(pnation1->groups, pgroup) {
    if (nation_is_in_group(pnation2, pgroup)) {
      sum += pgroup->server.match;
    }
  } nation_group_list_iterate_end;

  return sum;
}
ENDREP
DELTA 17402 18751 218
SVN  ·ÄCª …f   …a™ G†y€‹3 ‚’(€ dœ.€‡g ƒkO» †¡€‹S iª`€ˆ [±q€ ƒs´utility */
#include "iterator.h"NO_NATION_SELECTED (NULL)ATION_NONE -1
#define NATION_ANY  -2

/* Nation city (server only). */
struct nation_city;

enum nation_city_preference {
  NCP_DISLIKE = -1,
  NCP_NONE = 0,
  NCP_LIKE = 1
};

#define SPECLIST_TAG nation_city
#define SPECLIST_TYPE struct nation_city
#include "speclist.h"
#define nation_city_list_iterate(citylist, pncity)                          \
  TYPED_LIST_ITERATE(struct nation_city, citylist, pncity)
#define nation_city_list_iterate_end LIST_ITERATE_END

/* Nation leader. */
struct nation_leader;
#define SPECLIST_TAG nation_leader
#define SPECLIST_TYPE struct nation_leader
#include "speclist.h"
#define nation_leader_list_iterate(leaderlist, pleader)                     \
  TYPED_LIST_ITERATE(struct nation_leader, leaderlist, pleader)
#define nation_leader_list_iterate_end LIST_ITERATE_END

/* Nation group. */
struct nation_group;
#define SPECLIST_TAG nation_group
#define SPECLIST_TYPE struct nation_group
#include "speclist.h"
#define nation_group_list_iterate(grouplist, pgroup)                        \
  TYPED_LIST_ITERATE(struct nation_group, grouplist, pgroup)
#define nation_group_list_iterate_end LIST_ITERATE_END

/* Nation list. */
struct nation_type;
#define SPECLIST_TAG nation
#define SPECLIST_TYPE struct nation_type
#include "speclist.h"
#define nation_list_iterate(nationlist, pnation)                            \
  TYPED_LIST_ITERATE(struct nation_type, nationlist, pnation)
#define nation_list_iterate_end LIST_ITERATE_ENDstruct nation_leader_list *leaders;
  int city_style;
  char *legend;				/* may be empty */

  bool is_playable;
  enum barbarian_type barb_type/* Groups which this nation is assigned to */
  struct nation_group_list *groups;

  struct player *player; /* Who's using the nation, or NULL. */

  union {
    struct {
      /* Only used in the server (./ai/ and ./server/). */

      struct nation_city_list *default_cities;

      /* 'civilwar_nations' is a list of the nations that can fork from
       * this one. 'parent_nations' is the inverse of this list. */
      struct nation_list *civilwar_nations;
      struct nation_list *parent_nations;

      /* Nations which we don't want in the same game. For example,
       * British and English. */
      struct nation_list *conflicts_with;

      /* Items given to this nation at game start. */
      int init_techs[MAX_NUM_TECH_LIST];
      int init_buildings[MAX_NUM_BUILDING_LIST];
      struct government *init_government;
      struct unit_type *init_units[MAX_NUM_UNIT_LIST];
    } server;

    struct {
      /* Only used at the client. */
      /* Nothing yet. */
    } client;
  };nation_by_rule_name(const char *name);
struct nation_type *const struct nation_leader_list *
nation_leaders(const struct nation_type *pnation);
struct nation_leader *nation_leader_new(struct nation_type *pnation,
                                        const char *name, bool is_male);
struct nation_leader *
nation_leader_by_name(const struct nation_type *pnation, const char *name);
const char *nation_leader_name(const struct nation_leader *pleader);
bool nation_leader_is_male(const struct nation_leader *pleader);

/* General nation city accessor functions. */
struct terrain;

const struct nation_city_list *
nation_cities(const struct nation_type *pnation);
struct nation_city *nation_city_new(struct nation_type *pnation,
                                    const char *name);

const char *nation_city_name(const struct nation_city *pncity);

enum nation_city_preference
nation_city_preference_revert(enum nation_city_preference prefer);
void nation_city_set_terrain_preference(struct nation_city *pncity,
                                        const struct terrain *pterrain,
                                        enum nation_city_preference prefer);
void nation_city_set_river_preference(struct nation_city *pncity,
                                      enum nation_city_preference prefer);
enum nation_city_preference
nation_city_terrain_preference(const struct nation_city *pncity,
                               const struct terrain *pterrain);
enum nation_city_preference
nation_city_river_preference(const struct nation_city *pncitynew(const char *name);
struct nation_group *nation_group_by_number(int id);
struct nation_group *nation_group_by_rule_name(const char *name);

void nation_group_set_match(struct nation_group *pgroup, int match);

const char *nation_group_rule_name(const struct nation_group *pgroup);
const char *nation_group_name_translation(const struct nation_group *pgroup);

bool nation_is_in_group(const struct nation_type *pnation,
                        const struct nation_group *pgroup);

/* Initialization and iteration */
void nation_groups_init(void);
void nation_groups_free(void);

struct nation_group_iter;
size_t nation_group_iter_sizeof(void);
struct iterator *nation_group_iter_init(struct nation_group_iter *it);

#define nation_groups_iterate(NAME_pgroup)                                  \
  generic_iterate(struct nation_group_iter, struct nation_group *,          \
                  NAME_pgroup, nation_group_iter_sizeof,                    \
                  nation_group_iter_init)
#define nation_groups_iterate_end generic_iterate_end
int nations_match(const struct nation_type *pnation1,
                  const struct nation_type *pnation2,
                  bool ignore_conflicts);
ENDREP
DELTA 18078 0 16498
SVN  ‚Ôq‚×8„ î ™ ­î «h›8€S ´*Ç3€n ’Gýp€ •`‚‘£ v‚¢y€ ®‚¦SBOOL unreachable_protectscaption[MAX_LEN_MSG];
  STRING headline[MAX_LEN_MSG];
  STRING lines[MAX_LEN_PACKET
  UINT8 leader_count;
  STRING leader_name[MAX_NUM_LEADERS:leader_count][MAX_LEN_NAME];
  BOOL leader_is_maleSINT8 border_sq;
  SINT8 vision_main_sq;
  SINT8 vision_invis_sq;
  BV_BASE_FLAGS flags;
  BV_BASES conflicts;
  STRING helptext[MAX_LEN_PACKET]PACKET_SERVER_SETTING_BITWISE = 170UINT16 val;
  UINT16 default_val;
  UINT8 bits_num;
  STRING support_names[64:bits_num][MAX_LEN_NAME];
  STRING pretty_names[64:bitENDREP
DELTA 15815 15314 40042
SVN  ‚ñ‚çƒh®I …`  N…t€ G  ƒ>’4€c ˆ—m „vŸw€z …O¥H€o ƒ«n€y ^¯W€m dÇ0 “#³€m +Ç0€) 3×6€b „Ù,€
 HÞ:€} bó~ Ž.ðM€T q„? ‚
€. q„? ‚"‹€2 q„? ‚_c ’I€
 `×8 Œi•;€v ‡£€H b×6 B«3€ƒg <®9€H x¼?‡ zÙy‡ W·u ‚l²l€H y¼?‚ {Ùx „1·n€H †¼?€H x¼?„ Ùtˆ MÌ| ƒvÆ.€H q¼? †&Ë5€H q¼?† zÙy ‚ Ól€U y®|€H q¼? ¢Ùc€l ü,¬ ˆ\‚Œh€‚ ™‚–*€m G  ‚°'€W f¼? ‚8‚ÄX †‚Ç‚ ‚i‚Í ‚Ð€ G  ƒ‚Ò[€„D K‚Ú €y $‚Ü$Š y‚ÝM€„= %‚â?Š <‚ãiŠ !‚å*Š z‚æPŠ I‚çO€Y G  i‚êy– Qå@ ƒ:‚íK/* utility *//* common */
#include "government.h"
#include "improvement.h"
#include "map.h"
#include "specialist.h"

#include "requirements.h"

source.kind = universals_n_by_name(kind, fc_strcasecmp);
  if (!universals_n_is_valid(source.kind))
      = unit_class_flag_id_by_name(value, fc_strcasecmp);
    if (unit_class_flag_id_is_valid(source.value.unitclassflag)
      = terrain_class_by_name(value, fc_strcasecmp);
    if (terrain_class_is_valid(source.value.terrainclass)
      = terrain_alteration_by_name(value, fc_strcasecmp);
    if (terrain_alteration_is_valid(source.value.terrainalter)COUNT:
    break;
  }

  /* If we reach here there's been an error. */
  source.kind = universals_n_invalid()COUNT:
    break;
  }

  /* If we reach here there's been an error. */
  source.kind = universals_n_invalid()COUNT:
    break;
  }

  /* If we reach here there's been an error. */
  fc_assert_msg(FALSE, "universal_number(): invalid source kind %d.",
                source->kindthe invalid element for enum universal_n on error. Passing in a
  NULL type is considered VUT_NONEby_name(range, fc_strcasecmp);
  if (!req_range_is_valid(req.range)) {
    switch (req.source.kind) {
    case VUT_NONE:
    case VUT_COUNCOUNT:
    break;
  }

  if (invalid) {
    log_error("Invalid requirement %s | %s | %s | %s | %s",
              type, range, survives ? "survives" : "",
              negated ? "negated" : "", value);
    req.source.kind = universals_n_invalid();
  }
is_built(building)
            || great_wonder_is_destroyed(building) ? 1 : 0);
  } else {
    /* TRANS: Obscure ruleset error. */
    log_error(_("World-ranged requirements are only supported "
                "great_wonder_is_built(building) ? 1 : 0);
  } else {
    /* TRANS: Obscure ruleset error. */
    log_error(_("World-ranged requirements are only supported "
                "wonder_is_built(pplayer, building) ? 1 : 0);
  } else {
    /* TRANS: Obscure ruleset error. */
    log_error(_("Player-ranged requirements are only supported "
                "/* TRANS: Obscure ruleset error. */
    log_error(_("Island-ranged requirements are only supported "
                "for wonders."));
  }/* TRANS: Obscure ruleset error. */
      log_error(_("Surviving requirements are only supported "
                  "COUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", range                             enum req_range range,
                             Tech_type_id tech,
                             enum req_problem_type prob_type)
{
  switch (range) {
  case REQ_RANGE_PLAYER:
    /* If target_player is NULL and prob_type RPT_POSSIBLE, then it will
     * consider the advance is in range. */
    if (NULL != target_player) {
      return TECH_KNOWN == player_invention_state(target_player, tech);
    } else {
      return RPT_POSSIBLE == prob_type;
    }COUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", rangespecialspecialCOUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", rangeilCOUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", rangeCOUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", rangebasebase_typCOUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", rangeCOUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", rangenationreturn (NULL != nation->player
            && (survives || nation->player->is_alive))COUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid range %d.", range                            advance_number(req->source.value.advance),
                            prob_typecontrolled
      && target_player->ai_commonlog_error("is_req_active(): citytile %d not supported.",
                  req->source.value.citytile);
        return FALSE;
      }
    } else {
      eval = FALSE;
    }
    break;
  case VUT_COUNT:
    log_error("is_req_active(): invalid source kind %d.", req->source.kindCOUNT:
    break;
  }
  fc_assert_msg(FALSE, "Invalid source kind %d.", req->source.kind);
  return TRUE;
}

COUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid source kind %d.", psource1->kindcase VUT_MINYEARidname(psource->value.terrainalter);
  case VUT_COUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid source kind %d.", psource->kind);
  return NULL;
}

fc_strlcat(buf, _("(none)"), bufsz);
    return buf;
  case VUT_ADVANCE:
    fc_strlcat(buf, advance_name_translation(psource->value.advance), bufsz);
    return buf;
  case VUT_GOVERNMENT:
    fc_strlcat(buf, government_name_translation(psource->value.govern),
               bufsz);
    return buf;
  case VUT_IMPROVEMENT:
    fc_strlcat(buf, improvement_name_translation(psource->value.building),
               bufsz);
    return buf;
  case VUT_SPECIAL:
    fc_strlcat(buf, special_name_translation(psource->value.special), bufsz);
    return buf;
  case VUT_TERRAIN:
    fc_return buf;
  case VUT_NATION:
    fc_strlcat(buf, nation_adjective_translation(psource->value.nation),
               bufsz);
    return buf;
  case VUT_UTYPE:
    fc_strlcat(buf, utype_name_translation(psource->value.utype), bufsz);
    return bufreturn bufreturn buf;
  case VUT_UCFLAG:
    cat_snprintf(buf, bufsz, _("\"%s\" units"),
                 /* flag names are never translated */
                 unit_class_flag_id_name(psource->value.unitclassflag));
    return buf;
  case VUT_OTYPE:
    /* FIXME */
    fc_strlcat(buf, get_output_name(psource->value.outputtype), bufsz);
    return buf;
  case VUT_SPECIALIST:
    fc_strlcat(buf, specialist_name_translation(psource->value.specialist), bufsz);
    return buf;
  case VUT_MINSIZE:
    cat_snprintf(buf, bufsz, _("Size %d"),
		 psource->value.minsize);
    return bufreturn bufreturn bufreturn bufreturn bufreturn buf;
  case VUT_CITYTILE:
    fc_strlcat(buf, _("City center tile"), bufsz);
    return buf;
  case VUT_COUNT:
    break;
  }

  fc_assert_msg(FALSE, "Invalid source kind %d.", psource->kind);
  return buf;
}

s_n_name(psource->kindENDREP
DELTA 17621 42474 2178
SVN  ©_ª#/g Š|  g‹§ ŒŒ|€p „U™a¼ bžf‡ T Hˆ †{¢(… €8©'/* server/advisors */
#include "advdatasz_strlcpy(barbarians->name,
                   pick_random_player_name(nation_of_player(barbarians)));
        sz_strlcpy(barbarians->name, pick_random_player_name(nation)server.ntrolledall_cENDREP
DELTA 18270 19061 2142
SVN  …ÇT…Í ­ }  G  ™!‘@€‚ w¬W€1 x®2› &¯-€‚3 sÀ €ƒ OÃ?€Q I?€‚6 ZŽ4€‚W I?€†# VÃ? —xÑ€s P„Ç € oõU€j ï7 …	ðF€†z Nü3€‡2 þ2€„N PÃ? ±Yˆe‡ ƒ‚º>************
  Returns the priority of the city name at the given position, using its
  own internal algorithm.  Lower priority values are more desired, and all
  priorities are non-negative.

  This function takes into account game.natural_city_names, and should be
 ***********/
static int evaluate_city_name_priority(struct tile *ptile,
                                       const struct nation_city *pncity,
                                enum nation_city_preferencenation_city_river_preference(pncity);
  if (!tile_has_special(ptile, S_RIVER)) {
    goodness = nation_city_preference_revert(goodness);
  }

  switch (goodness) {
  case NCP_DISLIKE:
    priority *= mult_factor;
    break;
  case NCP_NONE:
    break;
  case NCP_LIKE:
    priority /= mult_factor;
    breaknation_city_terrain_preference(pncity, pterrain);
    if (!is_terrain_near_tile(ptile, pterrain, TRUE)) {
      goodness = nation_city_preference_revert(goodness);
    }
    switch (goodness) {
    case NCP_DISLIKE:
      priority *= mult_factor;
      break;
    case NCP_NONE:
      break;
    case NCP_LIKE:
      priority /= mult_factor;
    }
  } terrain_type_iterate_end;

  return (int) priority;**
  Checks if a city name belongs to default city names of a particular
  player*****/
static bool is_default_city_name(const char *name, struct player *pplayer)
{
  nation_city_list_iterate(nation_cities(nation_of_player(pplayer)),
                           pncity) {
    if (0 == fc_strcasecmp(name, nation_city_name(pncity))) {
      return TRUE;
    }
  } nation_city_list_iterate_end;*******
  Searches through a city name list (a struct nation_city array) to pick
  the best available city name, and returns a pointer to it. The function
  checks if the city name is available and calls
  evaluate_city_name_priority() to determine the priority of the city name.
  If the list has no valid entries in it, NULL will be returned*****/
static const char *search_for_city_name(struct tile *ptile,
                                        const struct nation_city_list *
                                        default_cities,
                                        struct player *pplayer)
{
  int choice = 0, priority, best_priority = -1;
  const char *name, *best_name = NULL;

  nation_city_list_iterate(default_cities, pncity) {
    name = nation_city_name(pncity);
    if (NULL == game_find_city_by_name(name)
        && is_allowed_city_name(pplayer, name, NULL, 0)) {
      priority = evaluate_city_name_priority(ptile, pncity, choice++);
      if (-1 == best_priority || priority < best_priority) {
        best_priority = priority;
        best_name = name;
      }
    }
  } nation_city_list_iterate_end;

  return best_name;************
  Come up with a default name when a new city is about to be built. Handle
  running out of names etc. gracefully. Maybe we should keeptrack of which
  names have been rejected by the player, so that we do not suggest them
  againconst char *city_name_suggestion(struct player *pplayer, struct tile *ptile)
{
  struct nation_type *pnation = nation_of_player(pplayer);
  const char *name;
  /* First try default city names. */
  name = search_for_city_name(ptile, nation_cities(pnation), pplayer);
  if (NULL != name) {
    log_debug("Default city name found: %s.", name);
    return name;
  }

  /* Not found... Let's try */
  {
    struct nation_type *nation_list[nation_count()];
    bool nations_selected[nation_count()];
    int queue_size = 1, i = 0, index;

    memset(nations_selected, 0, sizeof(nations_selected));
    nation_list[0] = pnation;
    nations_selected[nation_index(pnation)] = TRUE;

    while (i < nation_count()) {
      for (; i < queue_size; i++) {

        if (0 < i) {
          /* Pick a random nation from the queue. */
          const int which = i + fc_rand(queue_size - i);
          struct nation_type *tmp = nation_list[i];

          nation_list[i] = nation_list[which];
          nation_list[which] = tmp;

          pnation = nation_list[i];
          log_debug("Looking through %s.", nation_rule_name(pnation));
          name = search_for_city_name(ptile, nation_cities(pnation), pplayer);

          if (NULL != name) {
            return name;
          }
        }

    nation_list_iterate(pnation->server.civilwar_nations, n) {
          index = nation_index(n);
          if (!nations_selected[index]) {
            nation_list[queue_size] = n;
            nations_selected[index] = TRUE;
            queue_size++;
            log_debug("Child %s.", nation_rule_name(n));
          }
        } nation_list_iterate_end;

        /* Append the nation's parent nations into the search tree. */
        nation_list_iterate(pnation->server.parent_nations, n) {
          index = nation_index(n);
          if (!nations_selected[index]) {
            nation_list[queue_size] = n;
            nations_selected[index] = TRUE;
            queue_size++;
            log_debug("Parent %s.", nation_rule_name(n));
          }
        } nation_list_iterate_end;
      }

      /* Still not found; append all remaining nations. */
      nations_iterate(n) {
        index = nation_index(n);
        if (!nations_selected[indexMisc nation %s.", nation_rule_name(n));
        }
      } nations_iterate_end;
    }
  }

  /* Not found in rulesets, make a default name. */
  {
    static char tempname[MAX_LEN_NAME];
    int i;

    log_debug("City name not found in rulesets.");
    for (i = 1; i <= map_num_tiles(); i++ ) {
      fc_snprintf(tempname, MAX_LEN_NAME, _("City no. %d"), i);
      if (NULL == game_find_city_by_name(tempname)) {
        return tempname;
      }
    }

    fc_assert_msg(FALSE, "Failed to generate a city name.");
    sz_strlcpy(tempname, _("A poorly-named city"));
    return tempname;
  }server.ENDREP
DELTA 16436 33126 39056
SVN  ‚Ø-‚ëlƒŸ  …f ¿ ‚†"ˆ ¢?ˆ€a A— €„x Tä@€c A— €ƒt Tä@€g A— €… Tä@€a A— €„< Zä@ ƒLª`ˆ ‚!º@ ƒh°t° ‡
¶z² K¶z ƒÀV ‚®r ‚{Æ d³x· 8¶z ‚7Í\ ‚®r ‚mÒ1 d³x² #¶z MÙK… ƒ_Û€q ;à€ †0âS— ¢g… b» ‚të ,†; ‚oï2 tõ:Š Oö< „}ô €h Œú) ‹u†;… ˜’/‚ †ªJ… ¥;°^‚ ‰`Ö‚ ßy€ vâ'ª bã9… ƒå „>è?ƒ G  Líq… Zï<› cßy lò“ ƒqóƒ œE÷ f©|¥ A—  ƒT‚•+¨ fÆ2 š[‚š ˆ{‚´t a¼  …Y‚¾H… ‹y‚Ä „ …`‚Ð… ‚7‚Õvlimits.h> /* USHRT_MAX */

/* utility */
#include "bitvector.h"researchBase function to edit the terrain property of a tile. Returns TRUE if
  the terrain has changed.
***********/
static bool edit_tile_terrain_handling(struct tile *ptile,
                                       struct terrain *pterrain,
                                       bool send_tile_info)
{
  struct terrain *old_terrain = tile_terrain(ptile);

  if (old_terrain == pterrain
      || (terrain_has_flag(pterrain, TER_NO_CITIES)
          && NULL != tile_city(ptile))) {
    return FALSE;
  }

  tile_change_terrain(ptile, pterrain);
  if (need_to_fix_terrain_change(old_terrain, pterrain)) {
    hash_insert(unfixed_tile_table, ptile, ptile);
  }

  if (send_tile_info) {
    update_tile_knowledge(ptile);
  }

  return TRUE;Base function to edit the resource property of a tile. Returns TRUE if
  the resource has changed.
***********/
static bool edit_tile_resource_handling(struct tile *ptile,
                                        struct resource *presource,
                                        bool send_tile_info)
{
  if (presource == tile_resource(ptile)) {
    return FALSE;
  }

  if (NULL != presource
      && !terrain_has_resource(tile_terrain(ptile), presource)) {
    return FALSE;
  }

  tile_set_resource(ptile, presource);

  if (send_tile_info) {
    update_tile_knowledge(ptile);
  }

  return TRUE;Base function to edit the special property of a tile. Returns TRUE if
  the special state has changed.
***********/
static bool edit_tile_special_handling(struct tile *ptile,
                                       enum tile_special_type special,
                                       bool remove_mode,
                                       bool send_tile_info)
{
  if (remove_mode) {
    if (!tile_has_special(ptile, special)) {
      return FALSE;
    }

    tile_remove_special(ptile, special);
  } else {
    if (tile_has_special(ptile, special)
        || !is_native_tile_to_special(special, ptile)) {
      return FALSE;
    }

    tile_add_special(ptile, special);
  }

  if (send_tile_info) {
    update_tile_knowledge(ptile);
  }

  return TRUE;Base function to edit the base property of a tile. Returns TRUE if
  the base state has changed.
***********/
static bool edit_tile_base_handling(struct tile *ptile,
                                    struct base_type *pbase,
                                    bool remove_mode, bool send_tile_info)
{
  if (remove_mode) {
    if (!tile_has_base(ptile, pbase)) {
      return FALSE;
    }

    tile_remove_base(ptile, pbase);
  } else {
    if (tile_has_base(ptile, pbase)
        || !is_native_tile_to_base(pbase, ptile)) {
      return FALSE;
    }

    tile_add_base(ptile, pbase);
  }

  if (send_tile_info) {
    update_tile_knowledge(ptile);
  }

  return TRUE;pterrainedit_tile_terrain_handling(ptile, pterrain, TRUEedit_tile_resource_handling(ptile, presource, TRUEedit_tile_special_handling(ptile, special, remove, TRUEedit_tile_base_handling(ptile, pbase, remove, TRUEconstedit_tile_special_handling(ptile, spe,
                                 !BV_ISSET(packet->specials, spe), FALSE);edit_tile_base_handling(ptile, pbase,
                              !BV_ISSET(packet->bases, base_number(pbase)),
                              FALSE);only_ocean;
  int id, iunitscity_owner(tile_city(ptile)))enemy tile_c(pplayer, NULL);
  }

  /* FIXME: Make this more general? */
  only_ocean = is_sailing_unittype(punittype);

  homecity = find_closest_city(ptile, NULL, pplayer, only_ocean, FALSE, FALSE,
                               TRUE, FALSEconst_cconst_c-1server_player_init(pplayer, TRUE, TRUE);
  player_set_nation(pplayer, pnation);
  sz_strlcpy(pplayer->name, pick_random_player_name(pnation)server.init_government;
  pplayer->server.all_c}

constplayer_by_number(packet->idplayer_research_getfc_all_c(pplayer, vision editing requests from client.
player_by_number(plr_no);
  if (!pplayerconstonstconstENDREP
DELTA 17392 72130 5674
SVN  ’i“?%v Èo ½ bÉ%‡ À2Ê‡ HŠ<‚ 	‹€) …uŒtNULL != nation->server.init_units[i] && MAX_NUM_UNIT_LIST > iserver.** 
  O  **/
void handle_single_want_hack_req(struct connection *pc,
                                 const struct packet_single_want_hack_req *
                                 ENDREP
DELTA 18270 25487 199
SVN  „œS„›z`‹- ƒ? ° ƒ‘ˆ C½@€F ‚Fƒ“8‡ ‚ƒ•~ ƒƒ˜€O ƒœ`€‚$ ƒ €ƒ ƒQƒ¤€ ˆ^ƒ¨k "ƒ±r€‚ 	ƒ¶‡ åFƒ· choices list.
  If no available nations in this
  set.
*********/
struct nation_type *pick_a_nation(const struct nation_list , indexindex = nation_index(pnation);
      nations_used[index] = UNAVAILABLE;
      match[index] = 0;
      continue;
    }

    index = nation_index(pnation);
    nations_used[index] = AVAILABLE;

    match[index
                              ignore_conflicts);
        if (x < 0) {
          nations_used[index] = UNWANTED;
          match[index] = 1;
          break;
        } else {
          match[index] += x * 100;
        }
      }
    } players_iterate_end;

    num_nations_avail += match[indexif (NULL != choices) {
    nation_list_iterate(choices, pnation) {
      index = nation_index(pnation);
      if (nations_used[index] == AVAILABLE) {
        pref_nations_avail += match[index];
        nations_used[index] = PREFERRED;
      }
    } nation_list_iterate_end;
  }

  nations_iterate(pnation) {
    index = nation_index(pnation);
    if (nations_used[index] == UNWANTED) {
      nations_used[indexndex = nation_index(pnation);
    if (nations_used[index] == looking_for) {
      pick -= match[index];

      if (0 > pick) {
        Rebel will always be an AI player */
  player_set_nation(cplayer, pick_a_nation
      (nation_of_player(pplayer)->server.civilwar_nations,
       TRUE, FALSE, NOT_A_BARBARIAN));
  sz_strlcpy(cplayer->name,
             pick_random_player_name(nation_of_player(cplayer))server.ENDREP
DELTA 17847 14916 432
SVN  ™V™[
 ‰% ™ ‰9const struct nation_list ENDREP
DELTA 18268 5716 2339
SVN  †  †  ‚0Ù  š_ €F „ð0›K… G…‹|½ D…Œ}¶ Bª@€‰l bÍ6„ Bª@ Œ	…•Z ‚#…¡a€‚ …¦e€›+ ]…Âg€  P¸ š Bª@€L ƒ!…ÎH J…Ò€H n…Ò[¤ …ÓF€ Eƒ¼?€‚, †›4 †œ7€ƒ: †›4 †œ7€„# J…æ<€‰ b…á(€ƒ `…ê&€X _…ëy€‚L …÷N =…øT€n ‚…úuŸ y…ý† ‚…úuŸ ‚†€3€8 *†ƒt˜ X†…=  ƒ0††9€ƒ  ‚8†Œ(€ƒt †’V¥ J†”€‚ †™-€g ‚d†›4€M a†Ÿ€Zvoid load_city_name_list(struct section_file *file,
                                struct nation_type *pnation,
                                const char *secfile_str1,
                           **
  
  previous nation, or twice in its own leader name table.
    and id of a conflicting nation as second parameter.
**********/
static const char *check_leader_names(struct nation_type *pnation,
                                      struct nation_type **ppconflict_nation)
{
  nation_leader_list_iterate(nation_leaders(pnation), pleader) {
    const char *name = nation_leader_name(pleader);

    nation_leader_list_iterate(nation_leaders(pnation), prev_leader) {
      if (prev_leader == pleader) {
        break;
      } else if (0 == fc_strcasecmp(name, nation_leader_name(prev_leader))) {
        *ppconflict_nation = pnation;
        return name;
      }
    } nation_leader_list_iterate_end;
  } nation_leader_list_iterate_end;

  nations_iterate(prev_nation) {
    if (prev_nation == pnation) {
      break;
    }

    nation_leader_list_iterate(nation_leaders(prev_nation), pleader) {
      const char *name = nation_leader_name(pleader);

      nation_leader_list_iterate(nation_leaders(prev_nation), prev_leader) {
        if (prev_leader == pleader) {
          break;
        } else if (0 == fc_strcasecmp(name,
                                      nation_leader_name(prev_leader))) {
          *ppconflict_nation = prev_nation;
          return name;
        }
      } nation_leader_list_iterate_end;
    } nation_leader_list_iterate_end;
  } nations_iterate_end...
**/
static void load_city_name_list(struct section_file *file,
                                struct nation_type *pnation,
                                const char *secfile_str1,
                                const char *secfile_str2)
{
  size_t dim, j; Each string will be of the form "<cityname> (<label>, <label>, ...)".
   * The cityname is just the name for this city, while each "label" matches
   * a terrain type for the city (or "river"), with a preceeding ! to negate
   * it. The parentheses are optional (but necessary to have the settings,
   * of course). Our job is now to parse it. */
  for (j = 0; j < dim; j++) {
    size_t len = strlen(cities[j]);
    char city_name[len + 1], *p, *next, *end;
    struct nation_city *pncity;

    sz_strlcpy(city_name, cities[j]);

    /* Now we wish to determine values for all of the city labels. A value
     * of NCP_NONE means no preference (which is necessary so that the use
     * of this is optional); NCP_DISLIKE means the label is negated and
     * NCP_LIKE means it's labelled. Mostly the parsing just involves
     * a lot of ugly string handling... */
    if ((p = strchr(city_name, '('))) {
      *p++ = '\0';

      if (!(end = strchr(p, ')'))) {
        ruleset_error(LOG_ERROR, "\"%s\" [%s] %s: city name \"%s\" "
                      "unmatched parenthesis.", secfile_name(file),
                      secfile_str1, secfile_str2, cities[j]);
      }

      for (*end++ = '\0'; '\0' != *end; end++) {
        if (!fc_isspace(*end)) {
          ruleset_error(LOG_ERROR, "\"%s\" [%s] %s: city name \"%s\" "
                        "contains characthers after last parenthesis, "
                        "ignoring...", secfile_name(file), secfile_str1,
                        secfile_str2, cities[j]);
        }
      }
    }

    /* Build the nation_city. */
    remove_leading_trailing_spaces(city_name);
    if (check_name(city_name)) {
      /* The ruleset contains a name that is too long. This shouldn't
       * happen - if it does, the author should get immediate feedback. */
      ruleset_error(LOG_ERROR, "\"%s\" [%s] %s: city name \"%s\" "
                    "is too long; shortening it.", secfile_name(file),
                    secfile_str1, secfile_str2, city_name);
      city_name[MAX_LEN_NAME - 1] = '\0';
    }
    pncity = nation_city_new(pnation, city_name);

    if (NULL != p) {
      /* Handle the labels one at a time. */
      do {
        enum nation_city_preference prefer;

        if ((next = strchr(p, ','))) {
          *next = '\0';
        }
        remove_leading_trailing_spaces(p);

        /* The ! is used to mark a negative, which is recorded with
         * NCP_DISLIKE. Otherwise we use a NCP_LIKE.
         */
        if (*p == '!') {
          p++;
          prefer = NCP_DISLIKE;
        } else {
          prefer = NCP_LIKE;
        }

        if (0 == fc_strcasecmp(p, "river")) {
          nation_city_set_river_preference(pncity, prefer);
        } else {
          const struct terrain *pterrain = find_terrain_by_rule_name(p);

          if (NULL == pterrain) {
            /* Try with removing frequent trailing 's'. */
            size_t l = strlen(p);

            if (0 < l && 's' == fc_tolower(p[l - 1])) {
              p[l - 1] = '\0';
            }
            pterrain = find_terrain_by_rule_name(p);
          }

          if (NULL != pterrain) {
            nation_city_set_terrain_preference(pncity, pterrain, prefer);
          } else {
            /* Nation authors may use terrains like "lake" that are
             * available in the default ruleset but not in civ1/civ2.
             * In normal use we should just ignore hints for unknown
             * terrains, but nation authors may want to know about this
p);
          }
        }

        p = next ? next + 1 : NULL;
      } while (NULL != p && '\0' != *p);
    }
  }

  if (NULL != cities) {
    free(cities);
  }Load nations.ruleset file
********/
static void load_ruleset_nations(struct section_file *file)
{
  struct government *gov;
  int j;
  size_t dim;
  char temp_name[MAX_LEN_NAME];
  const char **vec;
  const char *name, *bad_leaderif (NULL == name  pgroup = nation_group_new(name);
    if (!secfile_lookup_int(file, &j,  nation_group_set_match(pgroup, j);  nations_iterate(pnation) {
    struct nation_type *pconflict;
    const int i = nation_index(pnation);
    char tmp[200] = "\0";
    const char *barb_type
    /* Nation groups. */
    vec = secfile_lookup_str_vec(file, &dim, "%s.groups", sec_name);
    for (j = 0; j < dim; j++) {
      struct nation_group *pgroup = nation_group_by_rule_name(vec[j]);

      if (NULL != pgroup) {
        nation_group_list_append(pnation->groups, pgroup);
      } else {iUnknown group \"%s\".",
                    nation_rule_name(pnation), vec[j]);
      }
    }
    if (NULL != vec) {
      free(vec);
    }

    /* Nation conflicts. */
    vec = secfile_lookup_str_vec(file, &dim, "%s.conflicts_with", sec_name);
    for (j = 0; j < dim; j++) {
      pconflict = nation_by_rule_name(vec[j]);

      if (NULL != pconflict) {
        nation_list_append(pnation->server.conflicts_with, pconflict);
      } else {ionflicts_with nation \"%s\" is unknown.",
                    nation_rule_name(pnation), vec[j]);
      }
    }
    if (NULL != vec) {
      free(vec);
    }

    /* Nation leaders. */
    for (j = 0; j < MAX_NUM_LEADERS; j++) {
      const char *sex;
      bool is_male = FALSE;

      name = secfile_lookup_str(file, "%s.leaders%d.name", sec_name, j);
      if (NULL == name) {
        /* No more to read. */
        break;
      }

      if (check_name(name)) {
        /* The ruleset contains a name that is too long. This shouldn't
         *sz_strlcpy(temp_name, name);
        ruleset_error(LOG_ERROR, "Nation %s: leader name \"%s\" "
                      "is too long; shortening it to \"%s\".",
                      nation_rule_name(pnation), name, temp_name);
        name = temp_name;
      }

      sex = secfile_lookup_str(file, "%s.leaders%d.sex", sec_name, j);
      if (NULL == sex) {
        ruleset_error(LOG_FATAL, "Nation %s: leader \"%s\": %s.",
                      nation_rule_name(pnation), name, secfile_error());
      } else if (0 == fc_strcasecmp("Male", sex)) {
        is_male = TRUE;
      } else if (0 != fc_strcasecmp("Female", sex)) {
        ruleset_error(LOG_FATAL, "Nation %s: leader \"%s\" has unsupported "
                      "sex variant \"%s\".",
                      nation_rule_name(pnation), name, sex);
      }
      (void) nation_leader_new(pnation, name, is_male);
    }

    /* Check the number of leaders. */
    if (MAX_NUM_LEADERS == j) {
      /* Too much leaders, get the real number defined in the ruleset. */
      while (NULL != secfile_entry_lookup(file, "%s.leaders%d.name",
                                          sec_name, j)) {
        j++;
      }nation), MAX_NUM_LEADERS, j);
    } else if (0 == j) {
      ruleset_error(LOG_FATAL,
                    "Nation %s: no leaders; at least one is required.",
                    nation_rule_name(pnation));
    }

    /* Check if leader name is not already defined */
    if ((bad_leader = check_leader_names(pnation, &pconflict))) {
      if (pnation == pconflict) {
        ruleset_error(LOG_FATAL,
nation_rule_name(pnation), bad_leader);
      } else {
        ruleset_error(LOG_FATAL,
nation_rule_name(pnation), nation_rule_name(pconflict),
                      bad_leader);
      }
    }

    pnation->is_available =
        secfile_lookup_bool_default(file, TRUE, "%s.is_available", sec_name);
    pnation->is_playable =
        secfile_lookup_bool_default(file, TRUE, "%s.is_playable", sec_name);

    if (pnationnation->barb_type = NOT_A_BARBARIAN;
    } else if (fc_strcasecmp(barb_type, "Land") == 0) {
      if (pnationnation));
      }
      pnationnationnation));
      }
      pnationnation), barb_type);
    }

    /* Flags */
    sz_strlcpy(pnation->flag_graphic_str,
               secfile_lookup_str_default(file, "-", "%s.flag", sec_name));
    sz_strlcpy(pnationj = -1;
    while ((name"%s.ruler_titles%d.government",
name);
      if (NULL != gov) {
        struct ruler_title *title;

        gov->num_ruler_titles++;
        gov->ruler_titles
          = fc_realloc(gov->ruler_titles,
                       gov->num_ruler_titles * sizeof(*gov->ruler_titles));
        title = gov->ruler_titles + gov->num_ruler_titles - 1;
        title->nation = pnation;

        name_set(&title->male, male_name);nation), name);
      }
    }

    /* City styles */
    name = secfile_lookup_str(file, "%s.city_style", sec_name);
    pnation->city_style = find_city_style_by_rule_name(name);
    if (0 > pnation->city_style) {
      log_error("Nation %s: city style \"%s\" is unknown, using default.",
                nation_rule_name(pnation), name);
      pnation->city_style = 0;
    }

    while (city_style_has_requirements(city_styles + pnation->city_style)) {
      if (pnation->city_style == 0) {
         nation_rule_name(pnation));
        nation), name);
      pnation->city_style = 0;
    }

    /* Civilwar nations */
    vec = secfile_lookup_str_vec(file, &dim,
                                 "%s.civilwar_nations", sec_name);
    for (j = 0; j < dim; j++) {
      pconflict = nation_by_rule_name(vec[j
       * probability of being chosen. */
      if (NULL != pconflict) {
        nation_list_append(pnation->server.civilwar_nations, pconflict);
        nation_list_append(pconflict->server.parent_nations, pnation);
      } else {nation), vec[j]);
      }
    }
    if (NULL != vec) {
      free(vec);
    }
                       pnation->server.init_techs, filename);
    lookup_building_list(file, sec_name, "init_buildings",
                         pnation->server.init_buildings, filename);
    lookup_unit_list(file, s†  ƒ×mƒÏA‹€R cq€‚K 4„_€ ‚ª~‹j€L ‚+‚º	€‚ &‚½~€^ ¾k‚ÃM€F ½bƒ‚p€Z –OƒÁec_name, "init_units", LOG_ERROR,
                     pnation->server.init_units,nation->server.init_government = lookup_government(file, tmp, filename);

    /* Read default city names. */
    load_city_name_list(file, pnation, sec_name, "cities");

    pnation->legend = fc_strdup(secfile_lookup_str(file, "%s.legend",
                                                   sec_name));
    if (check_strlen(pnationnation),
                    pnation->legend);
      pnation->legend[MAX_LEN_MSG - 1] = '\0';
    }

    pnation->player = NULLi = 0;
  nation_groups_iterate(pgroup) {
    sz_strlcpy(groups_packet.groups[i++], nation_group_rule_name(pgroup));
  } nation_groups_iterate_end;
  lsend_packet_ruleset_nation_groups(dest, &groups_packet
    i = 0;
    nation_leader_list_iterate(nation_leaders(n), pleader) {
      sz_strlcpy(packet.leader_name[i], nation_leader_name(pleader));
      packet.leader_is_male[i] = nation_leader_is_male(pleader);
      i++;
    } nation_leader_list_iterate_end;
    packet.leader_count = i;

    sz_strlcpy(packet.legend, n->legend);

    i = 0;
    nation_group_list_iterate(n->groups, pgroup) {
      packet.groups[i++] = nation_group_number(pgroup);
    } nation_group_list_iterate_end;
    packet.ngroups = i;server.init_techs[i] != A_LAST;
       i++) {
    if (pnation->server.server.init_techs[i] != A_LAST;
         i++) {
      Tech_type_id tech = pnation->server.ENDREP
DELTA 18136 0 603
SVN  †  †  
 ¶/  ƒ²&¶4 ·!„è_Šlow! */

 †  †  †  
 †Ÿv
Šcat(optionŒÀ ùTùJ  ùJ
ENDREP
DELTA 18136 1002 329
SVN  †  †   …”y  ‹…”~…the f†  …õ…õ
  ´ …Á´ENDREP
DELTA 17336 1425 1266
SVN  ·:¿M9†\ …[ €L ‚#…mš [—@¦ Aˆ@ …‰r¼ Aˆ@€„ G  “Žo •;¡ G Ÿ Aˆ@€V/* common */
#include "idex.h"
#include "movement.h"

/* server/scripting */player_by_number(player_ida player city with the given city_id.

  Return a unit that can transport ptype at a given ptile.
*********/
Unit *api_find_transport_unit(Player *pplayer, Unit_Type *ptype,
                              Tile *ptile)
{
  SCRIPT_CHECK_ARG_NIL(pplayer, 1, Player, NULL);
  SCRIPT_CHECK_ARG_NIL(ptype, 2, Unit_Type, NULL);
  SCRIPT_CHECK_ARG_NIL(ptile, 3, Tile, NULL);

  {
    struct unit *ptransport;
    struct unit *pvirt = create_unit_virtual(pplayer, NULL, ptype, 0);
    pvirt->tile = ptile;
    pvirt->homecity = 0;
    ptransport = find_transport_from_tile(pvirt, ptile);
    destroy_unit_virtual(pvirt);
    return ptransport;
  }
}

****
  Return a dummy pointer.
*********/
Nonexistent *api_find_nonexistent()
{
  static char *p = "";
  return p;
}
ENDREP
DELTA 18270 25800 550
SVN  „ê0„ãRŒQ ‚êV  ‚îhª Ë'‚ÿž ƒ~ƒÊA¯ 
ƒÎe ‡}ƒÐ€‚ |ƒÛ €A Lÿ€‡ N‚¯?ƒ Kÿ ½ƒêC€H Â$„¨NULL != nation_leader_by_name(nation, namestruct nation_leader *pleader;(pleader = nation_leader_by_name(pnation, name)nation_leader_is_male(pleadersz_strlcpy(pplayer->name,
                 pick_random_player_name(nation_of_player(pplayer)));
    }

    if ((pleader = nation_leader_by_name(nation_of_player(pplayer),
                                         pplayer->name))) {
      pplayer->is_male = nation_leader_is_male(pleader***
  Returns a random ruler name picked from given nation ruler names, given
  that nation's number. If it fails it iterates through "Player 1",
  "Player 2", ... until an unused name is found**/
const char *pick_random_player_name(const struct nation_type *pnation)
{
  const char *choice = NULL;
  int i = 0;

  nation_leader_list_iterate(nation_leaders(pnation), pleader) {
    const char *name = nation_leader_name(pleader);

    if (NULL == find_player_by_name(name)
        && NULL == find_player_by_user(name)
        && 0 == fc_rand(++i)) {
      choice = name;
    }
  } nation_leader_list_iterate_end;

  if (NULL != choice) {
    return choice;
  }

  {
    static char tempname[MAX_LEN_NAME];

    for (i = 1; i < MAX_NUM_PLAYER_SLOTS; i++) {
      fc_snprintf(tempname, sizeof(tempname), _("Player no. %d"), i);
      if (NULL == find_player_by_name(tempname)
          && NULL == find_player_by_user(tempname)) {
        return tempname;
      }
    }

    fc_assert_msg(FALSE, "Failed to generate a player name.");
    sz_strlcpy(tempname, _("A poorly-named player"));
    return tempname;
  }
..server.init_government;

    if (pnation->server.init_government
       ENDREP
DELTA 2805 29213 1348
SVN  `œU–o …f €–o/* utility */
#include "log.h"        /* enum log_level */
#include "netintf.h"

/* common */
#include "fc_types.h"

struct conn_list;

struct server_arguments {
  /* metaserver information */
  bool metaserver_no_send;
  char metaserver_addr[256];
  char metaserver_name[256];
  unsigned short int metaserver_port;
  /* address this server is to listen on (NULL => INADDR_ANY) */
  char *bind_addr;
  /* this server's listen port */
  int port;
  /* the log level */
  enum log_level loglevel;
  /* filenames */
  char *log_filename;
  char *ranklog_filename;
  char load_filename[512]; /* FIXME: may not be long enough? use MAX_PATH? */
  char *script_filename;
  char *saves_pathname;
  char *scenarios_pathname;
  char serverid[256];
  /* save a ppm of the map? */
  bool save_ppm;
  /* quit if there no players after a given time interval */
  int quitidle;
  /* exit the server on game ending */
  bool exit_on_end;
  /* authentication options */
  bool auth_enabled;            /* defaults to FALSE */
  char *auth_conf;              /* auth configuration file */
  bool auth_allow_guests;       /* defaults to TRUE */
  bool auth_allow_newusers;     /* defaults to TRUE */
  enum announce_type announce;
  int fatal_assertions;         /* default to -1 (disabled). */
};

/* used in savegame values */
#define SPECENUM_NAME server_states
#define SPECENUM_VALUE0 S_S_INITIAL
#define SPECENUM_VALUE1 S_S_RUNNING
#define SPECENUM_VALUE2 S_S_OVER
#include "specenum_gen.h"

/* Structure for holding global server data.
 *
 * TODO: Lots more variables could be added here. */
extern struct civserver {
  int playable_nations;
  int nbarbarians;

  /* this counter creates all the city and unit numbers used.
   * arbitrarily starts at 101, but at 65K wraps to 1.
   * use identity_number()
   */
#define IDENTITY_NUMBER_SKIP (100)
  unsigned short identity_number;

  char game_identifier[MAX_LEN_GAME_IDENTIFIER];
} server;


void init_game_seed(void);
void srv_init(void);
void srv_main(void);
void server_quit(void);
void save_game_auto(const char *save_reason, const char *reason_filename);

enum server_states server_state(void);
void set_server_state(enum server_states newstate);

void check_for_full_turn_done(void);
bool check_for_game_over(void);
bool game_was_started(void);

bool server_packet_input(struct connection *pconn, void *packet, int type);
void start_game(void);
void save_game(const char *orig_filename, const char *save_reason,
               bool scenario);
const char *pick_random_player_name(const struct nation_type *pnation);
void send_all_info(struct conn_list *dest);

void identity_number_release(int id);
void identity_number_reserve(int id);
int identity_number(void);
void server_game_init(void);
void server_game_free(void);
void aifill(int amount);

extern struct server_arguments srvarg;

extern bool force_end_of_sniff;

void init_available_nations(void);
#endif /* FC__SRV_MAIN_H */
ENDREP
DELTA 18078 46450 4244
SVN  †  †  ƒÕj Ðo † ‚Ðv€_ U‚Ä{ ¤#Ó]€^ Kü9 ú9¦ Gû~ =ø| vþ‡ mÿ|‡ Š+€k€\ z’l ‚ Ž~€\ ƒW’l€d _?— C½  »˜p­ f8 š3Õ€O Àð€4 ‚@‚±9‰ Š1‚³x€} å‚Ã½ …ƒ¨m€c ‡Wƒ®0€‚| Tƒº5 *ƒ¼\€Z Hƒºz€m !ƒ¼`€ƒ U‚Ä{ Œ-ƒÂO‘ ´bƒÏ€J K„„a¢ ŠN„†j ’„‘>€o T„¥:€‰h •„Æp€F †g…ÜM± †/¯ <†’<€b †—` ‡…÷P †Ž6 ƒq† †Ž6 †/¯ D†’<€Z †—`” †/² ?†’9£ C†’>‚ I†—`€‚@ k†™s€ „†›i€1 Uƒ‘@€ž  e9€= Uƒ‘@€‚v Q„ë~€	 Zƒ0€‰kserver
    if (NULL != caller) {
      /* Echo to the console. */
      log_normal("%s", line);
    }cmd_reply(CMD_METACONN, caller, C_OK,
              _("Open metaserver connection to [%s]."),
cmd_reply(CMD_METACONN, caller, C_OK,
COMMENTCOMMENTcmd_reply(CMD_METAPATCHES, caller, C_OK,
              _("Metaserver patches string set to '%s'."), arg);
  } else {
    cmd_reply(CMD_METAPATCHES, caller, C_OK,
              _("Metaserver patches string set to '%s', "
cmd_reply(CMD_METAMESSAGE, caller, C_OK,
              _("Metaserver message string set to '%s'."), arg);
  } else {
    cmd_reply(CMD_METAMESSAGE, caller, C_OK,
              _("Metaserver message string set to '%s', "
cmd_reply(CMD_METASERVER, caller, C_OK,
            _("Metaserver is now [%s]."), meta_addr_port()); Returns the serverid 
cmd_reply(CMD_CREATE, caller, C_OK, "%s", bufnation->server.init_government;
  pplayer->target_government = pnation->server.              _("Cannot read command line scriptfile '%s'."), real_filename);
    if (NULL != caller) {
      log_error(_("Could not read script file '%s'."), real_filename);
    }, buf[256fprintf(script_file, "set %s \"%s\"\n", setting_name(pset),
              setting_value_name(pset, FALSE, buf, sizeof(buf)));settings_number(),
                        0, fc_strncasecmp,                             enum command_id help_cmd, int id)
{
  char val_buf[256], def_buf[256];etting_value_name(pset, TRUE, val_buf, sizeof(val_buf));
    setting_default_name(pset, TRUE, def_buf, sizeof(def_buf));

    switch (setting_type(pset)) {
    case SSET_INT:
      cmd_reply(help_cmd, caller, C_COMMENT, "%s %s, %s %d, %s %s, %s %d",
                _("Value:"), val_buf,
                _("Minimum:"), setting_int_min(pset),
                _("Default:"), def_bufval(pset, i, FALSE)); i++) {
          cmd_reply(help_cmd, caller, C_COMMENT, "- %s: \"%s\"",
                    value, setting_enum_val(pset, i, TRUE));
        }
      }
      /* Fall through. */
    case SSET_BOOL:%s, %s %s",
                _("Value:"), val_buf, _("Default:"), def_buf);
      break;
    case SSET_BITWISEbitwise_bit(pset, i, FALSE)); i++) {
          cmd_reply(help_cmd, caller, C_COMMENT, "- %s: \"%s\"",
                    value, setting_bitwise_bit(pset, i, TRUE));
        }
        cmd_reply(help_cmd, caller, C_COMMENT, "%s %s",
                  _("Value:"), val_buf);
        cmd_reply(help_cmd, caller, C_COMMENT, "%s %s",
                  _("Default:"), def_buf);
      }
      break;
    }settings_number()cmd_reply(CMD_AWAY, caller, C_OK,
              _("%s set to away mode."),cmd_reply(CMD_AWAY, caller, C_OK,
cmd_reply(CMD_SHOW, caller, C_COMMENT, _("%-*s value   (min, max)"),
            OPTION_NAME_SPACE, _("Option")f (!setting_is_visible(pset, caller)) {
      continue;
    }

    is_changed = setting_changed(pset);
    if (0 <= cmd) {
      if (cmd != setting_number(pset)) {
        continue;
      }
    } else if (-2 == cmd
               && 0 != fc_strncasecmp(setting_name(pset), str, clen)) {
      continue;
    } else if (SSET_CHANGED == level) {
      if (!is_changed) {
        continue;
      }
    } else if (SSET_LOCKED == level) {
      if (!setting_locked(pset)) {
        continue;
      }
    } else if (SSET_ALL != level && level != setting_level(pset)) {
      continue;
    }

    setting_value_name(pset, TRUE, value, sizeof(value));
    if (is_changed) {
      /* Emphasizes the changed option. */
      featured_text_apply_tag(value, buf, sizeof(buf), TTT_COLOR,
                              0, FT_OFFSET_UNSET, ftc_changed);
      sz_strlcpy(value, buf);
    }
    if (SSET_INT == setting_type(pset)) {
      /* Add the range. */
      cat_snprintf(value, sizeof(value), " (%d, %d)",
                   setting_int_min(pset), setting_int_max(pset));
    }

    cmd_reply(CMD_SHOW, caller, C_COMMENT, "%-*s %c%c%s",
              OPTION_NAME_SPACE, setting_name(pset),
              setting_status(caller, pset), is_changed ? ' ' : '=', value);nargs;
  struct setting *pset;
  bool do_update;
  char reject_msg[256
  switch (setting_type(pset)) {
  case SSET_BOOL(!setting_bool_validate(pset, args[1], caller,
bool_set(pset, args[1], caller,
                                reject_msg, sizeof(reject_msg))) {
    break;

  case SSET_ENUM(!setting_enum_validate(pset, args[1], caller,
(pset, args[1], caller,
                                reject_msg, sizeof(reject_msg))) {
  case SSET_BITWISE(!setting_bitwise_validate(pset, args[1], caller,
bitwise_set(pset, args[1], caller,
 {do_update) {
    /* Send only to connections able to see that. */
    char buf[256];
    struct packet_chat_msg packet;

    package_event(&packet, NULL, E_SETTING, ftc_server,
                  _("Option: %s has been set to %s."), setting_name(pset),
                  setting_value_name(pset, TRUE, buf, sizeof(buf)));send_packet_chat_msg(pconn, &packet);
      }
    } conn_list_iterate_end;
    /* Notify the console. */
    con_write(C_OK, "%s", packet.message);
ission 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 reasonbool is_allowed_to_take(struct player *pplayer, bool will_obs, 
                               char *msg, size_t msg_len)
{
  const char *allow;

  if (!pplayer && will_obs) {
    /* Global observer. */
    if (!(allow = strchr(game.server.allow_take,
                         (game.info.is_new_game ? 'O' : 'o')))) {
      fc_strlcpy(msg, _("Sorry, one can't observe globally in this game."),
                msg_len);
      return FALSE;
    }
  } else if (!pplayer && !will_obs) {
    /* Auto-taking a new player */

    if (game_was_started()) {
      fc_strlcpy(msg, _("You cannot take a new player at this time."),
                msg_len);
      return FALSE;
    }

    if (player_count() >= game.server.max_players) {
      fc_snprintf(msg, msg_len,
                  /* 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.server.max_players),
                  game.server.max_players);
      return FALSE;
    }

    if (player_count() >= player_slot_count()) {
      fc_strlcpy(msg, _("You cannot take a new player because there "
                       "are no free player slots."),
                msg_len);
      return FALSE;
    }

    return TRUE;

  } else if (is_barbarian(pplayer)) {
    if (!(allow = strchr(game.server.allow_take, 'b'))) {
      if (will_obs) {
        fc_strlcpy(msg,
                   _("Sorry, one can't observe barbarians in this game."),
                   msg_len);
      } else {
        fc_strlcpy(msg, _("Sorry, one can't take barbarians in this game."),
                   msg_len);
      }
      return FALSE;
    }
  } else if (!pplayer->is_alive) {
    if (!(allow = strchr(game.server.allow_take, 'd'))) {
      if (will_obs) {
        fc_strlcpy(msg,
                   _("Sorry, one can't observe dead players in this game."),
                   msg_len);
      } else {
        fc_strlcpy(msg,
                   _("Sorry, one can't take dead players in this game."),
                   msg_len);
      }
      return FALSE;
    }
  } else if (pplayer->ai_controlled) {
    if (!(allow = strchr(game.server.allow_take,
                         (game.info.is_new_game ? 'A' : 'a')))) {
      if (will_obs) {
        fc_strlcpy(msg,
                   _("Sorry, one can't observe AI players in this game."),
                   msg_len);
      } else {
        fc_strlcpy(msg, _("Sorry, one can't take AI players in this game."),
                  msg_len);
      }
      return FALSE;
    }
  } else { 
    if (!(allow = strchr(game.server.allow_take,
                         (game.info.is_new_game ? 'H' : 'h')))) {
      if (will_obs) {
        fc_strlcpy(msg,
                   _("Sorry, one can't observe human players in this game."),
                   msg_len);
      } else {
        fc_strlcpy(msg,
                   _("Sorry, one can't take human players in this game."),
                   msg_len);
      }
      return FALSE;
    }
  }

  allow++;

  if (will_obs && (*allow == '2' || *allow == '3')) {
    fc_strlcpy(msg, _("Sorry, one can't observe in this game."), msg_len);
    return FALSE;
  }

  if (!will_obs && *allow == '4') {
    fc_strlcpy(msg, _("Sorry, one can't take players in this game."),
              MAX_LEN_MSG);
    return FALSE;
  }

  if (!will_obs && pplayer->is_connected
      && (*allow == '1' || *allow == '3')) {
    fc_strlcpy(msg, _("Sorry, one can't take players already "
                      "connected in this game."), msg_len);
    return FALSE Observe another player. If we were already attached, detach 
 (see connection_detach()). The console and those with ALLOW_HACK can
 use the two-argument command and force others to observebool observe_command(struct connection *caller, char *str, bool check)
{
  int i = 0, ntokens = 0;
  char buf[MAX_LEN_CONSOLE_LINE], *arg[2], msg[MAX_LEN_MSG];  
  bool is_newgame = !game_was_started();
  enum m_pre_result result;
  struct connection *pconn = NULL;
  struct player *pplayer = NULL;
  bool res = FALSE;
  
  /******** PART I: fill pconn and pplayer ********/  
  /* check syntax, only certain syntax if allowed depending on the caller */
  if (!caller && ntokens < 1) {
    cmd_reply(CMD_OBSERVEOBSERVE)));
    goto end;
  } 

  if (ntokens == 2 && (caller && caller->access_level != ALLOW_HACK)) {
    cmd_reply(CMD_OBSERVE, caller, C_SYNTAX,
              _("Only the player name form is allowed."));
    goto end;
  }

  /* match connection if we're console, match a player if we're not */
  if (ntokens == 1) {
    if (!caller && !(pconn = find_conn_by_user_prefix(arg[0], &result))) {
      cmd_reply_no_such_conn(CMD_OBSERVE, caller, arg[0], result);
      goto end;
    } else if (caller 
               && !(pplayer = find_player_by_name_prefix(arg[0], &result))) {
      cmd_reply_no_such_player(CMD_OBSERVE, caller, arg[0], result);
      goto end;
    }
  }

  /* get connection name then player name */
  if (ntokens == 2) {
    if (!(pconn = find_conn_by_user_prefix(arg[0], &result))) {
      cmd_reply_no_such_conn(CMD_OBSERVE, caller, arg[0], result);
      goto end;
    }
    if (!(pplayer = find_player_by_name_prefix(arg[1], &result))) {
      cmd_reply_no_such_player(CMD_OBSERVE, caller, arg[1], result);
      goto end;
    }
  }

  /* if we can't force other connections to observe, assign us to be pconn. */
  if (!pconn) {
    pconn = caller;
  }

  /* if we have no pplayer, it means that we want to be a global observer */

  †  …‰ „Ûse ®:²€ µuár€ˆ ž ‚›h  ‚º© b‚Ú8€N u‚Ü¢ ÛU‚ÞA¤ KÆ €I P‚ß> Hƒ¼‘ â)ƒËm– e„°}™ KÆ  g„¯p¹ Ø*„°vIf the player is controlled by another user, forcibly detach
   * the user. */
  if (pplayer && pplayer->is_connected) {
    if (NULL == caller) {
 ) {
    struct conn_list *echo_list = NULL;
    bool echo_list_allocated = FALSE;

    switch (command_echo(command_by_number(cmd))) {
    case CMD_ECHO_NONE:
      break;
    case CMD_ECHO_ADMINS:
      conn_list_iterate(game.est_connections, pconn) {
        if (ALLOW_ADMIN <= conn_get_access(pconn)) {
          if (NULL == echo_list) {
            echo_list = conn_list_new();
            echo_list_allocated = TRUE;
          }
          conn_list_append(echo_list, pconn);
        }
      } conn_list_iterate_end;
      break;
    case CMD_ECHO_ALL:
      echo_list = game.est_connections;
      break;
    }

    if (NULL != echo_list) {
      if (caller) {
        notify_conn(echo_list, NULL, E_SETTING, ftc_any,
                    "%s: '%s %s'", caller->username, command, arg);
      } else {
        notify_conn(echo_list, NULL, E_SETTING, ftc_server_prompt,
                    "%s: '%s %s'", _("(server prompt)"), command, arg);
      }
      if (echo_list_allocated) {
        conn_list_destroy(echo_list);
      }NULL != srvarg.script_filename
        &&   read_recursion + 1)) {
      if (NULL != caller) {
        cmd_reply(CMD_RESET, caller, C_FAIL,
                  _("Could not read script file '%s'."),
                  srvarg.script_filename);
      }cmd_reply(CMD_RESET, caller, C_OK,settings_number() -  Server options /
#define HELP_ARG_NUM (CMD_NUM + HELP_GENERAL_COUNT + settings_number())settings_number()settings_number(), optvalid arguments to "show"settings_number() + OLEVELS_NUM,
                        ENDREP
DELTA 18132 0 12193
SVN  ‚³@‚³Yx ð=  bð= #êm€g Àó!ppnation->server. pnation->server.init_techs[i])
        != TECH_KNOWN) {
      found_new_tech(pplayer, pnation->server.ENDREP
id: vg.5ck.r18279/82226
type: file
pred: vg.5ck.r18270/27982
count: 507
text: 18279 64075 1713 78209 7c8db82027edefc9056545bd4b208c13
props: 11057 12128 112 0 85dbe778568e34751643d476c23a0d7c
cpath: /trunk/server/srv_main.c
copyroot: 15280 /trunk

id: 321.5ck.r18279/82474
type: file
pred: 321.5ck.r17617/60211
count: 28
text: 18279 63117 929 8141 5b75eeb1d272c8c10e526b11e33ee448
props: 10755 32341 110 0 a3ee73c7ed0bd397f9f2fedc7793a5b7
cpath: /trunk/server/scripting/api_find.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 31z.5ck.r17103/3474
K 7
api.pkg
V 26
file 320.5ck.r17627/103423
K 13
api_actions.c
V 26
file 32c.5ck.r17839/171627
K 13
api_actions.h
V 25
file 32d.5ck.r17402/23705
K 13
api_effects.c
V 24
file 4jz.5ck.r17336/9137
K 13
api_effects.h
V 24
file 4k0.5ck.r17104/1452
K 10
api_find.c
V 25
file 321.5ck.r18279/82474
K 10
api_find.h
V 24
file 322.5ck.r17369/2582
K 10
api_intl.c
V 24
file 323.5ck.r17336/8376
K 10
api_intl.h
V 22
file 324.0.r13553/1122
K 13
api_methods.c
V 25
file 33d.5ck.r17560/37266
K 13
api_methods.h
V 24
file 33e.5ck.r17368/8092
K 12
api_notify.c
V 26
file 325.5ck.r16199/111739
K 12
api_notify.h
V 22
file 326.0.r10928/4596
K 11
api_types.h
V 25
file 327.5ck.r17354/15040
K 15
api_utilities.c
V 26
file 32e.5ck.r17122/345235
K 15
api_utilities.h
V 24
file 32f.5bk.r14813/2223
K 8
script.c
V 25
file 328.5ck.r17354/15296
K 8
script.h
V 25
file 329.5ck.r17354/16059
K 15
script_signal.c
V 24
file 32a.5ck.r17336/8626
K 15
script_signal.h
V 21
file 32b.0.r12805/385
END
ENDREP
id: 31x.5ck.r18279/83755
type: dir
pred: 31x.5ck.r17839/172910
count: 158
text: 18279 82731 1011 1011 f0f114fb0a7d8561dee4dd6a0303aa89
props: 11108 4390 88 0 1e9d0e3735a93cd0fae3d0e1df53b911
cpath: /trunk/server/scripting
copyroot: 15280 /trunk

id: vh.5ck.r18279/84001
type: file
pred: vh.5ck.r18270/28469
count: 64
text: 18279 65817 2946 3669 6b48210eca30a5e626ea3cd9a3109831
props: 10857 1151 111 0 7a0697bf766451f41e947e71ce1310bc
cpath: /trunk/server/srv_main.h
copyroot: 15280 /trunk

id: 4g.5ck.r18279/84246
type: file
pred: 4g.5ck.r18270/28711
count: 489
text: 18279 37285 5947 91776 9c8a5f6de8f20125970804a572850143
props: 10971 452 112 0 14688860b403b675ea6c3d1b6f5d2330
cpath: /trunk/server/citytools.c
copyroot: 15280 /trunk

id: lw.5ck.r18279/84493
type: file
pred: lw.5ck.r17847/32448
count: 148
text: 18279 36963 292 21795 6cffbf7b3bd698a9e535b4e9d772498b
props: 11004 1858 112 0 0ba48eb7b1f123775dc0e292f9b3ab64
cpath: /trunk/server/barbarian.c
copyroot: 15280 /trunk

id: 8w.5ck.r18279/84740
type: file
pred: 8w.5ck.r18268/12539
count: 453
text: 18279 49668 13232 161670 19095684a0a6e8da38505800ddb49b44
props: 11085 367 112 0 7f6d12fc80ead5cc285da723cb8caa9d
cpath: /trunk/server/ruleset.c
copyroot: 15280 /trunk

id: 4o.5ck.r18279/84987
type: file
pred: 4o.5ck.r18270/29444
count: 210
text: 18279 47674 297 18879 7bda5660688f610f75ee3f5cdd592b9c
props: 11057 13195 112 0 0c4c829d27ee6fd81512219fee75ff65
cpath: /trunk/server/gamehand.c
copyroot: 15280 /trunk

id: 4m0.5ck.r18279/85234
type: file
pred: 4m0.5ck.r18136/22986
count: 39
text: 18279 63037 52 199315 20b8d9d26ee594404d2e1b2b254f1342
cpath: /trunk/server/savegame2.c
copyroot: 15280 /trunk

id: 3bk.5ck.r18279/85425
type: file
pred: 3bk.5ck.r18270/29692
count: 80
text: 18279 43262 4381 46572 5ffd701267aa2ee0f29a30ef490e6a29
props: 12670 12724 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/server/edithand.c
copyroot: 15280 /trunk

id: 33n.5ck.r18279/85673
type: file
pred: 33n.5ck.r18132/12224
count: 81
text: 18279 82040 159 39385 e0dd5c81a6d39e4eab842fffcd598e0b
props: 11004 2210 111 0 05a46e497021c8716b647ee1425e21a2
cpath: /trunk/server/techtools.c
copyroot: 15280 /trunk

id: 4z.5ck.r18279/85921
type: file
pred: 4z.5ck.r18214/53867
count: 636
text: 18279 68792 13218 179699 b8206e656bfdcca75fdc9c2991874e25
props: 11087 3718 112 0 d0e5ada95c1c714385b6751e38a4f15d
cpath: /trunk/server/stdinhand.c
copyroot: 15280 /trunk

id: vl.5ck.r18279/86171
type: file
pred: vl.5ck.r18136/23175
count: 527
text: 18279 62929 83 220362 b328d88adf2f8e7be5e4881a090a8534
props: 11092 74 112 0 de3988801a325e2d7d51fcbc7209a255
cpath: /trunk/server/savegame.c
copyroot: 15280 /trunk

id: 4u.5ck.r18279/86415
type: file
pred: 4u.5ck.r18270/30182
count: 541
text: 18279 48001 1563 69114 450a8068d0eeab770d674d3b6a862835
props: 11057 14272 112 0 ab87823e529bcaae2ff952f918d53839
cpath: /trunk/server/plrhand.c
copyroot: 15280 /trunk

id: 4v.5ck.r18279/86662
type: file
pred: 4v.5ck.r17847/34913
count: 105
text: 18279 49593 46 3291 3030aee05dd986180705f4f477310aa8
props: 11057 14627 111 0 1506d3ea4bc6eda8c5630824cdee7154
cpath: /trunk/server/plrhand.h
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 22
file 5q.5ck.r17686/505
K 8
advisors
V 24
dir 4n2.5ck.r18268/12056
K 9
aiiface.c
V 24
file 4gm.5ck.r18039/1242
K 9
aiiface.h
V 25
file 4gn.5ck.r17797/11328
K 6
auth.c
V 26
file 39c.5ck.r17122/347762
K 6
auth.h
V 23
file 39d.0.r13513/10535
K 11
barbarian.c
V 24
file lw.5ck.r18279/84493
K 11
barbarian.h
V 24
file lx.5ck.r18054/18407
K 10
cityhand.c
V 24
file 10.5ck.r18270/27490
K 10
cityhand.h
V 23
file 4f.0.r13297/423686
K 11
citytools.c
V 24
file 4g.5ck.r18279/84246
K 11
citytools.h
V 24
file 4h.5ck.r18270/28958
K 10
cityturn.c
V 24
file 4i.5ck.r18268/12297
K 10
cityturn.h
V 24
file 4j.5ck.r18054/18647
K 11
civserver.c
V 22
file 4k.5ck.r17075/335
K 11
civserver.h
V 21
file 4l.0.r2805/33121
K 10
commands.c
V 24
file 2ly.5ck.r18097/4560
K 10
commands.h
V 24
file 2lz.5ck.r18097/4802
K 13
connecthand.c
V 24
file 2dw.5ck.r18034/2443
K 13
connecthand.h
V 25
file 2dx.5ck.r18054/16767
K 9
console.c
V 23
file dd.5ck.r18091/5268
K 9
console.h
V 24
file de.5ck.r18054/16526
K 10
diplhand.c
V 24
file 4m.5ck.r17928/40758
K 10
diplhand.h
V 21
file 4n.0.r13421/6826
K 11
diplomats.c
V 23
file vz.5ck.r18052/8137
K 11
diplomats.h
V 24
file w0.5bk.r13745/13943
K 10
edithand.c
V 25
file 3bk.5ck.r18279/85425
K 10
edithand.h
V 23
file 4ez.5ck.r15317/588
K 10
gamehand.c
V 24
file 4o.5ck.r18279/84987
K 10
gamehand.h
V 24
file 4p.5ck.r15698/24111
K 9
generator
V 24
dir 2me.5ck.r18054/16284
K 11
ggzserver.c
V 25
file 39a.5ck.r17625/26065
K 11
ggzserver.h
V 25
file 39b.5bk.r15001/48999
K 10
gotohand.c
V 24
file 11.5ck.r17700/11700
K 10
gotohand.h
V 25
file 7r.5ck.r16929/301579
K 10
handchat.c
V 24
file 4q.5ck.r18270/27736
K 10
handchat.h
V 24
file dj.5ck.r18270/28229
K 9
maphand.c
V 24
file 13.5ck.r18079/38687
K 9
maphand.h
V 24
file 14.5ck.r18079/38932
K 6
meta.c
V 25
file 4s.5ck.r17627/107028
K 6
meta.h
V 24
file 4t.5ck.r18054/19078
K 8
notify.c
V 24
file 4i2.5ck.r18098/4991
K 8
notify.h
V 24
file 4i3.5ck.r18098/5423
K 9
plrhand.c
V 24
file 4u.5ck.r18279/86415
K 9
plrhand.h
V 24
file 4v.5ck.r18279/86662
K 8
report.c
V 21
file vi.5ck.r18278/94
K 8
report.h
V 24
file vj.5ck.r18270/29203
K 9
ruleset.c
V 24
file 8w.5ck.r18279/84740
K 9
ruleset.h
V 22
file 8x.5ck.r17946/997
K 13
sanitycheck.c
V 24
file wi.5ck.r18000/24909
K 13
sanitycheck.h
V 25
file wj.5ck.r16578/437729
K 10
savegame.c
V 24
file vl.5ck.r18279/86171
K 10
savegame.h
V 24
file vm.5ck.r17289/22938
K 11
savegame2.c
V 25
file 4m0.5ck.r18279/85234
K 11
savegame2.h
V 25
file 4m1.5ck.r18078/67503
K 7
score.c
V 25
file 2eg.5ck.r17928/37151
K 7
score.h
V 24
file 2eh.5ck.r17332/6378
K 9
scripting
V 24
dir 31x.5ck.r18279/83755
K 8
sernet.c
V 24
file 15.5ck.r18009/13973
K 8
sernet.h
V 23
file 4y.5ck.r17707/4012
K 10
settings.c
V 25
file 2m0.5ck.r18266/37890
K 10
settings.h
V 25
file 2m1.5ck.r18214/53620
K 11
spacerace.c
V 25
file 9a.5ck.r16929/306235
K 11
spacerace.h
V 21
file 9b.0.r11338/1129
K 9
srv_log.c
V 25
file 15t.5el.r17796/23893
K 9
srv_log.h
V 25
file 15u.5em.r17928/40497
K 10
srv_main.c
V 24
file vg.5ck.r18279/82226
K 10
srv_main.h
V 24
file vh.5ck.r18279/84001
K 11
stdinhand.c
V 24
file 4z.5ck.r18279/85921
K 11
stdinhand.h
V 24
file 50.5ck.r18023/25156
K 11
techtools.c
V 25
file 33n.5ck.r18279/85673
K 11
techtools.h
V 26
file 33o.5ck.r17839/175626
K 10
unithand.c
V 24
file 18.5ck.r18270/29937
K 10
unithand.h
V 23
file 19.5ck.r16959/4142
K 11
unittools.c
V 22
file 1a.5ck.r18198/886
K 11
unittools.h
V 23
file 1b.5ck.r18052/8629
K 8
voting.c
V 24
file 4ex.5ck.r18043/5206
K 8
voting.h
V 25
file 4ey.5ck.r18054/19315
END
ENDREP
id: z.5ck.r18279/90455
type: dir
pred: z.5ck.r18278/3881
count: 4245
text: 18279 86906 3536 3536 65bffef69ad22bfc22a1cfe3e7f1303c
props: 17175 659 139 0 d1c9699dde7f9d81e54426750008041d
cpath: /trunk/server
copyroot: 15280 /trunk

id: 2f5.5ck.r18279/90686
type: file
pred: 2f5.5ck.r18269/16653
count: 328
text: 18279 29843 598 43920 e1046ce78d06ee52230a3e5fd8b1c447
props: 11057 30210 112 0 64942f9576ccbd6a94350596bbb7a5cc
cpath: /trunk/common/packets.def
copyroot: 15280 /trunk

id: 2ll.5ck.r18279/90936
type: file
pred: 2ll.5ck.r18026/3529
count: 81
text: 18279 6010 93 9687 8225f98fefd9c6b657728c4326c8d3d4
props: 10836 12026 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/common/fc_types.h
copyroot: 15280 /trunk

id: 3u.5ck.r18279/91180
type: file
pred: 3u.5ck.r18087/15478
count: 350
text: 18279 6129 99 25128 a99e39633ead1beec60d510eaeaae266
props: 11041 20516 112 0 779057fa36f350a13e5c75663a7074d1
cpath: /trunk/common/game.c
copyroot: 15280 /trunk

id: 2wq.5ck.r18279/91421
type: file
pred: 2wq.5ck.r17817/140
count: 80
text: 18279 30468 6464 45967 7c9984c6861370cd8e4035bf40502469
props: 10865 25397 111 0 1c266b4433d829481714f1852322e965
cpath: /trunk/common/requirements.c
copyroot: 15280 /trunk

id: il.5ck.r18279/91672
type: file
pred: il.5ck.r17402/19677
count: 80
text: 18279 6255 18041 31389 de471eb94198ff5bcbda1ca87377fedf
props: 11057 33068 111 0 b67b0fa27168318cbcd02c748356f132
cpath: /trunk/common/nation.c
copyroot: 15280 /trunk

id: im.5ck.r18279/91917
type: file
pred: im.5ck.r17402/19919
count: 75
text: 18279 24328 5486 8831 e499a4fe7906ec966cf752565458d477
props: 11057 33421 111 0 b67b0fa27168318cbcd02c748356f132
cpath: /trunk/common/nation.h
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 23
file 5h.5ck.r17932/7536
K 4
ai.c
V 24
file 4go.5ck.r18039/5198
K 4
ai.h
V 24
file 4gp.5ck.r18039/5375
K 6
aicore
V 24
dir 18t.5ck.r18268/17661
K 6
base.c
V 25
file 3jw.5ck.r18237/25591
K 6
base.h
V 25
file 3jx.5ck.r18237/25834
K 9
borders.c
V 23
file 4f0.5ck.r17244/263
K 9
borders.h
V 24
file 4f1.5ck.r15975/2116
K 8
capstr.c
V 24
file dv.5ck.r17617/51579
K 8
capstr.h
V 24
file dw.5bk.r14881/38989
K 6
city.c
V 22
file q.5ck.r18252/1002
K 6
city.h
V 24
file 3q.5ck.r17928/48631
K 8
combat.c
V 24
file wp.5ck.r18226/16047
K 8
combat.h
V 24
file wq.5ck.r18086/20783
K 12
connection.c
V 24
file un.5ck.r18023/29418
K 12
connection.h
V 24
file uo.5ck.r18054/25770
K 8
dataio.c
V 25
file 15r.5ck.r17928/47899
K 8
dataio.h
V 25
file 15s.5ck.r18054/23274
K 11
diptreaty.c
V 24
file 3r.5ck.r17627/94692
K 11
diptreaty.h
V 24
file 3s.5ck.r18054/23946
K 9
effects.c
V 25
file 2eo.5ck.r18270/34465
K 9
effects.h
V 25
file 2ep.5ck.r18270/34711
K 8
events.c
V 25
file 33h.5ck.r17162/24070
K 8
events.h
V 24
file 3t.5ck.r18054/23708
K 14
fc_interface.c
V 25
file 4up.5ck.r17933/11024
K 14
fc_interface.h
V 24
file 4uq.5ck.r17932/7373
K 10
fc_types.h
V 25
file 2ll.5ck.r18279/90936
K 15
featured_text.c
V 25
file 4h3.5ck.r17353/42829
K 15
featured_text.h
V 25
file 4h4.5ck.r18054/23516
K 6
game.c
V 24
file 3u.5ck.r18279/91180
K 6
game.h
V 24
file 3v.5ck.r18266/41915
K 19
generate_packets.py
V 25
file 2f4.5ck.r18270/34211
K 12
government.c
V 24
file he.5ck.r18100/72662
K 12
government.h
V 24
file hf.5ck.r18100/72910
K 6
idex.c
V 25
file qo.5ck.r17392/111674
K 6
idex.h
V 21
file qp.0.r8119/15235
K 13
improvement.c
V 24
file vb.5ck.r18100/70711
K 13
improvement.h
V 24
file vc.5ck.r18100/70957
K 5
map.c
V 23
file r.5ck.r17934/70109
K 5
map.h
V 24
file 41.5ck.r17928/51458
K 10
movement.c
V 25
file 2xv.5ck.r18226/16291
K 10
movement.h
V 25
file 2xw.5ck.r18226/16539
K 18
name_translation.h
V 25
file 4k1.5ck.r17107/35209
K 8
nation.c
V 24
file il.5ck.r18279/91672
K 8
nation.h
V 24
file im.5ck.r18279/91917
K 9
packets.c
V 22
file 43.5ck.r17688/132
K 11
packets.def
V 25
file 2f5.5ck.r18279/90686
K 9
packets.h
V 24
file 44.5ck.r18100/70467
K 8
player.c
V 24
file 45.5ck.r17966/10120
K 8
player.h
V 23
file 46.5ck.r18081/1740
K 14
requirements.c
V 25
file 2wq.5ck.r18279/91421
K 14
requirements.h
V 25
file 2wr.5ck.r17509/18916
K 10
research.c
V 24
file 4ro.5ck.r17856/7997
K 10
research.h
V 26
file 4rp.5ck.r17839/180149
K 11
spaceship.c
V 20
file 98.0.r9977/2632
K 11
spaceship.h
V 24
file 99.5ck.r18054/26016
K 12
specialist.c
V 24
file 33f.5ck.r17194/7915
K 12
specialist.h
V 24
file 33g.5ck.r17194/8161
K 6
team.c
V 24
file 33i.5ck.r18062/9622
K 6
team.h
V 24
file 33j.5ck.r18062/9861
K 6
tech.c
V 23
file t.5ck.r18268/16562
K 6
tech.h
V 23
file u.5ck.r18100/71934
K 9
terrain.c
V 25
file 2fp.5ck.r18100/72172
K 9
terrain.h
V 24
file qs.5ck.r18100/72419
K 6
tile.c
V 25
file 2ys.5ck.r17934/69136
K 6
tile.h
V 25
file 2yt.5ck.r17934/69378
K 6
unit.c
V 23
file v.5ck.r18226/15077
K 6
unit.h
V 24
file 48.5ck.r18226/15559
K 10
unitlist.c
V 25
file 39m.5ck.r17563/52974
K 10
unitlist.h
V 25
file 39n.5ck.r15930/60875
K 10
unittype.c
V 24
file v9.5ck.r18235/12519
K 10
unittype.h
V 24
file va.5ck.r18235/12765
K 9
version.c
V 25
file oe.5ck.r17122/322944
K 9
version.h
V 21
file e7.0.r13518/7887
K 8
vision.c
V 25
file 4dm.5ck.r18000/29175
K 8
vision.h
V 25
file 4dn.5ck.r18000/29420
K 10
worklist.c
V 25
file o8.5ck.r16929/277491
K 10
worklist.h
V 23
file o9.5ck.r18038/1433
END
ENDREP
id: p.5ck.r18279/95668
type: dir
pred: p.5ck.r18270/38461
count: 2861
text: 18279 92161 3494 3494 4920e17060fae8a0dfb86ee738f4a87d
props: 12883 2571 96 0 2763e13ff5d021346ae24ff6c9ced232
cpath: /trunk/common
copyroot: 15280 /trunk

id: 22.5ck.r18279/95900
type: file
pred: 22.5ck.r18081/6185
count: 151
text: 18279 0 32 18655 e3f2c0f90b82c4c9a133152a6977e732
props: 10865 30805 112 0 8869376353a720fe76c0d512d1b8c326
cpath: /trunk/ai/aihand.c
copyroot: 15280 /trunk

id: 2lh.5ck.r18279/96135
type: file
pred: 2lh.5ck.r17772/62186
count: 61
text: 18279 59 49 30836 d186710b60fb73b98bdfac0cbc3ec2ab
props: 10865 31505 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/ai/aisettler.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 5d.5ck.r17700/26401
K 14
advdiplomacy.c
V 23
file 2ek.5ck.r18196/458
K 14
advdiplomacy.h
V 25
file 2el.5ck.r17622/41667
K 13
advdomestic.c
V 24
file 1m.5ck.r17752/44090
K 13
advdomestic.h
V 23
file 1n.0.r13297/443238
K 13
advmilitary.c
V 24
file 1u.5ck.r18226/20989
K 13
advmilitary.h
V 23
file 1v.0.r13297/446464
K 10
advspace.c
V 25
file f2.5ck.r16929/287580
K 10
advspace.h
V 21
file f3.0.r8119/28225
K 7
aiair.c
V 25
file 15y.5ck.r18226/21235
K 7
aiair.h
V 25
file 15z.5ck.r18054/30939
K 8
aicity.c
V 24
file 20.5ck.r18136/27193
K 8
aicity.h
V 24
file 21.5ck.r18136/27433
K 12
aidiplomat.c
V 24
file 16r.5ck.r18081/5944
K 12
aidiplomat.h
V 25
file 16s.5ck.r18054/30699
K 9
aiferry.c
V 25
file 2iw.5ck.r17796/32398
K 9
aiferry.h
V 25
file 2ix.5ck.r18054/30227
K 9
aiguard.c
V 25
file 335.5ck.r17796/33790
K 9
aiguard.h
V 25
file 336.5ck.r18054/31175
K 8
aihand.c
V 24
file 22.5ck.r18279/95900
K 8
aihand.h
V 23
file 23.5ck.r18081/6422
K 8
aihunt.c
V 25
file 2gc.5ck.r18226/21720
K 8
aihunt.h
V 25
file 2gd.5ck.r18054/31410
K 15
aiparatrooper.c
V 25
file 36o.5ck.r18226/21475
K 15
aiparatrooper.h
V 23
file 36p.0.r12670/95202
K 11
aisettler.c
V 25
file 2lh.5ck.r18279/96135
K 11
aisettler.h
V 25
file 2li.5ck.r18054/29985
K 8
aitech.c
V 25
file 24.5ck.r17839/186545
K 8
aitech.h
V 22
file 25.0.r10755/53545
K 9
aitools.c
V 23
file 9.5ck.r18226/20517
K 9
aitools.h
V 23
file a.5ck.r18226/20753
K 8
aiunit.c
V 23
file b.5ck.r18226/21957
K 8
aiunit.h
V 23
file c.5ck.r17796/32162
K 11
defaultai.c
V 25
file 4n8.5ck.r17797/19409
K 11
defaultai.h
V 25
file 4n9.5ck.r17796/33605
END
ENDREP
id: 8.5ck.r18279/97995
type: dir
pred: 8.5ck.r18226/23814
count: 1310
text: 18279 96376 1606 1606 057dcffcab676212de5b69aebeb431f7
props: 11108 11315 64 0 abac628483ea4fdfa3bea3a3a56e0532
cpath: /trunk/ai
copyroot: 15280 /trunk

id: 108.5ck.r18279/98224
type: file
pred: 108.5ck.r17928/58633
count: 166
text: 18279 137 1061 44048 8b064d79b603b017f2be8cb9a7df07ed
props: 11088 8070 112 0 858133ad234580a5fc7c24a791c3b702
cpath: /trunk/client/gui-gtk-2.0/dialogs.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file zu.5ck.r17430/16398
K 8
canvas.c
V 25
file 2y6.5ck.r16281/14174
K 8
canvas.h
V 23
file 2y7.0.r10096/14437
K 16
caravan_dialog.c
V 26
file 376.5ck.r17122/359334
K 10
chatline.c
V 23
file zw.5ck.r17826/6208
K 10
chatline.h
V 24
file zx.5ck.r16063/47311
K 15
choice_dialog.c
V 26
file 377.5ck.r17122/362877
K 15
choice_dialog.h
V 23
file 378.0.r12670/99360
K 9
citydlg.c
V 24
file zy.5ck.r18268/21879
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 26
file 100.5ck.r18151/133431
K 9
cityrep.h
V 25
file 101.5ck.r18101/91562
K 8
cma_fe.c
V 22
file 102.5ck.r17403/53
K 8
cma_fe.h
V 25
file 103.5ck.r15813/67548
K 8
colors.c
V 26
file 104.5ck.r17122/362357
K 8
colors.h
V 24
file 105.5ck.r16180/3087
K 12
connectdlg.c
V 26
file 106.5ck.r15410/343701
K 12
connectdlg.h
V 21
file 107.0.r7580/6878
K 9
dialogs.c
V 25
file 108.5ck.r18279/98224
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 23
file 10a.5ck.r18134/289
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 25
file 36n.5ck.r17846/20731
K 9
editgui.c
V 25
file 4ej.5ck.r17617/68081
K 9
editgui.h
V 25
file 4ek.5ck.r15355/70937
K 10
editprop.c
V 25
file 4el.5ck.r18027/11000
K 10
editprop.h
V 24
file 3bj.5cl.r15704/4438
K 10
embedggz.c
V 26
file 4gq.5ck.r17122/363137
K 9
finddlg.c
V 25
file 10c.5ck.r16015/48885
K 9
finddlg.h
V 22
file 2d0.0.r5989/22356
K 10
gamedlgs.c
V 26
file 10d.5ck.r17122/363800
K 9
gotodlg.c
V 23
file 10e.5ck.r17380/155
K 9
gotodlg.h
V 23
file 10f.0.r4313/263426
K 10
graphics.c
V 23
file 10g.0.r11337/79662
K 10
graphics.h
V 23
file 10h.0.r11337/80150
K 12
gtkpixcomm.c
V 25
file 10i.5ck.r16973/10277
K 12
gtkpixcomm.h
V 22
file 10j.0.r10800/1606
K 10
gui_main.c
V 24
file 10k.5ck.r18115/6768
K 10
gui_main.h
V 25
file 10l.5ck.r18048/13615
K 11
gui_stuff.c
V 25
file 10m.5ck.r18150/60478
K 11
gui_stuff.h
V 25
file 10n.5ck.r18150/60736
K 11
happiness.c
V 23
file 10o.5ck.r17522/118
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 25
file 10q.5ck.r18237/30306
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 25
file 10s.5ck.r16015/49143
K 10
inputdlg.h
V 21
file 10t.0.r7580/3991
K 10
inteldlg.c
V 26
file 10u.5ck.r17839/189137
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 25
file 10v.5ck.r18270/38950
K 9
mapctrl.h
V 25
file 10w.5bk.r14157/11089
K 9
mapview.c
V 25
file 10x.5ck.r18076/31042
K 9
mapview.h
V 24
file 10y.5ck.r17351/2736
K 6
menu.c
V 25
file 10z.5ck.r18101/91043
K 6
menu.h
V 25
file 110.5ck.r16067/65085
K 12
messagedlg.c
V 23
file 111.0.r11771/10924
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 22
file 112.5ck.r18211/79
K 12
messagewin.h
V 25
file 113.5ck.r18082/27153
K 11
optiondlg.c
V 24
file 4js.5ck.r18254/2316
K 11
optiondlg.h
V 25
file 114.5ck.r17037/29773
K 7
pages.c
V 25
file 2pi.5ck.r18270/38693
K 7
pages.h
V 25
file 2pj.5ck.r18054/34881
K 8
plrdlg.c
V 25
file 115.5ck.r18150/61512
K 8
plrdlg.h
V 22
file 116.0.r10803/7069
K 10
ratesdlg.h
V 22
file 2d3.0.r5989/22018
K 4
rc2c
V 23
file 117.0.r4313/274431
K 10
repodlgs.c
V 24
file 118.5ck.r18167/3473
K 10
repodlgs.h
V 25
file 119.5ck.r18076/31562
K 11
resources.c
V 23
file 11a.0.r5390/112550
K 11
resources.h
V 23
file 11b.0.r4313/267539
K 14
spaceshipdlg.c
V 26
file 11c.5ck.r17042/129784
K 14
spaceshipdlg.h
V 23
file 11d.0.r9577/110090
K 8
sprite.c
V 26
file 2y8.5ck.r16578/445568
K 8
sprite.h
V 23
file 2y9.0.r10141/29270
K 11
theme_dlg.c
V 26
file 47d.5ck.r17122/361837
K 8
themes.c
V 26
file 34x.5ck.r17122/358813
K 13
tileset_dlg.c
V 25
file 45i.5bk.r13968/60424
K 14
voteinfo_bar.c
V 24
file 4h8.5ck.r17959/2468
K 14
voteinfo_bar.h
V 24
file 4h9.5ck.r17959/2670
K 7
wldlg.c
V 26
file 11e.5ck.r16929/320462
K 7
wldlg.h
V 25
file 11f.5ck.r16285/86707
END
ENDREP
id: zs.5ck.r18279/102246
type: dir
pred: zs.5ck.r18270/42968
count: 1406
text: 18279 98482 3751 3751 f0776d72f8af61449480e0ea0c0e5864
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-2.0
copyroot: 15280 /trunk

id: a6.5ck.r18279/102494
type: file
pred: a6.5ck.r18101/96829
count: 157
text: 18279 3215 942 47461 c0ffdb5bd8422c7406b105ea474f2a8f
props: 10957 6289 112 0 ac8a0c5808e41faff6290e5ee8a4284e
cpath: /trunk/client/gui-xaw/dialogs.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file bq.5ck.r17430/21163
K 9
actions.c
V 24
file nt.5ck.r18101/95828
K 9
actions.h
V 21
file nu.0.r1888/21779
K 4
ad2c
V 22
file 9q.0.r1186/243967
K 8
canvas.c
V 21
file 9r.0.r3959/87925
K 8
canvas.h
V 20
file 9s.0.r4034/9073
K 9
canvasp.h
V 20
file 9t.0.r4034/8365
K 10
chatline.c
V 25
file 9u.5ck.r17122/373441
K 10
chatline.h
V 21
file 9v.0.r2187/10435
K 9
citydlg.c
V 24
file 9w.5ck.r17928/63339
K 9
citydlg.h
V 20
file 9x.0.r2187/8309
K 9
cityrep.c
V 25
file 9y.5ck.r18151/138480
K 9
cityrep.h
V 24
file g1.5ck.r18101/97080
K 8
cma_fe.c
V 23
file 2ei.5ck.r17713/119
K 8
cma_fe.h
V 21
file 2ej.0.r6908/4433
K 8
colors.c
V 25
file a2.5ck.r16578/453349
K 8
colors.h
V 21
file a3.0.r10532/9312
K 12
connectdlg.c
V 24
file a4.5ck.r18270/43467
K 12
connectdlg.h
V 21
file a5.0.r2187/12228
K 9
dialogs.c
V 25
file a6.5ck.r18279/102494
K 9
dialogs.h
V 21
file a7.0.r10882/3191
K 10
diplodlg.c
V 25
file a8.5ck.r17627/118010
K 10
diplodlg.h
V 20
file a9.0.r2187/7955
K 17
diplomat_dialog.c
V 25
file 37p.5ck.r17846/24999
K 9
finddlg.c
V 25
file aa.5ck.r17122/372680
K 9
finddlg.h
V 22
file 2dk.0.r5989/31562
K 9
gotodlg.c
V 25
file ab.5ck.r17122/369111
K 9
gotodlg.h
V 21
file ac.0.r1888/21069
K 10
graphics.c
V 25
file ad.5ck.r17122/371918
K 10
graphics.h
V 21
file ae.0.r10789/6338
K 10
gui_main.c
V 24
file bm.5ck.r18061/34554
K 10
gui_main.h
V 22
file bn.0.r11408/10219
K 11
gui_stuff.c
V 24
file bo.5ck.r18027/15206
K 11
gui_stuff.h
V 21
file bp.0.r4964/56392
K 9
helpdlg.c
V 24
file af.5ck.r18237/34572
K 9
helpdlg.h
V 21
file g2.0.r1888/23188
K 10
inputdlg.c
V 20
file ag.0.r7586/1961
K 10
inputdlg.h
V 20
file ah.0.r7586/2315
K 10
inteldlg.c
V 25
file ai.5ck.r17839/193907
K 10
inteldlg.h
V 23
file 2dl.0.r10108/22972
K 9
mapctrl.c
V 24
file aj.5ck.r18270/43215
K 9
mapctrl.h
V 21
file ak.0.r10532/9667
K 9
mapview.c
V 24
file al.5ck.r17735/17831
K 9
mapview.h
V 24
file am.5bk.r13912/46304
K 6
menu.c
V 24
file an.5ck.r18101/96331
K 6
menu.h
V 24
file ao.5ck.r16824/42452
K 12
messagedlg.c
V 25
file ap.5bk.r14427/290582
K 12
messagedlg.h
V 22
file 2dm.0.r5989/31896
K 12
messagewin.c
V 24
file aq.5ck.r18082/31672
K 12
messagewin.h
V 24
file g3.5ck.r18082/32178
K 11
optiondlg.c
V 24
file ar.5ck.r18037/14369
K 11
optiondlg.h
V 24
file as.5ck.r16998/79026
K 7
pages.c
V 25
file 2qm.5ck.r18061/34807
K 7
pages.h
V 22
file 2qn.0.r10536/7909
K 9
pixcomm.c
V 21
file at.0.r3145/18494
K 9
pixcomm.h
V 20
file au.0.r4034/9777
K 10
pixcommp.h
V 20
file av.0.r4034/8719
K 8
plrdlg.c
V 23
file aw.5ck.r18042/9274
K 8
plrdlg.h
V 20
file g4.0.r5489/3140
K 10
ratesdlg.c
V 25
file ax.5ck.r17122/372425
K 10
ratesdlg.h
V 22
file 2dn.0.r5989/31227
K 10
repodlgs.c
V 23
file ay.5ck.r18167/7741
K 10
repodlgs.h
V 24
file az.5ck.r18076/36844
K 11
resources.c
V 20
file b0.0.r9310/2224
K 11
resources.h
V 21
file b1.0.r3145/14204
K 14
spaceshipdlg.c
V 25
file b2.5ck.r17042/135081
K 14
spaceshipdlg.h
V 21
file b3.0.r2187/11152
K 8
themes.c
V 23
file 350.0.r10945/14451
K 14
voteinfo_bar.c
V 25
file 4hg.5ck.r16063/52010
K 14
voteinfo_bar.h
V 25
file 4hh.5ck.r16063/52179
K 7
wldlg.c
V 25
file o5.5ck.r16929/327729
K 7
wldlg.h
V 24
file o6.5ck.r16285/91411
END
ENDREP
id: 9o.5ck.r18279/105931
type: dir
pred: 9o.5ck.r18270/46904
count: 961
text: 18279 102747 3171 3171 6cea4e01c912ca4893e906939e29b889
props: 11108 12237 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-xaw
copyroot: 15280 /trunk

id: n.5ck.r18279/106175
type: file
pred: n.5ck.r18270/49149
count: 777
text: 18279 4184 1796 114062 e0e6427dfbb48f31129ab9b6d0cd6db6
props: 11088 14698 112 0 2c9d3e41a2f20488aa9cdb8d740d094e
cpath: /trunk/client/packhand.c
copyroot: 15280 /trunk

id: 17a.5ck.r18279/106422
type: file
pred: 17a.5ck.r18101/103775
count: 174
text: 18279 1223 1963 108122 0e1471b57801c3df3d62ee21c2b34e26
props: 10805 78030 111 0 ae073b1a8624f4e72ab3bef202bf2f05
cpath: /trunk/client/gui-sdl/dialogs.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 25
file 16u.5ck.r17905/31818
K 19
SDL_gfxPrimitives.c
V 25
file 4u0.5ck.r17905/31016
K 19
SDL_gfxPrimitives.h
V 25
file 4u1.5ck.r17977/66943
K 24
SDL_gfxPrimitives_font.h
V 25
file 4u2.5ck.r17905/31633
K 14
SDL_rotozoom.c
V 24
file 3jy.0.r12670/115301
K 14
SDL_rotozoom.h
V 24
file 3jz.0.r12670/115888
K 9
SDL_ttf.c
V 24
file 2dz.5bk.r13597/7386
K 9
SDL_ttf.h
V 24
file 2e0.5bk.r13597/7647
K 11
alphablit.c
V 23
file 3be.0.r13354/59832
K 8
canvas.c
V 25
file 39i.5ck.r17977/65153
K 8
canvas.h
V 23
file 39j.0.r13354/56918
K 16
caravan_dialog.c
V 26
file 3bp.5ck.r17122/386217
K 10
chatline.c
V 25
file 16y.5ck.r18082/40125
K 10
chatline.h
V 26
file 16z.5ck.r16199/137581
K 9
citydlg.c
V 25
file 170.5ck.r17977/64380
K 9
citydlg.h
V 23
file 171.0.r13354/55222
K 9
cityrep.c
V 26
file 172.5ck.r18151/144681
K 9
cityrep.h
V 26
file 173.5ck.r18101/104032
K 8
cma_fe.c
V 25
file 174.5ck.r17977/67143
K 8
cma_fe.h
V 23
file 175.0.r11361/43495
K 8
colors.c
V 23
file 176.0.r13354/62500
K 8
colors.h
V 24
file 177.5bk.r14076/4693
K 12
connectdlg.c
V 25
file 178.5ck.r18270/49648
K 12
connectdlg.h
V 23
file 179.0.r12349/45319
K 9
dialogs.c
V 26
file 17a.5ck.r18279/106422
K 9
dialogs.h
V 25
file 17b.5ck.r17357/12486
K 10
diplodlg.c
V 26
file 17c.5ck.r17627/126137
K 10
diplodlg.h
V 22
file 17d.0.r11584/2869
K 17
diplomat_dialog.c
V 25
file 3bn.5ck.r17846/32119
K 9
finddlg.c
V 25
file 17e.5ck.r17146/88408
K 9
finddlg.h
V 20
file 2d8.0.r5991/702
K 9
gotodlg.c
V 25
file 17f.5ck.r17928/71442
K 9
gotodlg.h
V 22
file 17g.0.r6515/58208
K 10
graphics.c
V 25
file 17h.5ck.r17977/67906
K 10
graphics.h
V 25
file 17i.5ck.r17977/68161
K 11
gui_iconv.c
V 26
file 17l.5ck.r16578/465566
K 11
gui_iconv.h
V 23
file 17m.0.r13354/66657
K 8
gui_id.h
V 25
file 17n.5ck.r17230/40092
K 10
gui_main.c
V 26
file 17o.5ck.r18101/103260
K 10
gui_main.h
V 25
file 17p.5ck.r17169/47828
K 11
gui_mouse.c
V 25
file 3ca.5ck.r17169/47579
K 11
gui_mouse.h
V 24
file 3cb.0.r12670/112397
K 12
gui_string.c
V 26
file 17r.5ck.r17392/130460
K 12
gui_string.h
V 23
file 17s.0.r13481/30445
K 14
gui_tilespec.c
V 25
file 191.5ck.r17977/65403
K 14
gui_tilespec.h
V 25
file 192.5bk.r13912/53929
K 11
happiness.c
V 23
file 17x.0.r11361/41144
K 11
happiness.h
V 23
file 17y.0.r11361/41867
K 9
helpdlg.c
V 25
file 17z.5ck.r17977/68415
K 9
helpdlg.h
V 23
file 180.0.r11361/47416
K 10
inputdlg.c
V 23
file 181.0.r11361/47897
K 10
inputdlg.h
V 23
file 182.0.r5500/260641
K 10
inteldlg.c
V 26
file 183.5ck.r17839/202044
K 10
inteldlg.h
V 22
file 2d9.0.r11409/2687
K 9
mapctrl.c
V 25
file 184.5ck.r18270/49396
K 9
mapctrl.h
V 23
file 185.0.r13354/63700
K 9
mapview.c
V 25
file 186.5ck.r17977/64636
K 9
mapview.h
V 23
file 187.0.r13354/56676
K 6
menu.c
V 25
file 188.5ck.r17563/72453
K 6
menu.h
V 25
file 189.5bk.r13856/57405
K 12
messagedlg.c
V 26
file 18a.5ck.r16578/465051
K 12
messagedlg.h
V 22
file 2da.0.r5989/48394
K 12
messagewin.c
V 25
file 18b.5ck.r18082/39106
K 12
messagewin.h
V 25
file 18c.5ck.r18082/39362
K 5
mmx.h
V 23
file 2e1.0.r6286/134429
K 11
optiondlg.c
V 25
file 18d.5ck.r18082/38343
K 11
optiondlg.h
V 25
file 18e.5ck.r17169/46811
K 7
pages.c
V 25
file 2qg.5ck.r18082/38857
K 7
pages.h
V 22
file 2qh.0.r8639/16416
K 8
plrdlg.c
V 23
file 18f.5ck.r18251/297
K 8
plrdlg.h
V 22
file 18g.0.r6387/81301
K 10
ratesdlg.h
V 22
file 2db.0.r5989/47726
K 10
repodlgs.c
V 25
file 18i.5ck.r18167/13670
K 10
repodlgs.h
V 25
file 18j.5ck.r18076/43515
K 14
spaceshipdlg.c
V 25
file 18m.5ck.r17146/89433
K 14
spaceshipdlg.h
V 23
file 18n.0.r5500/263363
K 8
sprite.c
V 26
file 39k.5ck.r16578/462217
K 8
sprite.h
V 24
file 39l.0.r12670/108062
K 18
themebackgrounds.c
V 26
file 3ff.5ck.r16929/333181
K 18
themebackgrounds.h
V 25
file 3fg.5bk.r13794/17440
K 13
themecolors.c
V 26
file 392.5ck.r16929/334218
K 13
themecolors.h
V 24
file 393.0.r12670/114433
K 8
themes.c
V 26
file 38p.5ck.r17122/385702
K 11
themespec.c
V 26
file 390.5ck.r17392/130205
K 11
themespec.h
V 26
file 391.5ck.r16578/464018
K 11
unistring.c
V 23
file 18o.0.r13354/57401
K 11
unistring.h
V 23
file 18p.0.r13481/30205
K 14
voteinfo_bar.c
V 25
file 4ha.5ck.r16063/62859
K 14
voteinfo_bar.h
V 25
file 4hb.5ck.r16063/63032
K 8
widget.c
V 25
file 3fu.5ck.r17977/65923
K 8
widget.h
V 25
file 3fv.5ck.r17230/39838
K 15
widget_button.c
V 25
file 3fh.5ck.r17146/86344
K 15
widget_button.h
V 24
file 3g7.0.r12670/113556
K 17
widget_checkbox.c
V 24
file 3fi.5bk.r14076/6064
K 17
widget_checkbox.h
V 24
file 3g8.0.r12670/106620
K 14
widget_combo.c
V 25
file 4k3.5ck.r17230/40601
K 14
widget_combo.h
V 25
file 4k4.5ck.r17230/40775
K 13
widget_core.c
V 25
file 3fj.5ck.r17230/40344
K 13
widget_edit.c
V 25
file 3fk.5ck.r17977/69182
K 13
widget_edit.h
V 24
file 3g9.0.r12670/115595
K 13
widget_icon.c
V 25
file 3fl.5ck.r17977/66435
K 13
widget_icon.h
V 24
file 3ga.0.r12670/112107
K 14
widget_label.c
V 24
file 3fm.5bk.r13597/6851
K 14
widget_label.h
V 24
file 3gb.0.r12670/110079
K 10
widget_p.h
V 24
file 3fn.0.r12670/107197
K 18
widget_scrollbar.c
V 26
file 3fo.5df.r17392/130722
K 18
widget_scrollbar.h
V 24
file 3gc.0.r12670/116811
K 15
widget_window.c
V 25
file 3fp.5ck.r17977/64893
K 15
widget_window.h
V 23
file 3gd.0.r12699/32533
K 7
wldlg.c
V 25
file 18q.5ck.r17977/69439
K 7
wldlg.h
V 26
file 18r.5ck.r16285/100508
END
ENDREP
id: 16t.5ck.r18279/111949
type: dir
pred: 16t.5ck.r18270/55172
count: 641
text: 18279 106681 5255 5255 3167cf8b6a124dc4798cd50531eb72f1
props: 11108 12869 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-sdl
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 5f.5ck.r16999/27621
K 6
agents
V 24
dir zf.5ck.r18151/132928
K 11
attribute.c
V 24
file xh.5ck.r17034/13614
K 11
attribute.h
V 19
file xi.0.r4715/844
K 7
audio.c
V 26
file 139.5ck.r17122/401512
K 7
audio.h
V 25
file 13a.5ck.r18054/43658
K 12
audio_none.c
V 23
file 13d.0.r6129/145164
K 12
audio_none.h
V 22
file 13e.0.r4452/27228
K 11
audio_sdl.c
V 26
file 13f.5ck.r16578/477644
K 11
audio_sdl.h
V 22
file 13g.0.r4452/26570
K 17
chatline_common.c
V 26
file 14q.5ck.r18151/150459
K 17
chatline_common.h
V 26
file 14r.5ck.r18151/150710
K 16
citydlg_common.c
V 23
file z4.5ck.r17527/6810
K 16
citydlg_common.h
V 24
file z5.5ck.r18054/34390
K 13
cityrepdata.c
V 24
file mb.5ck.r18268/21637
K 13
cityrepdata.h
V 24
file mc.5ck.r18054/34639
K 11
civclient.c
V 23
file 4f2.5ck.r15408/695
K 13
client_main.c
V 25
file 2f.5cp.r18151/154246
K 13
client_main.h
V 23
file hz.5cq.r16632/1773
K 8
climap.c
V 25
file 197.5ck.r16888/19519
K 8
climap.h
V 25
file 198.5ck.r16888/20012
K 9
climisc.c
V 23
file d5.5ck.r18160/6836
K 9
climisc.h
V 25
file i0.5ck.r18151/154767
K 8
clinet.c
V 25
file hc.5ck.r18151/154004
K 8
clinet.h
V 25
file i1.5bk.r14427/324634
K 15
colors_common.c
V 25
file 33a.5ck.r17618/25002
K 15
colors_common.h
V 25
file 33b.5ck.r16397/92170
K 19
connectdlg_common.c
V 25
file 2fw.5ck.r18270/55415
K 19
connectdlg_common.h
V 25
file 2fx.5ck.r16532/38983
K 9
control.c
V 24
file gz.5ck.r17928/58133
K 9
control.h
V 22
file i2.5ck.r17128/896
K 7
dummy.c
V 23
file 4f9.5ck.r15641/551
K 8
editor.c
V 25
file 3bg.5ck.r17928/77933
K 8
editor.h
V 25
file 3bh.5ck.r15761/13075
K 11
ggzclient.c
V 25
file 394.5ck.r18061/46733
K 11
ggzclient.h
V 24
file 395.0.r12670/122419
K 17
global_worklist.c
V 25
file 4i6.5ck.r17509/30059
K 17
global_worklist.h
V 26
file 4i7.5ck.r16319/100206
K 6
goto.c
V 25
file vu.5ck.r17392/129962
K 6
goto.h
V 24
file vv.5ck.r15509/18108
K 8
gui-ftwl
V 24
dir 2k2.5ck.r17849/82782
K 11
gui-gtk-2.0
V 24
dir zs.5ck.r18279/102246
K 7
gui-sdl
V 25
dir 16t.5ck.r18279/111949
K 8
gui-stub
V 23
dir mh.5ck.r18270/58708
K 9
gui-win32
V 23
dir np.5ck.r18027/22062
K 7
gui-xaw
V 24
dir 9o.5ck.r18279/105931
K 10
helpdata.c
V 24
file h1.5ck.r18237/40495
K 10
helpdata.h
V 24
file i3.5ck.r18237/40742
K 7
include
V 23
dir b8.5ck.r18270/48908
K 16
mapctrl_common.c
V 26
file 15m.5ck.r17627/132485
K 16
mapctrl_common.h
V 25
file 15n.5ck.r18054/43899
K 16
mapview_common.c
V 25
file z2.5ck.r17122/405287
K 16
mapview_common.h
V 24
file z3.5ck.r18054/44148
K 19
messagewin_common.c
V 25
file 14s.5ck.r18082/46145
K 19
messagewin_common.h
V 25
file 14t.5ck.r18082/46403
K 9
options.c
V 24
file dc.5ck.r18270/58951
K 9
options.h
V 23
file i4.5ck.r18115/6527
K 17
overview_common.c
V 25
file 2yk.5ck.r17735/12797
K 17
overview_common.h
V 25
file 2yl.5ck.r16930/40516
K 10
packhand.c
V 24
file n.5ck.r18279/106175
K 10
packhand.h
V 24
file i5.5bk.r14422/90154
K 15
plrdlg_common.c
V 25
file 14u.5ck.r18042/20931
K 15
plrdlg_common.h
V 25
file 14v.5ck.r18054/42900
K 17
repodlgs_common.c
V 26
file 11i.5ck.r18151/137715
K 17
repodlgs_common.h
V 26
file 11j.5ck.r18151/137972
K 9
reqtree.c
V 26
file 2ym.5ck.r17839/188629
K 9
reqtree.h
V 23
file 2yn.0.r13481/22674
K 9
servers.c
V 26
file 33x.5ck.r17122/406310
K 9
servers.h
V 25
file 33y.5ck.r15505/14398
K 6
text.c
V 25
file 2g3.5ck.r17928/63094
K 6
text.h
V 24
file 2g4.5ck.r17475/5221
K 15
themes_common.c
V 25
file 352.5ck.r16930/48921
K 15
themes_common.h
V 25
file 353.5ck.r16930/49172
K 10
tilespec.c
V 24
file hl.5ck.r18268/26388
K 10
tilespec.h
V 24
file i6.5ck.r16930/49667
K 14
update_queue.c
V 26
file 4jw.5ck.r18101/110053
K 14
update_queue.h
V 25
file 4jx.5ck.r18082/46852
K 10
voteinfo.c
V 23
file 4fe.5ck.r17708/187
K 10
voteinfo.h
V 25
file 4ff.5ck.r16201/17543
END
ENDREP
id: d.5ck.r18279/115972
type: dir
pred: d.5ck.r18270/62967
count: 4972
text: 18279 112195 3764 3764 424e55d8ff87ab2b94b24bc1889f4953
props: 17175 1380 160 0 7b3e01f16aae8514c8fa39e5f80a327d
cpath: /trunk/client
copyroot: 15280 /trunk

PLAIN
K 9
ABOUT-NLS
V 22
file fu.0.r13215/85704
K 7
AUTHORS
V 19
file 5u.0.r12982/94
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 26
file 6l.5ck.r15924/3800068
K 7
INSTALL
V 22
file 6.5ck.r17486/2711
K 11
Makefile.am
V 24
file 59.5ck.r17690/10482
K 4
NEWS
V 23
file 6m.5ck.r16839/2057
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5ck.r18279/97995
K 10
autogen.sh
V 24
file 12o.5ck.r16223/7590
K 9
bootstrap
V 24
dir 2p5.5ck.r17613/37512
K 6
client
V 23
dir d.5ck.r18279/115972
K 6
common
V 22
dir p.5ck.r18279/95668
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 25
file 149.5ck.r18113/13510
K 4
data
V 22
dir w.5ck.r18277/63332
K 6
debian
V 22
dir 5w.5ck.r17748/2019
K 12
dependencies
V 23
dir 2yu.5ck.r17871/1886
K 11
diff_ignore
V 21
file qq.5ck.r17605/92
K 3
doc
V 22
dir k7.5ck.r18235/8273
K 10
fc_version
V 25
file 2lo.5en.r18237/30058
K 2
m4
V 23
dir 12p.5ck.r17653/2245
K 6
manual
V 24
dir 2m2.5ck.r18214/62476
K 7
modinst
V 23
dir 4pj.5ck.r18091/9668
K 2
po
V 23
dir fs.5ck.r18276/95460
K 7
scripts
V 23
dir 2yo.5bk.r14810/1300
K 6
server
V 22
dir z.5ck.r18279/90455
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 22
dir 2g9.5ck.r15661/767
K 7
utility
V 23
dir 1c.5ck.r18268/10890
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 24
dir 2eu.5bk.r13732/30345
END
ENDREP
id: 3.5ck.r18279/117524
type: dir
pred: 3.5ck.r18278/5425
count: 13691
text: 18279 116207 1304 1304 2af968a426ecfa9bce9b1323d3ce1e4c
props: 17175 3052 264 0 91336f1f63d2f606e65376614b5c72e4
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 20
dir 1.0.r18272/14242
K 4
tags
V 19
dir 2.0.r17998/5187
K 5
trunk
V 23
dir 3.5ck.r18279/117524
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r18279/117917
type: dir
pred: 0.0.r18278/5813
count: 18279
text: 18279 117752 152 152 139bfc4e2909d07630f8efbdba6f3e4b
cpath: /
copyroot: 0 /

22.5ck.t18278-1 modify true false /trunk/ai/aihand.c

il.5ck.t18278-1 modify true false /trunk/common/nation.c

4m0.5ck.t18278-1 modify true false /trunk/server/savegame2.c

a6.5ck.t18278-1 modify true false /trunk/client/gui-xaw/dialogs.c

321.5ck.t18278-1 modify true false /trunk/server/scripting/api_find.c

4z.5ck.t18278-1 modify true false /trunk/server/stdinhand.c

vg.5ck.t18278-1 modify true false /trunk/server/srv_main.c

im.5ck.t18278-1 modify true false /trunk/common/nation.h

2lh.5ck.t18278-1 modify true false /trunk/ai/aisettler.c

3bk.5ck.t18278-1 modify true false /trunk/server/edithand.c

lw.5ck.t18278-1 modify true false /trunk/server/barbarian.c

n.5ck.t18278-1 modify true false /trunk/client/packhand.c

8w.5ck.t18278-1 modify true false /trunk/server/ruleset.c

vh.5ck.t18278-1 modify true false /trunk/server/srv_main.h

2f5.5ck.t18278-1 modify true false /trunk/common/packets.def

4u.5ck.t18278-1 modify true false /trunk/server/plrhand.c

vl.5ck.t18278-1 modify true false /trunk/server/savegame.c

4g.5ck.t18278-1 modify true false /trunk/server/citytools.c

3u.5ck.t18278-1 modify true false /trunk/common/game.c

4v.5ck.t18278-1 modify true false /trunk/server/plrhand.h

17a.5ck.t18278-1 modify true false /trunk/client/gui-sdl/dialogs.c

108.5ck.t18278-1 modify true false /trunk/client/gui-gtk-2.0/dialogs.c

2ll.5ck.t18278-1 modify true false /trunk/common/fc_types.h

4o.5ck.t18278-1 modify true false /trunk/server/gamehand.c

33n.5ck.t18278-1 modify true false /trunk/server/techtools.c

2wq.5ck.t18278-1 modify true false /trunk/common/requirements.c


117917 118068
