#define _KERNEL
#include <ixemul.h>
#include "version.h"

long ix_get_gmt_offset(void)
{
  return ix.ix_gmt_offset;
}

void ix_set_gmt_offset(long offset)
{
  ix.ix_gmt_offset = offset;
}

struct ix_settings *ix_get_settings(void)
{
  static struct ix_settings settings;

  settings.version = IX_VERSION;
  settings.revision = IX_REVISION;
  settings.flags = ix.ix_flags;
  settings.membuf_limit = ix.ix_membuf_limit;
  settings.red_zone_size = ix.ix_red_zone_size;
  settings.fs_buf_factor = ix.ix_fs_buf_factor;
  settings.network_type = ix.ix_network_type;
  return &settings;
}

struct ix_settings *ix_get_default_settings(void)
{
  static struct ix_settings default_settings =
  {
    IX_VERSION,
    IX_REVISION,
    ix_translate_slash | ix_no_insert_disk_requester | ix_allow_amiga_wildcard,
    0,			/* membuf_limit  */
    0,			/* red_zone_size */
    64,			/* fs_buf_factor */
    IX_NETWORK_AUTO	/* network_type */
  };

  return &default_settings;
}

void ix_set_settings(struct ix_settings *settings)
{
  if (ix.ix_flags & ix_do_not_flush_library)
    if (!(settings->flags & ix_do_not_flush_library))
      ix.ix_lib.lib_OpenCnt--;
  if (!(ix.ix_flags & ix_do_not_flush_library))
    if (settings->flags & ix_do_not_flush_library)
      ix.ix_lib.lib_OpenCnt++;
  ix.ix_flags = settings->flags;
  if (settings->membuf_limit >= 0)
    ix.ix_membuf_limit = settings->membuf_limit;
  if (settings->red_zone_size >= 0)
    ix.ix_red_zone_size = settings->red_zone_size;
  if (settings->fs_buf_factor > 0)
    ix.ix_fs_buf_factor = settings->fs_buf_factor;
  if (settings->network_type >= 0 && settings->network_type < IX_NETWORK_END_OF_ENUM)
    ix.ix_network_type = settings->network_type;
}
