//  This may look like C code, but it is really -*- C++ -*-

//  ------------------------------------------------------------------
//  The Goldware Library
//  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$
//  ------------------------------------------------------------------
//  Ezycom derived userfile class.
//  ------------------------------------------------------------------

#ifndef __gusrezyc_h
#define __gusrezyc_h


//  ------------------------------------------------------------------

#include <gusrbase.h>


//  ------------------------------------------------------------------

#if defined(GOLD_CANPACK)
#pragma pack(1)
#endif


//  ------------------------------------------------------------------
//  Ezycom USERS.BBS record structure

struct EzycUsers {

  char  name[36];
  char  alias[36];
  char  password[16];
  word  security;
  byte  attribute;
  byte  attribute2;
  byte  attribute3;
  byte  attribute4;
  byte  flagsx[4];
  char  dataphone[15];
  char  voicephone[15];
};


//  ------------------------------------------------------------------
//  Ezycom userfile attributes

#define EZYC_USERDELETED 0x0001


//  ------------------------------------------------------------------
//  Ezycom USERSEXT.BBS record structure

struct EzycUsersExt {

  char  location[26];
  long  lasttimedate;
  word  credit;
  word  pending;
  word  msgsposted;
  word  nocalls;
  word  uploads;
  word  todayk;
  word  timeused;
  word  downloads;
  long  uploadsk;
  long  downloadsk;
  byte  screenlength;
  byte  lastpwdchange;
  word  timebanked;
  word  ksbanked;
  word  filepoints;
  byte  qwkcompression;
  byte  qwkdaysold;
  byte  comment[41];
  byte  colour1_2;
  byte  colour3_4;
  byte  colour5_6;
  byte  colour7_8;
  byte  bkcolour;
  byte  sessionfailures;
  byte  topmenu[9];
  word  filepointsgiven;
  struct {
    word  year;
    byte  month;
    byte  day;
  }     dateofbirth;
  byte  groups[4];
  word  regodate;
  word  firstdate;
  word  lastfiledate;
  char  defprotocol;
  word  timeleft;
  word  filearea;
  word  messarea;
  word  qwkmaxmsgs;
  word  qwkmaxmsgsperarea;
  short  todaybankwk;
  char  forwardto[36];
  byte  todaycalls;
  short  todaybankwt;
  char  extraspace[4];
};


//  ------------------------------------------------------------------
//  Ezycom USERSEXT.BBS record structure, version 1.10

struct EzycUsersExt110 {

  char  location[26];
  long  lasttimedate;
  word  credit;
  word  pending;
  word  msgsposted;
  word  nocalls;
  word  uploads;
  word  todayk;
  word  timeused;
  word  downloads;
  long  uploadsk;
  long  downloadsk;
  byte  screenlength;
  byte  lastpwdchange;
  word  timebanked;
  word  ksbanked;
  word  filepoints;
  byte  qwkcompression;
  byte  qwkdaysold;
  byte  comment[41];
  byte  colour1_2;
  byte  colour3_4;
  byte  colour5_6;
  byte  colour7_8;
  byte  bkcolour;
  byte  sessionfailures;
  byte  topmenu[9];
  word  filepointsgiven;
  struct {
    word  year;
    byte  month;
    byte  day;
  }     dateofbirth;
  byte  groups[4];
  word  regodate;
  word  firstdate;
  word  lastfiledate;
  char  defprotocol;
  word  timeleft;
  word  filearea;
  word  messarea;
  word  qwkmaxmsgs;
  word  qwkmaxmsgsperarea;
  short  todaybankwk;
  char  forwardto[36];
  byte  todaycalls;
  short  todaybankwt;
  byte  language;
  word  endregodate;
  long  tottimeused;
  char  extraspace[125];
};


//  ------------------------------------------------------------------
//  Ezycom userfile class

class EzycomUser : public GUser {

public:

  int ver;

  int extfh;

  EzycUsers*       record;
  EzycUsersExt*    extrec;
  EzycUsersExt110* extrec110;

  EzycomUser();
  ~EzycomUser();

  int  isvalid();
  int  read();

  void  inctimesposted(int __times);
  void  recinit(const char* __name);

  void  add(const char* __name);
};


//  ------------------------------------------------------------------

#if defined(GOLD_CANPACK)
#pragma pack()
#endif


//  ------------------------------------------------------------------

#endif

//  ------------------------------------------------------------------