From 1740d93c65874a3ce07acd2e6964f0e6a4587036 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 9 Apr 2003 01:31:04 +0000 Subject: [PATCH] NodeForm timer tick event now (again) locks node record before reading (but using a non-blocking locking call) - does not report lock or read errors. This is necessary due to the use of advisory locks on Unix nodes. --- src/sbbs3/ctrl/NodeFormUnit.cpp | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/src/sbbs3/ctrl/NodeFormUnit.cpp b/src/sbbs3/ctrl/NodeFormUnit.cpp index 85460bc02e..514b838eef 100644 --- a/src/sbbs3/ctrl/NodeFormUnit.cpp +++ b/src/sbbs3/ctrl/NodeFormUnit.cpp @@ -39,7 +39,7 @@ #include <io.h> #include <stdio.h> #include <sys/stat.h> -//#include <sys/locking.h> +#include <sys/locking.h> #include <fcntl.h> #include <share.h> #include "NodeFormUnit.h" @@ -147,7 +147,7 @@ void __fastcall TNodeForm::TimerTick(TObject *Sender) static int nodedab; char str[128],tmp[128]; char* mer; - int i,n,rd,rderr,hour; + int i,n,rd,hour; node_t node; if(nodedab<1) { @@ -163,27 +163,16 @@ void __fastcall TNodeForm::TimerTick(TObject *Sender) lseek(nodedab, n*sizeof(node_t), SEEK_SET); if(eof(nodedab)) break; -/* - if(locking(nodedab, LK_LOCK, sizeof(node_t))!=0) { - ListBox->Items->Add("Error "+AnsiString(errno)+" locking record for" - " node "+AnsiString(n+1)); - break; - } -*/ + if(locking(nodedab, LK_NBLCK, sizeof(node_t))!=0) + continue; + rd=read(nodedab,&node, sizeof(node_t)); -/* - rderr=errno; lseek(nodedab, n*sizeof(node_t), SEEK_SET); locking(nodedab, LK_UNLCK, sizeof(node_t)); -*/ - if(rd!=sizeof(node_t)) { + + if(rd!=sizeof(node_t)) continue; -/* - ListBox->Items->Add("Error "+AnsiString(rderr)+" reading record for" - " node "+AnsiString(n+1)); - break; -*/ - } + sprintf(str,"%3d ",n+1); switch(node.status) { case NODE_WFC: -- GitLab