DELTA 17037 59 9369
SVN  ä>�ƒ	�dß ‰6 ƒ j‰(€Š CŽ �0ÇG ‚Èu€M W™5€�" �›£ FÊ@€‚6 CŽ§ FÊ@€‚  CŽ€C FÊ@€‚! CŽ¬ FÊ@€˜< �²?€…n ƒ¸Y€Ž
 CŽª FÊ@€‚q CŽ€B FÊ@€‚U CŽ¶ FÊ@€ƒ V“m€ƒQ CŽ¨ FÊ@€� jÍ.€†) CŽ» FÊ@ Y×*€�U CŽ½ FÊ@€�H CŽ® FÊ@€�P CŽ« FÊ@€� CŽ® FÊ@€�#log
/* client */
#include "options.h"

/* client/gui-gtk-2.0 */
#include "gui_main.h"
#include "gui_stuff.h"

#include "optiondlg.h"


/* The option dialog data. */
struct option_dialog {
  const struct option_set *poptset;     /* The option set. */
  Widget shell;                         /* The main widget. */
};

#define SPECLIST_TAG option_dialog
#define SPECLIST_TYPE struct option_dialog
#include "speclist.h"
#define option_dialogs_iterate(pdialog) \
  TYPED_LIST_ITERATE(struct option_dialog, option_dialogs, pdialog)
#define option_dialogs_iterate_end  LIST_ITERATE_END

/* All option dialog are set on this list. */
static struct option_dialog_list *option_dialogs = NULL;

/* Option dialog main functions. */
static struct option_dialog *
option_dialog_get(const struct option_set *poptset);
static struct option_dialog *
option_dialog_new(const char *name, const struct option_set *poptset);
static void option_dialog_destroy(struct option_dialog *pdialog);

static inline void option_dialog_foreach(struct option_dialog *pdialog,
                                         void (*option_action)
                                         (struct option *));

static void option_dialog_option_refresh(struct option *poption);
static void option_dialog_option_apply(struct option *poption);
**
  Callback to change the entry for a string option that has a fixed list
 ***********/
static void stropt_change_callback(Widget w, XtPointer client_data,
                                   XtPointer call_data)
{
  char *val = (char *) ************
  OK button callback.
******/
static void option_dialog_ok_callback(Widget w, XtPointer client_data,
                                      XtPointer call_data)
{
  struct option_dialog *pdialog = (struct option_dialog *) client_data;

  option_dialog_foreach(pdialog, option_dialog_option_apply);
  option_dialog_destroy(pdialog);
}************
  Cancel button callback.
******/
static void option_dialog_cancel_callback(Widget w, XtPointer client_data,
                                          XtPointer call_data)
{
  struct option_dialog *pdialog = (struct option_dialog *) client_data;

  option_dialog_destroy(pdialog);
}************
  Returns the option dialog which fit the option set.
******/
static struct option_dialog *
option_dialog_get(const struct option_set *poptset)
{
  if (NULL != option_dialogs) {
    option_dialogs_iterate(pdialog) {
      if (pdialog->poptset == poptset) {
        return pdialog;
      }
    } option_dialogs_iterate_end;
  }
  return NULL;
}************
  Creates a new option dialog.
******/
static struct option_dialog *
option_dialog_new(const char *name, const struct option_set *poptset)
{
  struct option_dialog *pdialog;
  Widget form, viewport, command, scrollform, label, widget;
  Dimension width, longest_width = 0;

  /* Create the dialog structure. */
  pdialog = fc_malloc(sizeof(*pdialog));
  pdialog->poptset = poptset;
  pdialog->shell = I_T(XtCreatePopupShell("settableoptionspopup",
                                          transientShellWidgetClass,
                                          toplevel, NULL, 0));
  /* Append to the option dialog list. */
  if (NULL == option_dialogs) {
    option_dialogs = option_dialog_list_new();
  }
  option_dialog_list_append(option_dialogs, pdialog);

  form = XtVaCreateManagedWidget("settableoptionsform", formWidgetClass,
                                 pdialog->shell, NULL);
  label = I_L(XtVaCreateManagedWidget("settableoptionslabel",
                                      labelWidgetClass, form, NULL));
  viewport = XtVaCreateManagedWidget("settableoptionsviewport",
                                     viewportWidgetClass, form, NULL);
  scrollform = XtVaCreateManagedWidget("settableoptionsscrollform",
                                       formWidgetClass, viewport, NULL);

  /* Add option labels. */
  widget = NULL;
  options_iterate(poptset, poption) {
    if (NULL != widget) {
      option_set_gui_data(poption, widget);     /* Set previous label. */

      widget = XtVaCreateManagedWidget("label", labelWidgetClass,
                                       scrollform, XtNlabel,
                                       option_description(poption),
                                       XtNfromVert, widget, NULL);
    } else {
      widget = XtVaCreateManagedWidget("label", labelWidgetClass,
                                       scrollform, XtNlabel,
                                       option_description(poption), NULL);
    }

    /* The addition of a scrollbar screws things up. There must be a
     * better way to do this. */
    XtVaGetValues(widget, XtNwidth, &width, NULL);
    width += 15;
    XtVaSetValues(widget, XtNwidth, width, NULL);

    if (width > longest_width) {
      longest_width = width;
    }
  } options_iterate_end;

  /* Resize label. */
  XtVaSetValues(label, XtNwidth, longest_width + 15, NULL);

  /* Add option widgets. */
  options_iterate(poptset, poption) {
    widget = option_get_gui_data(poption);      /* Get previous label. */
    option_set_gui_data(poption, NULL);

    switch (option_type(poption)) {
    case OT_BOOLEAN:
      if (NULL != widget) {
        widget = XtVaCreateManagedWidget("toggle", toggleWidgetClass,
                                         scrollform, XtNfromHoriz,
                                         label, XtNfromVert, widget, NULL);
      } else {
        widget = XtVaCreateManagedWidget("toggle", toggleWidgetClass,
                                         scrollform, XtNfromHoriz, label,
                                         NULL);
      }
      XtAddCallback(widget, XtNcallback, toggle_callback, NULL);
      option_set_gui_data(poption, widget        Widget popupmenu;

        if (NULL != widget) {
          widget = XtVaCreateManagedWidget(option_name(poption),
                                           menuButtonWidgetClass, scrollform,
                                           XtNfromHoriz, label, XtNfromVert,
                                           widget, NULL);
        } else {
          widget = XtVaCreateManagedWidget(option_name(poption),
                                           menuButtonWidgetClass, scrollform,
                                           XtNfromHoriz, label, NULL);
        }

        popupmenu = XtVaCreatePopupShell("menu", simpleMenuWidgetClass,
                                         widget, NULL);

        strvec_iterate(vals, val) {
        * too, but for values that are uninitialized (empty) this
           * would be confusing. */
          XtSetSensitive(widget, FALSE);
        }

        /* There should be another way to set width of menu button */
        XtVaSetValues(widget, XtNwidth, 120 ,NULL);
        option_set_gui_data(poption, widget);
        break;
      }
      /* Else fallthrough. */
    case OT_INTEGER:
      if (NULL != widget) {
        widget = XtVaCreateManagedWidget("input", asciiTextWidgetClass,
                                         scrollform, XtNfromHoriz, label,
                                         XtNfromVert, widget, NULL);
      } else {
        widget = XtVaCreateManagedWidget("input", asciiTextWidgetClass,
                                         scrollform, XtNfromHoriz, label,
                                         NULL);
      }
      break;
    case OT_FONT:
    case OT_VIDEO_MODE:
      log_error("Option type %s (%d) not supported yet.",
                option_type_name(option_type(poption)),
                option_type(poption));
      break;
    }
  } options_iterate_end;

  /* Add buttons. */
  command = I_L(XtVaCreateManagedWidget("settableoptionsokcommand",
                                        commandWidgetClass, form, NULL));
  XtAddCallback(command, XtNcallback, option_dialog_ok_callback, pdialog);

  command = I_L(XtVaCreateManagedWidget("settableoptionscancelcommand",
                                        commandWidgetClass, form, NULL));
  XtAddCallback(command, XtNcallback,
                option_dialog_cancel_callback, pdialog);

  XtRealizeWidget(pdialog->shell);
  xaw_horiz_center(label);
  XtSetSensitive(main_form, FALSE);
  xaw_set_relative_position(toplevel, pdialog->shell, 25, 25);
  XtPopup(pdialog->shell, XtGrabNone);

  return pdialog;
}************
  Destroys an option dialog.
******/
static void option_dialog_destroy(struct option_dialog *pdialog)
{
  if (NULL != option_dialogs) {
    option_dialog_list_remove(option_dialogs, pdialog);
  }

  options_iterate(pdialog->poptset, poption) {
    option_set_gui_data(poption, NULL);
  } options_iterate_end;

  XtDestroyWidget(pdialog->shell);
  free(pdialog);
  XtSetSensitive(main_form, TRUE);
}************
  Do an action for all options of the option dialog.
******/
static inline void option_dialog_foreach(struct option_dialog *pdialog,
                                         void (*option_action)
                                         (struct option *))
{
  fc_assert_ret(NULL != pdialog);

  options_iterate(pdialog->poptset, poption) {
    option_action(poption);
  } options_iterate_end;
}************
  Update an option in the option dialog.
******/
static void option_dialog_option_refresh(struct option *poption)
{
  Widget widget = (Widget) option_get_gui_data(poption);

  switch (option_type(poption)) {
  case OT_BOOLEAN:
    XtVaSetValues(widget, XtNstate, option_bool_get(poption),
                  XtNlabel, option_bool_get(poption) ? _("Yes") : _("No"),
                  NULL);
  break;
  case OT_INTEGER:
    {
      char valstr[64];

      fcwidget, XtNstring, valstr, NULL);
    }
    break;
  case OT_STRING:
    XtVaSetValues(widget, option_str_values(poption) ? "label"
                  : XtNstring, option_str_get(poption), NULL);
    break;
  case OT_FONT:
  case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption));
    break;
  }

  XtSetSensitive(widget, option_is_changeable(poption));
}************
  Apply the option change.
******/
static void option_dialog_option_apply(struct option *poption)
{
  if (option_is_changeable(poption)) {
    Widget widget{
        Boolean b;

        XtVaGetValues(widget, XtNstate, &b, NULL);
        option_bool_set(poption, b);
      }
      break;
    case OT_INTEGER:
      {
        XtPointer dp;
        int val;

        XtVaGetValues(widget, XtNstring, &dp, NULL);
        if (1 == sscanf(dp, "%d", &val)) {
          option_int_set(poption, val);
        }
      }
      break;
    case OT_STRING:
      {
        XtPointer dp;

        XtVaGetValues(widget, option_str_values(poption) ? "label"
                      : XtNstring, &dp, NULL);
        option_str_set(poption, dp);
      }
      break;
    case OT_FONT:
    case OT_VIDEO_MODE:
      log_error("Option type %s (%d) not supported yet.",
                option_type_name(option_type(poption)),
                option_type(poption));
      break;
    }
  }
}************
  Popup the option dialog for the option set.
struct option_dialog *pdialog = option_dialog_get(poptset);

  if (NULL != pdialog) {
    option_dialog_foreach(pdialog, option_dialog_option_refresh);
  } else {
    (void) option_dialog_new(name, poptset);
  }
}************
  Popdown the option dialog for the option set.
******/
void option_dialog_popdown(const struct option_set *poptset)
{
  struct option_dialog *pdialog = option_dialog_get(poptset);

  if (NULL != pdialog) {
    option_dialog_destroy(pdialog);
  }
}************
  Update the GUI for the option.
******/
void option_gui_update(struct option *poption)
{
  struct option_dialog *pdialog = option_dialog_get(option_optset(poption));

  if (NULL != pdialog) {
    option_dialog_option_refresh(poption);
  }
}************
  Add the GUI for the option.
******/
void option_gui_add(struct option *poption)
{
  /* We cannot currently insert new option widgets. */
  option_dialog_popdown(option_optset(poption));
}************
  Remove the GUI for the option.
