From 5ee3c25bca221f5bf3654c91bc99deefc2a6a3e5 Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Wed, 27 Jun 2007 19:02:23 +0000 Subject: [PATCH] 2007-06-27 21:02 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/rtl/gttrm/gttrm.c * restore default color on exit * harbour/source/rdd/dbf1.c * cleaned few warnings * harbour/make_tgz.sh * harbour/make_gnu.sh * if HB_WITHOUT_GTSLN not set then check if slang.h exists in one of known locations and set HB_WITHOUT_GTSLN automatically --- harbour/ChangeLog | 12 ++++++++++++ harbour/make_gnu.sh | 16 ++++++++++++++++ harbour/make_tgz.sh | 17 ++++++++++++++++- harbour/source/rdd/dbf1.c | 5 +++-- harbour/source/rtl/gttrm/gttrm.c | 25 ++++++++++++++++--------- 5 files changed, 63 insertions(+), 12 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index eb53fa7f8f..aac5355d24 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,18 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-06-27 21:02 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/source/rtl/gttrm/gttrm.c + * restore default color on exit + + * harbour/source/rdd/dbf1.c + * cleaned few warnings + + * harbour/make_tgz.sh + * harbour/make_gnu.sh + * if HB_WITHOUT_GTSLN not set then check if slang.h exists + in one of known locations and set HB_WITHOUT_GTSLN automatically + 2007-06-27 19:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/common.mak ! removed double quotas from files extension definitions diff --git a/harbour/make_gnu.sh b/harbour/make_gnu.sh index 97c75ee302..9f61be7433 100755 --- a/harbour/make_gnu.sh +++ b/harbour/make_gnu.sh @@ -60,6 +60,22 @@ if [ -z "$HB_GPM_MOUSE" ]; then export HB_GPM_MOUSE fi +if [ -z "${HB_WITHOUT_GTSLN}" ]; then + HB_WITHOUT_GTSLN=yes + case "$HB_ARCHITECTURE" in + linux|bsd|darwin|hpux|sunos) + for dir in /usr /usr/local /sw /opt/local + do + if [ -f ${dir}/include/slang.h ] || \ + [ -f ${dir}/include/slang/slang.h ]; then + HB_WITHOUT_GTSLN=no + fi + done + ;; + esac + export HB_WITHOUT_GTSLN +fi + if [ -z "$HB_COMMERCE" ]; then export HB_COMMERCE=no; fi if [ "$HB_COMMERCE" = yes ] diff --git a/harbour/make_tgz.sh b/harbour/make_tgz.sh index 36269967d2..82d98aa9e3 100755 --- a/harbour/make_tgz.sh +++ b/harbour/make_tgz.sh @@ -145,6 +145,22 @@ if [ -z "$HB_GPM_MOUSE" ]; then export HB_GPM_MOUSE fi +if [ -z "${HB_WITHOUT_GTSLN}" ]; then + HB_WITHOUT_GTSLN=yes + case "$HB_ARCHITECTURE" in + linux|bsd|darwin|hpux|sunos) + for dir in /usr /usr/local /sw /opt/local + do + if [ -f ${dir}/include/slang.h ] || \ + [ -f ${dir}/include/slang/slang.h ]; then + HB_WITHOUT_GTSLN=no + fi + done + ;; + esac + export HB_WITHOUT_GTSLN +fi + case "$HB_ARCHITECTURE" in linux) ;; @@ -156,7 +172,6 @@ case "$HB_ARCHITECTURE" in [ -z "$HB_WITHOUT_X11" ] && export HB_WITHOUT_X11=yes ;; dos|w32) - [ -z "${HB_WITHOUT_GTSLN}" ] && export HB_WITHOUT_GTSLN=yes [ -z "$HB_WITHOUT_X11" ] && export HB_WITHOUT_X11=yes ;; *) diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index fdc6a153ac..5a3921a1c7 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -924,6 +924,8 @@ static ERRCODE hb_dbfLockData( DBFAREAP pArea, break; #endif default: + *ulPos = *ulFlSize = *ulRlSize = 0; + *iDir = 0; return FAILURE; } return SUCCESS; @@ -2656,8 +2658,7 @@ static ERRCODE hb_dbfInfo( DBFAREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) HB_FOFFSET ulPos, ulFlSize, ulRlSize; int iDir; - if( hb_dbfLockData( pArea, &ulPos, &ulFlSize, &ulRlSize, &iDir ) == FAILURE ) - ulPos = 0; + hb_dbfLockData( pArea, &ulPos, &ulFlSize, &ulRlSize, &iDir ); hb_itemPutNInt( pItem, ulPos ); break; } diff --git a/harbour/source/rtl/gttrm/gttrm.c b/harbour/source/rtl/gttrm/gttrm.c index 38327b18d4..7c4a801fb6 100644 --- a/harbour/source/rtl/gttrm/gttrm.c +++ b/harbour/source/rtl/gttrm/gttrm.c @@ -1416,12 +1416,16 @@ again: /* * LINUX terminal operations */ -static void hb_gt_trm_LinuxSetAutoMargin( int iAM ) +static void hb_gt_trm_LinuxSetTermMode( int iAM ) { - HB_TRACE(HB_TR_DEBUG, ("hb_gt_trm_LinuxSetAutoMargin(%d)", iAM)); + HB_TRACE(HB_TR_DEBUG, ("hb_gt_trm_LinuxSetTermMode(%d)", iAM)); if( iAM != s_termState.iAM ) { + if( iAM == 0 ) + { + hb_gt_trm_termOut( ( BYTE * ) "\x1B[m", 3 ); + } hb_gt_trm_termOut( ( BYTE * ) ( iAM ? "\x1B[?7h" : "\x1B[?7l" ), 5 ); s_termState.iAM = iAM; } @@ -1623,12 +1627,16 @@ static void hb_gt_trm_XtermSetAttributes( int iAttr ) /* * ANSI terminal operations */ -static void hb_gt_trm_AnsiSetAutoMargin( int iAM ) +static void hb_gt_trm_AnsiSetTermMode( int iAM ) { - HB_TRACE(HB_TR_DEBUG, ("hb_gt_trm_AnsiSetAutoMargin(%d)", iAM)); + HB_TRACE(HB_TR_DEBUG, ("hb_gt_trm_AnsiSetTermMode(%d)", iAM)); if( iAM != s_termState.iAM ) { + if( iAM == 0 ) + { + hb_gt_trm_termOut( ( BYTE * ) "\x1B[0m", 4 ); + } /* * disabled until I'll find good PC-ANSI terminal documentation with * detail Auto Margin and Auto Line Wrapping description, [druzus] @@ -2533,7 +2541,7 @@ static void hb_gt_trm_SetTerm( void ) { s_termState.Init = hb_gt_trm_AnsiInit; s_termState.Exit = hb_gt_trm_AnsiExit; - s_termState.SetTermMode = hb_gt_trm_LinuxSetAutoMargin; + s_termState.SetTermMode = hb_gt_trm_LinuxSetTermMode; s_termState.GetCursorPos = hb_gt_trm_AnsiGetCursorPos; s_termState.SetCursorPos = hb_gt_trm_AnsiSetCursorPos; s_termState.SetCursorStyle = hb_gt_trm_LinuxSetCursorStyle; @@ -2552,7 +2560,7 @@ static void hb_gt_trm_SetTerm( void ) { s_termState.Init = hb_gt_trm_AnsiInit; s_termState.Exit = hb_gt_trm_AnsiExit; - s_termState.SetTermMode = hb_gt_trm_LinuxSetAutoMargin; + s_termState.SetTermMode = hb_gt_trm_LinuxSetTermMode; s_termState.GetCursorPos = hb_gt_trm_AnsiGetCursorPos; s_termState.SetCursorPos = hb_gt_trm_AnsiSetCursorPos; s_termState.SetCursorStyle = hb_gt_trm_AnsiSetCursorStyle; @@ -2568,7 +2576,7 @@ static void hb_gt_trm_SetTerm( void ) { s_termState.Init = hb_gt_trm_AnsiInit; s_termState.Exit = hb_gt_trm_AnsiExit; - s_termState.SetTermMode = hb_gt_trm_AnsiSetAutoMargin; + s_termState.SetTermMode = hb_gt_trm_AnsiSetTermMode; s_termState.GetCursorPos = hb_gt_trm_AnsiGetCursorPos; s_termState.SetCursorPos = hb_gt_trm_AnsiSetCursorPos; s_termState.SetCursorStyle = hb_gt_trm_AnsiSetCursorStyle; @@ -2988,6 +2996,7 @@ static void hb_gt_trm_Redraw( int iRow, int iCol, int iSize ) HB_TRACE( HB_TR_DEBUG, ( "hb_gt_trm_Redraw(%d, %d, %d)", iRow, iCol, iSize ) ); + s_termState.SetTermMode( 0 ); while( iSize-- ) { if( !hb_gt_GetScrChar( iRow, iCol + iLen, &bColor, &bAttr, &usChar ) ) @@ -3042,8 +3051,6 @@ static void hb_gt_trm_Refresh( void ) s_termState.iLineBufSize = iWidth; } - s_termState.SetTermMode( 0 ); - HB_GTSUPER_REFRESH(); hb_gt_GetScrCursor( &iRow, &iCol, &iStyle );