From 35015a15eafc25211a356d0fe5ff4bb6f924186f Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 16 May 2003 08:26:17 +0000
Subject: [PATCH] Added use of utime() to insure NFS/smbfs compatibility with
 node/chat.dab (shared-write) files. New look (green on black, System font)
 simulates Telnet interface. Ctrl-V (paste) and other unexpected control keys
 are now filtered.

---
 src/sbbs3/chat/MainFormUnit.cpp |  37 ++++++++++++++++------
 src/sbbs3/chat/MainFormUnit.dfm |  29 ++++++++++++-----
 src/sbbs3/chat/chat.bpr         |  54 +++++++++++++++++++++-----------
 src/sbbs3/chat/chat.cpp         |   5 +--
 src/sbbs3/chat/chat.res         | Bin 876 -> 876 bytes
 5 files changed, 88 insertions(+), 37 deletions(-)

diff --git a/src/sbbs3/chat/MainFormUnit.cpp b/src/sbbs3/chat/MainFormUnit.cpp
index 507eb480cc..5b49fb7d55 100644
--- a/src/sbbs3/chat/MainFormUnit.cpp
+++ b/src/sbbs3/chat/MainFormUnit.cpp
@@ -8,7 +8,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2003 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This program is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU General Public License				*
@@ -46,6 +46,7 @@
 #include <vcl\Registry.hpp>	/* TRegistry */
 #pragma hdrstop
 
+#include <utime.h>
 #include "gen_defs.h"       /* BS and DEL */
 
 #define PCHAT_LEN 1000		/* Size of Private chat file */
@@ -60,6 +61,10 @@ extern int      node_num;
 extern char     ctrl_dir[];
 extern char     node_dir[];
 extern char     user_name[];
+
+char node_path[MAX_PATH+1];
+char out_path[MAX_PATH+1];
+
 //---------------------------------------------------------------------------
 __fastcall TMainForm::TMainForm(TComponent* Owner)
     : TForm(Owner)
@@ -99,32 +104,35 @@ bool __fastcall TMainForm::ToggleChat(bool on)
     lseek(nodedab, n*sizeof(node_t), SEEK_SET);
     locking(nodedab, LK_UNLCK, sizeof(node_t));
 