******/
void option_gui_remove(struct option *poption)
{
  /* We cannot currently remove new option widgets. */
  option_dialog_popdown(option_optset(poption));
}
ENDREP
DELTA 17229 574 304
SVN  Ç	Ì`:…H †z €� G €�o ›?†x  ‚o¢q¤ �p¥^ �IµO ‚'· ‚ ¹A ‚»b€‚ ‰½k
struct video_mode {
  int width;
  int height;
};
#define VIDEO_MODE(ARG_width, ARG_height) \
    { .width = ARG_width, .height = ARG_height }
******
  Constructor.
****************************************************************************/
static inline struct video_mode video_mode(int width, int height)
{
  struct video_mode mode = VIDEO_MODE(width, height);
  return mode;
}
struct video_mode gui_sdl_screendefine SPECENUM_VALUE4 OT_VIDEO_MODE/* Option type OT_VIDEO_MODE functions. */
struct video_mode option_video_mode_get(const struct option *poption);
struct video_mode option_video_mode_def(const struct option *poption);
bool option_video_mode_set(struct option *poption, struct video_mode mode);
ENDREP
DELTA 17042 78895 19363
SVN  �º�¿]4…@ üq €�' ž;üc€� †0�›€�1 Xá{™ E¡  †{�¢h€�4 Xá{ �Q�ª:
  case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption)case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_typecase OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption));
    break;Apply the option change.

  case OT_VIDEO_MODE:
    log_error("Option type %s (%d) not supported yet.",
              option_type_name(option_type(poption)),
              option_type(poption));
    break;ENDREP
DELTA 17230 0 34535
SVN  ‚×W‚ñz‘u ‰m — Ý9‰i¶ Yå?€�F U�µ · Yå?€�4 U�µ ± Wå?€ƒ' U�µ » Wå?€� U�µ � f�‰= ‘bè€‚C iõ1¦ Ií;¯ �F��m ‹Zû €ƒ �E��n ‡i�ˆ"€‚0 �Çz��]#include "string_vectoronvert a video mode to string. Returns TRUE on successline bool video_mode_to_string(char *buf, size_t buf_len,
                                        struct video_mode mode)
{
  return (2 < fc_snprintf(buf, buf_len, "%dx%d", mode.width, mode.height))Convert a string to video mode. Returns TRUE on successline bool string_to_video_mode(const char *buf,
                                        struct video_mode *mode)
{
  return (2 == sscanf(buf, "%dx%d", &mode->width, &mode->height))Return a string vector containing all video modesstruct strvec *video_mode_list(void)
{
  struct strvec *video_modes = strvec_new();
  /* Don't free this. */
  SDL_Rect **mode = SDL_ListModes(NULL, SDL_FULLSCREEN | Main.screen->flags);
  char buf[64];

  for (; NULL != *mode; mode++) {
    if (video_mode_to_string(buf, sizeof(buf),
                             video_mode((*mode)->w, (*mode)->h))) {
      strvec_append(video_modes, buf);
    }
  }

  return video_modesFree correctly the memory assigned to the video_mode_widgetvoid video_mode_widget_destroy(struct widget *widget)
{
  combo_popdown(widget);
  strvec_destroy((struct strvec *) widget->data.vector)Create a widgetVIDEO_MODE:
    {
      char buf[64];

      if (!video_mode_to_string(buf, sizeof(buf),
                                option_video_mode_get(poption))) {
        /* Always fails. */
        fc_assert(video_mode_to_string(buf, sizeof(buf),
                                       option_video_mode_get(poption)));
      }

buf, video_mode_list(), adj_size(25),
    widget->destroy = video_mode_widget_destroyVIDEO_MODE:
    {
      char buf[64];

      if (video_mode_to_string(buf, sizeof(buf),
                               option_video_mode_get(poption))) {
        copy_chars_to_string16(widget->string16, buf);
      } else {
        /* Always fails. */
        fc_assert(video_mode_to_string(buf, sizeof(buf),
                                       option_video_mode_get(poption)));
      }VIDEO_MODE:
    {
      char *str = convert_to_chars(widget->string16->text);
      struct video_mode mode;

      if (string_to_video_mode(str, &mode)) {
        option_video_mode_set(poption, mode);
      } else {
        /* Always fails. */
        fc_assert(string_to_video_mode(str, &mode));
      }ENDREP
DELTA 16881 0 20363
SVN  …þ †  Œ2‚Ž8 ˆ( €�* ‰+� fŠŠ �Šq �.òv€� ‚/��c Lƒ­ ™ Lƒã €�: Mƒ¬€F Lƒã €�P V…ò@¿ Lƒã €�L ^ƒ¢1“ _ƒÙ4° Lƒã €� W…ò?³ Lƒã €� W…ò?€@ Lƒã €�R Mƒ¬Ÿ Lƒã €’f EÂ€e � ¢-œ �Ç}€ˆv Mƒ¬¡ [ƒÉ~€� P„�@ž SƒÏ=€� V…ò@— SƒÏ=€� V…ò@« SƒÏ=€�$ V…ò@© SƒÏ=€�  V…ò@— SƒÏ=€E �ƒÐb  SƒÏ=€� V…ò@³ SƒÏ=€�i V…ò@« Lƒã €�" V…ò@³ Lƒã €� V…ò@ �ƒ´X€� Rƒ¶z€‚8 rƒ¹& �ƒ­J€� �ƒ¯u­ Lƒã €�@ Iƒ³>œ V…ò@” XƒÏ8€G �	ƒÛO™ [ƒÉ~€B �ƒÞ® SƒÏ=€�J V…ò@© SƒÏ=€�J V…ò@º Z„†:€‚ dƒ¹4® SƒÏ=€�? V…ò@© SƒÏ=€�? V…ò@© SƒÏ=€�? V…ò@© SƒÏ=€�? V…ò@º Z„†:€�~ dƒ¹4­ SƒÏ=€�L V…ò@¨ SƒÏ=€�L V…ò@± SƒÏ=€�[ V…ò@¹ Z„†:€‚. dƒ¹4­ SƒÏ=€�L V…ò@¨ SƒÏ=€�L V…ò@ª Lƒã €�R V…ò@¹ Z„†:€‚1 dƒ¹4± SƒÏ=€‚  V…ò@¬ SƒÏ=€‚  V…ò@€E T„†@€‚7 Mƒ¬– Lƒã €„+ Mƒ¬« Lƒã €š_ Mƒ¬º TƒÏ<€d �\ŽL€g n‘, v’ ‚>“‡ t“€‚3 „W§1€g �8�Q€�[ ƒžz� Dž@— B×  ‚4£zª …§'Ÿ �<­L€�Y ƒžx� Dž@— B×  �£z ‚4µ³ �§1 ~Ý~ ƒAÌ8€Q �8¾€�Y ƒžx� Dž@ ‚U×7„ �Pµyª ‡MÉqŸ �;Ñd€�Y ƒžx� Dž@ „)×7± �§1 …Ý~Ÿ �8ã8€�[ ƒžz� Dž@” EÖ} �mÅ(Ž �Uµt· �§1 ~Ý~ ƒÌ8€‚' tîv€‚ ƒ)Ò{� Dž@š �£;£ �:Ç>€‚{ �ú<�–w zƒ‘4€† †rƒ–4° oî ˆ �îw€ƒ	 �%ñQ Hƒ£@” {ƒ¨h­ ]ƒ¥4¨ ‚/ƒ¦& |ƒž€�' V…ò@ �ƒ¨X€u V…ò@® Lƒã €E P„�@¶ Lƒã €U ‚=ƒÖ'€K `ƒÙ3¥ SƒÏ=€m WƒÆ=¤ SƒÏ=€o P„�@« SƒÏ=€ V…ò@¥ SƒÏ=€{ V…ò@£ SƒÏ=€o P„�@· Lƒã €K ^„Š?” {ƒ¨h€� V…ò@° Vƒâv€x V…ò@¸ Vƒâv€o T„�<€S Z„†:€�i _„Š>µ Vƒê9€v V…ò@¸ Vƒê9€m T„�<¾ Vƒê9€q P„�@¾ Vƒê9€q P„�@€S Z„†:€‚1 _„Š>µ Uƒü €{ P„�@½ Uƒü €l \„�4€H Uƒü €�M Xƒ§}€R Z„†:€‚E `„Š=¼ Lƒã €z P„�@€D Lƒã €s T„�<€H Lƒã €} P„�@€P Z„†:€‚B `„Š=€B Lƒã €� P„�@€J Lƒã €� T„�<€V Z„†:€‚f _„Š>Ÿ rƒ´z€�t �Xƒ¼v �Tƒ¾O �jƒÀ$‡ �9ƒÀ-€ƒ1 Mƒ¬� Lƒã €�: Mƒ¬– Lƒã €„+ Mƒ¬« Lƒã €‘d Mƒ¬º TƒÏ<€†E Mƒ¬µ Lƒã €�N V…ò@� SƒÏ=€ƒo Uƒ´ ± Lƒã €ƒaclient/agents */
#include "cma_fec.h"

/* client/include */
#include "chatline_g.h"
#include "dialogs_g.h"
#include "gui_main_g.h"
#include "menu_g.h"
#include "optiondlgconnectdlg_commoackhand_gestruct video_mode gui_sdl_screen = VIDEO_MODE(640, 480);
bool gui_sdl_do_cursor_animation = TRUE;
bool gui_sdl_use_color_cursors = TRUE**
  Option set structure**/
struct option_set {
  struct option * (*option_by_number) (int);
  struct option * (*option_first) (void);

  int (*category_number) (void);
  const char * (*category_name) (int);
};**
  Returns the option corresponding of the number in this option set**/
struct option *optset_option_by_number(const struct option_set *poptset,
                                       int id)
{
  fc_assert_ret_val(NULL != poptset, NULL);

  return poptset->option_by_number(idReturns the option corresponding of the name in this option set**/
struct option *optset_option_by_name(const struct option_set *poptset,
                                     const char *name)
{
  fc_assert_ret_val(NULL != poptset, NULL);

  options_iterate(poptset, options_iterate_end**
  Returns the first option of this option set**/
struct option *optset_option_first(const struct option_set *poptset)
{
  fc_assert_ret_val(NULL != poptset, NULL);

  return poptset->option_firstReturns the number of categories of this option set**/
int optset_category_number(const struct option_set *poptset)
{
  fc_assert_ret_val(NULL != poptset, 0);

  return poptset->category_numberReturns the name (translated) of the category of this option set**/
const char *optset_category_name(const struct option_set *poptset,
                                 int category)
{
  fc_assert_ret_val(NULL != poptset, NULL);

  return poptset->category_name(category);
}
**
  The base class for options**/
struct option {
  /* A link to the option set. */
  const struct option_set *poptset;
  /* Type of the option. */
  enum option_type type;

  /* Common accessors. */
  const struct option_common_vtable {
    int (*number) (const struct option *);
    const char * (*name) (const struct option *);
    const char * (*description) (const struct option *);
    const char * (*help_text) (const struct option *);
    int (*category) (const struct option *);
    bool (*is_changeable) (const struct option *);
    struct option * (*next) (const struct option *);
  } *common_vtable;
  /* Specific typed accessors. */
  union {
    /* Specific boolean accessors. */
    const struct option_bool_vtable {
      bool (*get) (const struct option *);
      bool (*def) (const struct option *);
      bool (*set) (struct option *, bool);
    } *bool_vtable;
    /* Specific integer accessors. */
    const struct option_int_vtable {
      int (*get) (const struct option *);
      int (*def) (const struct option *);
      int (*min) (const struct option *);
      int (*max) (const struct option *);
      bool (*set) (struct option *, int);
    } *int_vtable;
    /* Specific string accessors. */
    const struct option_str_vtable {
      const char * (*get) (const struct option *);
      const char * (*def) (const struct option *);
      const struct strvec * (*values) (const struct option *);
      bool (*set) (struct option *, const char *);
    } *str_vtable;
    /* Specific font accessors. */
    const struct option_font_vtable {
      const char * (*get) (const struct option *);
      const char * (*def) (const struct option *);
      const char * (*target) (const struct option *);
      bool (*set) (struct option *, const char *);
    } *font_vtable;
    /* Specific font accessors. */
    const struct option_video_mode_vtable {
      struct video_mode (*get) (const struct option *);
      struct video_mode (*def) (const struct option *);
      bool (*set) (struct option *, struct video_mode);
    } *video_mode_vtable;
  };

  /* Called after the value changed. */
  void (*changed_callback) (struct option *option);

  /* Volatile. */
  void *gui_data;
};

#define OPTION(poption) ((struct option *) (poption))

#define OPTION_INIT(optset, spec_type, spec_table_var, common_table,        \
                    spec_table, changed_cb) {                               \
  .poptset = optsetspec_type,                                                        \
  .common_vtable = &common_table,spec_table_var = &spec_tablechanged_cb,                                           \
  .gui_data = NULL                                                          \
}
#define OPTION_BOOL_INIT(optset, common_table, bool_table, changed_cb)      \
  OPTION_INIT(optset, OT_BOOLEAN, bool_vtable, common_table, bool_table,    \
              changed_cb)
#define OPTION_INT_INIT(optset, common_table, int_table, changed_cb)        \
  OPTION_INIT(optset, OT_INTEGER, int_vtable, common_table, int_table,      \
              changed_cb)
#define OPTION_STR_INIT(optset, common_table, str_table, changed_cb)        \
  OPTION_INIT(optset, OT_STRING, str_vtable, common_table, str_table,       \
              changed_cb)
#define OPTION_FONT_INIT(optset, common_table, font_table, changed_cb)      \
  OPTION_INIT(optset, OT_FONT, font_vtable, common_table, font_table,       \
              changed_cb)
#define OPTION_VIDEO_MODE_INIT(optset, common_table, video_mode_table,      \
                               changed_cb)                                  \
  OPTION_INIT(optset, OT_VIDEO_MODE, video_mode_vtable, common_table,       \
              video_mode_table, changed_cb)
**
  Returns the option set owner**/
const struct option_set *option_optset(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);

  return poption->poptset**
  Returns the number of the**/
int option_number(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, -1);

  return poption->common_vtable->number(poptionReturns the name of the**/
const char *option_name(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);

  return poption->common_vtable->name(poptionReturns the description (translated) of the**/
const char *option_description(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);

  return poption->common_vtable->description(poptionReturns the help text (translated) of the**/
const char *option_help_text(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);

  return poption->common_vtable->help_text(poptionReturns the type of the**/
enum option_type option_type(const struct option *poption)
{
  fc**
  Returns the category of the**/
int option_category(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, -1);

  return poption->common_vtable->category(poptionReturns the name (tranlated) of the category of the**/
const char *option_category_name(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);

  return optset_category_name(poption->poptset,
                              poption->common_vtable->category(poption)Returns TRUE if this option can be modified**/
bool option_is_changeable(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, FALSE);

  return poption->common_vtable->is_changeable(poptionReturns the next option or NULL if this is the last**/
struct option *option_next(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);

  return poption->common_vtable->next(poption**/
bool option_reset(struct option *poption)
{
  fc_assert_ret_val(NULL != poption, FALSE);

  switch (option_type(poption)) {
  case OT_INTEGER:
    return option_int_set(poption, option_int_def(poption));
  case OT_STRING:
    return option_str_set(poption, option_str_def(poption));
  case OT_FONT:
    return option_font_set(poption, option_font_def(poption));
  case OT_VIDEO_MODE:
    return option_video_mode_set(poption, option_video_mode**/
void option_set_changed_callback(struct option *poption,
                                 void (*callback) (struct option *))
{
  fc**
  Force to use the option changed callback**/
void option_changed(struct option *poption)
{
  fc_assert_ret(NULL != poption);

  if (!options_fully_initialized) {
    /* Prevent to use non-initialized datas. */
    return;
  }

  if (
  option_gui_update(poptionSet the gui data for**/
void option_set_gui_data(struct option *poption, void *data)
{
  fc**
  Returns the gui data**/
void *option_get_gui_data(const struct option *poption)
{
  fc**
  Returns the current value of this boolean**/
bool option_bool_get(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(OT_BOOLEAN == poption->type, FALSE);

  return poption->bool_vtable->get(poptionReturns the default value of this boolean**/
bool option_bool_def(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(OT_BOOLEAN == poption->type, FALSE);

  return poption->bool_vtable->def(poptionSets the value of this boolean option. Returns TRUE if the**/
bool option_bool_set(struct option *poption, bool val)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(OT_BOOLEAN == poption->type, FALSE);

  if (poption->bool_vtable->set(poption, val)) {
    option_changed(poption);
    return TRUE**
  Returns the current value of this integer**/
int option_int_get(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, 0);
  fc_assert_ret_val(OT_INTEGER == poption->type, 0);

  return poption->int_vtable->get(poptionReturns the default value of this integer**/
int option_int_def(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, 0);
  fc_assert_ret_val(OT_INTEGER == poption->type, 0);

  return poption->int_vtable->def(poptionReturns the minimal value of this integer**/
int option_int_min(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, 0);
  fc_assert_ret_val(OT_INTEGER == poption->type, 0);

  return poption->int_vtable->min(poptionReturns the maximal value of this integer**/
int option_int_max(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, 0);
  fc_assert_ret_val(OT_INTEGER == poption->type, 0);

  return poption->int_vtable->max(poptionSets the value of this integer option. Returns TRUE if the**/
bool option_int_set(struct option *poption, int val)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(OT_INTEGER == poption->type, FALSE);

  if (poption->int_vtable->set(poption, val)) {
    option_changed(poption);
    return TRUE**
  Returns the current value of this string**/
const char *option_str_get(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);
  fc_assert_ret_val(OT_STRING == poption->type, NULL);

  return poption->str_vtable->get(poptionReturns the default value of this string**/
const char *option_str_def(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);
  fc_assert_ret_val(OT_STRING == poption->type, NULL);

  return poption->str_vtable->def(poptionReturns the possible string values of this string**/
const struct strvec *option_str_values(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);
  fc_assert_ret_val(OT_STRING == poption->type, NULL);

  return poption->str_vtable->values(poptionSets the value of this string option. Returns TRUE if the**/
bool option_str_set(struct option *poption, const char *str)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(OT_STRING == poption->type, FALSE);
  fc_assert_ret_val(NULL != str, FALSE);

  if (poption->str_vtable->set(poption, str)) {
    option_changed(poption);
    return TRUE**
  Returns the current value of this string**/
const char *option_font_get(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);
  fc_assert_ret_val(OT_FONT == poption->type, NULL);

  return poption->font_vtable->get(poptionReturns the default value of this string**/
const char *option_font_def(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);
  fc_assert_ret_val(OT_FONT == poption->type, NULL);

  return poption->font_vtable->def(poptionReturns the target style name of this font**/
const char *option_font_target(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, NULL);
  fc_assert_ret_val(OT_FONT == poption->type, NULL);

  return poption->font_vtable->target(poptionSets the value of this string option. Returns TRUE if the**/
bool option_font_set(struct option *poption, const char *font)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(OT_FONT == poption->type, FALSE);
  fc_assert_ret_val(NULL != font, FALSE);

  if (poption->font_vtable->set(poption, font)) {
    option_changed(poption);
    return TRUE**
  Returns the current value of this video mode**/
struct video_mode option_video_mode_get(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, video_mode(-1, -1));
  fc_assert_ret_val(OT_VIDEO_MODE == poption->type, video_mode(-1, -1));

  return poption->video_mode_vtable->get(poptionReturns the default value of this video mode**/
struct video_mode option_video_mode_def(const struct option *poption)
{
  fc_assert_ret_val(NULL != poption, video_mode(-1, -1));
  fc_assert_ret_val(OT_VIDEO_MODE == poption->type, video_mode(-1, -1));

  return poption->video_mode_vtable->def(poptionSets the value of this video mode option. Returns TRUE if the value
 **/
bool option_video_mode_set(struct option *poption, struct video_mode mode)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(OT_VIDEO_MODE == poption->type, FALSE);

  if (poption->video_mode_vtable->set(poption, mode)) {
    option_changed(poption);
    return TRUE;
  }
  return FALSE;
}
**
  Client option set**/
static struct option *client_optset_option_by_number(int id);
static struct option *client_optset_option_first(void);
static int client_optset_category_number(void);
static const char *client_optset_category_name(int category);

static struct option_set client_optset_static = {
  .option_by_number = client_optset_option_by_number,
  .option_first = client_optset_option_first,
  .category_number = client_optset_category_number,
  .category_name = client_optset_category_name
};
const struct option_set const *client_optset = &client_optset_static;
**
  Virtuals tables for the client options**/
static int client_option_number(const struct option *poption);
static const char *client_option_name(const struct option *poption);
static const char *client_option_description(const struct option *poption);
static const char *client_option_help_text(const struct option *poption);
static int client_option_category(const struct option *poption);
static bool client_option_is_changeable(const struct option *poption);
static struct option *client_option_next(const struct option *poption);

static const struct option_common_vtable client_option_common_vtable = {
  .number = client_option_number,
  .name = client_option_name,
  .description = client_option_description,
  .help_text = client_option_help_text,
  .category = client_option_category,
  .is_changeable = client_option_is_changeable,
  .next = client_option_next
};

static bool client_option_bool_get(const struct option *poption);
static bool client_option_bool_def(const struct option *poption);
static bool client_option_bool_set(struct option *poption, bool val);

static const struct option_bool_vtable client_option_bool_vtable = {
  .get = client_option_bool_get,
  .def = client_option_bool_def,
  .set = client_option_bool_set
};

static int client_option_int_get(const struct option *poption);
static int client_option_int_def(const struct option *poption);
static int client_option_int_min(const struct option *poption);
static int client_option_int_max(const struct option *poption);
static bool client_option_int_set(struct option *poption, int val);

static const struct option_int_vtable client_option_int_vtable = {
  .get = client_option_int_get,
  .def = client_option_int_def,
  .min = client_option_int_min,
  .max = client_option_int_max,
  .set = client_option_int_set
};

static const char *client_option_str_get(const struct option *poption);
static const char *client_option_str_def(const struct option *poption);
static const struct strvec *
    client_option_str_values(const struct option *poption);
static bool client_option_str_set(struct option *poption, const char *str);

static const struct option_str_vtable client_option_str_vtable = {
  .get = client_option_str_get,
  .def = client_option_str_def,
  .values = client_option_str_values,
  .set = client_option_str_set
};

static const char *client_option_font_get(const struct option *poption);
static const char *client_option_font_def(const struct option *poption);
static const char *client_option_font_target(const struct option *poption);
static bool client_option_font_set(struct option *poption, const char *font);

static const struct option_font_vtable client_option_font_vtable = {
  .get = client_option_font_get,
  .def = client_option_font_def,
  .target = client_option_font_target,
  .set = client_option_font_set
};

static struct video_mode
client_option_video_mode_get(const struct option *poption);
static struct video_mode
client_option_video_mode_def(const struct option *poption);
static bool client_option_video_mode_set(struct option *poption,
                                         struct video_mode mode);

static const struct option_video_mode_vtable client_option_video_mode_vtable = {
  .get = client_option_video_mode_get,
  .def = client_option_video_mode_def,
  .set = client_option_video_mode_set
};

enum client_option_category {
  COC_GRAPHICS,
  COC_OVERVIEW,
  COC_SOUND,
  COC_INTERFACE,
  COC_NETWORK,
  COC_FONT,
  COC_MAX
};**
  Derived class client option, inherinting of base clas**/
struct client_option {
  struct option base_option;    /* Base structure, must be the first! */
ategory category;
  enum gui_type specific;       /* GUI_LAST for common options. */

  union {
    /* OT_FONTconst char *const target;
    } font;
    /* OT_VIDEO_MODE type option. */
    struct {
      struct video_mode *const pvalue;
      const struct video_mode def;
    } video_mode;
  };
};

#define CLIENT_OPTION(poption) ((struct client_option *) (poption))

/*
 * Generate a client option of type OT_BOOLEAN (FALSE or TRUE).
 * ocb:   A callback function of type void (*)(struct option *) called when
 *       base_option = OPTION_BOOL_INIT(&client_optset_static,                    \
                                  client_option_common_vtable,              \
                                  client_option_bool_vtable, ocb),{     \
    .boolean = {}

/*
 * Generate a client option of type option *) called when
 *       base_option = OPTION_INT_INIT(&client_optset_static,                     \
                                 client_option_common_vtable,               \
                                 client_option_int_vtable, ocb),{     \
    .integer = {}

/*
 * Generate a client option of type OT_STRINGcb:   A callback function of type void (*)(struct option *) called when
 *       base_option = OPTION_STR_INIT(&client_optset_static,                     \
                                 client_option_common_vtable,               \
                                 client_option_str_vtable, ocb),{NULL}

/*
 * Generate a client option of type option *) called when
 *       base_option = OPTION_STR_INIT(&client_optset_static,                     \
                                 client_option_common_vtable,               \
                                 client_option_str_vtable, ocb),{}

/*
 * Generate a client option of type OT_FONToption *) called when
 *       base_option = OPTION_FONT_INIT(&client_optset_static,                    \
                                  client_option_common_vtable,              \
                                  client_option_font_vtable, ocb),{     \
    .font = {target = otgt,}

/*
 * Generate a client option of type OT_VIDEO_MODE_width, odef_height:  The default values for this client option.
 * ocb:   A callback function of type void (*)(struct option *) called when
 *        the option changed.
 */
#define GEN_VIDEO_OPTION(oname, odesc, ohelp, ocat, ospec, odef_width,      \
                         odef_height, ocb).base_option = OPTION_VIDEO_MODE_INIT(&client_optset_static,              \
                                        client_option_common_vtable,        \
                                        client_option_video_mode_vtable,    \
                                        ocb),{     \
    .video_mode = {VIDEO_MODE(odef_width, odef_height)}

/* Some changed callbacks. */
static void reqtree_show_icons_callback(struct option *poption);
static void view_option_changed_callback(struct option *poption);
static void mapview_redraw_callback(struct option *poption);
static void voteinfo_bar_callback(struct option *poption);
static void font_changed_callback(struct option *poption);

static struct client_option client_."),
                  COC_INTERFACE, GUI_SDL, FALSE, NULL),
  GEN_VIDEO_OPTION(gui_sdl_screen, N_("Screen resolution"),
                   N_("This option controls the resolution of the "
                      "selected screen."),
                   COC_INTERFACE, GUI_SDL, 640, 480, NULL),
  GEN_BOOL_OPTION(gui_sdl_do_cursor_animation, N_("Do cursor animation"),
                  N_("If this option is disabled, the cursor will be "
                     "always displayed as static."),
                  COC_INTERFACE, GUI_SDL, TRUE, NULL),
  GEN_BOOL_OPTION(gui_sdl_use_color_cursors, N_("Use color cursors"),
                  N_("If this option is disabled, the cursor will be "
                     "always displayed in black and white."),
                  COC_INTERFACE, GUI_SDL, TRUEclient_options_num = ARRAY_SIZE(client_options);poption)poption##_max =                         \
      client_options + client_options_num;                                  \
  struct client_option *client_##poption = client_options;                  \
  struct option *poption;                                                   \
  for (; client_##poption < poption##_max; client_##poption++) {            \
    poption = OPTION(client_##poption);**
  Returns the nex**/
static struct client_option *
    client_
    client_options + client_options_num**/
static struct option *client_optset_option_by_number(int id)
{
  if (0 > id || id > client_options_num)  {
    return NULL;
  }
  return OPTION(client_options + id**/
static struct option *client_optset_option_first(void)
{
  return OPTION(client_option_next_valid(client_options)Returns the number of client option categories**/
static int client_optset_category_number(void)
{
  return COC_MAX**
  Returns the name (translated) of the option class**/
static const char *client_optset_category_name(int category)
{
  switch (category%s: invalid option category number %d.",
            __FUNCTION__, category*
  Returns the number of this client**/
static int client_option_number(const struct option *poption)
{
  return CLIENT_OPTION(poption) - client_**
  Returns the name of this client**/
static const char *client_option_name(const struct option *poption)
{
  return CLIENT_OPTION(poption)->name**
  Returns the description of this client**/
static const char *client_option_description(const struct option *poption)
{
  return _(CLIENT_OPTION(poption)->descriptionReturns the help text for this client**/
static const char *client_option_help_text(const struct option *poption)
{
  return _(CLIENT_OPTION(poption)->help_textReturns the category of this client**/
static int client_option_category(const struct option *poption)
{
  return CLIENT_OPTION(poption)->category**
  Returns TRUE if this client option can be modified**/
static bool client_option_is_changeable(const struct option *poption)
{**
  Returns the nex**/
static struct option *client_option_next(const struct option *poption)
{
  return OPTION(client_option_next_valid(CLIENT_OPTION(poption) + 1)Returns the value of this client option of type **/
static bool client_option_bool_get(const struct option *poption)
{
  return *(CLIENT_OPTION(poption)->boolean.pvalueReturns the default value of this client option of type **/
static bool client_option_bool_def(const struct option *poption)
{
  return CLIENT_OPTION(poption)->boolean**
  Set the value of this client option of type OT_BOOLEAN.  Returns TRUE if
  the**/
static bool client_option_bool_set(struct option *poption, bool val)
{
  struct client_option *pcoption = CLIENT_OPTION(poption);

  if (*pcoption->boolean.pvalue == val) {
    return FALSE;
  }

  *pcoption->boolean.pvalue = val**
  Returns the value of this client option of type **/
static int client_option_int_get(const struct option *poption)
{
  return *(CLIENT_OPTION(poption)->integer.pvalueReturns the default value of this client option of type **/
static int client_option_int_def(const struct option *poption)
{
  return CLIENT_OPTION(poption)->integer**
  Returns the minimal value for this client option of type **/
static int client_option_int_min(const struct option *poption)
{
  return CLIENT_OPTION(poption)->integer.min**
  Returns the maximal value for this client option of type **/
static int client_option_int_max(const struct option *poption)
{
  return CLIENT_OPTION(poption)->integer.max**
  Set the value of this client option of type OT_INTEGER.  Returns TRUE if
  the**/
static bool client_option_int_set(struct option *poption, int val)
{
  struct client_option *pcoption = CLIENT_OPTION(poption);

  if (val < pcoption->integer.min
      || val > pcoption->integer.max
      || *pcoption->integer.pvalue == val) {
    return FALSE;
  }

  *pcoption->integer.pvalue = val**
  Returns the value of this client option of type **/
static const char *client_option_str_get(const struct option *poption)
{
  return CLIENT_OPTION(poption)->string.pvalue**
  Returns the default value of this client option of type **/
static const char *client_option_str_def(const struct option *poption)
{
  return CLIENT_OPTION(poption)**
  Returns the possible string values of this client option of type
  **/
static const struct strvec *
    client_option_str_values(const struct option *poption)
{
  return (CLIENT_OPTION(poption)->string.val_accessor
          ? CLIENT_OPTION(poption)->string.val_accessor()**
  Set the value of this client option of type OT_STRING.  Returns TRUE if
  the**/
static bool client_option_str_set(struct option *poption, const char *str)
{
  struct client_option *pcoption = CLIENT_OPTION(poption);

  if (strlen(str) >= pcoption->string.size
      || 0 == strcmp(pcoption->string.pvalue, str)) {
    return FALSE;
  }

  fc_strlcpy(pcoption->string.pvalue, str, pcoption->string.size**
  Returns the value of this client option of type OT_FONT**/
static const char *client_option_font_get(const struct option *poption)
{
  return CLIENT_OPTION(poption)->font.pvalue**
  Returns the default value of this client option of type OT_FONT**/
static const char *client_option_font_def(const struct option *poption)
{
  return CLIENT_OPTION(poption)->font**
  Returns the target style name of this client option of type OT_FONT**/
static const char *client_option_font_target(const struct option *poption)
{
  return CLIENT_OPTION(poption)->font.target**
  Set the value of this client option of type OT_FONT.  Returns TRUE if
  the**/
static bool client_option_font_set(struct option *poption, const char *font)
{
  struct client_option *pcoption = CLIENT_OPTION(poption);

  if (strlen(font) >= pcoption->font.size
      || 0 == strcmp(pcoption->font.pvalue, font)) {
    return FALSE;
  }

  fc_strlcpy(pcoption->font.pvalue, font, pcoption->font.size**
  Returns the value of this client option of type OT_VIDEO_MODE**/
static struct video_mode
client_option_video_mode_get(const struct option *poption)
{
  return *CLIENT_OPTION(poption)->video_mode.pvalue**
  Returns the default value of this client option of type OT_VIDEO_MODE**/
static struct video_mode
client_option_video_mode_def(const struct option *poption)
{
  return CLIENT_OPTION(poption)->video_mode**
  Set the value of this client option of type OT_VIDEO_MODE.  Returns TRUE
  if the**/
static bool client_option_video_mode_set(struct option *poption,
                                         struct video_mode mode)
{
  struct client_option *pcoption = CLIENT_OPTION(poption);

  if (0 == memcmp(&mode, pcoption->video_mode.pvalue,
                  sizeof(struct video_mode))) {
    return FALSE;
  }

  *pcoption->video_mode.pvalue = mode**
  Load the option from a fil**/
static bool client_option_load(struct option *poption,
                               struct section_file *sf)
{
  fc_assert_ret_val(NULL != poption, FALSE);
  fc_assert_ret_val(NULL != sf, FALSE);

  switch (option_type(poption)) {
  case OT_FONTfont_set(poption, string));
    }
  case OT_VIDEO_MODE:
    {
      struct video_mode mode;

      return (secfile_lookup_int(sf, &mode.width, "client.%s_width",
                                 option_name(poption))
              && secfile_lookup_int(sf, &mode.height, "client.%s_height",
                                    option_name(poption))
              && option_video_mode_set(poption, mode));
    }
  }
  return FALSE;
}
**
  Server options variables**/
static char **server_options_categories = NULL;
static struct server_option *server_options = NULL;

static int server_options_categories_num = 0;
static int server_options_num = 0;
**
  Server option set**/
static struct option *server_optset_option_by_number(int id);
static struct option *server_optset_option_first(void);
static int server_optset_category_number(void);
static const char *server_optset_category_name(int category);

static struct option_set server_optset_static = {
  .option_by_number = server_optset_option_by_number,
  .option_first = server_optset_option_first,
  .category_number = server_optset_category_number,
  .category_name = server_optset_category_name
};
const struct option_set const *server_optset = &server_optset_static;
**
  Virtuals tables for the client options**/
static int server_option_number(const struct option *poption);
static const char *server_option_name(const struct option *poption);
static const char *server_option_description(const struct option *poption);
static const char *server_option_help_text(const struct option *poption);
static int server_option_category(const struct option *poption);
static bool server_option_is_changeable(const struct option *poption);
static struct option *server_option_next(const struct option *poption);

static const struct option_common_vtable server_option_common_vtable = {
  .number = server_option_number,
  .name = server_option_name,
  .description = server_option_description,
  .help_text = server_option_help_text,
  .category = server_option_category,
  .is_changeable = server_option_is_changeable,
  .next = server_option_next
};

static bool server_option_bool_get(const struct option *poption);
static bool server_option_bool_def(const struct option *poption);
static bool server_option_bool_set(struct option *poption, bool val);

static const struct option_bool_vtable server_option_bool_vtable = {
  .get = server_option_bool_get,
  .def = server_option_bool_def,
  .set = server_option_bool_set
};

static int server_option_int_get(const struct option *poption);
static int server_option_int_def(const struct option *poption);
static int server_option_int_min(const struct option *poption);
static int server_option_int_max(const struct option *poption);
static bool server_option_int_set(struct option *poption, int val);

static const struct option_int_vtable server_option_int_vtable = {
  .get = server_option_int_get,
  .def = server_option_int_def,
  .min = server_option_int_min,
  .max = server_option_int_max,
  .set = server_option_int_set
};

static const char *server_option_str_get(const struct option *poption);
static const char *server_option_str_def(const struct option *poption);
static const struct strvec *
    server_option_str_values(const struct option *poption);
static bool server_option_str_set(struct option *poption, const char *str);

static const struct option_str_vtable server_option_str_vtable = {
  .get = server_option_str_get,
  .def = server_option_str_def,
  .values = server_option_str_values,
  .set = server_option_str_set
};**
  Derived class server option, inherinting of base clas**/
struct server_option {
  struct option base_option;    /* Base structure, must be the first! */

  char *name;                   /* Short name - used as an identifier */
  char *description;            /* One-line description */
  char *help_text;              /* Paragraph-length help text */
  unsigned char category;
  bool desired_sent;
  bool is_changeable;
  bool is_visible;

  union {
    /* OT_BOOLEAN type option. */
    struct {
      bool value;
      bool def;
    } boolean;
    /* OT_INTEGER type option. */
    struct {
      int value;
      int def, min, max;
    } integer;
    /* OT_STRING type option. */
    struct {
      char *value;
      char *def;
    } string;
  };
};

#define SERVER_OPTION(poption) ((struct server_option *) (poption))

static void desired_settable_option_send(struct option *poption);
**
  Initialize the server options (not received yet)**/
void server_options_init(void)
{
  fc_assert(NULL == server_options_categories);
  fc_assert(NULL == server_options);
  fc_assert(0 == server_options_categories_num);
  fc_assert(0 == server_options_numFree one server**/
static void server_option_free(struct server_option *poption)
{
  if (OT_STRING == option_type(OPTION(poption))) {
    if (NULL != poption->string.value) {
      FC_FREE(poption->string.value);
    }
    if (NULL != poption->string.def) {
      FC_FREE(poption->string.def);
    }
  }
  if (NULL != poption->name) {
    FC_FREE(poption->name);
  }
  if (NULL != poption->description) {
    FC_FREE(poption->description);
  }
  if (NULL != poption->help_text) {
    FC_FREE(poption->help_text**
  Free the server options, if already received**/
void server_options_free(void)
{
  int i;

  /* Don't keep this dialog open. */
  option_dialog_popdown(server_optset);

  /* Free the options themselves. */
  if (NULL != server_options) {
    for (i = 0; i < server_options_num; i++) {
      server_option_free(server_options + i);
    }
    FC_FREE(server_options);
    server_options_num = 0;
  }

  /* Free the categories. */
  if (NULL != server_options_categories) {
    for (i = 0; i < server_options_categories_num; i++…þ  ‚æcÍ—…E¨J Š]�G�EFka>GbYˆDc‡@K�J‡D%„G��G…J%‚@L�JŽG�Wƒ‚Fƒ=‚D‘Gƒ<±F�[Ebd„$S„S�]„6D�8g„|F….FƒoI‚M‚&L‚8F„D
ƒGƒ<‚O…#G`�V†_�‚I5…D‚ZED…W�I5J‡BˆZ„:F…[ˆE�<„^†1…J �D‚ƒG†]†.…D‡‰O†…F-GbDk�]…]X†Gƒ&\†%N†LL‰XT�FˆnV‡D‡6W‡LF‰@U�D‡E‚!†H…sŒD‹J‚L‚!Gƒ&E‹T@P‚CˆD�9F�E‹U„EŒaƒGEŒa�EŒVIŒgE‹TFƒbˆE�E�EˆK�E‹<‚F�3ƒDcJ�+ƒP�9‡N�P†P�9FŽFŠb™T‹k‡F�DcG�?ƒ@VŠgE„‚P‹k„G†Q@j‚C]ƒ5NƒZGƒ6G…t‚G…tLDŒhGŒt‚DŠDƒIˆ|‚EŽaGƒ6M„I‘ŽG‘EŽa‰FŒkŠG‘…N‘{ŠZ’ƒL’’E…\S„$ƒJ‘sG†	H„2G‘ŽG�$Fˆ1ƒI’†IˆGI“+D‘ƒP‘FcV“+„M�M“4Fc[’ƒE’#†E†I“+E‹UDXŒhIŠE�H†*KŽ+�R‹i�Dƒ�D’j„E‹TƒI†QG‘=Eˆ1‰D‹d‚D“u�DƒvGƒ&IˆGN”(…H‘ZGb†I–:ƒJŠHI–;Gbc”IG–tM’2H‘Z‰G”@EŽ&D
X’H†*N”wi•G�G�M”wH†*E�+J�FF�9K—lD‘Y”K˜hHc…FcH˜HG�qQ˜WƒY”J™C[™LŽK—lƒY”Jš[™‚H�_M•5�K‹OŒJŽ8D“\�R‡9KŒtE‰O˜2�N—mIbI“+‚L™DD[™Š@�š`Ša›pG‰†H…kIš/DƒAE’rˆD‘C„M‡@Ož�O“FžƒRžcžWDž-�Gž<MˆnGž
�fžUKžtK”l�E•…PždžCFž{E–6Gž=nŸ@ažmD“Y�iJ—-D‰J•jD‰H‘?D�l‚Jˆ{ŠI ([ˆ3c¡<†G–THŸV¡s…@L¢D¢„JžE“J—-H‰L‰~H‰D¢nM—-F•\G” I•lL¤"D¢nE”sS—.E“J¤2G—:H†*X¤JJ R—J—L”lY¤gK¥ F’VK¥4F—iT¤OT¤dI—A[˜+U˜HJ¦D‘ˆD¦I¥HƒD•�G˜$R¦fƒL¦}ˆO§	I™U™#K¦†I¦wK§P§H§xF§*S§1X¨‚D‘H¥IƒY¨D‚L¨_‚W§JLŽc¡<F¡vF¦wJ•j†T�]©FƒJ•jH§9M©rQ§PHš\Xœ@Bšhu›,I™D�^‚D§*X©H“�M¢P‰GˆK‚U¦W¬=J¤$J¬=‚Hƒ„D�~�K¬=H•mF’Hƒ%K“A�D„�F…iF‰ZD¤‡G­FˆK†D‡v„D‚�G¬ŠEŽ=‚D‚!H­uG‹G„E‚!‚D®’H­u‚DˆCˆK­Y„E­iŠD„‚E¯ƒI®)D‚5D®e†IˆGJ¬1�E“<Jª‚M‘rL§lL¬1L”aG…]ƒH‚ƒK†O—H†*GªJ’2M‘rD¥~M°%ƒS°8‚N¯WK”l�b°)�E°O°Q@_ŠhŠH‘‚D§x�E‡vE‹CƒD¯zƒ@\‹zV‘DS©4D²7D§@‚Hƒ5P‘KG–=EƒcF’eV³tF’eF©TŠ�S‰kE“…JH‘D¬DG‘R�E´8„J™:Q¤oGµ‚I—AG�?H˜2Gµ�Iµ�E›y�@WŽoJ‹=N…m‡DŽ>G‹eF‘.@QŒ M�_‘Eƒh�GƒbEŸU‡D¸�T…H�GG�?H›zD¥~H�?F‘mQ´DE‘=@_Šh„H²:�I¥N²B@R‹b·DE¹@�DƒF´[¸=M³hQŠS@`±XE‘/‚H¬S…s@O‚DDƒhN‘J‰F‘/Qº^^ˆ@a» †Hˆ;‚D¼Q‚"H‚8�@P¼"M’eW¼wD›9DƒhH¾JN·vI£w‚J¿c�`…X¸#c½�H¾J�@Q½BY»qG–K¼@W‹N¼rE» F‘/M´U´G�?V‘e‚O½$@f½B@lÁFV¿"E» D›9ÂKF¡k@a½BK¢Z@�Ä K¢Z@BÅK¢Z@a½BD¢�D£[G²P@�ÄI£V@BÅI£V@a½BI£w@~ÁFH¾J@BÅJ¤@[ŠhD”dD·{EÉN‹GƒD„ˆ@W‹E‘O™QL¬p@BÅO¤9@j±X@j¹LL³;R·IH» jÅ`ºoWÂtƒ@c»F¦xUÁFEÓ1D�J�F@jÎ#E˜h‚@CÊM¦p@cÅQE§;@�Ó+ƒ@JÔLƒ@UÏi�E–qÓ*QÍo‚KØIG•\@oÓZD–MV�}�FÎyD©uL�xr‘KQ¤GO¦p�EÚ1N¸#I’G¡7‚D¬q‹D“u…D•iO¡VD§	…G§G�?F”d@�ÒMG�q@iÁ[D™C@EÔIM§x@�Õ@tÝ@E×!K¨#@aÜ †EÚ0‚WÉ@� ßR‚@CÇNK¨T@bá"‚@�"â‚@Kã*D©@�×sHÝ@�Ø}D™C\ÚDƒh@IÚ2D§	�V¨IGˆK‚EÛd�V¨rJéoY§n@TÛ@�ÛpFŽ@qÄDš@EÔIL©\@�Õ@{ì#@E×!Jª"@aÜ ƒF¤]G¡vEâ�^Ó1‚@gî{HÚ;…U³TEšEñ;jÅF›z@�×sGì#@�Ø}Dš\ÚO’e@FÚ5F…FŸ^X©RDõgxÛ�SÛRDõgTÛqD�H‰FšsƒDƒE¼q�F÷B�F÷:@AÀr‡H„�D®DŒRF”H’�E’‡D¬<ŠD¶e„G–‚@D¾QIŒMEƒG÷[ID­+K½Dƒh…DˆmFŠGú„Dú„EúGú
Eú(ˆIú$ƒHúAŠHú0‚D‘nˆEú#ˆFú"‰Hú0Eú~†Eúm‡Mû�Dú‡EúDˆDÛ.E¤FD‹KƒD„MúˆEúzDü…Eúz„Eû'DúƒJü‡Hú0ƒDû
EûMEüK†FúxEüK‡LûfƒMúDü/…Eü8…LûfFƒlP‡wF÷jMˆ$O÷[Eˆl‹H¸5P‡wƒDûB„Dú �\ýKEú ‚DˆmG�?]ý}Hûr]þIûrFþ@‰cþGƒ]þDý IÿHýo‚Dÿ…IÛ-…Gùk@G»…@`ùE–6Jº^G�€E–6@H�€†Fá~G÷BHÃƒF‚ „Eâ#F�bD®"D¦3ŒD¯‚G��Yƒ@aùD¯-J³sE�‚U‚D´n�D�ƒzT‡9O�„L’e†G��TD�9E�€FŒaE�€Iý'�D»�F�€P’a�IÚr„D�ƒz‡Dèf�E�„ ‚J�„_ƒH÷[‡IöW‡FµQƒHˆHD­B‚HÁCG�„MˆIˆGF’eP�„?ƒG�„bKúIû„IûEú~Dú=K�†>‚I�†>‡GûIû…J�†WF�†x…KúxDûJ‚O�†iQûAEú~„Dû%K�‡?FûIü@Iû„FýF�‡n‚KúxŠJ�†W�O�‡d‡FüMú]ûDúLûR…Dü@E�ˆW†Eü†Eú…Dü ƒGúbEúgŒE�‡OŒD�‰…Hü'ŠK�ˆ0G�‰qFú^Dü9ˆD�Š�D�†_‹K�ˆ0H�Š&ˆG�‰ML�Š#…E�†WM�ŠU…Gú/DúL�Š#„FúxL�Š#D�ŠI�Q�Šf†V�Š~‡Q�Šf„E�Šƒ[�Š#O�‹}H�ŠwR�ŒG�‹X�ŒJ�‹*O�‹}P�‹@O�‹}L�‹\O�‹}F�‹tJ�‡eˆIü&FýD�Œ1ŽF�ŠEúY‚K�ŒIKúYVúh‡FúxJ��k‰J��;JûD�Ž‰E�Ž‚E�†WˆH�ŽqD�ˆLH�Žq�Dú!I�ŠH�Žu„G�‹D�Žu„H��.Dü<�F�ˆFD�ŽuƒK�‡"I��F�‡nG�ŽXOúIûDú�Fû&L�ŒHF���E�ŽhLúD��Q„Eü*E��<„D��D��FƒD�‡E†K�ˆ0G��Y…F��DF��Z�D�ˆƒE�†WG�‘ƒS��f‚D�‡„Gü(aú8Nú(Iú4DûJúDEú=ƒLúEJ�‘b‚DúZ‚K��:Eú(†F��SEú(†GúwEú(E�†dE�‰_†G��K�ˆrE�’p†F�‹.G�“Eú^F��SI�“ƒN�ˆoE�’p‡J�‘|G�Š&�E��G�‘Q�ŠwŠE��THü<OüGýo„F�‡xJüJ�‡eMü"Kû^GûgI´…K�†G‰zLþ_I�†X‡oN�”wOˆ$Pÿ J�†Eþ@I5R�…DïyD§<G�…]�•Rc�„†Hù]E÷d„EÛQE�„4ƒK‰HÛsIÛ-P‡wK�„_Lˆ%�E‘M�…ƒG�…J�…*E�€ƒDÅ�J�–|I
D“(J KŽ+…Fâ"ƒE�ƒzƒE÷Q‡:H�—FEÅD�ƒz‚I�˜MFŽ/H–nE�…ƒDímJ¥zE�€‚K�„CE‘*E›9E÷"ƒK�—y�K�™Dµ!E³oE�€IöWM�˜�E�™M›F�˜7�H�™1R�˜xH•x„GýDHˆHD·|G�™�GýDJ U�š_�„O÷[E�€_�–7R�—_E÷dE�—u@k�˜F‰@G��iƒF‚ @�-�‚9D¯@s�ƒjFþCH�—T�™‡G�™�M�™D¯UIbT�™EÑaN�™R@H�š&H�—F‚E„)J�—UL� D›9F�™RY�„a�—_O� {J�…QýXk�¡*J�›RG�—zKµ:Y�¡d�S�…(I÷7@@ÀrŽE�kD‡wD�…D�l„D�–u�@E�fNùOD¯-…F�£o[�ƒjFƒgMÚ5‰D²MI�¥P’aE¾#F�•pR�—FO�–�F�£oS�˜;P�¡4„F�£oN�—n‚Dûq‚H�™BƒD±F�I�—:H�¥D¨[DâŠm�•n‚O�¥}ƒD�¦IEÛP„H¯`I�¦8†@@�¦PF�§1N�§�T�¦D�Ÿ~E¤I�¦8�D‹ZˆI�•oO�—FH×K�–E’P�§ ƒE�¨:I�—uJ�¨(E�¨:�F�§1X�¨?c�¦mE�¨:F�§1S�©D‡†E�…_K’P�©uD�‚hEø[�DŠ(F”dD´…G�¤NE±F¡_�I�¨(@I��fW�£KF�¡D�l@Y�£mD¯r�¤JMòAM�¥G´2�E�¨(‚O�ª?ƒJ�¥�F�¢AL�¥#S�­E¢ZE�­ R�¢RJ�—UF¡_y�¥~Y�¡dF�¬|E¨hO�¦DZ�¡*d�§a�®+I�§1g�®^q�§wO� {D‘O�®=M�¨2X�¥]_�¨qa�®+L�©W�¥]`�©S@F��i�E�¡DüD�ª?G�£n@D¼!]�¬�Z�ƒjPƒbR�¡dE”5�I�…N�ª@„Z�¡)F�´ŠD’VH�²;D®#Dƒ‚a�¥^F�‚vF±CƒFÂDƒH�³ƒ`�´E�®wQ�´rD�£ R�—S�³pM�—5P�¬%G�¤kJŠa�D­B…F�˜/D�¡E†H�aƒG‘k„DúiˆF‹GƒD�¶D®IY�¶D�‰BS�¶8D–6„F‹GŠI�¶+…E�‰AQ�¶8F�·0ƒD�‘=�J�·PH�·)‚X�·3�F�·vG�·QEÒE‚D”nd�·mM�¸‡D� 2P�·]D„EƒrI¹>G�…GF²3�HÑJE¾#ŽM�¶'F�‰+[�·0�P�¹5Z�·w�@E��kH¶AH²ID¯FøKƒD£|D�˜z‚D­KÃ{I²WD�¦Fâ"D�ƒzŠD�‚I�E�£]ƒD©_‰D�»)ƒDAƒD�·9‰E¯$�Dñ^P�¶9G�bH�‚[‚D�ºp…D­‚EóD�šm‡@L�²DL’eD�­G²YJºPH�˜SJº^H�¼yD’lD�¡ŒT�¥E�­NG�­-ˆK�»HD�£ H°_D¡nH�µk�D�­a„E�¾G�½CF�­jL±�D�·XD§*P�»sF‡rEˆrR�¾P�»sIŠHK�¾$D–nF�¸%E¥aF�­.…D�»a„H� F±K�¾L�˜†D›„D�´'�I�»`�D�§3‚J�˜pO¸*H¥|D�¾_�GÛ@M�¾$S�¿	R�˜<…U�¶wG�­jQ‡:Z�·0�[�·uE�¿H�¸^Q�»sE„DþKDŽ+‰I­[E�ƒz�G÷L�¿KÛqK�¾$@I��g…E�»ƒIÑIE�ƒz‚F¯P�»‚E�¤E@v�»7E�¿hƒ@DÙ!Y�¼wD�Ã@‚�½E÷W…Dâ�E�¥J‘B‡G‡p@~�¿)D‡xE�Ç0DÿZ�ÁJ‡:E�Ç7DÿY�·wI� �F�Ç/D¿x`�¹>�F�Ç/‚J E�ÈU�I�ÈXb�É;O‡:�G�ÉJ�É:Z�·wO‡:�J�Ê1ƒF�ÉL�Éd@@�À$e�À`M�Ç/J� Jö+E�¾_‚N�À1„K�›[H�Ì[�·0‚F�Ç/O‡:‚\�·uD�ÌXE�ËyM�Ì,F�Áq†D�¿a…G�¿j„L�»‚[�´A�D¯-E�£ZƒF�Í>ˆ[�µ]�½DÒDD�¾b‚G�¾ƒY�¥]K�¾$S�Î@K�Ë}H¥|M�À	M�Â-P�ÏH�ÏH�É‚K¢�J–F¥~Dƒr‚J®8‚D�»CH„@F�À$T�¶4K�¾/o�Ì@A�Í%p�Íl@D�Î"T�¶4P�ÀQ�Ï*I�¾:Y�À	@m�ÁOG«T�¶4H�Ô-U�ÊG«a�ÊN�ÔfY�·w@D�£OÁ$�F¬2E­ZE” H‰:@]²j…F�Ö�O¯D‚D�Ö~I›w@L�HL�‚-O‰3@K‚DO�¬P�×Z�ƒf‚G´D’l†K�½NN�ƒkD‘XF�ƒsQ�Ù'D�¶Q‚D�ª/‚D�¶Q‚Q�„hH’qG‘}�G¨AEƒhE¨AY’yU�×
F�¾E�Ö~‹G�Ùf�[�Ú7H�ÙAK�—CH�ƒrH�™!…FÁNF�µ<M�˜ G�ÙBK� +E�£KD›†H�ÐO�—G�ÙfF�—CEÑ\H�ÚbI�ÛED�ÚJ�ÙZI�¦%G�ÙfƒE�ÙZI�¾H¡wJ›zH˜+F�ÙZF•F�ÜBM˜@…K�4G�š:E�Ù[IÔDF�ÜuD�Ì$DëX�ËƒI�À=D�Ì'ƒEÛPE�Ý7J�Ï5I�ÜOE�ÇNN�ÏAG™P�ÜI�^L�ÝHÝxI�Ý.D�Úq�Ý;E�ÞT}�Ýq‚I™1F�½(G�Ü$HíI�Ý.K¢gQ�KI�ÑI„2GžT�™ZD�Ù[FÓJ…D‹KƒD�–]„D�ÂM›T›H�ÜF�™$H�ÛF�G�Ü$F�™$G�Üv]�š	E�Ö~F�¡V�ÚiR�ÁJˆqS�á�RŸ	H±Q�Ü&F�¨ @P�œMG¬1@R�×_�ØZZ�žJH�Ùv�Ú!H�¦&V�áT�D�¦&W�®#D�—UD�Û(GÅF’k�J�ädE�­Eòm�E�å	Z�¡*FÁN�E÷]�å,ƒF�åNG�¨L�äe@M�âDK°J�ãN�ÖE�æ&GøPE�ÍuN�»H�hF�¼‚E’@E�ã0EƒW¯<�H±BJº^E�ÙƒD�½CD�Ù#�D�¼
H�èSP’aG©c�D�è]y�ÚIùeI�äkK‘I›KH�à'H¦xJ›zG�é U�ÜUM•H–h^˜AL�À&G�èPI�À=G�èPI�ÝcPÔ=I�ê%H�ÞH¦xG�èPH�ÞL�À&G�è]I�À=G�è]U�êoD×!Q�ëJ�é}G�è]j™s�êLI�ÞCN–h@L�ëG�–	~�ëkNšH¦xOíN¯YL�ë{OïoP�î8]šIZœ^�àFâ‚F�¼$�F�ìKÛoªzD�ÈUD�Í?e›U�êI�êvM�ê Y›L›8_�á)Pö,G©cH�ïWNˆ)D›D�éX‚D�ºxG�¨\D�€gIˆIL�ÚRE�â2X�äqLÅ O�ìsO�Ó…E�»#G¬1P�ñu†X�äpT�Ë:JˆqU�ò)L�âEòmM‰P�é<@T�æ3�X�ç
D�¼EÈyO�ç%�F�ïEF´i‚HÎ‚D�½FE‹JM�»E�¼@j�çNH±BL’e‚E�ñe�–8M�¼‚F�åHf�ö1E‘F�©G�òtw�ä.D·|N�÷G�à(k�ò E�ñI°Yb�áHM�ó%F�øP�óM�øOI�óQ@H�œMD­KZ�ãN‹d@Q�ã0]¯<V�}\�ÙF’kG¬1U�èhv�ÚH�ã�F�ø+G�…„q�òL�˜ G¬1M“AGÙ‹I�ûqI�ñuO�—P�ékb�êU˜Hd�ÝH_�êxH¦xI�ì^§Pk�ýXW�ìkb�þLŽe�î!qªKL«sS�ï8S•/|�ïs@L�ð1Y�ò)WŸMI�ñAF�üLJ†*]öwT�ò)J‚�L�¶
@C�Â?ƒE¯$‰DŽ;‡@T�ã(S�ÖwF‚ƒ3@X�×L�‚-�@p‚ƒEƒHF‚ƒ3e�Øwo�ÙNF�–v�G�† ‚F‚ƒ%†D�­pƒD�÷D¢‚F�¼$EûiL’eG‚†aI�ÚI—:Y�ä1S‚„ F�¾Z�Û~]�ÛF‹GE�ÀL‚€D�ŸqF�ÙgH�÷kR�â2X�Ü7G�ÉnF�–vD¨_G‚†c�F�¼$‚H‚†`�G‚‰
Lˆ'N�ñ/�DŸ`G‚†aT�áE÷"D�ÎFH�„2H­I¬>S�¨HE�å'�G—:I‚ˆ%E�åtd�–9S�áN�ÍM�òoS‚„ L�øMT�âX�¥^�D�ŠGˆI¹LM�Ï
K™R�Ï;Z�â0@HŠdL��@�‚…
x�äY‚‡XP‚† G±CE‚‚MM�äeU‚‹[�å	I‚Š‚D‚‹\D‚‹Y„Y�å;[�´L‚Š*@��åyEƒuF–g‚ŒG¶eD‚‡G²Z‚D†‚D–D‡†F�ôbG‹G�D�£L‚D�Â~‚D�†`G�”H‚E�ÇH@D‹~G�èW‚ŽXO�èAK�Ù Ký+n‚Ž*„\‚ƒ&G„H‡x�J�—%K‚†r…D�‚FKˆ&_�ÝHK‚†rU‚Š2R‚”‡K�Ð}l‚Š{E�ëPR‡:N‚‹SV‚”b„HŠ`F‚“GE‚ƒe‚“TK�—$L‚‡D�‚hO�µc_�ÝHL‚‡U‚Š2P‚–4�G‚”x‚H‚‹h@Q‚•�Q‚—D‚•mƒD�­J@LŠ`u‚‘N‚‘WE´iU‚‘hE‚‘‡@`‚’D�¤RZ‚’wF‚†2Eƒ�D�ü	@�y‚“D·|K�û}V‚� E�ë@DƒD�ü	K‚ŠlZ‚•WD�ªM‚�;E‚�R‰@�6‚•@@‚œ_]‚˜b‚�9@H‚‚TE�‚0I�ç/H�¶ƒJ‚‘9H®|D›ƒE–E�ª)ƒE�»7�D�ÂG‚‘_‚D²M‚G�€�D›‡D‚¡3‚D�ŸeD�»7ŽFÎ ƒH‚ }�D�»bF‹GD‚¡%E�¿gƒD‚ƒ%E�»7F�Î D�ñd�E�Ñ4�D‚¡Q@P‚’E�ƒfL�½)U�äN�„TV�½ON‚‡G‚šUI‚‰H‚ˆ'O�½cW�ÅI�ü9M�¿IZ�Í%E�ÐK�»I�ÀI��CƒD�ÞAJ“RL¥rƒD�ópH§9L�³G‚�NL�—G�¿C‚D§,J�—F�H�ªPD”dJ‚ŠkD‚„#ˆDŽ0E�¤ED�ºxK‚¤EE�ðƒI�ÂX�˜`‚H–F‚¥ M‚ gH–!L‚¥7„E‚¥NU�¯H�å$G�·QG�ÿ-J‚Š(G�¹G�¾d‚¤~R�³�H‚§ ‰E¥!„D²MH÷[L�š4I�…F�žJ�H�­j‹U�›[ƒE��‡H‚¢ƒD‚¦7�H�˜/‚M�Ð{O�ÓN�Í%D��F�ØfF®vY‚¨eM�¯‡F‚§Zj‚¤VO�—„D�ål…I‚¥tG²R�D‚¦8D‚‘‚F¤)F¢2J�¾ˆO‚•6[�¥4E�Û(D‚†}ƒH‚ªbI�–sG‡nE�¬%HD�ÜƒV�¥-M�¨WD‚¨T‚«8b‚Š5D‚«T‚«8J‚«(E�µ>‰E�4g‚«LO‚¬Of‚¬O‚¬OL‚¬AD‚£DE‹HJùdG�ómƒJÃG˜BL‚­YF‚¥BIÚ$G‚©X�[‚­WF�¨ �I�•PO�ØpDª+J‚¬EV‚† G‚§\E�Ïa‚M�²8ƒD�µQR�µ*…D�Í6E�Ûa„D�Í6D‚¥CE�Ê[D¯#E‚¡c‚F�ªD÷eM„ D�¹F�Ã1„K‚¯]E‚"D¾$I†S�…E‚ŠEŠEX�µ&I‚–KH‡xD�9�F‚“xD�ÊsƒL�ÉdQ�¤F�N�–|M�Ó`‚¥ G¡7U�ØjF‚©Y‹E�ª/N‚®}W‚©Hb‚¤Z@N�FH��D�²5@U�ØM‚’[E�žJe‚£ R�¥_�Ò%J�„zL�¿JG�¦‡D�¹#‡F‚®[‚Š5W‚¨GE�¿l�E�ÃE�¶#I�ÀO�—Z‚¦M}‚¦iX‚�"U‚«sI‚�{U‚¬-T‚¶	I‚ŠP‚­I‚�{P‚­:p‚­R{�êX‚·X�êx\‚Š5M‚�|[�ò)d™S�¡dK‚¸[P�ìk[‚Š5}‚¹NšW�åW�î)@X‚ºLš\^‚ºsE›l@d‚»RœJ‚‰0G‚£
J�/DÎK�î%K�/N�î4Q�•qO‚¹gD‚½:†L‚Š(�E‚¾^‚Š4]‚¹ ^‚½h…K‚¶vƒF‚¾v{‚¾O�ÞJ‚± s‚®'I‚¨I‚ˆ'T‚®jG‚¨I…[N‹lG‚¨V‚§JS‚±XP‚À<F�¡G‚±v�I‚±~F‚°Q‚±wQ‚À<E���D‚¢	�J‚°l‚¨N‚´{GÛ@|‚µ]‚¨^M�Ó`‚ÂH‚µ4b‚©D‚©BU‚©H@E‚‚TM‚³�I‚¤iL‚¤@…@M‹~O‚³{OùmUù]F‚±r‚I‚«<F£K‚Å`P‚±xH‚Å`T‚ÀvG�×E�Ö~ƒE‚¤aF‚œb�D�èPF�à!�F‚Æ9ƒE�—SD‚ÆUe�ö2H �E E‚ÀtV‚„ @X‚Æ:F‚ÇGµg@h‚·_Q�ÞR™(D·|W�íGD�•2NãI´
M�ÌeX‚É-�M‚ÉF‚Q�ê$H�Ç(D‚Æ?HÕ|D�È`�D�¸X‚É,d‚ÆjX‚Ê`‚ÆjW‚ÉGL‚½^KŽ+G‚¤E�E�ç"RÕ{ƒG�õ‚U�ÍPƒE�õDøp�E�üa‰FÙE‹w�FŽVS‡:V‚‚0k‚ÊCW‚ÉGM‚ÌxL‚ÊT‚ÌPK‚Ê-K�ß‚E¿I‹]á�D‚ŸsK‚Ê-a�ÞQ‚ºbD·|H§9E�¿0F�¿)Y�î'L�Í…D�Ã�D�Ò%E�ôFKÕ~K�ñuE‚Í}M‚‡\‚ÎJª"D‚Î.M�ÍJˆqQ‚ÎtKbPN‚ÏM�íRK‚½M‚†2HòNGñ:M�îPGòmS‚½WQ�ï:�D�ïKFòN�D�”pF‚�y‚D‚ÐS�N�ÍKŽ+‚F²<EH‚Ï=G�ÜOD‚°aI‚ËdV‚ÌNa‚¾9O�Ó@K‚ÏSE‚½&D‚ÑVDÔIFòm�I§T�Ï;T‚ÎNv�ï‚FØE�I�ñkH‚¦EG‚ÉGF�¤PN±	`‚®'@Q‚²Nƒ@n‚ÄSO��KN
T�Ú9L�÷lE–6X�Ú7F‚¾V\�×K—C\‚Ž7Q‚×V‚‡XE�îD[‚„!G‚±SU��;V‚±rK��a@Q�H…D‚Ï0E‚™5’I�ôYJ•Z‡HË=„@D‚¢(ZùDF‚ÙY�F‚Ù|EŠ.D‚ÙL]�úhF±C…F‚ÚH¤p@H��eO‚Ä;O‚ÙGE‚ hƒD‚Õ`D„ ƒD‚†2R‚ÙhE®YD�¸}E‚Ü%‚D„
„E¾.@W�Ö EƒG‚Ü"F‚˜E‚Ü0f‚ÚyHƒr‚D�²6ƒD‚Ü †G‚ØD‚Ì„D–‚D‚ÙS‚G�ôa„E‚Ü%D‚Þ F‚¯SF„I‚Ü[F‚°‡E�Ú]D¯H‚†@W‚Û8I‚ÙHD‚°aF‚ÙQƒE‚Ù[S‚Ü6@Z‚ÜfE‚ÚnHÌCF•]f‚Úy„J‚Æ@r‚ÛW‚ßL‚E�]‚I‚Ò"@g‚ßn‚E‚â%„f‚ÚyI‚ãK±?@c‚á7D›l@_�ÖEƒE›lm‚à`N‚“G‚Ô K‚ÐSEŒ{O‘lF‚‹hJ±?E‚¼"H‚É,E›lFžR‚Í3Q‚¼#E‚Ãu) {
 if (NULL != server_options_categories[i]  FC_FREE(;}_num = 0}
}

/*
  Allo the  and .
/
void handle_setting_control(struct packet *)
int i;

  /* This should be received only once. */
  fc_assert_ret=00 <-> =fc_ca,sizeof(*  for (i i <; i++/* NB: Translnow[i] =strdup(_(y_nam}Returnsclienttype equivaltostatic e_sset_to(switch (case SSET_BOOL:r OEANINTINTEGERSTRING
  log_error("Unsupported: %d.",-1; ainfo*pbyberid *psSERVER_OPTION(bool needinitializaFALSEgui_removeaddconst char *string!= ->common_vtablot ed yetset = &_TRU} elseT%snged?",Let's tryretfree(memset, 0->is_visibreakintstrFOO%s (%d) not ",foVIDEO_MODEvideo_mode#defin(target,ing)\) { ;0trcmp= short_helpdescriextra_texean.valuval0defdefault_ntegermiminaxaxstrvaldefun!ired_sent&&isrunn)Osend our privwe are * on aked l, i.e. stabywith"S New Game" button.Do overridthatalready satogamloadedtndUpdGUIaddad!unext validporurrguiid+while<&& !++?:)associad> id ||> firs(( oame (td)y||>[] - canmodified+ 1gedefdefS
 ,=ndt_printf("/%s %d? 1 :minimauemiaxax<||>poss
 trvecs Message s: ms_where[E_LAST];These cas, excepits easierdo iwanone[E_IMP_BUY,SOLDUNITLOST_ATTWINGAME_STARTNA_SELECTECITY_BUINEXT_YEARPRODUCCHANGEDMAY_SOON_GROWWORKLISAI_DEBUGut_CHAT_MSGERRORONNELOGSETTINGVOTRESOLVABORTEDallFATALCRIPTMW_MESSAGESARRIZE()i]MW_OUTPUTall |POPUPevent
...   Load usfuncpecnum.h (seso.h)_f*prefix,_p!sec_lookup( &, ".count"/* vers2.2rds in 2.1oldCANTVEDISORDEFAMIN_FEARTHAQUENORMUKCMA_RELEASGRAN_THROTTLETRANSFEUPRISVIL_WAANARCHFIRSTTACEW_GOVERNMENLOW_ON_FUNDSPOLLUREVOLT_DONPACESHIPMPLOMAT_BRIBIC_INCIDESCAPMBASSFAILTPOISONSABOTAGTHEFENEARAVAN_ABROADCAST_REPOENDESTROYTURN_BELLLOBAL_ECOUKHUT_BARBG_KILMERCLTECAT_GAILEARREALLIANCBROKECFIRPEASH_VISDEFECVEUPGRADRELOCAWONDEROBSOLEOPPWILL_BECBAD_COMMAN_WALize_t  "%s._%02, ipstr%d."Corruin %s:),tin =cmp!E skip=Savegin();!iniDoes heavy lifup as_cma_cm_parame"cma.
 putero_surplus[o0,mini, ofactor}rre_happyreq_w_disotmafec&p =get(Isenum(_("If you ," \"_of\""
ld rcOLD_FILME ".civrc"civ--rc-%d.%d"MAJORVER
#if IS_DEVELIN(
#
#endifwappeared (2.2)22memai.  Usuallydsav
  Ie, baon CIV env var,home dir. (or ainfig.hOrproblem_buffer[256]getenv("zlcpy{user__dir_("Canfindrey"n"%s/",verbose("iChecklaswetoounajor,otat buf ;--;?:0);at&buf!=||normalDidn''%s', "rominstead.en+ 199Looks enough biryolDhash_*s_sfbuf[64y_ *iebdelete_all_(sf, "exist!, pENTRYbuf, "STvariaf \%s\",, )(.keyursval,*||=us/* Rereplacaachdiopop=data explicitlyityplayer re dialogce "_dlg_"ity",;!=;n&FT_TO_PTRFCINT(on Ied whegto_SED/* P1colum[i].tagshow_(i*_ptRUNNING*, &anyrulfictafui, beforemaUnfortunately,measdise*ullcre(sadebug("E:\n/*new(f/* FIXME: betf0, FZ_PLAIN_("failed,wrio")destroy/* acret"lazy. TODO: makavpassword%s.xitullscreenall}
ad If does, doe keep-; ifglobal_workwindow_nd(ftc_a.width_heigh%s_ okImoduluinewf,fcm,>axX%%d,is"our[%d; %d],o*(*) &(CLIENT)/* Haos_s)0In,/*oFreCallba mapview graphics(redrawnvas__map_eqtw iisalcuwilossearchen iopgatechpopdownny menuoebaot_barENDREP
DELTA 17169 43664 2623
SVN  ‚ªw‚©Y7‚P �Ät — ��Å€C ™q�Ös— �L�ð{— y�ò^— �C�ón€� u�öK— ³ �÷W.width, gui_sdl_screen. resize_window_callback);
  option_var_set_callback(gui_sdl_screen,.width, gui_sdl_screen..width, gui_sdl_screen..width, gui_sdl_screen..width, gui_sdl_screen.height,
                     SDL_SWSURFACE | SDL_ANYFORMAT);
      #else
      set_video_mode(gui_sdl_screen.width, gui_sdl_screen..width, gui_sdl_screen.ENDREP
id: i4.5ck.r17283/66156
type: file
pred: i4.5ck.r17229/1407
count: 91
text: 17283 12458 782 9824 c017a9def16b9240e15bb3745c3ffe83
props: 11044 512 111 0 e5ad8d36ef6bfd356bb06d6f3ece066f
cpath: /trunk/client/options.h
copyroot: 15280 /trunk

id: 4js.5ck.r17283/66397
type: file
pred: 4js.5ck.r17042/127567
count: 3
text: 17283 13267 770 24541 092f3af1dbaa63bc6842be9472e96563
cpath: /trunk/client/gui-gtk-2.0/optiondlg.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file zu.5ck.r16998/74500
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 25
file zw.5ck.r17122/363543
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 22
file zy.5ck.r17251/229
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 23
file 100.5ck.r17171/856
K 9
cityrep.h
V 22
file 101.0.r9098/11480
K 8
cma_fe.c
V 25
file 102.5ck.r17258/18602
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 26
file 108.5ck.r17122/361305
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 24
file 10a.5ck.r17266/4737
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 26
file 36n.5ck.r17122/361568
K 9
editgui.c
V 26
file 4ej.5ck.r17122/359599
K 9
editgui.h
V 25
file 4ek.5ck.r15355/70937
K 10
editprop.c
V 26
file 4el.5ck.r17122/363338
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 24
file 10e.5ck.r16899/8280
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 26
file 10k.5ck.r17122/359071
K 10
gui_main.h
V 25
file 10l.5ck.r16281/14952
K 11
gui_stuff.c
V 26
file 10m.5ck.r17122/359801
K 11
gui_stuff.h
V 25
file 10n.5ck.r16281/15466
K 11
happiness.c
V 23
file 10o.5ck.r17252/540
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 26
file 10q.5ck.r16929/319741
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.r17122/362616
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 26
file 10v.5ck.r16929/319486
K 9
mapctrl.h
V 25
file 10w.5bk.r14157/11089
K 9
mapview.c
V 23
file 10x.5ck.r17211/256
K 9
mapview.h
V 23
file 10y.0.r12881/17128
K 6
menu.c
V 26
file 10z.5ck.r17122/360320
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 24
file 112.5ck.r16973/9506
K 12
messagewin.h
V 23
file 113.0.r10108/19424
K 11
optiondlg.c
V 25
file 4js.5ck.r17283/66397
K 11
optiondlg.h
V 25
file 114.5ck.r17037/29773
K 7
pages.c
V 25
file 2pi.5ck.r17209/10299
K 7
pages.h
V 25
file 2pj.5ck.r16532/16664
K 8
plrdlg.c
V 26
file 115.5ck.r16929/319999
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 23
file 118.5ck.r17268/464
K 10
repodlgs.h
V 24
file 119.5ck.r17115/7471
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 26
file 4h8.5ck.r17122/360837
K 14
voteinfo_bar.h
V 25
file 4h9.5ck.r16063/46876
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.r17283/70373
type: dir
pred: zs.5ck.r17268/4494
count: 1310
text: 17283 66600 3760 3760 84753e9de71ca05e96f6dd8cd3d8686d
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-2.0
copyroot: 15280 /trunk

id: ar.5ck.r17283/70619
type: file
pred: ar.5ck.r17229/1646
count: 36
text: 17283 0 12431 16777 701afa6254a6efea8b4dd3581154f9e7
props: 10897 2598 111 0 7c94b769c2c0998a2747d858cb1e860f
cpath: /trunk/client/gui-xaw/optiondlg.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file bq.5ck.r16063/52349
K 9
actions.c
V 24
file nt.5ck.r17218/12618
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 25
file 9w.5ck.r17122/368856
K 9
citydlg.h
V 20
file 9x.0.r2187/8309
K 9
cityrep.c
V 25
file 9y.5ck.r17122/370887
K 9
cityrep.h
V 20
file g1.0.r5489/4916
K 8
cma_fe.c
V 25
file 2ei.5ck.r17258/22883
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 25
file a4.5ck.r17122/373693
K 12
connectdlg.h
V 21
file a5.0.r2187/12228
K 9
dialogs.c
V 25
file a6.5ck.r17122/371141
K 9
dialogs.h
V 21
file a7.0.r10882/3191
K 10
diplodlg.c
V 25
file a8.5ck.r17122/371663
K 10
diplodlg.h
V 20
file a9.0.r2187/7955
K 17
diplomat_dialog.c
V 26
file 37p.5ck.r17122/371397
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 25
file bm.5ck.r17122/369877
K 10
gui_main.h
V 22
file bn.0.r11408/10219
K 11
gui_stuff.c
V 24
file bo.5ck.r17127/30848
K 11
gui_stuff.h
V 21
file bp.0.r4964/56392
K 9
helpdlg.c
V 25
file af.5ck.r17122/372934
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.r17122/372171
K 10
inteldlg.h
V 23
file 2dl.0.r10108/22972
K 9
mapctrl.c
V 25
file aj.5ck.r16929/327222
K 9
mapctrl.h
V 21
file ak.0.r10532/9667
K 9
mapview.c
V 25
file al.5ck.r17122/369365
K 9
mapview.h
V 24
file am.5bk.r13912/46304
K 6
menu.c
V 25
file an.5ck.r17122/370385
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 25
file aq.5bk.r14427/286529
K 12
messagewin.h
V 20
file g3.0.r5489/3851
K 11
optiondlg.c
V 24
file ar.5ck.r17283/70619
K 11
optiondlg.h
V 24
file as.5ck.r16998/79026
K 7
pages.c
V 26
file 2qm.5ck.r17122/370134
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 25
file aw.5ck.r17122/373187
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 24
file ay.5ck.r17218/12870
K 10
repodlgs.h
V 24
file az.5ck.r17218/13124
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.r17283/74061
type: dir
pred: 9o.5ck.r17258/26323
count: 925
text: 17283 70870 3178 3178 3aa734f53e5d909f8a4e47a22886deae
props: 11108 12237 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-xaw
copyroot: 15280 /trunk

id: 18d.5ck.r17283/74303
type: file
pred: 18d.5ck.r17230/39332
count: 93
text: 17283 14068 2429 47249 0fd5fa93baf1ceb888e5ab830404fc73
props: 9803 3079 111 0 9b377c828b4ca1827963af8e19878787
cpath: /trunk/client/gui-sdl/optiondlg.c
copyroot: 15280 /trunk

id: 17o.5ck.r17283/74559
type: file
pred: 17o.5ck.r17169/47321
count: 149
text: 17283 65721 405 38105 9f51b52f350cc620780e780da11830c5
props: 10411 162763 111 0 93121dcfd7714818c8d46f9c51a886fa
cpath: /trunk/client/gui-sdl/gui_main.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 25
file 16u.5ck.r17230/40948
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.5bk.r15074/21186
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.r17146/89176
K 10
chatline.h
V 26
file 16z.5ck.r16199/137581
K 9
citydlg.c
V 25
file 170.5ck.r17146/84297
K 9
citydlg.h
V 23
file 171.0.r13354/55222
K 9
cityrep.c
V 25
file 172.5ck.r17146/86603
K 9
cityrep.h
V 22
file 173.0.r12769/2941
K 8
cma_fe.c
V 25
file 174.5ck.r17258/29997
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 24
file 178.5ck.r17139/2270
K 12
connectdlg.h
V 23
file 179.0.r12349/45319
K 9
dialogs.c
V 25
file 17a.5ck.r17169/48581
K 9
dialogs.h
V 23
file 17b.0.r13354/61529
K 10
diplodlg.c
V 25
file 17c.5ck.r17146/87638
K 10
diplodlg.h
V 22
file 17d.0.r11584/2869
K 17
diplomat_dialog.c
V 25
file 3bn.5ck.r17146/87117
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.r17146/84556
K 9
gotodlg.h
V 22
file 17g.0.r6515/58208
K 10
graphics.c
V 26
file 17h.5ck.r16929/334736
K 10
graphics.h
V 23
file 17i.0.r12611/13939
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 25
file 17o.5ck.r17283/74559
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.r17122/390346
K 12
gui_string.h
V 23
file 17s.0.r13481/30445
K 14
gui_tilespec.c
V 26
file 191.5ck.r16929/332661
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.r17146/88664
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 25
file 183.5ck.r17146/88150
K 10
inteldlg.h
V 22
file 2d9.0.r11409/2687
K 9
mapctrl.c
V 25
file 184.5ck.r17146/87894
K 9
mapctrl.h
V 23
file 185.0.r13354/63700
K 9
mapview.c
V 25
file 186.5ck.r17146/84813
K 9
mapview.h
V 23
file 187.0.r13354/56676
K 6
menu.c
V 25
file 188.5ck.r17146/85834
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 24
file 18b.5ck.r15883/3836
K 12
messagewin.h
V 23
file 18c.0.r6286/140236
K 5
mmx.h
V 23
file 2e1.0.r6286/134429
K 11
optiondlg.c
V 25
file 18d.5ck.r17283/74303
K 11
optiondlg.h
V 25
file 18e.5ck.r17169/46811
K 7
pages.c
V 25
file 2qg.5ck.r17169/48078
K 7
pages.h
V 22
file 2qh.0.r8639/16416
K 8
plrdlg.c
V 25
file 18f.5ck.r17146/88921
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.r17146/85068
K 10
repodlgs.h
V 23
file 18j.0.r13354/58129
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.r17122/386989
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.r17230/39584
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 23
file 3fk.0.r13354/64909
K 13
widget_edit.h
V 24
file 3g9.0.r12670/115595
K 13
widget_icon.c
V 23
file 3fl.0.r13354/59104
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.r16929/336288
K 18
widget_scrollbar.h
V 24
file 3gc.0.r12670/116811
K 15
widget_window.c
V 23
file 3fp.0.r13354/55944
K 15
widget_window.h
V 23
file 3gd.0.r12699/32533
K 7
wldlg.c
V 23
file 18q.5ck.r17225/474
K 7
wldlg.h
V 26
file 18r.5ck.r16285/100508
END
ENDREP
id: 16t.5ck.r17283/79889
type: dir
pred: 16t.5ck.r17258/35323
count: 601
text: 17283 74817 5059 5059 2e6ebcb48a3b357b438733f10555da7d
props: 11108 12869 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-sdl
copyroot: 15280 /trunk

id: dc.5ck.r17283/80133
type: file
pred: dc.5ck.r17169/54054
count: 216
text: 17283 16524 49170 148323 5c8748f5cd35deecb15bfba019bf527e
props: 10965 83 112 0 b4bb2e29c9087472d2e44c6eab39b6d6
cpath: /trunk/client/options.c
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 24
file 5f.5ck.r16999/27621
K 6
agents
V 23
dir zf.5ck.r17258/18363
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.r16165/81556
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.r17122/401257
K 17
chatline_common.h
V 25
file 14r.5ck.r16888/19266
K 16
citydlg_common.c
V 23
file z4.5ck.r17282/3073
K 16
citydlg_common.h
V 24
file z5.5ck.r17166/64267
K 13
cityrepdata.c
V 24
file mb.5ck.r17194/12858
K 13
cityrepdata.h
V 21
file mc.0.r9153/21475
K 11
civclient.c
V 23
file 4f2.5ck.r15408/695
K 13
client_main.c
V 23
file 2f.5cp.r17128/1135
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 25
file d5.5ck.r17122/405813
K 9
climisc.h
V 23
file i0.5ck.r17044/3522
K 8
clinet.c
V 25
file hc.5ck.r17122/405042
K 8
clinet.h
V 25
file i1.5bk.r14427/324634
K 15
colors_common.c
V 26
file 33a.5ck.r17122/358041
K 15
colors_common.h
V 25
file 33b.5ck.r16397/92170
K 19
connectdlg_common.c
V 26
file 2fw.5ck.r17122/400799
K 19
connectdlg_common.h
V 25
file 2fx.5ck.r16532/38983
K 9
control.c
V 22
file gz.5ck.r17128/658
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 26
file 3bg.5ck.r17122/406062
K 8
editor.h
V 25
file 3bh.5ck.r15761/13075
K 11
ggzclient.c
V 25
file 394.5ck.r15814/34717
K 11
ggzclient.h
V 24
file 395.0.r12670/122419
K 17
global_worklist.c
V 26
file 4i6.5ck.r17122/401058
K 17
global_worklist.h
V 26
file 4i7.5ck.r16319/100206
K 6
goto.c
V 22
file vu.5ck.r17238/206
K 6
goto.h
V 24
file vv.5ck.r15509/18108
K 8
gui-ftwl
V 25
dir 2k2.5ck.r17122/400301
K 11
gui-gtk-2.0
V 23
dir zs.5ck.r17283/70373
K 7
gui-sdl
V 24
dir 16t.5ck.r17283/79889
K 8
gui-stub
V 24
dir mh.5ck.r17122/404797
K 9
gui-win32
V 23
dir np.5ck.r17258/29752
K 7
gui-xaw
V 23
dir 9o.5ck.r17283/74061
K 10
helpdata.c
V 24
file h1.5ck.r17256/42399
K 10
helpdata.h
V 25
file i3.5bk.r14417/261925
K 7
include
V 23
dir b8.5ck.r17079/30356
K 16
mapctrl_common.c
V 25
file 15m.5ck.r17068/46203
K 16
mapctrl_common.h
V 23
file 15n.0.r11378/41712
K 16
mapview_common.c
V 25
file z2.5ck.r17122/405287
K 16
mapview_common.h
V 25
file z3.5ck.r16578/482844
K 19
messagewin_common.c
V 25
file 14s.5ck.r17077/10273
K 19
messagewin_common.h
V 25
file 14t.5ck.r15909/37338
K 9
options.c
V 24
file dc.5ck.r17283/80133
K 9
options.h
V 24
file i4.5ck.r17283/66156
K 17
overview_common.c
V 25
file 2yk.5ck.r16930/40265
K 17
overview_common.h
V 25
file 2yl.5ck.r16930/40516
K 10
packhand.c
V 24
file n.5ck.r17122/384162
K 10
packhand.h
V 24
file i5.5bk.r14422/90154
K 15
plrdlg_common.c
V 26
file 14u.5ck.r17122/396100
K 15
plrdlg_common.h
V 26
file 14v.5bk.r14417/257761
K 17
repodlgs_common.c
V 26
file 11i.5ck.r17122/368346
K 17
repodlgs_common.h
V 25
file 11j.5ck.r16971/56809
K 9
reqtree.c
V 26
file 2ym.5ck.r16929/315694
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.r17256/42157
K 6
text.h
V 24
file 2g4.5bk.r14284/8380
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 25
file hl.5ck.r17122/401760
K 10
tilespec.h
V 24
file i6.5ck.r16930/49667
K 14
update_queue.c
V 25
file 4jw.5ck.r17079/36327
K 14
update_queue.h
V 25
file 4jx.5ck.r16999/23921
K 10
voteinfo.c
V 26
file 4fe.5ck.r17042/154402
K 10
voteinfo.h
V 25
file 4ff.5ck.r16201/17543
END
ENDREP
id: d.5ck.r17283/84151
type: dir
pred: d.5ck.r17282/7089
count: 4804
text: 17283 80379 3759 3759 1776f376ca569dad9054a17e5e972638
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 23
file 6.5ck.r16872/79279
K 11
Makefile.am
V 23
file 59.5bk.r14918/1267
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.r17259/30509
K 10
autogen.sh
V 24
file 12o.5ck.r16223/7590
K 9
bootstrap
V 23
dir 2p5.5ck.r17175/1148
K 6
client
V 22
dir d.5ck.r17283/84151
K 6
common
V 22
dir p.5ck.r17259/27992
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 22
file 149.5ck.r17174/53
K 4
data
V 22
dir w.5ck.r17278/30016
K 6
debian
V 23
dir 5w.5ck.r16224/17276
K 12
dependencies
V 23
dir 2yu.5ck.r17024/5709
K 11
diff_ignore
V 23
file qq.5ck.r16311/3290
K 3
doc
V 23
dir k7.5ck.r17256/33249
K 2
m4
V 22
dir 12p.5ck.r17175/107
K 6
manual
V 25
dir 2m2.5ck.r17122/356404
K 2
po
V 26
dir fs.5ck.r17279/21363633
K 7
scripts
V 23
dir 2yo.5bk.r14810/1300
K 6
server
V 22
dir z.5ck.r17259/35640
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 22
dir 1c.5ck.r17263/2485
K 10
version.in
V 25
file 2lo.5ck.r17257/21282
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.r17283/85660
type: dir
pred: 3.5ck.r17282/8595
count: 12946
text: 17283 84383 1264 1264 d76c0ae51dc80464f7a328dfbb4bf7a4
props: 17175 3052 264 0 91336f1f63d2f606e65376614b5c72e4
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 19
dir 1.0.r17281/6241
K 4
tags
V 19
dir 2.0.r16877/5158
K 5
trunk
V 22
dir 3.5ck.r17283/85660
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r17283/86049
type: dir
pred: 0.0.r17282/8985
count: 17283
text: 17283 85886 150 150 e80f584bff3376e668b316902fa28091
cpath: /
copyroot: 0 /

ar.5ck.t17282-1 modify true false /trunk/client/gui-xaw/optiondlg.c

i4.5ck.t17282-1 modify true false /trunk/client/options.h

4js.5ck.t17282-1 modify true false /trunk/client/gui-gtk-2.0/optiondlg.c

18d.5ck.t17282-1 modify true false /trunk/client/gui-sdl/optiondlg.c

dc.5ck.t17282-1 modify true false /trunk/client/options.c

17o.5ck.t17282-1 modify true false /trunk/client/gui-sdl/gui_main.c


86049 86198
