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"" -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