On Thu, 04 Mar 2010, Mindaugas Kavaliauskas wrote:

Hi,

> But one problem we have... There is code:
> /* 1001 and 7008 are standard ADS Open Errors that will usually be
> sharing issues */
> HB_ERRCODE errOsCode = u32RetVal == 1001 || u32RetVal == 7008 ? 32 : 0;
> fRetry = commonError( pArea, EG_OPEN, ( HB_ERRCODE ) u32RetVal,
> errOsCode, ( const char * ) pOpenInfo->abName, EF_CANRETRY |
> EF_CANDEFAULT, &pError ) == E_RETRY;
> 
> This interacts with default error handler behavior in errorsys.

Yes. And if we change it then NETERR() will stop to work.

> Sharing violation is not indicated by some error subCode and general
> EDBF_OPEN_DBF is returned in dbf rdd. So, osCode is the only way to
> detect sharing violation and it is hardcoded to DOS error codes.

Yes it is. It's exactly replicated Clipper behavior.

> Perhaps we must leave this hack, or... extend default error handler
> to adapt to rddads. It is also not a nice solution, because ADS is
> not even in core code.
> Any proposal on this issue?

Here is the problem with custom user code using own error handlers.
I'm afraid it's hard to change it because it may introduce very serious
bugs to valid Clipper code.
I also do not like it but I'm afraid we have to leave it.

BTW ADS was not RTE compatible with Clipper and native RDDs and flags
like RETRY or DEFAULT were not set properly so some user error handlers
cannot work properly. I cleaned few of them but I think some RTE still
should be fixed.

best regards,
Przemek
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to