HB_ERRCODE hb_gtGetPos( int * piRow, int * piCol ) { PHB_GT pGT; HB_TRACE( HB_TR_DEBUG, ( "hb_gtGetPos(%p, %p)", piRow, piCol ) ); pGT = hb_gt_Base(); if( pGT ) { HB_GTSELF_GETPOS( pGT, piRow, piCol ); hb_gt_BaseFree( pGT ); return HB_SUCCESS; } *piRow = *piCol = 0; return HB_FAILURE; }
static void hb_gt_std_Exit( PHB_GT pGT ) { PHB_GTSTD pGTSTD; int iRow, iCol; HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Exit(%p)", pGT ) ); HB_GTSELF_REFRESH( pGT ); HB_GTSELF_GETPOS( pGT, &iRow, &iCol ); pGTSTD = HB_GTSTD_GET( pGT ); HB_GTSUPER_EXIT( pGT ); if( pGTSTD ) { /* update cursor position on exit */ if( pGTSTD->fStdoutConsole && pGTSTD->iLastCol > 0 ) { hb_gt_std_newLine( pGTSTD ); ++pGTSTD->iRow; } while( ++pGTSTD->iRow <= iRow ) hb_gt_std_newLine( pGTSTD ); #if defined( HB_HAS_TERMIOS ) if( pGTSTD->fRestTTY ) tcsetattr( pGTSTD->hStdin, TCSANOW, &pGTSTD->saved_TIO ); #endif if( pGTSTD->iLineBufSize > 0 ) hb_xfree( pGTSTD->sLineBuf ); if( pGTSTD->nTransBufSize > 0 ) hb_xfree( pGTSTD->sTransBuf ); if( pGTSTD->szCrLf ) hb_xfree( pGTSTD->szCrLf ); hb_xfree( pGTSTD ); } }