Commits

Palmer, 2E0EOL committed c7ceb7d

Remove a lot of backup files which probably shouldn't have been tagged in
the original svn repo.

Comments (0)

Files changed (40)

blake/blake.~de

Binary file removed.

clients/oberchatten/AboutUnit.~cp

-//---------------------------------------------------------------------------
-#include <vcl.h>
-#pragma hdrstop
-
-#include "AboutUnit.h"
-#include "../../src/server_version.h"
-#include "../../src/_buildnum.h"
-//---------------------------------------------------------------------------
-#pragma package(smart_init)
-#pragma resource "*.dfm"
-TAboutForm *AboutForm;
-//---------------------------------------------------------------------------
-__fastcall TAboutForm::TAboutForm(TComponent* Owner)
-        : TForm(Owner)
-{
-}
-//---------------------------------------------------------------------------
-void __fastcall TAboutForm::FormCreate(TObject *Sender)
-{
-  ClientHeight = DavidImg->Picture->Height + 1 + BasePanel->Height;
-  ClientWidth = DavidImg->Picture->Width;
-  OkBtn->Left = (BasePanel->Width / 2) - (OkBtn->Width / 2);
-
-  VersionLabel->Caption = "OberChatten 0.3.5 (" + (AnsiString)OVERCHAT_VERMAJ + (AnsiString)OVERCHAT_VERMIN + (AnsiString)OVERCHAT_VERPATCH + ") " + (AnsiString)OVERCHAT_VERBUILD;
-}
-//---------------------------------------------------------------------------

clients/oberchatten/AboutUnit.~df

Binary file removed.

clients/oberchatten/AboutUnit.~h

-//---------------------------------------------------------------------------
-#ifndef AboutUnitH
-#define AboutUnitH
-//---------------------------------------------------------------------------
-#include <Classes.hpp>
-#include <Controls.hpp>
-#include <StdCtrls.hpp>
-#include <Forms.hpp>
-#include <Buttons.hpp>
-#include <ExtCtrls.hpp>
-#include <jpeg.hpp>
-//---------------------------------------------------------------------------
-class TAboutForm : public TForm
-{
-__published:	// IDE-managed Components
-        TImage *DavidImg;
-        TPanel *BasePanel;
-        TBitBtn *OkBtn;
-        void __fastcall FormCreate(TObject *Sender);
-private:	// User declarations
-public:		// User declarations
-        __fastcall TAboutForm(TComponent* Owner);
-};
-//---------------------------------------------------------------------------
-extern PACKAGE TAboutForm *AboutForm;
-//---------------------------------------------------------------------------
-#endif

clients/oberchatten/AddChumFormUnit.~cp

-//---------------------------------------------------------------------------
-#include <vcl.h>
-#pragma hdrstop
-
-#include "AddChumFormUnit.h"
-//---------------------------------------------------------------------------
-#pragma package(smart_init)
-#pragma resource "*.dfm"
-TAddChumForm *AddChumForm;
-//---------------------------------------------------------------------------
-__fastcall TAddChumForm::TAddChumForm(TComponent* Owner)
-        : TForm(Owner)
-{
-}
-//---------------------------------------------------------------------------
-AnsiString TAddChumForm::GetChumNick()
-{
-  return ChumNick->Text;
-}
-//---------------------------------------------------------------------------
-void __fastcall TAddChumForm::ChumNickChange(TObject *Sender)
-{
-  OKBtn->Enabled = !ChumNick->Text.IsEmpty()
-}
-//---------------------------------------------------------------------------

clients/oberchatten/AddChumFormUnit.~df

Binary file removed.

clients/oberchatten/AddChumFormUnit.~h

-//---------------------------------------------------------------------------
-#ifndef AddChumFormUnitH
-#define AddChumFormUnitH
-//---------------------------------------------------------------------------
-#include <Classes.hpp>
-#include <Controls.hpp>
-#include <StdCtrls.hpp>
-#include <Forms.hpp>
-//---------------------------------------------------------------------------
-class TAddChumForm : public TForm
-{
-__published:	// IDE-managed Components
-        TEdit *ChumNick;
-        TLabel *Label1;
-        TLabel *Label2;
-        TButton *CancelBtn;
-        TButton *OKBtn;
-        TButton *SearchBtn;
-        void __fastcall ChumNickChange(TObject *Sender);
-private:	// User declarations
-public:		// User declarations
-        __fastcall TAddChumForm(TComponent* Owner);
-        AnsiString GetChumNick();
-};
-//---------------------------------------------------------------------------
-extern PACKAGE TAddChumForm *AddChumForm;
-//---------------------------------------------------------------------------
-#endif

clients/oberchatten/ChumsUnit.~cp

