home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 December / PCWorld_1998-12_cd.iso / software / sybase / ASA / asa60.exe / data1.cab / cxmp_files / mainch.c < prev    next >
C/C++ Source or Header  |  1998-07-27  |  3KB  |  146 lines

  1. /* MAINCH.C     Character mode specific routines for all example programs
  2. */
  3.             
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <stdarg.h>
  8.  
  9. #if !defined( UNIX ) && !defined( MAC )
  10.     #include <conio.h>
  11. #endif
  12.  
  13. #include "example.h"
  14.  
  15. int                     PageSize = 16;
  16.  
  17. extern int Displaytext( int pos, char *fmt, ... )
  18. /***********************************************/
  19. {
  20.     va_list         arg_ptr;
  21.     char            buffer[ 256 ];
  22.     static int      curpos = 0;
  23.     int             i;
  24.     int             len;
  25.  
  26.     va_start( arg_ptr, fmt );
  27.     vsprintf( buffer, fmt, arg_ptr );
  28.     va_end( arg_ptr );
  29.  
  30.     if( pos <= SCREEN_WIDTH ) {
  31.         for( i = 0; i < ( pos - curpos ); i++ ) {
  32.         putchar( ' ' );
  33.         curpos++;
  34.         }
  35.         len = strlen( buffer );
  36.         for( i = 0; i < len; i++, curpos++ ) {
  37.         if( buffer[ i ] == MY_NEWLINE ) {
  38.             curpos = 0;
  39.         } 
  40.         if( curpos <= SCREEN_WIDTH ) {
  41.         putchar( buffer[ i ] );
  42.         }
  43.     }
  44.     } else { 
  45.         curpos = 0;
  46.     }
  47.     fflush( stdout );
  48.     return( TRUE );
  49. }
  50.  
  51. extern void Display_systemerror( char *message )
  52. /**********************************************/
  53. {
  54.     fprintf( stderr, message );
  55. }
  56.  
  57. extern void Display_refresh( void )
  58. /*********************************/
  59. {
  60. }
  61.  
  62. static void prompt_for_string( char *prompt, char *buff, int len )
  63. /****************************************************************/
  64. {
  65.     printf( "%s: ", prompt );
  66.     fflush( stdout );
  67.     fgets( buff, len, stdin );
  68.     len = strlen( buff );
  69.     if( buff[ len-1 ] == MY_NEWLINE ) {
  70.     buff[ len-1 ] = '\0';
  71.     } else {
  72.     fflush( stdin );        /* entered line longer than len */
  73.     }
  74. }
  75.  
  76. extern void GetValue( char *prompt, char *buff, int len)
  77. /******************************************************/
  78. {
  79.     prompt_for_string( prompt, buff, len );
  80. }
  81.  
  82. extern void GetTableName( char *buff, int len )
  83. /*********************************************/
  84. {
  85.     GetValue( "Enter table name", buff, len );
  86. }
  87.  
  88.  
  89. /* The GETCH_AVAIL macro is used below to indicate whether the getch()
  90.    function is available from CLIB with your compiler
  91. */
  92. #define GETCH_AVAIL    1
  93. #ifdef __IBMC__
  94.     #if __IBMC__ < 200
  95.         #undef GETCH_AVAIL
  96.     #endif
  97. #endif
  98.  
  99. #if defined( UNIX ) || defined( MAC )
  100.     #undef GETCH_AVAIL
  101. #endif
  102.  
  103.  
  104. #if defined( UNIX )
  105. char **_argv;
  106.  
  107. int main( int argc, char *argv[] )
  108. /********************************/
  109.  
  110. #else
  111.  
  112. int main( void )
  113. /**************/
  114.  
  115. #endif
  116.  
  117. {
  118.     int         ch;
  119.  
  120. #ifdef UNIX
  121.     _argv = argv;
  122. #endif
  123.  
  124.     if( !WSQLEX_Init() ) {
  125.         return( 0 );
  126.     }
  127.     for( ; ; ) {
  128.     fprintf( stdout, "==>" );
  129.     fflush( stdout );
  130.     #ifdef GETCH_AVAIL
  131.         ch = getche();
  132.     #else
  133.         /* If your compiler does not support getche(), change
  134.            the definition of GETCH_AVAIL above */
  135.         while( (ch = getchar()) == MY_NEWLINE );
  136.         while( getchar() != MY_NEWLINE );
  137.     #endif
  138.     if( ch == EOF || ch == 'q') break;
  139.     putchar( MY_NEWLINE );
  140.         WSQLEX_Process_Command( ch );
  141.     }
  142.     putchar( MY_NEWLINE );
  143.     WSQLEX_Finish();
  144.     return( 0 );
  145. }
  146.