#ifndef _NAP_DEFINES_H
#define _NAP_DEFINES_H

/* Copyright (c) 2000  Kevin Sullivan <nite@gis.net>
 *
 * Please refer to the COPYRIGHT file for more information.
 */

#define USE_COLORS

#include "config.h"

#ifdef __CYGWIN32__
  #define setbuffer(s, b, t) setvbuf(s, b, b ? _IOFBF : _IONBF, t)
  
  #define	timerisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
  #define	timerclear(tvp)		((tvp)->tv_sec = (tvp)->tv_usec = 0)

  /* make up for an apparent bug in cygwin ncurses implementation */
  #undef ACS_VLINE
  #undef ACS_HLINE
  #define ACS_VLINE '|'
  #define ACS_HLINE '-'
#endif

#ifndef HAVE_SOCKLEN_T
  #define socklen_t int
#endif

typedef int (*ucmd_func_t)();

/* some static limits */
#define MAXCHANS 5
#define BACKLOG 32
#define LINEINDENT "     "
#define SCROLLSIZE 10000

/* incomplete files of this size or less are considered "turds" and
   will be removed. This is the default value; the actual value can be
   overridden by the turdsize user variable. */
#define TURDSIZE 100000

/* the default port for napster servers */
#define DEFAULT_PORT 8888

/* where to get news about new versions of this client */
#define NEWSURL "http://nap.sourceforge.net/UPDATE"
#define NEWSTIMEOUT 5

/* default for the "connecttimeout" variable */
#define CONNECTTIMEOUT 5

/* where to get information about servers, napigator-style */
/* By default, one of METASERVER_1 and METASERVER_2 is picked
   "round-robin". */
#define METASERVER_1 "http://www.gotnap.com/servers.txt"
#define METASERVER_2 "http://www.gotnap.com/servers.txt"
#define METATIMEOUT 5

/* the client name which we send to the server on login. This can now
   be overridden by the "identity" user variable, as certain OpenNap
   servers have been known to be nasty to nap ("bad client"). */
#define IDENTITY "nap v" VERSION

/* name of the "napping" application to use for pings. */
#define NAPPING "napping"

/* some file names for standard files. These filenames are relative to
   the user's home directory, unless noted otherwise. */

#define CONFIGDIR        ".nap"
#define CONFIGFILE       CONFIGDIR "/napconf"
#define LIBRARYFILE      CONFIGDIR "/shared"
#define HOTLISTFILE      CONFIGDIR "/hotlist-%s"  /* %s is user name */
#define ALIASFILE        CONFIGDIR "/aliases"
#define HANDLERFILE      CONFIGDIR "/handlers"
#define CHANNELFILE      CONFIGDIR "/channels-%s" /* %s is user name */
#define OLDNEWSFILE      CONFIGDIR "/oldnews"
#define GLOBALCONFIGFILE "/etc/naprc"

/* library file header, must change when the file format changes */
#define NAP_LIBRARY_HEADER \
  "NAP LIBRARY FILE v02. Automatically generated file, do not edit."

/* markers that are used to add checksum tags to incomplete files */
#define INCTAG_START "<NAP incomplete tag "
#define INCTAG_END   " end incomplete tag NAP>"

/* bogus hash value to use if real hashing is turned off. Note: this
   must be 32 characters long */
#define BOGUS_HASH "00000000000000000000000000000000"

#define newwin(n, l, c, y, x) (newwin(l, c, y, x))

/* some generic macros */
#define NAP_MAX(x,y) ((x) > (y) ? (x) : (y))
#define NAP_MIN(x,y) ((x) < (y) ? (x) : (y))

#endif /* _NAP_DEFINES_H */
