2010-09-28 17:46 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/include/hbcom.ch
    + added new error constant value: HB_COM_ERR_IO
  * harbour/src/rtl/hbcom.c
    + added translation for some important OS error code
      in *nix builds
    + added translation ERROR_TIMEOUT -> HB_COM_ERR_TIMEOUT
      in Windows build.
      TODO: check real error codes for it and also for other
            operations like opening the same port more then
            once and add valid translations
    ; TODO: add some basic trnaslation for OS2 error codes.
      HB_COM_ERR_TIMEOUT seems to be most important for portable
      programs.
This commit is contained in:
Przemyslaw Czerpak
2010-09-28 15:47:08 +00:00
parent 885664701c
commit a50c4b0baf
3 changed files with 56 additions and 3 deletions

View File

@@ -16,6 +16,21 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-09-28 17:46 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcom.ch
+ added new error constant value: HB_COM_ERR_IO
* harbour/src/rtl/hbcom.c
+ added translation for some important OS error code
in *nix builds
+ added translation ERROR_TIMEOUT -> HB_COM_ERR_TIMEOUT
in Windows build.
TODO: check real error codes for it and also for other
operations like opening the same port more then
once and add valid translations
; TODO: add some basic trnaslation for OS2 error codes.
HB_COM_ERR_TIMEOUT seems to be most important for portable
programs.
2010-09-28 09:56 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rtl/hbcom.c
! fixed typo in MS-Windows builds

View File

@@ -125,5 +125,6 @@
#define HB_COM_ERR_BUSY 6
#define HB_COM_ERR_OTHER 7
#define HB_COM_ERR_ALREADYOPEN 8
#define HB_COM_ERR_IO 9
#endif /* HB_COM_CH_ */

View File

@@ -296,7 +296,24 @@ int hb_comLastNum( void )
static void hb_comSetOsError( PHB_COM pCom, HB_BOOL fError )
{
pCom->oserr = fError ? HB_COM_GETERROR() : 0;
pCom->error = pCom->oserr ? HB_COM_ERR_OTHER : 0;
switch( pCom->oserr )
{
case 0:
pCom->error = 0;
break;
case EIO:
pCom->error = HB_COM_ERR_IO;
break;
case EBUSY:
pCom->error = HB_COM_ERR_BUSY;
break;
case EAGAIN:
pCom->error = HB_COM_ERR_TIMEOUT;
break;
default:
pCom->error = HB_COM_ERR_OTHER;
break;
}
}
#if defined( HB_OS_UNIX )
@@ -1260,7 +1277,19 @@ int hb_comOpen( int iPort )
static void hb_comSetOsError( PHB_COM pCom, BOOL fError )
{
pCom->oserr = fError ? GetLastError() : 0;
pCom->error = pCom->oserr ? HB_COM_ERR_OTHER : 0;
switch( pCom->oserr )
{
case 0:
pCom->error = 0;
break;
case ERROR_TIMEOUT:
pCom->error = HB_COM_ERR_TIMEOUT;
break;
default:
pCom->error = HB_COM_ERR_OTHER;
break;
}
}
int hb_comInputCount( int iPort )
@@ -1945,7 +1974,15 @@ int hb_comOpen( int iPort )
static void hb_comSetOsError( PHB_COM pCom, APIRET rc )
{
pCom->oserr = rc;
pCom->error = rc != NO_ERROR ? HB_COM_ERR_OTHER : 0;
switch( pCom->oserr )
{
case NO_ERROR:
pCom->error = 0;
break;
default:
pCom->error = HB_COM_ERR_OTHER;
break;
}
}
int hb_comInputCount( int iPort )