478 lines
15 KiB
C
478 lines
15 KiB
C
|
// This may look like C code, but it is really -*- C++ -*-
|
||
|
|
||
|
// ------------------------------------------------------------------
|
||
|
// The Goldware Library
|
||
|
// Copyright (C) 1989-1994 Peter Stewart & InterZone Software, inc.
|
||
|
// Copyright (C) 1990-1999 Odinn Sorensen
|
||
|
// ------------------------------------------------------------------
|
||
|
// This library is free software; you can redistribute it and/or
|
||
|
// modify it under the terms of the GNU Library General Public
|
||
|
// License as published by the Free Software Foundation; either
|
||
|
// version 2 of the License, or (at your option) any later version.
|
||
|
//
|
||
|
// This library is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
// Library General Public License for more details.
|
||
|
//
|
||
|
// You should have received a copy of the GNU Library General Public
|
||
|
// License along with this program; if not, write to the Free
|
||
|
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||
|
// MA 02111-1307, USA
|
||
|
// ------------------------------------------------------------------
|
||
|
// $Id$
|
||
|
// ------------------------------------------------------------------
|
||
|
// FD.SYS definitions for InterMail 2.2x
|
||
|
// ------------------------------------------------------------------
|
||
|
|
||
|
#ifndef __gs_inter_h
|
||
|
#define __gs_inter_h
|
||
|
|
||
|
|
||
|
// ------------------------------------------------------------------
|
||
|
|
||
|
#include <gftnall.h>
|
||
|
|
||
|
|
||
|
// ------------------------------------------------------------------
|
||
|
|
||
|
#if defined(GOLD_CANPACK)
|
||
|
#pragma pack(1)
|
||
|
#endif
|
||
|
|
||
|
|
||
|
// ------------------------------------------------------------------
|
||
|
|
||
|
typedef struct {
|
||
|
|
||
|
/* The logfile */
|
||
|
|
||
|
char log[71];
|
||
|
word loglevel; /* See --- Loglevels */
|
||
|
|
||
|
/* Number manipulation */
|
||
|
|
||
|
char prefix[31]; /* Always added */
|
||
|
char hidden[10][31]; /* Strip these if they are in # */
|
||
|
char postfix[31]; /* Always appended */
|
||
|
|
||
|
/* Miscellaneous flags */
|
||
|
|
||
|
long flags; /* See --- Miscellaneous flags */
|
||
|
long flags_reserved; /* Reserved flags */
|
||
|
word audio; /* See --- Audio flags */
|
||
|
byte synchtimer; /* Number of seconds for sync */
|
||
|
|
||
|
/* Errorlevels */
|
||
|
|
||
|
byte crashexit; /* Mail exit */
|
||
|
byte bbs300;
|
||
|
byte bbs1200;
|
||
|
byte bbs1275;
|
||
|
byte bbs2400;
|
||
|
byte bbs4800;
|
||
|
byte bbs9600;
|
||
|
byte bbs19200;
|
||
|
byte bbs38400;
|
||
|
|
||
|
/* Modem */
|
||
|
|
||
|
word modembaud; /* 30=300, 24=2400, etc. */
|
||
|
byte modemport; /* 1-255 (COM1=1, COM2=2, etc.) */
|
||
|
byte modemdelay; /* 1/10 seconds delay / line sent */
|
||
|
|
||
|
/* --- Messages */
|
||
|
|
||
|
char b300msg[16];
|
||
|
char b1200msg[16];
|
||
|
char b1275msg[16];
|
||
|
char b2400msg[16];
|
||
|
char b4800msg[16];
|
||
|
char b9600msg[16];
|
||
|
char b19200msg[16];
|
||
|
char b38400msg[16];
|
||
|
char errormsg[16];
|
||
|
char busymsg[16];
|
||
|
char carriermsg[16];
|
||
|
char okmsg[16];
|
||
|
char ringmsg[16];
|
||
|
char nodialmsg[16];
|
||
|
char noanswmsg[16];
|
||
|
char voicemsg[16];
|
||
|
|
||
|
/* --- Commands */
|
||
|
|
||
|
char escapestr[11];
|
||
|
char offhookstr[11];
|
||
|
char reconnectstr[11];
|
||
|
char init1[50];
|
||
|
char init2[50];
|
||
|
char init3[50];
|
||
|
char resetstr[50];
|
||
|
char downstr[50];
|
||
|
char hangupstr[11];
|
||
|
char dialstr[11];
|
||
|
|
||
|
/* --- Manual answer stuff */
|
||
|
|
||
|
char modemanswer[11];
|
||
|
byte answerdelay;
|
||
|
|
||
|
/* ------ Limited answer start and end times */
|
||
|
|
||
|
byte begin_hour;
|
||
|
byte begin_minute;
|
||
|
byte end_hour;
|
||
|
byte end_minute;
|
||
|
|
||
|
/* Calling control */
|
||
|
|
||
|
byte retrybusy;
|
||
|
byte retryresend;
|
||
|
byte retrydelay;
|
||
|
|
||
|
/* File request control */
|
||
|
|
||
|
char reqlist[71]; /* List to scan for reqable dirs */
|
||
|
char reqalias[71]; /* Magic filenames */
|
||
|
char reqmessage[71]; /* Appended to FAILED REQUEST message */
|
||
|
byte reqtype; /* Bit field */
|
||
|
byte reqmaxfiles; /* Max number of files to send on 1 req*/
|
||
|
word reqmaxtime; /* Maximum number of minutes for req*/
|
||
|
word reqmaxsize; /* Maximum size (in KB) for req */
|
||
|
word reqminbaud; /* Minimum baudrate for req */
|
||
|
byte reqstarthr; /* Start time for file requests, can be*/
|
||
|
byte reqstartmin; /* combined with the reqdays field. */
|
||
|
byte reqendhr;
|
||
|
byte reqendmin;
|
||
|
byte reqdays;
|
||
|
|
||
|
/* File to send when human callers are let thru */
|
||
|
|
||
|
char bbsname[11];
|
||
|
char beforebbsbanner[71];
|
||
|
|
||
|
/* Function keys from mailer menu */
|
||
|
|
||
|
struct {
|
||
|
char cmd[61];
|
||
|
char title[26];
|
||
|
byte behavior; /* 1-Pause, 2-Process msg base */
|
||
|
} key[24];
|
||
|
|
||
|
/* Mailer colors */
|
||
|
|
||
|
byte color[11];
|
||
|
|
||
|
/* Number of days to keep entries in history files */
|
||
|
|
||
|
byte keep_history;
|
||
|
|
||
|
/* FDServer password, if none given, server is INactive */
|
||
|
|
||
|
char slavepwd[21];
|
||
|
|
||
|
/* File displayed to users when system is in event for no callers */
|
||
|
|
||
|
char ineventfile[71];
|
||
|
|
||
|
/* File displayed when human callers are seen on mail-only system */
|
||
|
|
||
|
char mailonlyfile[71];
|
||
|
|
||
|
/* External programs to run on certain "wake-up" strings */
|
||
|
|
||
|
struct {
|
||
|
char wakeupstr[40];
|
||
|
byte errorlevel;
|
||
|
} externmail[10];
|
||
|
|
||
|
/* RESERVED FIELD */
|
||
|
|
||
|
/* --- Limited audio start and end times. If the below four bytes
|
||
|
are all zero (0), audio is enabled all the time */
|
||
|
|
||
|
byte audio_begin_hour;
|
||
|
byte audio_begin_minute;
|
||
|
byte audio_end_hour;
|
||
|
byte audio_end_minute;
|
||
|
|
||
|
/* --- Minimum cost to process undialable */
|
||
|
|
||
|
word min_undial_cost;
|
||
|
|
||
|
char RESERVERAT[886];
|
||
|
char extrnreq [71];
|
||
|
char modem_name[61]; /* modem name, for 'modem selection' */
|
||
|
} _mailer;
|
||
|
|
||
|
|
||
|
/* Netmail folder behavior */
|
||
|
|
||
|
#define RESTRICTED 0x00000001L
|
||
|
#define EXPORTOK 0x00000004L
|
||
|
#define USEXLATTABLES 0x00000008L
|
||
|
#define EDREADONLY 0x00000020L
|
||
|
|
||
|
/* Echomail flags */
|
||
|
|
||
|
#define SAVEBAD 0x00000001L
|
||
|
|
||
|
typedef struct {
|
||
|
char path[65]; /* Path if "board==0", otherwise empty (65) */
|
||
|
byte ftype; /* Folder type */
|
||
|
char areatag[39]; /* Echomail area tag */
|
||
|
byte origin; /* Default origin line, 0-19 */
|
||
|
char title[41]; /* Title to appear on screen */
|
||
|
byte useaka; /* AKA to use, 0==primary */
|
||
|
word board; /* QuickBBS/RemoteAccess/WC board number */
|
||
|
word upzone; /* Uplink zone */
|
||
|
word upnet; /* Uplink net */
|
||
|
word upnode; /* Uplink node */
|
||
|
word uppoint; /* Uplink point */
|
||
|
long behave; /* Behavior, see above */
|
||
|
long hiwater; /* Highwater mark for echomail */
|
||
|
long pwdcrc; /* CRC32 of password or -1L if unprotected */
|
||
|
long userok; /* Users with initial access */
|
||
|
long accflags; /* access flags, for network environment */
|
||
|
char reserved[8]; /* for future expansion */
|
||
|
} _eFOLDER;
|
||
|
|
||
|
#define MSGPRIVATE 0x0001
|
||
|
#define MSGCRASH 0x0002
|
||
|
#define MSGREAD 0x0004
|
||
|
#define MSGSENT 0x0008
|
||
|
#define MSGFILE 0x0010
|
||
|
#define MSGTRANSIT 0x0020
|
||
|
#define MSGORPHAN 0x0040
|
||
|
#define MSGKILL 0x0080
|
||
|
#define MSGLOCAL 0x0100
|
||
|
#define MSGHOLD 0x0200
|
||
|
#define MSGUNUSED 0x0400
|
||
|
#define MSGFREQ 0x0800
|
||
|
#define MSGRRREQ 0x1000
|
||
|
#define MSGISRR 0x2000
|
||
|
#define MSGAREQ 0x4000
|
||
|
#define MSGFUPDREQ 0x8000
|
||
|
|
||
|
typedef struct {
|
||
|
|
||
|
/* Macro keys */
|
||
|
|
||
|
char macrokey[24][61]; /* F1-F12, Shift F1-F12 */
|
||
|
|
||
|
/* Margin, default==60 */
|
||
|
|
||
|
byte margin;
|
||
|
|
||
|
/* Default message status */
|
||
|
|
||
|
word msgbits;
|
||
|
|
||
|
/* Miscellaneous settings */
|
||
|
|
||
|
long flags;
|
||
|
|
||
|
/* Origin lines */
|
||
|
|
||
|
char origin[20][61];
|
||
|
|
||
|
/* Editor colors */
|
||
|
|
||
|
byte color[15];
|
||
|
|
||
|
/* Netmail folder flags */
|
||
|
|
||
|
long netfolderflags;
|
||
|
|
||
|
/* Translation tables IN/OUT */
|
||
|
|
||
|
byte translate_in[256];
|
||
|
byte translate_out[256];
|
||
|
|
||
|
/* Where RemoteAccess/QuickBBS message base files are */
|
||
|
|
||
|
char qbase[71];
|
||
|
char WCmain[71];
|
||
|
|
||
|
/* RESERVED */
|
||
|
|
||
|
char RESERVERAT[255];
|
||
|
long echoflags;
|
||
|
_eFOLDER BBSnet;
|
||
|
_eFOLDER dupes;
|
||
|
_eFOLDER badecho;
|
||
|
char echolog[65];
|
||
|
char IMEWork[71];
|
||
|
|
||
|
} _editor;
|
||
|
|
||
|
typedef struct {
|
||
|
char systempath[71];
|
||
|
char mailpath[71];
|
||
|
char swap_path[71];
|
||
|
char semaphore[71];
|
||
|
char secfilespath[71];
|
||
|
char infilepath[71];
|
||
|
char packetpath[71];
|
||
|
char nodelistpath[71];
|
||
|
|
||
|
word countrycode;
|
||
|
|
||
|
ftn_addr aka[11];
|
||
|
|
||
|
/* Timeout value for screen blanker in SECONDS (0-255) */
|
||
|
|
||
|
long flags;
|
||
|
byte blackout_time;
|
||
|
|
||
|
/* User record */
|
||
|
|
||
|
struct {
|
||
|
char name[37];
|
||
|
long pwdcrc; /* Crc-32 of user password, -1L No pwd */
|
||
|
dword flags;
|
||
|
} user[10];
|
||
|
|
||
|
/* Protection of exits */
|
||
|
|
||
|
dword exitpwdcrc; /* Password for DOS shell, exits, etc. */
|
||
|
dword exitflags; /* Which flags should be protected */
|
||
|
char filler[760]; /* contains domain stuff */
|
||
|
char systemname[50]; /* site_info - system name */
|
||
|
char systemloc[40]; /* site_info - location */
|
||
|
char systemphone[24]; /* site_info - phone */
|
||
|
char fill[6]; /* 6 loose bytes :) */
|
||
|
char systemflags[20]; /* site_info - nodelist flags */
|
||
|
char systemcountry[26]; /* site_info - country */
|
||
|
char serial[14]; /* serial number */
|
||
|
char outecho[66]; /* outbound echomail packets */
|
||
|
char reserved[10]; /* reserved space */
|
||
|
} _shared;
|
||
|
|
||
|
typedef struct {
|
||
|
char initstring[41]; /* Init string */
|
||
|
word scrollsize; /* Max memory to use for buffer (in K) */
|
||
|
byte emulation; /* 0=TTY, 1=ANSI, 2=VT52, 3=VT100 */
|
||
|
byte protocol; /* Index in protocol list */
|
||
|
char shiftkey[12][31]; /* Shift F1-F12 macro settings */
|
||
|
char ctrlkey[12][31]; /* Ctrl F1-F12 macro settings */
|
||
|
char downloadpath[60]; /* Default download path */
|
||
|
char uploadpath[60]; /* Default upload path */
|
||
|
byte translate_in[256]; /* Translation table - modem->screen */
|
||
|
byte translate_out[256]; /* Translation table - screen->modem */
|
||
|
byte retrywait; /* Seconds to wait before next dial.. */
|
||
|
dword flags; /* Behavior, sounds, flashes.. etc. */
|
||
|
dword directorypwd; /* CRC-32 of password to enter phoneDir*/
|
||
|
char editor[60]; /* Invoked with Alt-I */
|
||
|
char RESERVERAT[796]; /* Reserved space */
|
||
|
ftn_addr newaka[21];
|
||
|
} _terminal;
|
||
|
|
||
|
typedef struct {
|
||
|
char port; /* 0 LPT1, 1 LPT2, 2 LPT3, 3 COM1, 4 COM2 */
|
||
|
char baud; /* 0 9600, 1 4800, 2 2400, 3 1200 */
|
||
|
byte stopbits; /* 0x00 - 1, 0x01 - 2 */
|
||
|
byte wordlength; /* 0x00 - 7, 0x01 - 8 */
|
||
|
byte parity; /* 0x00 - Even, 0x01 - Odd, 0x02 - None */
|
||
|
byte pagelen;
|
||
|
long behavior;
|
||
|
char init[71];
|
||
|
char reset[71];
|
||
|
char bold_on[31];
|
||
|
char bold_off[31];
|
||
|
char pr1RESERVED[62];
|
||
|
char italic_on[31];
|
||
|
char italic_off[31];
|
||
|
byte pagewidth; /* Width in columns of a page */
|
||
|
byte leftmargin; /* Left margin, ie. start printing at column*/
|
||
|
byte footer; /* Footer margin, ie. leave nn lines */
|
||
|
byte header; /* Header margin, ie. skip nn lines */
|
||
|
byte translate_out[256]; /* Translation table - disk->printer */
|
||
|
char pr2RESERVED[100];
|
||
|
} _printer;
|
||
|
|
||
|
#define IM_THISREV 0x0100
|
||
|
|
||
|
struct _ctl {
|
||
|
char fingerprint[5]; /* Must contain "JoHo" */
|
||
|
word sysrev; /* Must contain THISREV above */
|
||
|
dword ctlcrc; /* CRC-32 of struct excluding the 1st 11 bytes */
|
||
|
_mailer m;
|
||
|
_editor e;
|
||
|
_shared s;
|
||
|
_terminal t;
|
||
|
_printer p;
|
||
|
dword ctlcrc2; /* CRC-32 of all the above */
|
||
|
};
|
||
|
|
||
|
// Constant long bit values
|
||
|
|
||
|
#define RESTRICT 0x00000001L
|
||
|
#define ECHO_INFO 0x00000002L
|
||
|
#define EXPORT_OK 0x00000004L
|
||
|
#define USE_XLAT 0x00000008L
|
||
|
#define PRIVATE 0x00000010L
|
||
|
#define READONLY 0x00000020L
|
||
|
#define F_NETMAIL 0x08000000L
|
||
|
#define BOARDTYPE 0x10000000L
|
||
|
#define DELETED 0x20000000L /* Never written to disk */
|
||
|
#define LOCAL 0x40000000L
|
||
|
#define ECHOMAIL 0x80000000L
|
||
|
|
||
|
#define F_MSG 0
|
||
|
#define F_HUDSON 1
|
||
|
#define F_WC35 2
|
||
|
#define F_PCB15 3
|
||
|
#define F_JAM 4
|
||
|
|
||
|
// Folder structure
|
||
|
|
||
|
typedef struct {
|
||
|
char path[65]; /* Path if "board==0", otherwise empty (65) */
|
||
|
byte ftype; /* Folder type */
|
||
|
char areatag[39]; /* Echomail area tag */
|
||
|
byte origin; /* Default origin line, 0-19 */
|
||
|
char title[41]; /* Title to appear on screen */
|
||
|
byte useaka; /* AKA to use, 0==primary */
|
||
|
word board; /* QuickBBS/RemoteAccess/WC conf number */
|
||
|
word upzone; /* Uplink zone */
|
||
|
word upnet; /* Uplink net */
|
||
|
word upnode; /* Uplink node */
|
||
|
word uppoint; /* Uplink point */
|
||
|
long behave; /* Behavior, see above */
|
||
|
long hiwater; /* Highwater mark for echomail */
|
||
|
long pwdcrc; /* CRC32 of password or -1L if unprotected */
|
||
|
long userok; /* Users with initial access */
|
||
|
long accflags; /* access flags, for network environment */
|
||
|
long timestamp; /* Time stamp for detecting msg base updates*/
|
||
|
char reserved[4]; /* for future expansion */
|
||
|
} FOLDER;
|
||
|
|
||
|
// The following struct was used in IM 2.00-2.25, file name FOLDER.CFG.
|
||
|
|
||
|
typedef struct {
|
||
|
char path[65]; /* Path if "board==0", otherwise empty (65) */
|
||
|
char title[41]; /* Title to appear on screen */
|
||
|
byte origin; /* Default origin line, 0-19 */
|
||
|
long behave; /* Behavior, see above */
|
||
|
long pwdcrc; /* CRC32 of password or -1L if unprotected */
|
||
|
long userok; /* Users with initial access */
|
||
|
byte useaka; /* AKA to use, 0==primary */
|
||
|
word board; /* QuickBBS/RemoteAccess/WC board number */
|
||
|
} OLDFOLDER;
|
||
|
|
||
|
|
||
|
// ------------------------------------------------------------------
|
||
|
|
||
|
#if defined(GOLD_CANPACK)
|
||
|
#pragma pack()
|
||
|
#endif
|
||
|
|
||
|
|
||
|
// ------------------------------------------------------------------
|
||
|
|
||
|
#endif
|
||
|
|
||
|
// ------------------------------------------------------------------
|