-//---------------------------------------------------------------------------
-#include "overchat_config.h"
-#include <assert.h>
-#include <vcl.h>
-#include <limits.h>
-#include <time.h>
-#include <stdio.h>
-#ifdef HDRSTOP
-#  pragma hdrstop
-#endif /*HDRSTOP*/
-
-#include "blake.h"
-#include "ChatNameUnit.h"
-#include "ChumsUnit.h"
-#include "MainFormUnit.h"
-#include "SignonUnit.h"
-#include "Events.h"
-#include "AddChumFormUnit.h"
-//---------------------------------------------------------------------------
-#pragma package(smart_init)
-#pragma resource "*.dfm"
-TChumsForm *ChumsForm;
-//---------------------------------------------------------------------------
-__fastcall TChumsForm::TChumsForm(TComponent* Owner)
-        : TForm(Owner)
-{
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::ChumListBoxDblClick(TObject *Sender)
-{
-  int i;
-
-  for ( i = 0U; i < ChumListBox->Items->Count; i++ ) {
-    if ( ChumListBox->Selected[i] ) {
-      AnsiString str(ChumListBox->Items->Strings[i]);
-      MainForm->NewMsg(str); // Open conversation with person
-      break;
-    }
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::MnuChumPopupWhoisClick(TObject *Sender)
-{
-  unsigned int i, c;
-
-  c = ChumListBox->Items->Count;
-  for ( i = 0U; i < c; i++ ) {
-    if ( ChumListBox->Selected[i] ) {
-      MainForm->Whois(ChumListBox->Items->Strings[i]);
-      break;
-    }
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::IsOnlineHackTimerTimer(TObject *Sender)
-{
-  /* This code is a hack because server side chums don't exist yet */
-  if ( SignonForm->IsLoggedIn() ) {
-    if ( ChumListBox->Tag < ChumListBox->Items->Count )
-      MainForm->IsOnline(ChumListBox->Items->Strings[ChumListBox->Tag++]);
-    else
-      ChumListBox->Tag = 0; // Reset to top of list
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::OnlineChumsListBoxDblClick(TObject *Sender)
-{
-  int i;
-
-  for ( i = 0U; i < OnlineChumsListBox->Items->Count; i++ ) {
-    if ( OnlineChumsListBox->Selected[i] ) {
-      AnsiString str(OnlineChumsListBox->Items->Strings[i]);
-      MainForm->NewMsg(str); // Open conversation with person
-      break;
-    }
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::PageControlChange(TObject *Sender)
-{
-  bool allowChumEditing;
-
-  if ( PageControl->ActivePage == ChumEditTabSheet ) // Should editing chums be allowed?
-    allowChumEditing = true; // Yes, all the controls for this
-  else
-    allowChumEditing = false; // No, disable chum editing control
-
-  // Go through controls changing states.
-  AddChumBtn->Enabled = allowChumEditing;
-  DelChumBtn->Enabled = allowChumEditing;
-  MnuChumPopupAdd->Enabled = allowChumEditing;
-  MnuChumPopupDel->Enabled = allowChumEditing;
-
-  // Don't change main menu controls, they should always be available
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::MnuChumPopupDelClick(TObject *Sender)
-{
-  int i, c, sc; // sc == selected count
-  char title[] = "Delete chums";
-  int modes = MB_YESNO | MB_ICONEXCLAMATION;
-
-  sc = ChumListBox->SelCount;
-
-  if ( sc ) {
-    int confirmed = IDNO;
-    if ( sc == 1 )
-      confirmed = Application->MessageBox("Do you wish to delete this buddy?", title, modes);
-    else
-      confirmed = Application->MessageBox("Do you wish to delete the selected buddies?", title, modes);
-
-    if ( confirmed == IDYES ) {
-      c = ChumListBox->Items->Count;
-      if ( c ) {
-        for ( i = c-1; i >= 0; i-- ) {
-          if ( ChumListBox->Selected[i] ) {
-            ChumListBox->Items->Delete(i);
-          }
-        }
-      }
-    }
-  }
-  else
-    Application->MessageBox("Please select chums to delete", title, modes);
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::MnuChumPopupAddClick(TObject *Sender)
-{
-  Forms::TModalResult mr; // Use this to get the result of the user selection
-  AnsiString nick; // This will hold the nickname of the chum to add.
-  TAddChumForm* chumForm = new TAddChumForm(this); // Create dialog box
-  mr = chumForm->ShowModal(); // Ask user for selection
-  nick = chumForm->GetChumNick(); // Get the nickname
-  delete chumForm; // Destroy the dialog box
-
-  switch ( mr ) {
-    case mrOk : {
-      MainForm->AddChum(nick);
-      break;
-    }
-    case mrCancel : {
-      break; // Do nothing, acceptable
-    }
-    case mrRetry : {
-      MainForm->ChumSearch();
-      break;
-    }
-    default : {
-      assert(0); // Unhandled!
-    }
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TChumsForm::FormCreate(TObject *Sender)
-{
-  // Always ensure online chums is first, even if I forget to change it over
-  // before building the binary
-  PageControl->ActivePage = OnlineChumsTabSheet;
-}
-//---------------------------------------------------------------------------
-bool TChumsForm::IsChum(const AnsiString& ChumName)
-{
-  return IsChum(ChumName.c_str()); // We use old C stuff in order to speak to Blake
-}
-//---------------------------------------------------------------------------
-bool TChumsForm::IsChum(const char* ChumName)
-{
-  int i;
-  for ( i = 0U; i < ChumListBox->Items->Count; i++ ) {
-    if ( blake_NickCompare(ChumListBox->Items->Strings[i].c_str(), ChumName) )
-      return true;
-  }
-  return false;
-}
-//---------------------------------------------------------------------------
-bool TChumsForm::AddToChumList(const AnsiString& ChumName, const bool SkipDupTest)
-{
-  if ( !SkipDupTest ) {
-    if ( IsChum(ChumName) )
-      return false; // Already a chum
-  }
-  ChumListBox->Items->Add(ChumName);
-  return true;
-}
-//---------------------------------------------------------------------------
-bool TChumsForm::AddToChumList(const char* ChumName, const bool SkipDupTest)
-{
-  AnsiString copyChumName(ChumName);
-  return AddToChumList(copyChumName, SkipDupTest);
-}
-//---------------------------------------------------------------------------
-int TChumsForm::ChumCount()
-{
-  return ChumListBox->Items->Count;
-}
-//---------------------------------------------------------------------------

clients/oberchatten/ChumsUnit.~df

Binary file removed.

clients/oberchatten/ChumsUnit.~h

-//---------------------------------------------------------------------------
-#ifndef ChumsUnitH
-#define ChumsUnitH
-//---------------------------------------------------------------------------
-#include <Classes.hpp>
-#include <Controls.hpp>
-#include <StdCtrls.hpp>
-#include <Forms.hpp>
-#include <ExtCtrls.hpp>
-#include <Buttons.hpp>
-#include <Menus.hpp>
-#include <ComCtrls.hpp>
-//---------------------------------------------------------------------------
-class TChumsForm : public TForm
-{
-__published:	// IDE-managed Components
-        TPanel *ChumsPanel;
-        TSpeedButton *AddChumBtn;
-        TSpeedButton *DelChumBtn;
-        TSpeedButton *WhoisChumBtn;
-        TPopupMenu *ChumPopupMenu;
-        TMenuItem *MnuChumPopupAdd;
-        TMenuItem *MnuChumPopupDel;
-        TMenuItem *N1;
-        TMenuItem *MnuChumPopupWhois;
-        TMenuItem *N2;
-        TMenuItem *MnuChumPopupGod;
-        TMenuItem *MnuGodPopupKill;
-        TMenuItem *MnuGodPopupKLine;
-        TMenuItem *MnuGodPopupGLine;
-        TMenuItem *MnuGodPopupInhialate;
-        TMenuItem *MnuGodPopupInhialateAll;
-        TTimer *IsOnlineHackTimer;
-        TPageControl *PageControl;
-        TTabSheet *OnlineChumsTabSheet;
-        TTabSheet *ChumEditTabSheet;
-        TListBox *ChumListBox;
-        TListBox *OnlineChumsListBox;
-        void __fastcall ChumListBoxDblClick(TObject *Sender);
-        void __fastcall MnuChumPopupWhoisClick(TObject *Sender);
-        void __fastcall IsOnlineHackTimerTimer(TObject *Sender);
-        void __fastcall OnlineChumsListBoxDblClick(TObject *Sender);
-        void __fastcall PageControlChange(TObject *Sender);
-        void __fastcall MnuChumPopupDelClick(TObject *Sender);
-        void __fastcall MnuChumPopupAddClick(TObject *Sender);
-        void __fastcall FormCreate(TObject *Sender);
-private:	// User declarations
-public:		// User declarations
-        __fastcall TChumsForm(TComponent* Owner);
-        bool IsChum(const AnsiString& ChumName);
-        bool IsChum(const char* ChumName);
-        bool AddToChumList(const AnsiString& ChumName, const bool SkipDupTest = false); // Set SkipDupTest to true if you want to avoid a call to IsChum()
-        bool AddToChumList(const char* ChumName, const bool SkipDupTest = false);
-};
-//---------------------------------------------------------------------------
-extern PACKAGE TChumsForm *ChumsForm;
-//---------------------------------------------------------------------------
-#endif

clients/oberchatten/Events.~cp

-//---------------------------------------------------------------------------
-#include "overchat_config.h"
-#include <assert.h>
-#include <vcl.h>
-#include <limits.h>
-#include <time.h>
-#include <stdio.h>
-#ifdef HDRSTOP
-#  pragma hdrstop
-#endif /*HDRSTOP*/
-
-#include "blake.h"
-#include "Events.h"
-#include "MainFormUnit.h"
-#include "ServerCallbacks.h" // For DataWriter()
-//---------------------------------------------------------------------------
-// Firstly, define how a handler is stored
-struct handler {
-  void(*Address)(OVERCHAT_EVENT* PEv); // It's address
-  enum clientEvents NotifyInfo; // Events which the handlers wasn't to be notified of
-};
-
-// Now define a linked list to keep the handlers stored in
-static blake_link_ptrs Handlers;
-
-// Now for the event queue
-static blakeFastQueue eventQueue;
-static void GetNextEvent(OVERCHAT_EVENT* PEv);
-static void ProcessEvent(OVERCHAT_EVENT* PEv);
-//---------------------------------------------------------------------------
-void OverChatEventsInitialise()
-{
-  enum blakeError err;
-
-  blake_InitLinkPtrs(&Handlers, sizeof(struct handler)); // Init list of handlers
-  err = blake_InitFastQueue(&eventQueue, EVENT_QUEUE_SIZE - 1, sizeof(OVERCHAT_EVENT));
-  if ( err != blakeSuccess ) MainForm->BlakeError(__FILE__, __LINE__, err);
-}
-//---------------------------------------------------------------------------
-void OverChatEventsCleanup()
-{
-  enum blakeError err;
-
-  Handlers.DelAll(&Handlers);
-  err = blake_DestroyFastQueue(&eventQueue);
-  if ( err != blakeSuccess ) MainForm->BlakeError(__FILE__, __LINE__, err);
-}
-//---------------------------------------------------------------------------
-void FlushOverChatEventQueue()
-{
-  enum blakeError err;
-
-  do {
-    err = blake_PopFastQueue(&eventQueue);
-  } while ( err == blakeSuccess );
-}
-//---------------------------------------------------------------------------
-void PostOverChatEvent(OVERCHAT_EVENT* PEv)
-{
-  if ( PEv ) {
-    if ( (PEv->Code != eventNone) && (PEv->Code != eventAll) ) {
-      enum blakeError err = blake_PushFastQueue(&eventQueue, PEv);
-      if ( err != blakeSuccess ) MainForm->BlakeError(__FILE__, __LINE__, err);
-    }
-  }
-}
-//---------------------------------------------------------------------------
-void ProcessOverChatEvents()
-{
-  OVERCHAT_EVENT event;
-
-  GetNextEvent(&event);
-  if ( event.Code != eventNone )
-    ProcessEvent(&event);
-
-  blake_PendingLoop(false); // Network catalyst
-  DataWriter();
-}
-//---------------------------------------------------------------------------
-bool InstallOverChatEventHandler(enum clientEvents EventType, void(*Handler)(OVERCHAT_EVENT* PEv))
-{
-  struct handler newHandler;
-  bool ret = false;
-
-  if ( Handler ) {
-    newHandler.Address = Handler;
-    newHandler.NotifyInfo = EventType;
-
-    ret = Handlers.Add(&Handlers, &newHandler);
-  }
-  return ret;
-}
-//---------------------------------------------------------------------------
-bool UninstallOverChatEventHandler(void(*Handler)(OVERCHAT_EVENT* PEv))
-{
-  bool success = false;
-
-  if ( Handler ) {
-    unsigned int i, c;
-
-    c = Handlers.Count(&Handlers);
-    for ( i = 0U; i < c; i++ ) {
-      struct handler currentHandler;
-
-      Handlers.Get(&Handlers, i, &currentHandler);
-      if ( currentHandler.Address == Handler ) { /* This is the user handler we want to remove? */
-        Handlers.DelByPos(&Handlers, i);
-        success = true;
-        break;
-      }
-    }
-  }
-
-  return success;
-}
-//---------------------------------------------------------------------------
-void UninstallAllOverChatEventHandlers()
-{
-  Handlers.DelAll(&Handlers);
-}
-//---------------------------------------------------------------------------
-void InitOverChatEvent(OVERCHAT_EVENT* PEv)
-{
-  if ( PEv )
-    memset(PEv, 0, sizeof(OVERCHAT_EVENT));
-}
-//---------------------------------------------------------------------------
-static void GetNextEvent(OVERCHAT_EVENT* PEv)
-{
-  enum blakeError err = blake_TopFastQueue(&eventQueue, PEv, sizeof(OVERCHAT_EVENT));
-  if ( err == blakeSuccess )
-    err = blake_PopFastQueue(&eventQueue);
-
-  if ( err == blakeQueueEmpty ) {
-    InitOverChatEvent(PEv);
-    PEv->Code = eventNone;
-  }
-  else {
-    if ( err != blakeSuccess )
-      MainForm->BlakeError(__FILE__, __LINE__, err);
-  }
-  return;
-}
-//---------------------------------------------------------------------------
-static void ProcessEvent(OVERCHAT_EVENT* PEv)
-{
-  unsigned int i, c;
-  assert(PEv);
-
-  c = Handlers.Count(&Handlers);
-  for ( i = 0U; i < c; i++ ) {
-    struct handler currentHandler;
-
-    Handlers.Get(&Handlers, i, &currentHandler);
-    if ( currentHandler.NotifyInfo == PEv->Code || currentHandler.NotifyInfo == eventAll )
-      currentHandler.Address(PEv);
-  }
-}
-//---------------------------------------------------------------------------
-#pragma package(smart_init)

clients/oberchatten/Events.~h

-/*
-  You'll need this header if you want to post any global events which
-  need to be handled in this client.
-*/
-
-#ifndef __INC_EVENTS_H
-#define __INC_EVENTS_H
-//---------------------------------------------------------------------------
-#define EVENT_QUEUE_SIZE (128)
-
-enum clientEvents {
-  eventNone,         /* There are no events waiting */
-  eventAll,          /* Handler will be notified of all events */
-  eventDataArrived,  /* Data arrived on a socket */
-  eventMsg,          /* A private message has arrived */
-  eventWhoisInfo,    /* Information about another user has arrived */
-  eventIsOnlineReply /* A simple boolean reply from the server */
-};
-
-typedef struct _OVERCHAT_EVENT {
-  enum clientEvents Code;
-  union {
-    struct {
-      int Socket;
-      size_t Amount;
-    } DataArrived;
-
-    struct {
-      char From[OVERCHAT_NICK_LIMIT+1];
-      time_t When;
-      char* DynamicMessage;
-    } Msg;
-
-    struct {
-      struct blakeWhoisInfo wii;
-    } WhoisInfo;
-
-    struct {
-      struct blakeIsOnlineReply ior;
-    } IsOnlineReply;
-
-    /* Add new events here */
-  } eventData;
-} OVERCHAT_EVENT;
-
-void OverChatEventsInitialise();
-void OverChatEventsCleanup();
-void FlushOverChatEventQueue();
-void PostOverChatEvent(OVERCHAT_EVENT* PEv);
-void ProcessOverChatEvents();
-bool InstallOverChatEventHandler(enum clientEvents EventType, void(*Handler)(OVERCHAT_EVENT* PEv));
-bool UninstallOverChatEventHandler(void(*Handler)(OVERCHAT_EVENT* PEv));
-void UninstallAllOverChatEventHandlers();
-void InitOverChatEvent(OVERCHAT_EVENT* PEv);
-//---------------------------------------------------------------------------
-#endif /*!__INC_EVENTS_H*/

clients/oberchatten/MainFormUnit.~cp

-//---------------------------------------------------------------------------
-#include "overchat_config.h" // Master project configuration
-#include <assert.h>
-#include <vcl.h>
-#include <limits.h>
-#include <time.h>
-#include <stdio.h> // for sprintf()
-#ifdef HDRSTOP
-#  pragma hdrstop
-#endif //HDRSTOP
-
-#include "master.h"
-#include "NetworkOptionsUnit.h"
-#include "AboutUnit.h"
-#include "ChumsUnit.h"
-#include "SignonUnit.h"
-#include "MsgUnit.h"
-#include "Options.h"
-#include "MsgSomebodyUnit.h"
-#include "ServerCallbacks.h"
-#include "NetBuffer.h"
-#include "ChatFormUnit.h"
-#include "MainFormUnit.h"
-#include "ChatNameUnit.h"
-#include "WhoisInfoUnit.h"
-#include "General.h"
-#include "Globals.h"
-//---------------------------------------------------------------------------
-#pragma package(smart_init)
-#pragma resource "*.dfm"
-TMainForm *MainForm;
-
-struct guiRoomInfo {
-  TChatForm* FormPointer;
-  enum blakeExchange Exchange;
-};
-//---------------------------------------------------------------------------
-__fastcall TMainForm::TMainForm(TComponent* Owner)
-        : TForm(Owner)
-{
-  beepOnMessage = Options.GetOptionBool(oMsgWinBeep); // Use default
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::FormCreate(TObject *Sender)
-{
-  if ( !blake_Init() ) {
-    Application->MessageBox("Failed to initialise the Blake library", Application->Title.c_str(), MB_ICONHAND | MB_OK);
-    Application->Terminate();
-  }
-  InstallServerCallbacks();
-  OverChatEventsInitialise();
-  blake_InitLinkPtrs(&messageWindows, sizeof(TMsgForm*));
-  blake_InitLinkPtrs(&chatWindows, sizeof(struct guiRoomInfo));
-  Application->OnIdle = IdleHandler;
-  InstallHandlers();
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuOberchattenExitClick(TObject *Sender)
-{
-  Close();
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuHelpAboutClick(TObject *Sender)
-{
-  TAboutForm* aboutBox;
-  TCursor oldCursor;
-
-  oldCursor = Screen->Cursor;
-  Screen->Cursor = crHourGlass; /* We're busy */
-  aboutBox = new TAboutForm(this); /* Create about box */
-  Screen->Cursor = oldCursor; /* We're no longer busy */
-  aboutBox->ShowModal();
-  delete aboutBox;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::FormShow(TObject *Sender)
-{
-  DisplayChumList(); // Set up the empty chum list
-  Options.Load(); // Load all the nerd user options and client side chum list
-
-  // Set up stuff on this form from options
-  MnuOptionsMsgWinBeep->Checked = Options.GetOptionBool(Oberchatten::oMsgWinBeep);
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuWindowChumsClick(TObject *Sender)
-{
-  ChumsForm->BringToFront();
-  ChumsForm->WindowState = wsNormal;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuOptionsNetClick(TObject *Sender)
-{
-  TNetworkOptionsForm* networkOptions;
-  TCursor oldCursor;
-
-  oldCursor = Screen->Cursor;
-  Screen->Cursor = crHourGlass;
-  networkOptions = new TNetworkOptionsForm(this);
-  Screen->Cursor = oldCursor;
-  networkOptions->ShowModal();
-  delete networkOptions;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuOberchattenSignonClick(TObject *Sender)
-{
-  SignonForm->ShowModal();
-  if ( SignonForm->IsLoggedIn() ) {
-    MnuOberchattenSignon->Enabled = false;
-    MnuOberchattenSignoff->Enabled = true;
-    StatusBarManager.UpdateSignonTime();
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuOberchattenSignoffClick(TObject *Sender)
-{
-  GlobalNetBuffer.Close(); // Close the network conenction
-  MnuOberchattenSignoff->Enabled = false;
-  MnuOberchattenSignon->Enabled = true;
-  ChumsForm->OnlineChumsListBox->Items->Clear(); // Clear list of online chums
-  SignonForm->SignedOut(); // Let sign on dialog know status
-  MyUser.Reset(); // Forget online user details such as current nickname and privelleges
-  StatusBarManager.ResetAndUpdate();
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuChatMsgClick(TObject *Sender)
-{
-  if ( MsgSomebodyForm->ShowModal() == mrYes ) {
-    if ( MsgSomebodyForm->NickName->Text.AnsiCompareIC("overchat") == 0 ) { // An Easter Egg
-      Egg1();
-    }
-    else { // Like most people would do
-      AnsiString remoteUser = MsgSomebodyForm->NickName->Text;
-      NewMsg(remoteUser);
-    }
-  }
-}
-//---------------------------------------------------------------------------
-TMsgForm* TMainForm::NewMsg(AnsiString& RemoteUser)
-{
-  TMsgForm* newMsgForm;
-
-  newMsgForm = FindMsg(RemoteUser); // Check if conversation is already active
-  if ( !newMsgForm ) {
-    newMsgForm = new TMsgForm(this); // Create a new one if not
-    if ( newMsgForm ) {
-      messageWindows.Add(&messageWindows, &newMsgForm); // Store form's pointer for later access
-      newMsgForm->SetRemoteUserName(RemoteUser);
-      newMsgForm->Show();
-    }
-    else
-      Application->MessageBox("Not enough resources to start any new conversations", Application->Title.c_str(), MB_OK | MB_ICONHAND);
-  }
-
-  return newMsgForm;
-}
-//---------------------------------------------------------------------------
-TChatForm* TMainForm::NewChat(AnsiString& ChatName, enum blakeExchange Exch)
-{
-  TChatForm* newChatForm;
-
-  newChatForm = FindChat(ChatName, Exch); // Check if chat room is already open here
-  if ( !newChatForm ) {
-    newChatForm = new TChatForm(this); // Create a new window
-    if ( newChatForm ) {
-      struct guiRoomInfo roomInfo;
-
-      roomInfo.FormPointer = newChatForm;
-      roomInfo.Exchange = Exch;
-
-      chatWindows.Add(&chatWindows, &roomInfo); // Store form's pointer for later access
-      newChatForm->SetChatParameters(ChatName, Exch);
-      newChatForm->Show();
-    }
-    else
-      Application->MessageBox("Not enough resources to start any new chat rooms", Application->Title.c_str(), MB_OK | MB_ICONHAND);
-  }
-
-  return newChatForm;
-}
-//---------------------------------------------------------------------------
-TMsgForm* TMainForm::NewMsg(const char* RemoteUser)
-{
-  AnsiString username(RemoteUser);
-  return NewMsg(username);
-}
-//---------------------------------------------------------------------------
-TChatForm* TMainForm::NewChat(const char* ChatName, enum blakeExchange Exch)
-{
-  AnsiString chatname(ChatName);
-  return NewChat(chatname, Exch);
-}
-//---------------------------------------------------------------------------
-TMsgForm* TMainForm::NewMsg(const char* RemoteUser, const char* Message)
-{
-  TMsgForm* msgForm = NewMsg(RemoteUser); // Hactually create the convesation
-  if ( msgForm ) {
-    if ( Message ) {
-      AnsiString remoteUser(RemoteUser);
-      AnsiString message(Message);
-      msgForm->AddToConversation(remoteUser, message);
-    }
-  }
-  return msgForm;
-}
-//---------------------------------------------------------------------------
-TMsgForm* TMainForm::FindMsg(AnsiString& RemoteUser)
-{
-  TMsgForm* msgForm = NULL;
-  unsigned int i, c;
-
-  c = messageWindows.Count(&messageWindows);
-  for ( i = 0U; i < c; i++ ) {
-    TMsgForm* ptr;
-    messageWindows.Get(&messageWindows, i, &ptr);
-    if ( ptr ) {
-      if ( blake_NickCompare(ptr->GetRemoteUserName().c_str(), RemoteUser.c_str()) ) {
-        msgForm = ptr;
-        break;
-      }
-    }
-  }
-
-  return msgForm;
-}
-//---------------------------------------------------------------------------
-TChatForm* TMainForm::FindChat(AnsiString& ChatName, enum blakeExchange Exch)
-{
-  TChatForm* chatForm = NULL;
-  unsigned int i, c;
-
-  c = chatWindows.Count(&chatWindows);
-  for ( i = 0U; i < c; i++ ) {
-    struct guiRoomInfo roomInfo;
-
-    chatWindows.Get(&chatWindows, i, &roomInfo);
-    if ( roomInfo.FormPointer ) {
-      if ( roomInfo.Exchange == Exch ) { /* Exchange is the same */
-        if ( blake_ChatCompare(roomInfo.FormPointer->GetChatName().c_str(), ChatName.c_str()) ) { /* Chat has same title */
-          chatForm = roomInfo.FormPointer;
-          break;
-        }
-      }
-    }
-  }
-
-  return chatForm;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
-{
-  DelMsgs(); // Delete all dynamic conversations we're having
-  DelChats(); // Delete all dynamic rooms we're in
-}
-//---------------------------------------------------------------------------
-void TMainForm::DelMsgs()
-{
-  while ( messageWindows.Count(&messageWindows) ) {
-    TMsgForm* msgForm;
-
-    messageWindows.Get(&messageWindows, 0, &msgForm);
-    delete msgForm;
-    messageWindows.DelByPos(&messageWindows, 0);
-  }
-}
-//---------------------------------------------------------------------------
-void TMainForm::DelChats()
-{
-  while ( chatWindows.Count(&chatWindows) ) {
-    struct guiRoomInfo roomInfo;
-
-    chatWindows.Get(&chatWindows, 0, &roomInfo);
-    delete roomInfo.FormPointer;
-    chatWindows.DelByPos(&chatWindows, 0);
-  }
-}
-//---------------------------------------------------------------------------
-void TMainForm::DelMsg(TMsgForm* FormPointer)
-{
-  unsigned int i, c;
-
-  c = messageWindows.Count(&messageWindows);
-  for ( i = 0U; i < c; i++ ) {
-    TMsgForm* currentFormPointer;
-
-    messageWindows.Get(&messageWindows, i, &currentFormPointer);
-    if ( currentFormPointer && currentFormPointer == FormPointer ) {
-      delete currentFormPointer;
-      messageWindows.DelByPos(&messageWindows, i);
-      break;
-    }
-  }
-  return;
-}
-//---------------------------------------------------------------------------
-void TMainForm::DelChat(TChatForm* FormPointer)
-{
-  unsigned int i, c;
-
-  c = chatWindows.Count(&chatWindows);
-  for ( i = 0U; i < c; i++ ) {
-    TChatForm* currentFormPointer;
-
-    chatWindows.Get(&chatWindows, i, &currentFormPointer);
-    if ( currentFormPointer && currentFormPointer == FormPointer ) {
-      delete currentFormPointer;
-      chatWindows.DelByPos(&chatWindows, i);
-      break;
-    }
-  }
-  return;
-}
-//---------------------------------------------------------------------------
-void TMainForm::DelPendingMsgs()
-{
-  bool found;
-
-  do {
-    unsigned int i, c;
-    found = false;
-    c = messageWindows.Count(&messageWindows);
-    for ( i = 0U; i < c; i++ ) {
-      TMsgForm* msgForm;
-      messageWindows.Get(&messageWindows, i, &msgForm); // Get pointer to conversation
-      if ( msgForm->IsPendingDelete() ) {
-        found = true;
-        delete msgForm;
-        messageWindows.DelByPos(&messageWindows, i);
-        break;
-      }
-    }
-  } while ( found ); // Until all pending deletable deleted!
-}
-//---------------------------------------------------------------------------
-void TMainForm::DelPendingChats()
-{
-  bool found;
-
-  do {
-    unsigned int i, c;
-    found = false;
-    c = chatWindows.Count(&chatWindows);
-    for ( i = 0U; i < c; i++ ) {
-      struct guiRoomInfo roomInfo;
-      chatWindows.Get(&chatWindows, i, &roomInfo); // Get pointer to chat
-      if ( roomInfo.FormPointer->IsPendingDelete() ) {
-        found = true;
-        delete roomInfo.FormPointer;
-        chatWindows.DelByPos(&chatWindows, i);
-        break;
-      }
-    }
-  } while ( found ); // Until all pending deletable deleted!
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::IdleHandler(TObject*, bool& done)
-{
-  // Executes whenever we get a chance
-  done = true;
-  DelPendingMsgs(); // Delete IMs which have ended
-  DelPendingChats(); // Delete chats which have ended
-}
-//---------------------------------------------------------------------------
-void TMainForm::DisplayChumList()
-{
-  ChumsForm->Top = 0;
-  ChumsForm->Height = ClientHeight - 5 - StatusBar->Height;
-  ChumsForm->Width = 200;
-  ChumsForm->Show();
-  return;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuOptionsReloadClick(TObject *Sender)
-{
-  Options.Reload();
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuOptionsSaveClick(TObject *Sender)
-{
-  Options.Save();
-}
-//---------------------------------------------------------------------------
-void TMainForm::CriticalProtocol(char* Message)
-{
-  if ( Message )
-    Application->MessageBox(Message, "Blake protocol error", MB_OK | MB_ICONHAND);
-}
-//---------------------------------------------------------------------------
-void TMainForm::BlakeError(const char* File, const unsigned int Line, enum blakeError ErrorNumber)
-{
-  char* errmsg;
-  unsigned int errlen;
-
-  errlen = blake_GetErrorMessage(ErrorNumber, NULL, 0, langEnglish); /* FIXME: USe correct language */
-  if ( errlen ) {
-    errmsg = new char[++errlen];
-    if ( errmsg ) {
-      blake_GetErrorMessage(ErrorNumber, errmsg, errlen, langEnglish); /* FIXME: Use correct language */
-      Application->MessageBox(errmsg, "Blake library error", MB_OK | MB_ICONHAND);
-      delete[] errmsg;
-    }
-  }
-  return;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::FormDestroy(TObject *Sender)
-{
-  messageWindows.DelAll(&messageWindows);
-  OverChatEventsCleanup();
-}
-//---------------------------------------------------------------------------
-void TMainForm::InstallHandlers()
-{
-  InstallOverChatEventHandler(eventDataArrived, DataArrivedCollector);
-  InstallOverChatEventHandler(eventMsg, MessageCollector);
-  InstallOverChatEventHandler(eventWhoisInfo, WhoisInfoCollector);
-  InstallOverChatEventHandler(eventIsOnlineReply, IsOnlineReplyCollector);
-  InstallOverChatEventHandler(eventSuper, SuperCollector);
-}
-//---------------------------------------------------------------------------
-void TMainForm::Egg1()
-{
-  char Title[] = "Speaketh of OverChat to the masses";
-  int Mask = MB_OK;
-
-  srand((unsigned int)(time(NULL)));
-  switch ( rand() % 6 ) {
-    case 0 : {
-      Application->MessageBox("\"You\'re wasting your time, Commander\", yelled the foolish.\nThose who cannot see the new light shall be crushed in the misery and spam of the internet and shall never join the new elite\n\n - DDRP", Title, Mask);
-      break;
-    }
-    case 1 : {
-      Application->MessageBox("I shalt take on board all those who can help me sail and I shalt sail to the new promise land.\nThose who want to change their minds can swim out and join me but I shalt not slow the boat for anybody but whom I consider to be true swimmers\n\n - DDRP", Title, Mask);
-      break;
-    }
-    case 2 : {
-      Application->MessageBox("I knew we could make it gentlemen, let us BELIEVE.  Let us crush the AOL children and the spammers and the scum\n\n - DDRP", Title, Mask);
-      break;
-    }
-    case 3 : {
-      Application->MessageBox("The new elite shalt ride on my boat, I welcome all, the followers of AIM shalt be crushed by my iron fist\n\n - DDRP", Title, Mask);
-      break;
-    }
-    default : {
-      Application->MessageBox("\"ph34r m3\" spake the child of AIM, as he was crushed by the powers of Daybo Logic, \"squisheth be the children\" yelled the commander as the new world began\n\n - DDRP", Title, Mask);
-      break;
-    }
-  }
-}
-//---------------------------------------------------------------------------
-void TMainForm::Egg2()
-{
-  Unsupported("Blake is not available as a room at this time");
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::TechnicalTimerTimer(TObject *Sender)
-{
-  ProcessOverChatEvents();
-  StatusBarManager.Update();
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuChatJoinClick(TObject *Sender)
-{
-  if ( ChatNameForm->ShowModal() == mrOk ) {
-    AnsiString chatNameCopy(ChatNameForm->ChatCombo->Text);
-    if ( chatNameCopy.AnsiCompareIC("blake") == 0 )
-      Egg2(); // An Easter Egg for people who want to know about Blake ;)
-    else
-      NewChat(chatNameCopy, (enum blakeExchange)(ChatNameForm->ExchangeCombo->ItemIndex+1));
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuHelpCreditsClick(TObject *Sender)
-{
-  Application->MessageBox("Logos - Kevin Trekbiker, Tammy Davis\nChum Glyphs - Ken Upright\nBlake/chat code - DDRP\nGUI code - DDRP\nBeta testing - Haesu, pepsi, Jeff\n\nSpecial thanks to the OverChat executive committee\nThe OverChat treasurey\nand Haesu Chun for network and resource support.", "Credits for Oberchatten", MB_OK);
-}
-//---------------------------------------------------------------------------
-void TMainForm::WhoisInfo(struct blakeWhoisInfo* PWhoisInfo)
-{
-  WhoisInfoForm->SetInfo(PWhoisInfo);
-  WhoisInfoForm->Show();
-}
-//---------------------------------------------------------------------------
-void TMainForm::Whois(AnsiString& RemoteUser)
-{
-  enum blakeError err = blake_Whois(GlobalNetBuffer.GetSocket(), RemoteUser.c_str());
-  if ( err != blakeSuccess )
-    BlakeError(__FILE__, __LINE__, err);
-}
-//---------------------------------------------------------------------------
-void TMainForm::IsOnlineReply(struct blakeIsOnlineReply* PIsOnlineReply)
-{
-  AnsiString remoteUserNick((const char*)PIsOnlineReply->username); // Name of the user who is online (or not)
-  if ( PIsOnlineReply->boolean ) { /* User is online, check if they're in the list and if they're not, add them */
-    if ( !IsValueInItems(ChumsForm->OnlineChumsListBox->Items, remoteUserNick) ) {
-      /* They are not, add them */
-      ChumsForm->OnlineChumsListBox->Items->Add(remoteUserNick);
-    }
-  }
-  else { /* User is not online, if they're on the list, remove them */
-    if ( IsValueInItems(ChumsForm->OnlineChumsListBox->Items, remoteUserNick) ) {
-      ChumsForm->OnlineChumsListBox->Items->Delete(ChumsForm->OnlineChumsListBox->Items->IndexOf(remoteUserNick));
-    }
-  }
-}
-//---------------------------------------------------------------------------
-void TMainForm::IsOnline(AnsiString& RemoteUser)
-{
-  enum blakeError err = blake_IsOnline(GlobalNetBuffer.GetSocket(), RemoteUser.c_str());
-  if ( err != blakeSuccess )
-    BlakeError(__FILE__, __LINE__, err);
-}
-//---------------------------------------------------------------------------
-void TMainForm::Super(struct blakeSuper* PSuper)
-{
-  blake_word8_t oldClearance = MyUser.GetClearance();
-  blake_word8_t newClearance = PSuper->clearance;
-
-  MyUser.SetClearance(newClearance);
-
-  if ( newClearance != oldClearance ) /* Changing your privellege?! */
-    NoticePrivellegeChanged(oldClearance, newClearance); /* Update GUI stuff */
-
-  return;
-}
-//---------------------------------------------------------------------------
-void TMainForm::SuperRequest() // Ask your own privellege level
-{
-  enum blakeError err = blake_SuperRequest(GlobalNetBuffer.GetSocket(), (blake_word8_t)0 /* reserved */);
-  if ( err != blakeSuccess )
-    BlakeError(__FILE__, __LINE__, err);
-}
-//---------------------------------------------------------------------------
-void TMainForm::NoticePrivellegeChanged(blake_word8_t OldPrivellege, blake_word8_t NewPrivellege)
-{
-  if ( NewPrivellege >= CLEARANCE_PROPHET )
-    ChumsForm->MnuChumPopupGod->Enabled = true;
-  else
-    ChumsForm->MnuChumPopupGod->Enabled = false;
-}
-//---------------------------------------------------------------------------
-bool TMainForm::AddChum(const AnsiString& ChumNick)
-{
-  bool tooLong;
-  char illegalChar;
-
-  if ( !blake_NickTest(ChumNick.c_str(), &tooLong, &illegalChar) ) {
-    if ( tooLong )
-      FoolishUser("The nickname was too long to be valid");
-    if ( illegalChar == ' ' )
-      FoolishUser("Nicknames may not begin with a space");
-    else {
-      char str[128];
-      sprintf(str, "Illegal character in nickname - \'%c\'", illegalChar);
-      FoolishUser(str);
-    }
-    return false;
-  }
-  // OK tested OK, now let's check it's not in the list ...
-
-  if ( ChumsForm->IsChum(ChumNick) ) {
-    FoolishUser("This person is already one of your chums");
-    return false;
-  }
-  ChumsForm->AddToChumList(ChumNick, true); // Add chum, skipping duplication test
-  Dialog("Chum added");
-  return true;
-}
-//---------------------------------------------------------------------------
-bool TMainForm::AddChum(const char* ChumNick)
-{
-  AnsiString chum(ChumNick); // Make class wrapper for string
-  return AddChum(chum); // Pass on to overloaded function
-}
-//---------------------------------------------------------------------------
-bool TMainForm::ChumSearch()
-{
-  Unsupported("Sorry, chum searching isn\'t supported, when I wrote this client anyway");
-  return false;
-}
-//---------------------------------------------------------------------------
-void TMainForm::Unsupported(const AnsiString& Message)
-{
-  Unsupported(Message.c_str()); // Call overloaded brother
-}
-//---------------------------------------------------------------------------
-void TMainForm::Unsupported(const char* Message)
-{
-  InternalDialog(Message, digUnsupportedFeature);
-}
-//---------------------------------------------------------------------------
-void TMainForm::Dialog(const AnsiString& Message)
-{
-  Dialog(Message.c_str()); // Call overloaded brother
-}
-//---------------------------------------------------------------------------
-void TMainForm::Dialog(const char* Message)
-{
-  InternalDialog(Message, digGeneral);
-}
-//---------------------------------------------------------------------------
-void TMainForm::FoolishUser(const AnsiString& Message)
-{
-  FoolishUser(Message.c_str()); // Call overloaded brother
-}
-//---------------------------------------------------------------------------
-void TMainForm::FoolishUser(const char* Message)
-{
-  InternalDialog(Message, digFoolishUser);
-}
-//---------------------------------------------------------------------------
-void TMainForm::InternalDialog(const char* Message, enum dialogTypeID ID)
-{
-  // Make a copy of the string so caller knows we're keeping it safely constant ;)
-  char* copy = new char[strlen(Message)+1];
-  if ( copy ) {
-    strcpy(copy, Message);
-    // Display message box according to type
-    switch ( ID ) {
-      case digUnsupportedFeature : {
-        Application->MessageBox(copy, "Unsupported", MB_OK | MB_ICONEXCLAMATION);
-        break;
-      }
-      case digGeneral : {
-        Application->MessageBox(copy, Caption.c_str(), MB_OK | MB_ICONINFORMATION);
-        break;
-      }
-      case digFoolishUser : {
-        Application->MessageBox(copy, "User mistake", MB_OK | MB_ICONEXCLAMATION);
-        break;
-      }
-      default : {
-        assert(0); // Ack!!
-      }
-    }
-    delete[] copy;
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuChumsSearchClick(TObject *Sender)
-{
-  ChumSearch();
-}
-//---------------------------------------------------------------------------
-void __fastcall TMainForm::MnuOptionsMsgWinBeepClick(TObject *Sender)
-{
-  MnuOptionsMsgWinBeep->Checked = !MnuOptionsMsgWinBeep->Checked; // Toggle
-  Options.SetOptionBool(Oberchatten::oMsgWinBeep, MnuOptionsMsgWinBeep->Checked); // Save to options manager
-}
-//---------------------------------------------------------------------------
-

clients/oberchatten/MainFormUnit.~df

Binary file removed.

clients/oberchatten/MainFormUnit.~h

-//---------------------------------------------------------------------------
-#ifndef MainFormUnitH
-#define MainFormUnitH
-//---------------------------------------------------------------------------
-#include <Classes.hpp>
-#include <Controls.hpp>
-#include <StdCtrls.hpp>
-#include <Forms.hpp>
-#include <Menus.hpp>
-
-#include "MsgUnit.h" // TMsgForm
-#include "ChatFormUnit.h" // TChatForm
-#include "MyUserUnit.h" // TMyUser
-#include "StatusBarManagerUnit.h" // TStatusBarManager
-#include <ExtCtrls.hpp>
-#include <ComCtrls.hpp>
-//---------------------------------------------------------------------------
-enum dialogTypeID {
-  digGeneral,
-  digUnsupportedFeature,
-  digFoolishUser
-};
-
-class TMainForm : public TForm
-{
-__published:	// IDE-managed Components
-        TMainMenu *MainMenu1;
-        TMenuItem *MnuHelp;
-        TMenuItem *MnuHelpAbout;
-        TMenuItem *MnuChums;
-        TMenuItem *MnuChumsAdd;
-        TMenuItem *MnuChumsSearch;
-        TMenuItem *MnuChumsDel;
-        TMenuItem *MnyChumsWhois;
-        TMenuItem *MnuChumsBackup;
-        TMenuItem *MnuChumsRestore;
-        TMenuItem *N1;
-        TMenuItem *N2;
-        TMenuItem *N3;
-        TMenuItem *MnuChat;
-        TMenuItem *MnuChatSuggestions;
-        TMenuItem *MnuChatSuggest1;
-        TMenuItem *MnuChatSuggest2;
-        TMenuItem *MnuChatSuggest3;
-        TMenuItem *MnuChatSuggest4;
-        TMenuItem *MnuChatSuggest5;
-        TMenuItem *MnuChatSuggest6;
-        TMenuItem *N4;
-        TMenuItem *MnuChatSuggestMore;
-        TMenuItem *MnuChatJoin;
-        TMenuItem *MnuOberchatten;
-        TMenuItem *MnuOberchattenExit;
-        TMenuItem *MnuDebug;
-        TMenuItem *MnuDebugServer;
-        TMenuItem *MnuDebugServerRaw;
-        TMenuItem *MnuDebugServerFabricatePacket;
-        TMenuItem *MnuWindow;
-        TMenuItem *MnuWindowChums;
-        TMenuItem *MnuOberchattenMailPsw;
-        TMenuItem *MnuOberchattenChangeAddress;
-        TMenuItem *MnuOberchattenChPass;
-        TMenuItem *N5;
-        TMenuItem *MnuOberchattenSignon;
-        TMenuItem *MnuOberchattenSignoff;
-        TMenuItem *MnuOptions;
-        TMenuItem *MnuOptionsNick;
-        TMenuItem *MnuOptionsNet;
-        TMenuItem *N6;
-        TMenuItem *N7;
-        TMenuItem *MnuChatMsg;
-        TMenuItem *N8;
-        TMenuItem *MnuOptionsReload;
-        TMenuItem *MnuOptionsSave;
-        TTimer *TechnicalTimer;
-        TMenuItem *MnuHelpCredits;
-        TStatusBar *StatusBar;
-        TMenuItem *MnuOptionsMsgWin;
-        TMenuItem *MnuOptionsMsgWinBeep;
-        void __fastcall FormCreate(TObject *Sender);
-        void __fastcall MnuOberchattenExitClick(TObject *Sender);
-        void __fastcall MnuHelpAboutClick(TObject *Sender);
-        void __fastcall FormShow(TObject *Sender);
-        void __fastcall MnuWindowChumsClick(TObject *Sender);
-        void __fastcall MnuOptionsNetClick(TObject *Sender);
-        void __fastcall MnuOberchattenSignonClick(TObject *Sender);
-        void __fastcall MnuOberchattenSignoffClick(TObject *Sender);
-        void __fastcall MnuChatMsgClick(TObject *Sender);
-        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
-        void __fastcall MnuOptionsReloadClick(TObject *Sender);
-        void __fastcall MnuOptionsSaveClick(TObject *Sender);
-        void __fastcall FormDestroy(TObject *Sender);
-        void __fastcall TechnicalTimerTimer(TObject *Sender);
-        void __fastcall MnuChatJoinClick(TObject *Sender);
-        void __fastcall MnuHelpCreditsClick(TObject *Sender);
-        void __fastcall MnuChumsSearchClick(TObject *Sender);
-        void __fastcall MnuOptionsMsgWinBeepClick(TObject *Sender);
-private:	// User declarations
-        blake_link_ptrs messageWindows; // List of message windows
-        blake_link_ptrs chatWindows; // List of chat rooms
-
-        void DelMsg(TMsgForm* FormPointer); // Deletes a dynamic conversation
-        void DelMsgs(); // Deletes all dynamic conversations
-        void DelPendingMsgs(); // Delete message windows which are due to be deleted
-
-        void DelChat(TChatForm* FormPointer); // Deletes a dynamic chat room
-        void DelChats(); // Deletes all dynamic chat rooms
-        void DelPendingChats(); // Delete chat rooms which are due to be deleted
-        void InstallHandlers(); // Install event handlers
-        void Egg1(); // An Easter Egg used for messaging user "OverChat"
-        void Egg2(); // An Easter Agg for people who want to know too much about Blake
-protected:
-        void InternalDialog(const char* Message, enum dialogTypeID ID);
-public:		// User declarations
-        TMyUser MyUser; // Global information to describe the logged in user
-        Oberchatten::TStatusBarManager StatusBarManager; // StatusBar's custom governor
-        __fastcall TMainForm(TComponent* Owner);
-        TMsgForm* NewMsg(AnsiString& RemoteUser);
-        TMsgForm* NewMsg(const char* RemoteUser);
-        TMsgForm* NewMsg(const char* RemoteUser, const char* Message);
-        TMsgForm* FindMsg(AnsiString& RemoteUser);
-
-        TChatForm* NewChat(AnsiString& ChatName, enum blakeExchange Exch);
-        TChatForm* NewChat(const char* ChatName, enum blakeExchange Exch);
-        TChatForm* FindChat(AnsiString& ChatName, enum blakeExchange Exch);
-
-        void __fastcall IdleHandler(TObject*, bool& done); // Executes whenever we get a chance
-        void DisplayChumList();
-        void CriticalProtocol(char* Message); // Display a critical protocol error
-        void BlakeError(const char* File, const unsigned int Line, enum blakeError ErrorNumber); // Display a Blake library error
-        void WhoisInfo(struct blakeWhoisInfo* PWhoisInfo);
-        void Whois(AnsiString& RemoteUser); // Request whois on a user
-        void IsOnlineReply(struct blakeIsOnlineReply* PIsOnlineReply);
-        void IsOnline(AnsiString& RemoteUser); // Test if a user is online
-        void Super(struct blakeSuper* PSuper);
-        void SuperRequest(); // Ask your own privellege level
-        void NoticePrivellegeChanged(blake_word8_t OldPrivellege, blake_word8_t NewPrivellege); // Call to update GUI stuff to the new privellege level
-        bool AddChum(const AnsiString& ChumNick);
-        bool AddChum(const char* ChumNick);
-        bool ChumSearch();
-        void Unsupported(const AnsiString& Message);
-        void Unsupported(const char* Message);
-        void Dialog(const AnsiString& Message);
-        void Dialog(const char* Message);
-        void FoolishUser(const AnsiString& Message);
-        void FoolishUser(const char* Message);
-};
-//---------------------------------------------------------------------------
-extern PACKAGE TMainForm *MainForm;
-//---------------------------------------------------------------------------
-#endif

clients/oberchatten/MsgUnit.~cp

-//---------------------------------------------------------------------------
-#include <vcl.h>
-#include <limits.h>
-#include <time.h>
-#include <stdio.h>
-#pragma hdrstop
-
-#include "blake.h"
-#include "MsgUnit.h"
-#include "NetBuffer.h"
-#include "MainFormUnit.h"
-#include "Globals.h"
-#include "Options.h"
-//---------------------------------------------------------------------------
-#pragma package(smart_init)
-#pragma resource "*.dfm"
-TMsgForm *MsgForm;
-//---------------------------------------------------------------------------
-__fastcall TMsgForm::TMsgForm(TComponent* Owner)
-        : TForm(Owner),
-          pendingDelete(false)
-{
-}
-//---------------------------------------------------------------------------
-void TMsgForm::SetRemoteUserName(AnsiString& NewRemoteUserName)
-{
-  remoteUserName = NewRemoteUserName;
-  RefreshTitle();
-}
-//---------------------------------------------------------------------------
-void TMsgForm::SetRemoteUserName(const char* NewRemoteUserName)
-{
-  remoteUserName = NewRemoteUserName;
-  RefreshTitle();
-}
-//---------------------------------------------------------------------------
-AnsiString& TMsgForm::GetRemoteUserName()
-{
-  return remoteUserName;
-}
-//---------------------------------------------------------------------------
-void TMsgForm::RefreshTitle()
-{
-  Caption = "Conversation with " + remoteUserName;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::FormClose(TObject *Sender, TCloseAction &Action)
-{
-  pendingDelete = true; // Program will clean this form up
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::CloseBtnClick(TObject *Sender)
-{
-  pendingDelete = true;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::MsgBtnClick(TObject *Sender)
-{
-  AnsiString msg(MessageEdit->Text); // Copy message
-
-  MessageEdit->Text = ""; // Get rid of message
-  AddToConversation(MainForm->MyUser.GetUserName(), msg); // Add your text to the conversation
-  blake_Msg(GlobalNetBuffer.GetSocket(), remoteUserName.c_str(), msg.c_str());
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::FormResize(TObject *Sender)
-{
-  Panel1->Width = ClientWidth;
-  Panel1->Top = ClientHeight - (Panel1->Height+1);
-  MessageEdit->Top = Panel1->Top - MessageEdit->Height -1;
-  MessageEdit->Left = 8;
-  MessageEdit->Width = ClientWidth - 16;
-  ConversationMemo->Height = ClientHeight - (Panel1->Height + MessageEdit->Height + 1);
-  ConversationMemo->Width = ClientWidth;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::FormKeyPress(TObject *Sender, char &Key)
-{
-  if ( Key == '\r' ) /* Pressing enter? */
-    MsgBtnClick(0); /* Shortcut to send message button */
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::SaveBtnClick(TObject *Sender)
-{
-  if ( SaveDialog->Execute() )
-    ConversationMemo->Lines->SaveToFile(SaveDialog->FileName);
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::TatchBtnClick(TObject *Sender)
-{
-  /* Toggle from style */
-  if ( FormStyle == fsMDIChild )
-    FormStyle = fsNormal;
-  else {
-    // I have to save size information unfortunately because C++Builder is mad and defaults
-    // them once I go back to an MDI child.  Also hide and show to prevent is flashing up as it
-    // changes dimensions from the defaults.
-    int h = Height;
-    int w = Width;
-    Hide();
-    FormStyle = fsMDIChild;
-    Height = h;
-    Width = w;
-    Show();
-  }
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::WhoisBtnClick(TObject *Sender)
-{
-  MainForm->Whois(remoteUserName);
-}
-//---------------------------------------------------------------------------
-void TMsgForm::AddToConversation(AnsiString& UserName, AnsiString& NewComment)
-{
-  if ( !(UserName.IsEmpty() || NewComment.IsEmpty()) ) { // Both strings must contain _something_
-    // Add to conversation, handling /me command
-    if ( strnicmp(NewComment.c_str(), "/me ", BLAKE_MIN(NewComment.Length(),4)) == 0 ) {
-      AnsiString newComment(NewComment.c_str()+4); // Miss the /me string out
-      ConversationMemo->Lines->Add("*** " + UserName + " " + newComment);
-    }
-    else
-      ConversationMemo->Lines->Add(UserName + ": " + NewComment);
-  }
-
-  // Do a beep
-  if ( BeepBtn->Down )
-    MessageBeep(0xFFFFFFFF);
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::MessageEditChange(TObject *Sender)
-{
-  MsgBtn->Enabled = !MessageEdit->Lines->Text.IsEmpty();
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::KillBtnClick(TObject *Sender)
-{
-  //blake_Kill(GlobalNetBuffer.GetSocket(), remoteUserName.c_str());
-}
-//---------------------------------------------------------------------------
-bool TMsgForm::BeepOnMessage(const bool* NewSetting)
-{
-  bool oldSetting = BeepBtn->Down;
-  if ( NewSetting )
-    BeepBtn->Down = *NewSetting;
-  return oldSetting;
-}
-//---------------------------------------------------------------------------
-void __fastcall TMsgForm::FormCreate(TObject *Sender)
-{
-  BeepBtn->Down = Options.GetOptionBool(Oberchatten::oMsgWinBeep); // Use default
-}
-//---------------------------------------------------------------------------

clients/oberchatten/MsgUnit.~df

Binary file removed.

clients/oberchatten/MsgUnit.~h

-//---------------------------------------------------------------------------
-#ifndef MsgUnitH
-#define MsgUnitH
-//---------------------------------------------------------------------------
-#include <Classes.hpp>
-#include <Controls.hpp>
-#include <StdCtrls.hpp>
-#include <Forms.hpp>
-#include <ExtCtrls.hpp>
-#include <Buttons.hpp>
-#include <Dialogs.hpp>
-//---------------------------------------------------------------------------
-class TMsgForm : public TForm
-{
-__published:	// IDE-managed Components
-        TMemo *ConversationMemo;
-        TPanel *Panel1;
-        TSpeedButton *MsgBtn;
-        TSpeedButton *CloseBtn;
-        TSpeedButton *WarnBtn;
-        TSpeedButton *BlockBtn;
-        TMemo *MessageEdit;
-        TSpeedButton *WhoisBtn;
-        TSpeedButton *SaveBtn;
-        TSpeedButton *LogBtn;
-        TSaveDialog *SaveDialog;
-        TSpeedButton *TatchBtn;
-        TSpeedButton *KillBtn;
-        TSpeedButton *GlineBtn;
-        TSpeedButton *BeepBtn;
-        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
-        void __fastcall CloseBtnClick(TObject *Sender);
-        void __fastcall MsgBtnClick(TObject *Sender);
-        void __fastcall FormResize(TObject *Sender);
-        void __fastcall FormKeyPress(TObject *Sender, char &Key);
-        void __fastcall SaveBtnClick(TObject *Sender);
-        void __fastcall TatchBtnClick(TObject *Sender);
-        void __fastcall WhoisBtnClick(TObject *Sender);
-        void __fastcall MessageEditChange(TObject *Sender);
-        void __fastcall KillBtnClick(TObject *Sender);
-        void __fastcall FormCreate(TObject *Sender);
-private:	// User declarations
-        AnsiString remoteUserName;
-        bool pendingDelete; // Set when we want the program to get around to cleaning us up at it's lesure
-        void RefreshTitle();
-public:		// User declarations
-        __fastcall TMsgForm(TComponent* Owner);
-        void SetRemoteUserName(AnsiString& NewRemoteUserName);
-        void SetRemoteUserName(const char* NewRemoteUserName);
-        AnsiString& GetRemoteUserName();
-        bool inline IsPendingDelete()
-          { return pendingDelete; }
-        void AddToConversation(AnsiString& UserName, AnsiString& NewComment); // Adds a comment to the progressing conversation
-        bool BeepOnMessage(const bool* NewSetting = NULL);
-};
-//---------------------------------------------------------------------------
-extern PACKAGE TMsgForm *MsgForm;
-//---------------------------------------------------------------------------
-#endif

clients/oberchatten/MyUserUnit.~cp

-#include "overchat_config.h" /* Master project configuration */
-#include <vcl.h>
-#include <limits.h>
-#include <time.h>
-#include <stdio.h>
-#ifdef HDRSTOP
-# pragma hdrstop
-#endif /*HDRSTOP*/
-
-#include "blake.h"
-#include "MyUserUnit.h"
-//---------------------------------------------------------------------------
-TMyUser::TMyUser()
-{
-  Reset();
-}
-//---------------------------------------------------------------------------
-void TMyUser::Reset()
-{
-  UserName = "";
-  Clearance = CLEARANCE_ZERO;
-}
-//---------------------------------------------------------------------------
-void TMyUser::SetUserName(AnsiString& NewUserName)
-{
-}
-//---------------------------------------------------------------------------
-void TMyUser::SetUserName(AnsiString NewUserName)
-{
-}
-//---------------------------------------------------------------------------
-AnsiString& TMyUser::GetUserName()
-{
-  return UserName;
-}
-//---------------------------------------------------------------------------
-blake_word8_t TMyUser::GetClearance()
-{
-  return Clearance;
-}
-//---------------------------------------------------------------------------
-void TMyUser::SetClearance(blake_word8_t NewClearance)
-{
-  Clearance = NewClearance;
-}
-//---------------------------------------------------------------------------
-#pragma package(smart_init)

clients/oberchatten/MyUserUnit.~h

-#ifndef __INC_MYUSER_H
-#define __INC_MYUSER_H
-//---------------------------------------------------------------------------
-class TMyUser {
-private:
-  AnsiString UserName; // Name of the user
-  blake_word8_t Clearance; // The clearance level
-public:
-  TMyUser();
-  void Reset();
-  void SetUserName(AnsiString& NewUserName);
-  void SetUserName(AnsiString NewUserName);
-  AnsiString& GetUserName();
-  blake_word8_t GetClearance();
-  void SetClearance(blake_word8_t NewClearance);
-};
-//---------------------------------------------------------------------------
-#endif //__INC_MYUSER_H

clients/oberchatten/NetworkOptionsUnit.~cp

-//---------------------------------------------------------------------------
-#include <vcl.h>
-#include <limits.h>
-#include <time.h>
-#include <stdlib.h>
-#include <stdio.h>
-#pragma hdrstop
-
-#include "master.h"
-#include "NetworkOptionsUnit.h"
-#include "Options.h"
-#include "MainFormUnit.h"
-//---------------------------------------------------------------------------
-#pragma package(smart_init)
-#pragma resource "*.dfm"
-TNetworkOptionsForm *NetworkOptionsForm;
-using namespace Oberchatten;
-//---------------------------------------------------------------------------
-__fastcall TNetworkOptionsForm::TNetworkOptionsForm(TComponent* Owner)
-        : TForm(Owner)
-{
-}
-//---------------------------------------------------------------------------
-void TNetworkOptionsForm::DisableProxyEdits()
-{
-  HTTPProxyHostEdit->Enabled = false;
-  HTTPProxyHostEdit->Color = clBtnFace;
-  HTTPProxyPortEdit->Enabled = false;
-  HTTPProxyPortEdit->Color = clBtnFace;
-  SOCKSProxyHostEdit->Enabled = false;
-  SOCKSProxyHostEdit->Color = clBtnFace;
-  SOCKSProxyPortEdit->Enabled = false;
-  SOCKSProxyPortEdit->Color = clBtnFace;
-}
-//---------------------------------------------------------------------------
-void TNetworkOptionsForm::EnableSOCKSProxyEdits()
-{
-  SOCKSProxyHostEdit->Enabled = true;
-  SOCKSProxyHostEdit->Color = clWindow;
-  SOCKSProxyPortEdit->Enabled = true;
-  SOCKSProxyPortEdit->Color = clWindow;
-}
-//---------------------------------------------------------------------------
-void TNetworkOptionsForm::EnableHTTPProxyEdits()
-{
-  HTTPProxyHostEdit->Enabled = true;
-  HTTPProxyHostEdit->Color = clWindow;
-  HTTPProxyPortEdit->Enabled = true;
-  HTTPProxyPortEdit->Color = clWindow;
-}
-//---------------------------------------------------------------------------
-void __fastcall TNetworkOptionsForm::AccessDirectClick(TObject *Sender)
-{
-  DisableProxyEdits();
-}
-//---------------------------------------------------------------------------
-void __fastcall TNetworkOptionsForm::AccessHTTPClick(TObject *Sender)
-{
-  DisableProxyEdits();
-  EnableHTTPProxyEdits();
-}
-//---------------------------------------------------------------------------
-void __fastcall TNetworkOptionsForm::AccessSOCKSClick(TObject *Sender)
-{
-  DisableProxyEdits();
-  EnableSOCKSProxyEdits();
-}
-//---------------------------------------------------------------------------
-void __fastcall TNetworkOptionsForm::FormShow(TObject *Sender)
-{
-  LoadData();
-}
-//---------------------------------------------------------------------------
-void TNetworkOptionsForm::LoadData()
-{
-  ProtocolGrp->ItemIndex = MainForm->Options.GetOptionInteger(oProtocol);
-  HostnameEdit->Text = MainForm->Options.GetOptionString(oServer);
-  PortEdit->Text = MainForm->Options.GetOptionInteger(oPort);
-  switch ( MainForm->Options.GetOptionInteger(oConnection) ) {
-    case CONNECTION_HTTP : {
-      AccessHTTP->Checked = true;
-      AccessHTTPClick(0);
-      break;
-    }
-    case CONNECTION_SOCKS : {
-      AccessSOCKS->Checked = true;
-      AccessSOCKSClick(0);
-      break;
-    }
-    default : {
-      AccessDirect->Checked = true;
-      AccessDirectClick(0);
-    }
-  }
-  HTTPProxyHostEdit->Text = MainForm->Options.GetOptionString(oHttpproxy);
-  SOCKSProxyHostEdit->Text = MainForm->Options.GetOptionString(oSocks4proxy);
-  HTTPProxyPortEdit->Text = MainForm->Options.GetOptionInteger(oHttpport);
-  SOCKSProxyPortEdit->Text = MainForm->Options.GetOptionInteger(oSocks4port);
-}
-//---------------------------------------------------------------------------
-void TNetworkOptionsForm::SaveData()
-{
-  MainForm->Options.SetOptionInteger(oProtocol, ProtocolGrp->ItemIndex);
-  MainForm->Options.SetOptionString(oServer, HostnameEdit->Text.c_str());
-  MainForm->Options.SetOptionInteger(oPort, atoi(PortEdit->Text.c_str()));
-  MainForm->Options.SetOptionInteger(oConnection, ConnectionType());
-  MainForm->Options.SetOptionString(oHttpproxy, HTTPProxyHostEdit->Text.c_str());
-  MainForm->Options.SetOptionString(oSocks4proxy, SOCKSProxyHostEdit->Text.c_str());
-  MainForm->Options.SetOptionInteger(oHttpport, atoi(HTTPProxyPortEdit->Text.c_str()));
-  MainForm->Options.SetOptionInteger(oSocks4port, atoi(SOCKSProxyPortEdit->Text.c_str()));
-}
-//---------------------------------------------------------------------------
-unsigned int TNetworkOptionsForm::ConnectionType()
-{
-  if ( AccessHTTP->Checked )
-    return CONNECTION_HTTP;
-  if ( AccessSOCKS->Checked )
-    return CONNECTION_SOCKS;
-
-  return CONNECTION_DIRECT;
-}
-//---------------------------------------------------------------------------
-void __fastcall TNetworkOptionsForm::OkBtnClick(TObject *Sender)
-{
-  SaveData();
-}
-//---------------------------------------------------------------------------
-

clients/oberchatten/NetworkOptionsUnit.~df

Binary file removed.

clients/oberchatten/NetworkOptionsUnit.~h

-//---------------------------------------------------------------------------
-#ifndef NetworkOptionsUnitH
-#define NetworkOptionsUnitH
-//---------------------------------------------------------------------------
-#include <Classes.hpp>
-#include <Controls.hpp>
-#include <StdCtrls.hpp>
-#include <Forms.hpp>
-#include <ExtCtrls.hpp>
-#include <Buttons.hpp>
-//---------------------------------------------------------------------------
-class TNetworkOptionsForm : public TForm
-{
-__published:	// IDE-managed Components
-        TRadioGroup *ProtocolGrp;
-        TBitBtn *OkBtn;
-        TBitBtn *CancelBtn;
-        TGroupBox *AccessGrp;
-        TRadioButton *AccessHTTP;
-        TEdit *HTTPProxyHostEdit;
-        TEdit *HTTPProxyPortEdit;
-        TRadioButton *AccessDirect;
-        TRadioButton *AccessSOCKS;
-        TEdit *SOCKSProxyHostEdit;
-        TEdit *SOCKSProxyPortEdit;
-        TGroupBox *ServerGrp;
-        TEdit *PortEdit;
-        TEdit *HostnameEdit;
-        TLabel *Label1;
-        TLabel *Label2;
-        TButton *ApplyBtn;
-        TButton *RevertBtn;
-        void __fastcall AccessDirectClick(TObject *Sender);
-        void __fastcall AccessHTTPClick(TObject *Sender);
-        void __fastcall AccessSOCKSClick(TObject *Sender);
-        void __fastcall FormShow(TObject *Sender);
-        void __fastcall OkBtnClick(TObject *Sender);
-private:	// User declarations
-        void DisableProxyEdits();
-        void EnableSOCKSProxyEdits();
-        void EnableHTTPProxyEdits();
-        void LoadData();
-        void SaveData();
-        unsigned int ConnectionType(); // Returns current connection type selected
-public:		// User declarations
-        __fastcall TNetworkOptionsForm(TComponent* Owner);
-};
-//---------------------------------------------------------------------------
-extern PACKAGE TNetworkOptionsForm *NetworkOptionsForm;
-//---------------------------------------------------------------------------
-#endif

clients/oberchatten/OberChatten.~bp

-# ---------------------------------------------------------------------------
-!if !$d(BCB)
-BCB = $(MAKEDIR)\..
-!endif
-
-# ---------------------------------------------------------------------------
-# IDE SECTION
-# ---------------------------------------------------------------------------
-# The following section of the project makefile is managed by the BCB IDE.
-# It is recommended to use the IDE to change any of the values in this
-# section.
-# ---------------------------------------------------------------------------
-
-VERSION = BCB.04.04
-# ---------------------------------------------------------------------------
-PROJECT = OberChatten.exe
-OBJFILES = OberChatten.obj MainFormUnit.obj NetworkOptionsUnit.obj AboutUnit.obj \
-  ChumsUnit.obj MsgUnit.obj SignonUnit.obj Options.obj MsgSomebodyUnit.obj \
-  ServerCallbacks.obj Events.obj ChatFormUnit.obj ChatNameUnit.obj General.obj \
-  WhoisInfoUnit.obj Globals.obj ..\..\NETBUFFER\NetBuffer.obj MyUserUnit.obj \
-  AddChumFormUnit.obj StatusBarManagerUnit.obj
-RESFILES = OberChatten.res
-RESDEPEN = $(RESFILES) MainFormUnit.dfm NetworkOptionsUnit.dfm AboutUnit.dfm ChumsUnit.dfm \
-  MsgUnit.dfm SignonUnit.dfm MsgSomebodyUnit.dfm ChatFormUnit.dfm \
-  ChatNameUnit.dfm WhoisInfoUnit.dfm AddChumFormUnit.dfm
-LIBFILES = blake.lib dpcrtlmm_private_project.lib
-LIBRARIES = Vclx40.lib Vcl40.lib
-SPARELIBS = Vcl40.lib Vclx40.lib
-PACKAGES = Vcl40.bpi Vclx40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi ibsmp40.bpi \
-  vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi dclocx40.bpi
-DEFFILE =
-# ---------------------------------------------------------------------------
-PATHCPP = .;..\..\NETBUFFER
-PATHPAS = .;
-PATHASM = .;
-PATHRC = .;
-DEBUGLIBPATH = $(BCB)\lib\debug
-RELEASELIBPATH = $(BCB)\lib\release
-USERDEFINES = NDEBUG
-SYSDEFINES = NO_STRICT
-# ---------------------------------------------------------------------------
-CFLAG1 = -I"C:\Program Files\Borland\CBuilder4\Projects\";"E:\Program Files\Borland\CBuilder4\Projects\";$(BCB)\include;$(BCB)\include\vcl;..\..\blake;..\..\src;..\..\NetBuffer \
-  -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -k- -vi -c -b- -w-par -w-inl -Vx -tW \
-  -tWM -D$(SYSDEFINES);$(USERDEFINES)
-PFLAGS = -U"C:\Program Files\Borland\CBuilder4\Projects\";..\..\NETBUFFER;..\..\blake;"E:\Program Files\Borland\CBuilder4\Projects\";$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \
-  -I"C:\Program Files\Borland\CBuilder4\Projects\";"E:\Program Files\Borland\CBuilder4\Projects\";$(BCB)\include;$(BCB)\include\vcl;..\..\blake;..\..\src;..\..\NetBuffer \
-  -DNDEBUG -$Y- -$L- -$D- -v -JPHNE -M
-RFLAGS = -i"C:\Program Files\Borland\CBuilder4\Projects\";"E:\Program Files\Borland\CBuilder4\Projects\";$(BCB)\include;$(BCB)\include\vcl;..\..\blake;..\..\src;..\..\NetBuffer \
-  -DNDEBUG
-AFLAGS = /i"C:\Program Files\Borland\CBuilder4\Projects\" \
-  /i"E:\Program Files\Borland\CBuilder4\Projects\" /i$(BCB)\include \
-  /i$(BCB)\include\vcl /i..\..\blake /i..\..\src /i..\..\NetBuffer /dNDEBUG /mx \
-  /w2 /zn
-LFLAGS = -L"C:\Program Files\Borland\CBuilder4\Projects\";..\..\NETBUFFER;..\..\blake;"E:\Program Files\Borland\CBuilder4\Projects\";$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \
-  -aa -Tpe -x -Gn
-# ---------------------------------------------------------------------------
-ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES)
-ALLRES = $(RESFILES)
-ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib
-# ---------------------------------------------------------------------------
-!ifdef IDEOPTIONS
-
-[Version Info]
-IncludeVerInfo=1
-AutoIncBuild=1
-MajorVer=0
-MinorVer=3
-Release=5
-Build=229
-Debug=0
-PreRelease=0
-Special=0
-Private=0
-DLL=0
-Locale=2057
-CodePage=1252
-
-[Version Info Keys]
-CompanyName=Daybo Logic
-FileDescription=Oberchatten client for OverChat
-FileVersion=0.3.5.229
-InternalName=Oberchatten
-LegalCopyright=OverChat is copyright 2001,2002 Daybo Logic, all rights reserved.  Oberchatten is also so.
-LegalTrademarks=
-OriginalFilename=oberchatten.exe
-ProductName=OverChat
-ProductVersion=0.0.19.0
-Comments=Not usable yet
-URL=http://www.daybologic.co.uk/overchat
-Author=David Duncan Ross Palmer
-Contact=http://www.daybologic.co.uk/mailddrp
-
-[HistoryLists\hlIncludePath]
-Count=7