home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 2 BBS
/
02-BBS.zip
/
bbbsr2.zip
/
misc
/
bbbsdef.h
next >
Wrap
C/C++ Source or Header
|
1997-06-26
|
41KB
|
801 lines
/* $Id: bbbsdef.h,v 1.38 1997/06/24 06:11:30 b Exp $ */
/*****************************************************************************
* *
* BBBS is Copyright 1990,1992-1997, Kim Heino and Tapani T. Salmi. *
* *
* Definitions and variables for BBBS, version number is below. *
* You may use this file as long as this is totally unmodified. *
* We take no responsibility over any program using this file. *
* *
*****************************************************************************/
#if defined(__OS2__) || defined(__EMX__)
#pragma pack(1)
#endif
typedef unsigned char boolean; /* 8 bit, true or false */
typedef unsigned char byte; /* 8 bit, unsigned */
typedef signed short int integer; /* 16 bit, signed */
typedef unsigned short int word; /* 16 bit, unsigned */
typedef signed long int longint; /* 32 bit, signed */
#if (!defined(__LINUX__) && !defined(__SOLARIS__) && !defined(__UNIXWARE__)) || defined(__ULTRIX__) || defined(__FREEBSD__)
typedef unsigned long int ulong; /* 32 bit, unsigned */
#endif
#define true 1
#define false 0
#if defined(__MSDOS__)
#define lines_in_editor 1000 /* max lines in editor */
#define max_msg 2048 /* max unread messages per area */
#define desclen 768
#define chat_last_saved 10 /* /last */
#else
#define lines_in_editor 4096 /* max lines in editor */
#define max_msg 8192 /* max unread messages per area */
#define desclen 4096
#define chat_last_saved 20 /* /last */
#endif
#define disk_lastread 128 /* word-pairs in tmp lastread file */
#if defined(__MSDOS__)
#define buffer_len 4096 /* com buffer length, must be 2^something */
#define buffer_open 3000
#define buffer_close 3900
#else
#define buffer_len 8192 /* com buffer length, must be 2^something */
#define buffer_open 6144
#define buffer_close 8000
#endif
#define txtsize 713 /* bbbstxt lines */
#define commands_saved 20 /* inputs saved */
#define fileaccess_NONE 0
#define fileaccess_W 2
#define fileaccess_R 4
#define linkoverflow 128
#define num_of_akas 44
#define num_of_events 90
#define num_of_limits 128
#define usernumcolors 80
#define stat_must 1 /* status bits */
#define stat_member 2
#define stat_invite 4
#define stat_fidoarea 8
#define stat_postarea 16
#define stat_allowpriv 32
#define stat_nomarks 64
#define stat_noreply 128
#define stat_nostrip 256
#define stat_allfix 512
#define stat_namefix 1024
#define stat_alias 2048
#define stat_allowtag 4096
#define stat_agnet 8192
#define stat_moderated 16384 /* used internally, DO NOT SET */
#define stat_nntp 32768 /* used internally, DO NOT SET */
#define mstat_killed 1 /* mstatust bits */
#define mstat_mempty12 2
#define mstat_private 4
#define mstat_sent 8
#define mstat_readed 16
#define mstat_extraline 32
#define mstat_nntpsent 64
#define mstat_mempty3 128
#define mstat_mempty4 256
#define mstat_mempty5 512
#define mstat_mempty6 1024
#define mstat_mempty7 2048
#define mstat_mempty8 4096
#define mstat_mempty9 8192
#define mstat_mempty10 16384
#define mstat_mempty11 32768
#define char_IBM 0 /* charsets */
#define char_SF7 1
#define char_ISO 2
#define char_IBN 3
#define char_US7 4
#define char_GE7 5
#define char_NO7 6
#define char_FR7 7
#define char_IT7 8
#define char_SP7 9
#define char_MAC 10
#define CTABLE_IN 0
#define CTABLE_OUT 256
#define acc_readmsg 1 /* accesst bits */
#define acc_writemsg 2
#define acc_aempty12 4
#define acc_aempty13 8
#define acc_sigop 16
#define acc_aempty1 32
#define acc_aempty2 64
#define acc_aempty3 128
#define acc_aempty4 256
#define acc_aempty5 512
#define acc_aempty6 1024
#define acc_aempty7 2048
#define acc_aempty8 4096
#define acc_aempty9 8192
#define acc_aempty10 16384
#define acc_aempty11 32768
#define bzs_alias_len 1024
#define bzs_set_len 2048
#define bzs_end 0
#define bzs_foo2 1
#define bzs_alias 2
#define bzs_set 3
#define bzs_script 4
#define bun_year(l) (int)(((l>>25) & 127)+80)
#define bun_month(l) (int)((l>>21) & 15)
#define bun_day(l) (int)((l>>16) & 31)
#define bun_hour(l) (int)((l>>11) & 31)
#define bun_minute(l) (int)((l>>5) & 63)
#define bun_second(l) (int)((l & 31)<<1)
#define outputstopped_no_break 16
#define outputstopped_show_log 32
#define outputstopped_no_local 64
#define outputstopped_no_remote 128
#define outputstopped_reset 0xf8
#define outputstopped_set 1
#define outputstopped_check 7
struct userrec { /* maindir/bbbsusr.dat */
char name[30]; /* 0 */
byte password[16]; /* 30 */ /* MD5 of upper case password */
char address[30]; /* 46 */
char city[30]; /* 76 */
char phone[18]; /* 106 */
char birth[18]; /* 124 */
byte ok2login; /* 142 */ /* 0=yes,1=getlost,2=killed,3=kill+boot */
byte termcap; /* 143 */ /* Bit 0-3: 0=TTY,1=ANSI,2=dummy,3=VT320,4=RIP, Bit 4-7: 0=Line,1=FSE,2=MG,3=local/script */
byte pagelength; /* 144 */
byte charset; /* 145 */
byte language; /* 146 */ /* 0..9 (0=English,1=Suomi,2=Svenska,3=Norsk) */
byte readmode; /* 147 */ /* Bit 0-3: 0=Marked,1=Reference,2=Forward, Bit 4-7: 0=Text,1=Hippo1,2=Hippo2,3=OMEN,4=QWK,5=BW,6=QWKREP */
byte packtype; /* 148 */ /* 0=text,1=arc,2=zip,3=lzh,4=arj,5=zoo,6=hpk,7=rar */
byte protocol; /* 149 */ /* 0=Z,1=Y,2=X,3=SHYDRA,4=XCRC,5=YB,6=SZmodem,7=HYDRA,8=ZedZap */
byte nodemsgfilt; /* 150 */ /* 0=feelings, 1=login/logout, 2=entered message, 3=public chat, 4=priv msgs */
integer timelimit; /* 151 */
integer timeleft; /* 153 */
word fchecked; /* 155 */
word timebank; /* 157 */
word limits; /* 159 */
ulong timeson; /* 161 */
ulong ptimeson; /* 165 */
ulong msgleft; /* 169 */
ulong pmsgleft; /* 173 */
ulong msgread; /* 177 */
ulong pmsgread; /* 181 */
ulong msgdumped; /* 185 */
ulong pmsgdumped; /* 189 */
ulong uploaded; /* 193 */
ulong puploaded; /* 197 */
ulong downloaded; /* 201 */
ulong pdownloaded; /* 205 */
ulong kbup; /* 209 */
ulong pkbup; /* 213 */
ulong kbdown; /* 217 */
ulong pkbdown; /* 221 */
ulong resume; /* 225 */
ulong access; /* 229 */ /* Bit 0=DOS,1=Confs,2=Files,3=Priv,4=Pass,30=Download,31=Upload */
ulong utoggles; /* 233 */ /* Bit 0=!Insert,1=Indent,2=XYdisp,3=!Flash,4=ConfS,5=Expert,7=Colors,8=Review,9=RealVT100keyboard,10=Quote,11=Silent */
ulong envpos; /* 237 */
ulong lasttime; /* 241 */
ulong firsttime; /* 245 */
ulong account; /* 249 */
ulong todaydown; /* 253 */
ulong userbits; /* 257 */ /* Feel free to use this variable as you want - just note that somebody else might also use it */
byte uempty[8]; /* 261 */
ulong bzlong; /* 269 */ /* tampered check */
}; /* 273 */
#define uacc_sysop_mask 0x000000FF
#define uacc_dos 0x00000001
#define uacc_confs 0x00000002
#define uacc_files 0x00000004
#define uacc_priv 0x00000008
#define uacc_pass 0x00000010
#define uacc_useredit 0x00000020
#define uacc_fido 0x00000040
#define uacc_chat 0x00000080
#define uacc_download 0x40000000
#define uacc_upload 0x80000000
#define utog_not_insert 0x00000001
#define utog_indent 0x00000002
#define utog_xydisp 0x00000004
#define utog_not_flash 0x00000008
#define utog_confs 0x00000010
#define utog_expert 0x00000020
#define utog_colors 0x00000080
#define utog_review 0x00000100
#define utog_vt100key 0x00000200
#define utog_quote_include 0x00000400
#define utog_silent 0x00000800
#define utog_return 0x00001000
struct account {
char name[30]; /* 0 */
longint money; /* 30 */
word flags; /* 34 */ /* bit 0:allow nega */
word users; /* 36 */ /* # of users in this account */
}; /* 38 */
#define account_negative 0x0001
struct msgrec { /* maindir/ *.hdr */
word number; /* 0 */
word timegot; /* 2 */
char msgfrom[72]; /* 4 */
char msgto[72]; /* 76 */
char subject[72]; /* 148 */
word msgfromn; /* 220 */
word msgton; /* 222 */
word status; /* 224 */
word lines; /* 226 */
ulong offset; /* 228 */
ulong dated; /* 232 */
word replyto; /* 236 */
word nextreply; /* 238 */
word firstreply; /* 240 */
word zonefrom; /* 242 */
word netfrom; /* 244 */
word nodefrom; /* 246 */
longint msgid; /* 248 */
}; /* 252 */
struct hihhi { /* maindir/bbbshi.dat */
word times; /* 0 */
word daynro; /* 2 */
char name[30]; /* 4 */
char msg[80]; /* 34 */
}; /* 114 */
struct noderec { /* tempdir/bbbsnode */
word split; /* 0 */ /* reserved */
byte bstatus; /* 2 */ /* Bit 1=mailsession, 2=groupchat_in_hydra, 3=keepalive, 4=keepidle, 5=bterm */
byte zstatus; /* 3 */ /* 0=off,1=active,2=not,3=writing,4=grab,5=down,6=up,7=chat,8=door,9=groupchat,10=telnet,11=shelled */
ulong speed; /* 4 */ /* 0=local */
word time; /* 8 */ /* hour*0x100+min */
word endtime; /* 10 */ /* when downloading, hour*0x100+min */
char nick[11]; /* 12 */
char sex; /* 23 */ /* 1=male, 0=female */
char realname[30]; /* 24 */
ulong idle; /* 54 */ /* timestamp (time()), ignore diffs less than 120 seconds! */
}; /* 58 */
struct chatrec { /* tempdir/bbbsmsg.* */
word node; /* 0 */
word filter; /* 2 */
char msg[256]; /* 4 */
char prefix[80]; /* 260 */ /* "#[* ] :nick{ color}" for feelings, "#channel:nick" for chat, "nick" for private, "*channel:nick" for info messages */
}; /* 340 */
struct bstatrec { /* maindir/bbbsstat.dat */
ulong data [7] /* 0 */ /* day */
[3] /* user/sysop/fido */
[6]; /* date/min/call/msg/up/down date=day+31*month+372*year */
}; /* 504 */
struct cfgrec2 {
ulong count_of_confs; /* 0 */
ulong post_conf; /* 4 */
ulong resume_conf; /* 8 */
ulong fileinfo_conf; /* 12 */
}; /* 16 */
struct confrec1 {
word lastread; /* 0 */
byte charsets; /* 2 */ /* hi: bbbs->msg, lo: bbbs<-msg */
byte foo; /* 3 */
word status; /* 4 */
char confname[60]; /* 6 */
char description[60]; /* 66 */
}; /* 126 */
struct confrec2 {
char fidopath[70]; /* 0 */
char nntpname[64]; /* 70 */
word nntphost; /* 134 */
ulong nntpnumber; /* 136 */
word nodenumber; /* 140 */
word originnumber; /* 142 */
word moderator_zone; /* 144 */
word moderator_net; /* 146 */
word moderator_node; /* 148 */
word moderator_point; /* 150 */
word bpc_min; /* 152 */
word bpc_max; /* 154 */
}; /* 156 */
/* next: 3039/4300 */
struct global_config {
char bbbs_name[30], /* 0 */
sysop_name[30], /* 1 */
newu_account[30], /* 591 */
closed_password[8], /* 2 */
grabfile[14], /* 3 */
maindir[70], /* 10 */
updir[70], /* 12 */
tempdir[70], /* 14 */
menudir[70], /* 278 */
origins[10][60], /* 26- 35 */
tickdir[70], /* 280 */
netmail[70], /* 281 */
extlog[70], /* 526 */
inetlog[70], /*3032 */
tmp_in_pkt[70], /* 502 */
tmp_out_pkt[70], /* 503 */
bundle_dir[70], /* 504 */
badechodir[70], /* 505 */
badsecuredir[70], /* 506 */
sitename[60], /* 306 */
location[60], /* 307 */
phone[60], /* 308 */
speed[60], /* 309 */
flags[60], /* 310 */
organization[60], /* 617 */
hostname[60], /* 618 */
remotedomain[60], /* 952 */
ircserver[60], /*3037 */
cdtempdrives[40], /* 612 */
akam[num_of_akas][60], /* 900-943, old 311-320 */
freq_magic[70], /* 357 */
freq_normal[70], /* 358 */
dialconvfrom[10][27], /* 337-346 */
dialconvto[10][27], /* 347-356 */
faxdir[70], /* 414 */
feelingsdir[70], /* 3008 */
scriptdir[70], /* 3009 */
btermdown[70], /* 417 */
inbound[70]; /* 282 */
word max_nodes, /* 36 */
bankmax, /* 40 */
whodown_size, /* 291 */
maxbundlesize, /* 615 */
boguspktsize, /* 530 */
smtpmaxsize, /*3019 */
tranxzone, /* 302 */
tranxnet, /* 303 */
tranxnode, /* 304 */
tranxpoint, /* 305 */
freqlimit[3][4], /* 321-332 */
limits_kbday[num_of_limits], /*3100-3217, old 542-557 */
cost_start[num_of_limits], /*3300-3417, old 558-573 */
cost_min[num_of_limits], /*3500-3617, old 574-589 */
cost_hour[num_of_limits], /*3700-3817, old 596-611 */
zone[num_of_akas], /* 700-743, old 41- 50 */
net[num_of_akas], /* 750-793, old 51- 60 */
node[num_of_akas], /* 800-843, old 61- 70 */
point[num_of_akas]; /* 850-893, old 71- 80 */
integer newu_time; /* 81 */
byte bankrate, /* 84 */
msgrate, /* 85 */
desc_max_lines, /* 289 */
present_akas, /* 425 */
limits_byte[num_of_limits], /*3900-4017, old 118-133 */
limits_file[num_of_limits], /*4100-4217, old 102-117 */
rescantime, /* 300 */
busydelay, /* 333 */
tries_busy, /* 334 */
tries_bad, /* 522 */
faxerror, /* 416 */
mailerror, /* 301 */
flood_max_count, /*3038 */
max_open_files, /* 507 */
bogus_dupes, /* 529 */
hydra_tx, /* 520 */
hydra_rx, /* 521 */
usermailerror; /* 411 */
ulong newu_access, /* 86 */
gtoggles, /* below */
htoggles; /* below */
};
#define cfgg_up_down_check 0x00000001 /* 91 */
#define cfgg_show_privates 0x00000002 /* 92 */
#define cfgg_brobocop 0x00000004 /* 93 */
#define cfgg_hippo 0x00000008 /* 94 */
#define cfgg_show_empty 0x00000010 /* 97 */
#define cfgg_pack_messages 0x00000040 /* 290 */
#define cfgg_fido_hydra 0x00000080 /* 292 */
#define cfgg_fido_zedzap 0x00000100 /* 293 */
#define cfgg_fido_tranx 0x00000200 /* 294 */
#define cfgg_fido_unlistnode 0x00000400 /* 295 */
#define cfgg_fido_unlistpoint 0x00000800 /* 296 */
#define cfgg_fido_unprotnode 0x00001000 /* 297 */
#define cfgg_fido_freq_answering 0x00002000 /* 298 */
#define cfgg_fido_freq_calling 0x00004000 /* 299 */
#define cfgg_show_sysop_in_stats 0x00008000 /* 410 */
#define cfgg_bmt_check_destination 0x00010000 /* 413 */
#define cfgg_disable_newu_address 0x00020000 /* 419 */
#define cfgg_disable_newu_birthday 0x00040000 /* 420 */
#define cfgg_users_are_hidden 0x00080000 /* 421 */
#define cfgg_upload_scan 0x00100000 /* 422 */
#define cfgg_poll_all_crashes 0x00200000 /* 423 */
#define cfgg_delete_dup_uploads 0x00400000 /* 424 */
#define cfgg_savebad 0x00800000 /* 508 */
#define cfgg_savesecure 0x01000000 /* 509 */
#define cfgg_bmt_log_headers 0x02000000 /* 531 */
#define cfgg_no_remote_sysop 0x04000000 /* 532 */
#define cfgg_bogus_save_netmail 0x08000000 /* 541 */
#define cfgg_kb_day_relative 0x10000000 /* 590 */
#define cfgg_global_download 0x20000000 /* 613 */
#define cfgg_nntp_gateway 0x40000000 /* 950 */
#define cfgg_smtp_gateway 0x80000000 /* 951 */
#define cfgh_nntp_save_headers 0x00000001 /* 3001 */
#define cfgh_smtp_save_headers 0x00000002 /* 3002 */
#define cfgh_chat_uses_time 0x00000004 /* 3003 */
#define cfgh_sysnote_msg 0x00000008 /* 3004 */
#define cfgh_eom_to_uucp 0x00000010 /* 3006 */
#define cfgh_use_nodenum_not_nick 0x00000020 /* 3007 */
#define cfgh_allow_all_names 0x00000040 /* 3010 */
#define cfgh_grab_is_free 0x00000100 /* 3031 */
#define cfgh_uploader_owns_file 0x00000200 /* 3034 */
struct local_config {
char modem_init_string1[60], /* 4 */
modem_init_string2[60], /* 283 */
modem_init_string3[60], /* 284 */
modem_hangup_string[60], /* 5 */
modem_busy_string[60], /* 6 */
modem_answer_string[60], /* 279 */
modem_aftercall[60], /* 527 */
voice_init[80], /*3020 */
voice_beep[60], /*3021 */
voice_play[60], /*3022 */
voice_save[60], /*3023 */
voice_go_voice[60], /*3027 */
voice_go_data[60], /*3028 */
data_after_voice[60], /* 533 */
voicedir[70], /* 536 */
voicegreetings[70], /* 537 */
bterm_init[60], /* 427 */
dont_crash_flags[60], /* 426 */
only_crash_flags[60], /* 593 */
fd_dobbs[70], /* 7 */
logfile[70], /* 8 */
spyfile[70], /* 3000 */
loginlog[70], /* 9 */
grabdir[70], /* 11 */
menudir[70], /* 13 */
newdir[70], /* 15 */
voicepass[5], /* 540 */
lockpass[8], /*3035 */
dial1[5][20], /* 447-451 */
dial2[5][10], /* 452-456 */
dial3[5][50], /* 457-461 */
macros[10][50], /* 16- 25 */
hotlogin[10][40]; /* 429-438 */
word event_dial_zone[num_of_events], /* 1000-1099, old 370-379 */
event_dial_net[num_of_events], /* 1100-1199, old 380-389 */
event_dial_node[num_of_events], /* 1200-1299, old 390-399 */
event_dial_point[num_of_events], /* 1300-1399, old 400-409 */
voice_min_size, /*3030 */
locktimeout, /*3036 */
base_address; /* 39 */
byte irq, /* 82 */
pollrate, /* 83 */
checksleep, /* 287 */
ringingcount, /* 539 */
answer_ring_count, /* 98 */
screensaver_timeout, /* 285 */
aftercall_lines, /* 528 */
voicecompression, /* 538 */
voice_modem, /*3024 */
voice_speaker, /*3025 */
voice_mic, /*3026 */
rush_hour[24], /* 134-157 */
event_day[num_of_events], /* 1400-1499, old 158-167 */
event_start_hour[num_of_events], /* 1500-1599, old 168-177 */
event_start_min[num_of_events], /* 1600-1699, old 178-187 */
event_end_hour[num_of_events], /* 1700-1799, old 188-197 */
event_end_min[num_of_events], /* 1800-1899, old 198-207 */
event_errorlevel[num_of_events], /* 1900-1999, old 208-217 */
event_toggles[num_of_events], /* below */
event_last_dial[num_of_events], /* 2000-2099, old 360-369 */
event_last_day[num_of_events], /* 2100-2199, old 248-257 */
nt_priorities[8], /*3011-3018*/
priorities[8]; /* 439-446 */
ulong start_speed, /* 37 */
faxbaud, /* 415 */
min_speed, /* 38 */
ltoggles; /* below */
};
#define cfgl_event_dont_allow_users 0x01 /* 2200-2299, old 218-227 */
#define cfgl_event_flexible 0x02 /* 2300-2399, old 228-237 */
#define cfgl_event_must 0x04 /* 2400-2499, old 238-247 */
#define cfgl_event_dont_allow_mail 0x08 /* 2500-2599, old 462-471 */
#define cfgl_event_dont_allow_pickup 0x10 /* 2600-2699, old 472-481 */
#define cfgl_event_dont_send_cm 0x20 /* 2700-2799, old 482-491 */
#define cfgl_event_send_all 0x40 /* 2800-2899, old 492-501 */
#define cfgl_event_dont_allow_freq 0x80 /* 2900-2999, old 510-519 */
#define cfgl_local_bell 0x00000001 /* 87 */
#define cfgl_rts_cts 0x00000002 /* 88 */
#define cfgl_reset_speed 0x00000004 /* 89 */
#define cfgl_hangup_at_exit 0x00000008 /* 90 */
#define cfgl_set_16550 0x00000010 /* 95 */
#define cfgl_local_sysop_keys 0x00000020 /* 96 */
#define cfgl_local_echo 0x00000040 /* 100 */
#define cfgl_save_screen 0x00000080 /* 101 */
#define cfgl_null_modem_login 0x00000100 /* 288 */
#define cfgl_send_crashmail 0x00000200 /* 359 */
#define cfgl_backdoor 0x00000400 /* 412 */
#define cfgl_fast_fax 0x00000800 /* 418 */
#define cfgl_dont_check_carrier 0x00001000 /* 428 */
#define cfgl_nocarrier_is_busy 0x00002000 /* 523 */
#define cfgl_show_shell_output 0x00004000 /* 524 */
#define cfgl_allow_shell_break 0x00008000 /* 525 */
#define cfgl_slow_protocols 0x00010000 /* 592 */
#define cfgl_fax_receive_revbit 0x00020000 /* 594 */
#define cfgl_fax_send_revbit 0x00040000 /* 595 */
#define cfgl_buffered_output 0x00080000 /* 614 */
#define cfgl_rockwell_kludge 0x00100000 /* 616 */
#define cfgl_fix_rar_bug 0x00200000 /*3033 */
struct comstruct { /* for internal / named memory communication */
ulong modemhead, modemtail, s, c;
byte modembuf[buffer_len];
};
#if !defined(__BBBS_NO_EXTERNS__)
extern char *ver; /* "3.33 Foo"; Version number */
extern char hexs[17]; /* "0123456789ABCDEF"; */
extern char *vername; /* "BBBS/D", "BBBS/2", etc. */
extern struct userrec u;
extern struct global_config cfgg;
extern struct local_config cfgl;
extern struct cfgrec2 cfg2;
extern struct noderec node;
extern struct fos_struct fos_info;
extern struct confrec1 **confs;
extern FILE *grabfile;
extern char *buffer, *outbuffer, *txt[txtsize+1], *txtstart, commands[commands_saved][80], local_buffer[128], comstring[256], temp_string[256], *bzsalias, *bzsset, binterface, *areamod, *groups, crrdir[128], realdir[128], holdreal[128], hddesc[128], serna[21], *chat_last_lines[chat_last_saved];
extern ulong tempsys, startdump, startread, startleft, realbaud, baud, lastcall;
extern word unum, confnro, loginhour, loginmin, lastmsg, curmsg, firstmsg, lastreaded, foryou, newavail, reserved1, reserved2, reserved3, reserved4, reserved5, msgreaded[max_msg+1], gnubuf, serno, *lastr, nodenumber, reduced, nextevent, bzltc;
extern integer lastwarn, temptime;
extern byte chartable[512], jobtype, com, errl, commands_in_memory, pagecounter, lastinchar, spymode, brobot, dinged, bzlts[2], tomenu, getdown, remotey, fossil, forcefossil, script_count, pktcount, currentevent, outputstopped, usercolors[usernumcolors+1];
extern boolean carrier, files_checked, desqview, quicklogin, paged, script_running, rupted, bzchanged, askpass, userlocked, debugmode, reducedevent, safeprint, allow_locking;
#if defined(__OS2__) && !defined(BAG) && !defined(BCFG4)
extern int socket1;
extern boolean freemodem, thread_active, broken_pipe;
extern HFILE modem;
extern char comdevice[80];
extern byte pipecommunication;
#endif
#if defined(__WINDOWS__) && !defined(BAG) && !defined(BCFG4)
extern HANDLE modem;
extern char comdevice[80];
extern byte pipecommunication;
extern boolean freemodem;
#endif
#if (defined(__LINUX__) || defined(__SOLARIS__) || defined(__UNIXWARE__) || defined(__SUNOS__)) && !defined(BAG) && !defined(BCFG4)
extern int modem;
extern char comdevice[80];
extern byte pipecommunication;
extern boolean freemodem;
#endif
#if defined(__MSDOS__)
extern char filna[13];
#else
extern char filna[80];
#endif
#endif
/******************************************************************************
confh2o4.dat word highwater[count_of_confs+1];
confusr4.dat struct { unum*4L*(count_of_confs+1)+confnro*4L
word lastread; 0
word status; 2
} userconfstat[count_of_confs+1];
confcfg4.dat ulong count_of_confs; 0
ulong post_conf; 4
ulong resume_conf; 8
ulong fileinfo_conf; 12
struct { 16+confnum*282
word lastread; 0
byte charsets; 2
byte foo; 3
word status; 4
char confnames[60]; 6
char description[60]; 66
char fidopath[70]; 126
char nntpname[64]; 196
word nntphost; 260
ulong nntpnumber; 262
word nodenumber; 266
word originnumber; 268
word moderator_zone; 270
word moderator_net; 272
word moderator_node; 274
word moderator_point; 276
word bpc_min; 278
word bpc_max; 280
} confstats[count_of_confs+1]; 282
*******************************************************************************
A Quick Guide to Convert C struct to Pascal Record
struct foobar { type foobar = record
char b1; b1 : shortint;
char b2[128]; b2 : string[127]; { 128-1=127 }
byte b3; b3 : byte;
word b4; b4 : word;
word b5[128]; b5 : array[0..127] of word; { 128-1=127 }
integer b6; b6 : integer;
longint b7; b7 : longint;
ulong b8; b8 : longint; { unsigned }
}; end;
You still have to convert C-alike null-terminated strings (b2) to
Pascal-alike strings.
*******************************************************************************
global_config and local_config strutures are saved in following format:
word id; -- see comments
byte len; -- in bytes
byte data[]; -- actual data for item id
So, after reading id and len you just fread(&config.id,1,len,file) or
fseek(len,SEEK_CUR,file).
******************************************************************************/
struct fos_struct {
word strsize; /* size of the structure in bytes */
byte majver; /* FOSSIL spec driver conforms to */
byte minver; /* rev level of this specific driver */
char *ident; /* FAR pointer to ASCII ID string */
word ibufr; /* size of the input buffer (bytes) */
word ifree; /* number of bytes left in buffer */
word obufr; /* size of the output buffer (bytes) */
word ofree; /* number of bytes left in the buffer */
byte swidth; /* width of screen on this adapter */
byte sheight; /* height of screen " " */
byte speed; /* ACTUAL speed, computer to modem */
};
struct ftsc001 {
char fromuser[36]; /* 0 */
char touser[36]; /* 36 */
char subject[72]; /* 72 */
char datetime[20]; /* 144 */
word timesread; /* 164 */ /* not used */
word destnode; /* 166 */
word orignode; /* 168 */
word cost; /* 170 */ /* not used */
word orignet; /* 172 */
word destnet; /* 174 */
word destzone; /* 176 */
word origzone; /* 178 */
word destpoint; /* 180 */
word origpoint; /* 182 */
word replyto; /* 184 */ /* not used */
word attribute; /* 186 */
word nextreply; /* 188 */ /* not used */
}; /* 190 */
struct pktmessage {
word version, /* 0 */
orignode, /* 2 */
destnode, /* 4 */
orignet, /* 6 */
destnet, /* 8 */
attribute, /* 10 */
cost; /* 12 */
/* 14 */
/* byte datetime[20]; */ /* OPUS does it wrong! */
/* char to[], from[], subject[], text[]; */
};
#define fido_attr_private 0x00000001L
#define fido_attr_crash 0x00000002L
#define fido_attr_sent 0x00000008L
#define fido_attr_file 0x00000010L
#define fido_attr_kill 0x00000080L
#define fido_attr_local 0x00000100L
#define fido_attr_hold 0x00000200L
#define fido_attr_freq 0x00000800L
#define fido_attr_rrr 0x00001000L
#define fido_attr_isrr 0x00002000L
#define fido_attr_delete 0x00010000L
#define fido_attr_trunc 0x00020000L
#define fido_attr_direct 0x00040000L
#define fido_attr_lock 0x00080000L
#define fido_attr_immediate 0x00100000L
struct packetheader2 {
word orignode, /* 0 */
destnode, /* 2 */
year, /* 4 */
month, /* 6 */
day, /* 8 */
hour, /* 10 */
minute, /* 12 */
second, /* 14 */
baud, /* 16 */
version, /* 18 */
orignet, /* 20 */
destnet; /* 22 */
byte prodcode, /* 24 */
serial, /* 25 */
password[8]; /* 26 */
word origzone, /* 34 */
destzone; /* 36 */
byte empty[20]; /* 38 */
}; /* 58 */
struct packetheader2p {
word orignode, /* 0 */
destnode, /* 2 */
year, /* 4 */
month, /* 6 */
day, /* 8 */
hour, /* 10 */
minute, /* 12 */
second, /* 14 */
baud, /* 16 */
version, /* 18 */
orignet, /* 20 */
destnet; /* 22 */
byte prodcodel, /* 24 */
revisionh, /* 25 */
password[8]; /* 26 */
word origzoneq, /* 34 */
destzoneq, /* 36 */
auxnet, /* 38 */
cwcopy; /* 40 */
byte prodcodeh, /* 42 */
revisionl; /* 43 */
word cw, /* 44 */
origzone, /* 46 */
destzone, /* 48 */
origpoint, /* 50 */
destpoint; /* 52 */
long psd; /* 54 */
}; /* 58 */
struct packetheader22 {
word orignode, /* 0 */
destnode, /* 2 */
origpoint, /* 4 */
destpoint; /* 6 */
long res1, /* 8 */
res2; /* 12 */
word subversio, /* 16 */
version, /* 18 */
orignet, /* 20 */
destnet; /* 22 */
byte prodcode, /* 24 */
revision, /* 25 */
password[8]; /* 26 */
word origzone, /* 34 */
destzone; /* 36 */
byte origdomain[8], /* 38 */
destdomain[8]; /* 46 */
long psd; /* 54 */
}; /* 58 */