|
Lhogho
0.0.027
|
Functions | |
| void | use_stdout (chars_t string, int len) |
| prints text to standard output | |
| int | use_stdeof () |
| returns eof status of standard output | |
| char_t | use_stdin () |
| reads a character | |
| int | main (int argc, char *argv[]) |
| void use_stdout | ( | chars_t | string, |
| int | len | ||
| ) |
| string | text to print |
| len | length of text |
This is a call-back outter function for dumping atom contents to standard output.
{
if( len==-1 ) len = STRLEN( string );
//printf("len=%d\n",len);
for( ; len>0; len--, string++ )
{
//printf("|%x|",*string);
// ignore 0x0D (^M,CR) if not followed by 0x0A (^J,LF)
int crlf = (DEBAR(*string)==0x0D) && (DEBAR(*(string+1))==0x0A);
if( !crlf )
{
char_t wc[2];
wc[0] = DEBAR(*string);
wc[1] = 0;
char* buf =(char*) UTF16_to_UTF8(wc);
printf("%s",buf);
//printf(" %x-",*string);
/*
switch ( strlen(buf) )
{
case 1: printf("%c",(char)buf[0]); break;
case 2: printf("%c%c",(unsigned char)buf[0],(unsigned char)buf[1],(char)buf[0],(char)buf[1]); break;
case 3: printf("%c%c%c",(char)buf[0],(char)buf[1],(char)buf[2]); break;
case 4: printf("%c%c%c%c",(char)buf[0],(char)buf[1],(char)buf[2],(char)buf[3]); break;
case 5: printf("%c%c%c%c%c",(char)buf[0],(char)buf[1],(char)buf[2],(char)buf[3],(char)buf[4]); break;
case 6: printf("%c%c%c%c%c%c",(char)buf[0],(char)buf[1],(char)buf[2],(char)buf[3],(char)buf[4],(char)buf[5]); break;
}
*/
DEALLOC( buf );
//printf( "%S", wc );
}
// PUTCHAR( DEBAR(*string), stdout );
//if( *string!=DEBAR(*string) )
//PUTCHAR( TEXT('?'), stdout );
}
}
| void use_stdeof | ( | ) |
This is a call-back inner_eof function for checking standard input.
{
return feof(stdin)?1:0;
}
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
{
int result;
//fwide(stdout,1);
setvbuf( stdin, NULL, _IONBF, 0 );
#ifdef WINDOWS
// Try to change the code page to UTF-8
//if( system("chcp 65001 >nul")!=0 )
//{
// system("chcp.com 65001 >nul");
//}
/*
int i;
printf("\n\npage c3: ");
for( i=0x80; i<0xbf; i++ ) printf("%c%c",(char)0xc3,(char)i);
printf("\n manual:");
printf("%c%c",(char)0xc3,(char)0x9c);
printf("%c%c",(char)0xc3,(char)0xbc);
printf("%c%c",(char)0xc3,(char)0xa4);
printf("%c%c",(char)0xc3,(char)0x9f);
*/
#endif
//printf("1. initialization\n");
init_compiler( use_stdout, use_stdin, use_stdeof );
//__asm__ volatile ("int $3");
//printf("2. options\n");
set_options( argc, argv );
//printf("3. compile\n");
result = compile_from_options( );
if( !result &&
!OPTION_MAKE_EXECUTABLE &&
!OPTION_MAKE_EXECUTABLE_COMPILER &&
IS_NOT_EMPTY(BODY(root)) )
{
//printf("4. run\n");
result = run_function( root );
}
//printf("5. finalization\n");
finit_compiler( );
#ifdef WINDOWS
// Try to change the code page to UTF-8
// if( system("chcp 850 >nul")!=0 )
// {
// system("chcp.com 850 >nul");
// }
//int i;
//printf("\n\npage c3: ");
//for( i=0x80; i<0xbf; i++ ) printf("%c%c",(char)0xc3,(char)i);
//printf("\n manual:");
//printf("%c%c",(char)0xc3,(char)0x9c);
//printf("%c%c",(char)0xc3,(char)0xbc);
//printf("%c%c",(char)0xc3,(char)0xa4);
//printf("%c%c",(char)0xc3,(char)0x9f);
#endif
//printf("6. end\n");
//printf("\n\n");
//printf("%c%c",(char)0xc3,(char)0x9c);
//printf("%c%c",(char)0xc3,(char)0xbc);
//printf("%c%c",(char)0xc3,(char)0xa4);
//printf("%c%c",(char)0xc3,(char)0x9f);
//printf("\n\npage c3: ");
//for( i=0x80; i<0xbf; i++ ) printf("%c%c",(char)0xc3,(char)i);
//printf("\n manual:");
//printf("%c%c",(char)0xc3,(char)0x9c);
//printf("%c%c",(char)0xc3,(char)0xbc);
//printf("%c%c",(char)0xc3,(char)0xa4);
//printf("%c%c",(char)0xc3,(char)0x9f);
return result;
}