This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
deb-goldedplus/goldlib/gmb3/gmoezyc.h
2000-02-25 10:15:17 +00:00

259 lines
6.1 KiB
C++

// This may look like C code, but it is really -*- C++ -*-
// ------------------------------------------------------------------
// The Goldware Library
// Copyright (C) 1990-1999 Odinn Sorensen
// Copyright (C) 1999-2000 Alexander S. Aganichev
// ------------------------------------------------------------------
// 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$
// ------------------------------------------------------------------
// Ezycom msgbase.
// ------------------------------------------------------------------
// ------------------------------------------------------------------
// Only include once!
#ifndef __GMEZYC_H
#define __GMEZYC_H
// ------------------------------------------------------------------
#include <gmoarea.h>
#include <gusrezyc.h>
#if defined(GOLD_CANPACK)
#pragma pack(1)
#endif
// ------------------------------------------------------------------
// Ezycom constants
#define EZYC_MAXNAME 36
#define EZYC_MAXSUBJ 73
#define EZYC_MAXMESS102 1024
#define EZYC_MAXMESS110 1536
#define EZYC_USERSBUF 100
#define EZYC_USERDELETED 0x0001
// ------------------------------------------------------------------
const byte EZYC_MSGATTR_DELETED = 0x01;
const byte EZYC_MSGATTR_NETPEND = 0x02;
const byte EZYC_MSGATTR_RESERVED = 0x04;
const byte EZYC_MSGATTR_PRIVATE = 0x08;
const byte EZYC_MSGATTR_RECEIVED = 0x10;
const byte EZYC_MSGATTR_ECHOPEND = 0x20;
const byte EZYC_MSGATTR_LOCAL = 0x40;
const byte EZYC_MSGATTR_NOKILL = 0x80;
const byte EZYC_NETATTR_KILLSENT = 0x01;
const byte EZYC_NETATTR_SENT = 0x02;
const byte EZYC_NETATTR_ATTACH = 0x04;
const byte EZYC_NETATTR_CRASH = 0x08;
const byte EZYC_NETATTR_FREQ = 0x10;
const byte EZYC_NETATTR_RREQ = 0x20;
const byte EZYC_NETATTR_AREQ = 0x40;
const byte EZYC_NETATTR_RREC = 0x80;
const byte EZYC_EXTATTR_RSVD1 = 0x01;
const byte EZYC_EXTATTR_RSVD2 = 0x02;
const byte EZYC_EXTATTR_RSVD3 = 0x04;
const byte EZYC_EXTATTR_RSVD4 = 0x08;
const byte EZYC_EXTATTR_RSVD5 = 0x10;
const byte EZYC_EXTATTR_RSVD6 = 0x20;
const byte EZYC_EXTATTR_RSVD7 = 0x40;
const byte EZYC_EXTATTR_SEEN = 0x80;
// ------------------------------------------------------------------
// Ezycom message header
struct EzycHdr {
word replyto;
word reply1st;
ulong startposition;
ulong messagelength;
Addr destnet;
Addr orignet;
word cost; // redefine to replynext?
byte msgattr;
byte netattr;
byte extattr;
FTime posttimedate;
FTime recvtimedate;
char whoto[EZYC_MAXNAME];
char whofrom[EZYC_MAXNAME];
char subject[EZYC_MAXSUBJ];
};
// ------------------------------------------------------------------
// Ezycom LASTCOMB.BBS record structure
struct EzycLast {
word combinedinfo;
word lastreadinfo[16];
};
// ------------------------------------------------------------------
// Ezycom MSGFAST.BBS record structure
struct EzycFast {
dword whoto; // 32 bit CRC on WhoTo in MSGHxxx.BBS
word msgboard;
word msgnumber;
};
// ------------------------------------------------------------------
// Ezycom MSGDLTD.BBS record
struct EzycDeleted {
word msgboard;
word msgnumber;
};
// ------------------------------------------------------------------
#if defined(GOLD_CANPACK)
#pragma pack()
#endif
// ------------------------------------------------------------------
struct EzycData {
int fhhdr;
int fhtxt;
int fhnow;
int omode;
int smode;
int timesposted;
int islocked;
Path ezyfile;
};
// ------------------------------------------------------------------
struct EzycWide {
int ver;
EzycomUser* user;
int userno;
int maxmess;
const char* msgbasepath;
const char* userbasepath;
};
// ------------------------------------------------------------------
class EzycomArea : public gmo_area {
protected:
EzycWide* wide;
EzycData* data;
void data_open();
void data_close();
char* ret_mess_xxx(char* __path, byte __type);
char* ret_mess_area(char* __path);
int raw_open();
void test_raw_open(int __fileline);
void raw_close();
int test_open(const char* __file, int __mode, int __share);
void save_lastread();
void raw_scan(int __keep_index);
int load_message(int __mode, gmsg* __msg, EzycHdr& __hdr);
void save_message(int __mode, gmsg* __msg, EzycHdr& __hdr);
public:
EzycomArea() { wide = NULL; data = NULL; }
virtual ~EzycomArea() {}
// ----------------------------------------------------------------
// Messagebase member functions
void open();
void close();
void suspend();
void resume();
void lock();
void unlock();
void scan();
void scan_area();
void scan_area_pm();
int load_hdr(gmsg* msg);
int load_msg(gmsg* msg);
void save_hdr(int mode, gmsg* msg);
void save_msg(int mode, gmsg* msg);
void del_msg(gmsg* msg);
void new_msgno(gmsg* msg);
char* user_lookup(char* lookfor);
int renumber();
void update_timesread(gmsg* msg);
Line* make_dump_msg(Line*& lin, gmsg* msg, char* lng_head);
};
// ------------------------------------------------------------------
extern EzycWide* ezycomwide;
extern EzycData* ezycomdata;
extern int ezycomdatano;
// ------------------------------------------------------------------
#endif
// ------------------------------------------------------------------