+    utime(node_path,NULL);
+
     return(true);
 }
 //---------------------------------------------------------------------------
 void __fastcall TMainForm::FormShow(TObject *Sender)
 {
-    char    path[MAX_PATH+1];
     char*   p;
+    char	path[MAX_PATH+1];
 
     Caption="Waiting for "
         +AnsiString(user_name)+" on Node "+AnsiString(node_num);
 
-    wsprintf(path,"%sNODE.DAB",ctrl_dir);
-    nodedab=_sopen(path,O_RDWR|O_BINARY|O_CREAT, SH_DENYNONE,S_IREAD|S_IWRITE);
+    wsprintf(node_path,"%sNODE.DAB",ctrl_dir);
+    nodedab=_sopen(node_path,O_RDWR|O_BINARY|O_CREAT, SH_DENYNONE,S_IREAD|S_IWRITE);
 
     if(nodedab==-1) {
-        Remote->Lines->Add("!Error opening NODE.DAB");
+        Remote->Lines->Add("!Error opening " + AnsiString(node_path));
         return;
     }
 
     ToggleChat(true);
 
-	wsprintf(path,"%sLCHAT.DAB",node_dir);
-	if((out=_sopen(path,O_RDWR|O_CREAT|O_BINARY,O_DENYNONE
+	wsprintf(out_path,"%sLCHAT.DAB",node_dir);
+	if((out=_sopen(out_path,O_RDWR|O_CREAT|O_BINARY,O_DENYNONE
 		,S_IREAD|S_IWRITE))==-1) {
-		Remote->Lines->Add("!Error opening LCHAT.DAB");
-		return; }
+		Remote->Lines->Add("!Error opening " + AnsiString(out_path));
+		return;
+    }
 
 	wsprintf(path,"%sCHAT.DAB",node_dir);
 #if 0
@@ -186,6 +194,13 @@ void __fastcall TMainForm::LocalKeyPress(TObject *Sender, char &Key)
 {
     char c;
 
+    if(Key==22) {	/* Ctrl-V */
+    	Key=0;
+        return;		/* Don't allow "paste from clipboard" */
+    }
+    if(Key<' ' && Key!='\r' && Key!='\t' && Key!='\b')
+    	return;
+
     if(out==-1 || Local->ReadOnly==true) {
         Beep();
         return;
@@ -202,6 +217,7 @@ void __fastcall TMainForm::LocalKeyPress(TObject *Sender, char &Key)
         write(out,&c,1);
         lseek(out,-1L,SEEK_CUR);
     }
+    utime(out_path,NULL);
     if(tell(out)>=PCHAT_LEN)
         lseek(out,0L,SEEK_SET);
 }
@@ -288,3 +304,6 @@ void __fastcall TMainForm::FormCreate(TObject *Sender)
 }
 //---------------------------------------------------------------------------
 
+
+
+
diff --git a/src/sbbs3/chat/MainFormUnit.dfm b/src/sbbs3/chat/MainFormUnit.dfm
index f878d5e7fd..d4e7d9de7e 100644
--- a/src/sbbs3/chat/MainFormUnit.dfm
+++ b/src/sbbs3/chat/MainFormUnit.dfm
@@ -7,7 +7,7 @@ object MainForm: TMainForm
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -11
+  Font.Height = -14
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   OldCreateOrder = False
@@ -15,11 +15,11 @@ object MainForm: TMainForm
   OnClose = FormClose
   OnCreate = FormCreate
   OnShow = FormShow
-  PixelsPerInch = 96
-  TextHeight = 13
+  PixelsPerInch = 120
+  TextHeight = 16
   object Splitter1: TSplitter
     Left = 0
-    Top = 85
+    Top = 105
     Width = 409
     Height = 2
     Cursor = crVSplit
@@ -27,23 +27,38 @@ object MainForm: TMainForm
   end
   object Local: TMemo
     Left = 0
-    Top = 87
+    Top = 107
     Width = 409
-    Height = 137
+    Height = 116
     Align = alClient
+    Color = clBlack
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clLime
+    Font.Height = -15
+    Font.Name = 'System'
+    Font.Style = []
+    ParentFont = False
     ReadOnly = True
     ScrollBars = ssVertical
     TabOrder = 0
+    WantTabs = True
     OnKeyPress = LocalKeyPress
   end
   object Remote: TMemo
     Left = 0
     Top = 0
     Width = 409
-    Height = 85
+    Height = 105
     TabStop = False
     Align = alTop
+    Color = clBlack
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clGreen
+    Font.Height = -15
+    Font.Name = 'System'
+    Font.Style = []
     HideSelection = False
+    ParentFont = False
     ReadOnly = True
     ScrollBars = ssVertical
     TabOrder = 1
diff --git a/src/sbbs3/chat/chat.bpr b/src/sbbs3/chat/chat.bpr
index 75192a1b5a..88199d2c40 100644
--- a/src/sbbs3/chat/chat.bpr
+++ b/src/sbbs3/chat/chat.bpr
@@ -2,7 +2,7 @@
 <!-- C++Builder XML Project -->
 <PROJECT>
   <MACROS>
-    <VERSION value="BCB.05.03"/>
+    <VERSION value="BCB.06.00"/>
     <PROJECT value="chat.exe"/>
     <OBJFILES value="chat.obj MainFormUnit.obj"/>
     <RESFILES value="chat.res"/>
@@ -11,41 +11,51 @@
     <DEFFILE value=""/>
     <RESDEPEN value="$(RESFILES) MainFormUnit.dfm"/>
     <LIBFILES value=""/>
-    <LIBRARIES value="Vcl50.lib"/>
-    <SPARELIBS value="Vcl50.lib"/>
-    <PACKAGES value="Vcl50.bpi Vclx50.bpi bcbsmp50.bpi Vcldb50.bpi vclado50.bpi ibsmp50.bpi 
-      VCLBDE50.bpi vcldbx50.bpi Qrpt50.bpi TeeUI50.bpi TeeDB50.bpi Tee50.bpi 
-      Dss50.bpi TeeQR50.bpi VCLIB50.bpi Vclmid50.bpi vclie50.bpi Inetdb50.bpi 
-      Inet50.bpi NMFast50.bpi webmid50.bpi bcbie50.bpi dclocx50.bpi 
-      bcb97axserver50.bpi"/>
+    <LIBRARIES value="vcl.lib rtl.lib"/>
+    <SPARELIBS value="rtl.lib vcl.lib"/>
+    <PACKAGES value="rtl.bpi vcl.bpi vclx.bpi bcbsmp.bpi dbrtl.bpi vcldb.bpi adortl.bpi 
+      ibsmp.bpi bdertl.bpi vcldbx.bpi qrpt.bpi teeui.bpi teedb.bpi tee.bpi 
+      dss.bpi teeqr.bpi ibxpress.bpi dsnap.bpi vclie.bpi inetdb.bpi inet.bpi 
+      nmfast.bpi webdsnap.bpi bcbie.bpi dclocx.bpi bcb97axserver.bpi"/>
     <PATHCPP value=".;"/>
     <PATHPAS value=".;"/>
     <PATHRC value=".;"/>
     <PATHASM value=".;"/>
     <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
     <RELEASELIBPATH value="$(BCB)\lib\release"/>
-    <LINKER value="tlink32"/>
+    <LINKER value="ilink32"/>
     <USERDEFINES value=""/>
     <SYSDEFINES value="NO_STRICT"/>
     <MAINSOURCE value="chat.cpp"/>
-    <INCLUDEPATH value="$(BCB)\include;..;$(BCB)\include\vcl"/>
+    <INCLUDEPATH value="$(BCB)\include;..\..\xpdev;$(BCB)\include\vcl"/>
     <LIBPATH value="$(BCB)\lib\obj;$(BCB)\lib"/>
     <WARNINGS value="-w-par"/>
+    <OTHERFILES value=""/>
   </MACROS>
   <OPTIONS>
-    <IDLCFLAGS value="-I$(BCB)\include -I.. -I$(BCB)\include\vcl -src_suffix cpp"/>
-    <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -vi- -c -tW 
-      -tWM"/>
-    <PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
+    <IDLCFLAGS value="-I$(BCB)\include -I..\..\xpdev -I$(BCB)\include\vcl -src_suffix cpp"/>
+    <CFLAG1 value="-O2 -H=c:\borland\CBUILD~2\lib\vcl60.csm -Hc -Vx -Ve -X- -a8 -b- -k- -vi 
+      -c -tW -tWM"/>
+    <PFLAGS value="-$Y- -$L- -$D- -$A8 -v -JPHNE -M"/>
     <RFLAGS value=""/>
-    <AFLAGS value="/mx /w2 /zd"/>
+    <AFLAGS value="/mx /w2 /zn"/>
     <LFLAGS value="-D&quot;&quot; -aa -Tpe -GD -s -Gn"/>
+    <OTHERFILES value=""/>
   </OPTIONS>
   <LINKER>
     <ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
     <ALLRES value="$(RESFILES)"/>
     <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
+    <OTHERFILES value=""/>
   </LINKER>
+  <FILELIST>
+      <FILE FILENAME="chat.cpp" FORMNAME="" UNITNAME="chat" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="chat.res" FORMNAME="" UNITNAME="chat" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="MainFormUnit.cpp" FORMNAME="MainForm" UNITNAME="MainFormUnit" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+  </FILELIST>
+  <BUILDTOOLS>
+  </BUILDTOOLS>
+
   <IDEOPTIONS>
 [Version Info]
 IncludeVerInfo=0
@@ -75,9 +85,10 @@ ProductVersion=1.0.0.0
 Comments=
 
 [HistoryLists\hlIncludePath]
-Count=2
-Item0=$(BCB)\include;..;$(BCB)\include\vcl
-Item1=$(BCB)\include;$(BCB)\include\vcl
+Count=3
+Item0=$(BCB)\include;..\..\xpdev;$(BCB)\include\vcl
+Item1=$(BCB)\include;..;$(BCB)\include\vcl
+Item2=$(BCB)\include;$(BCB)\include\vcl
 
 [HistoryLists\hlLibraryPath]
 Count=1
@@ -91,10 +102,15 @@ Item0=$(BCB)\source\vcl
 DebugSourceDirs=$(BCB)\source\vcl
 
 [Parameters]
-RunParams=c:\sbbs\ctrl\ c:\sbbs\node1\ 1
+RunParams=s:\sbbs\ctrl\ s:\sbbs\node6\ 6 test
+Launcher=
+UseLauncher=0
+DebugCWD=
 HostApplication=
 RemoteHost=
 RemotePath=
+RemoteLauncher=
+RemoteCWD=
 RemoteDebug=0
 
 [Compiler]
diff --git a/src/sbbs3/chat/chat.cpp b/src/sbbs3/chat/chat.cpp
index 7b55dd5431..de843aa271 100644
--- a/src/sbbs3/chat/chat.cpp
+++ b/src/sbbs3/chat/chat.cpp
@@ -8,7 +8,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2003 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This program is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU General Public License				*
@@ -98,7 +98,8 @@ WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR cmdline, int)
     try
     {
          Application->Initialize();
-         Application->CreateForm(__classid(TMainForm), &MainForm);
+         Application->Title = "Synchronet Sysop Chat";
+		Application->CreateForm(__classid(TMainForm), &MainForm);
          Application->Run();
     }
     catch (Exception &exception)
diff --git a/src/sbbs3/chat/chat.res b/src/sbbs3/chat/chat.res
index 32b522d0446895614bc4b68603238d2e2e1f4263..41f32636dea08c6fa9bd04c06bf7cdb93c19c2d7 100644
GIT binary patch
literal 876
zcmaJ=y-ve05WYYq9};RiFtCx4k&&$+CI;YDyxCj5<u<=k9)*$7TQfv8-`PnasN#|@
zcjx;*#Y99ckaGpZ1$|x2_DlFQ#kSpEt!Aft2rcjgG*piRV$M?_!b>4khA%`QP~Z13
zXcNkEW%$;<^zbY>=l-0Ve|2Yn?8aIux~(CO40)BSi?M->M|z7#PgxAgIir3`QM!H3
z#&=Ur78yh`ch#RrSUTrZjW-T<A>*PW=k$z|Kr(yHrYRx|!|o3#XHhM3NHJJ{z>Ls`
zXhO0Hx)fbhcfm@vBi=|RW-0N=$;oeWV$`bxa&kgwV%8Dh(GpMd5yxbl_I#QzCZb`U
z4;^sKS<Ez_?g!aw@464oD*=Plau@|YL9g3V53EG(3tH&9;Dz<1WTkOaF@OWd+x32=
z)oviV12&2g@)7vN@7M$34Af`#121t?j@@{By+1y#OMb0UfYLYU<N?TeO>gu}uk;SQ
X&<FTTzwd?KhKAa9TW*EkqK3W!Vb{Ly

literal 876
zcmb7@&q~BF5XQf53&o4>!Mi<r^bJ%DBqHjocv#4>a|mo;g+5L__E9`~^tgwG_$B?b
zEiQ=Dew~^AW+ovJ0H~-CdNEws*J|WBYqG@F>$74kx@J&OcT|SqH+xQ-0DK|RJAN5b
zg0AZb;wGXCz2mpvS3vzvYut|ZZN*CMX^nYm+t&NN-_JPd#LY*mNhj`hPA|C8YQeqM
zTgzvdZ;aAuz4DOOcYdfZ_i24&v<}fGuC%ghV~<>^?Z#o^I&$V?KkJuVEjjBKJkHl<
z)*t7~G~YS)8yvZD$_evf|IT?uJmXRjBOP$#Xi^Ah@c<e_lR}vOgU9N5|B(0R=bQ|A
zNb|iP^3w7Yz30w)4p?h}w=w&}$0;-Aj8CcL{|oAhx)rSI?w9h=;iyl>2h`ybzzr3`
eIi7KkN4!uEc%>h0elOx}$WT>9x)t#jW%vP1A`iy^

-- 
GitLab