![]() ![]() | ![]() |
version 1.10, 2000/12/06 01:27:16 | version 1.15, 2001/06/04 02:49:48 | ||
---|---|---|---|
|
|
||
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | ||
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | ||
* | * | ||
* $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.9 2000/12/05 01:51:35 noro Exp $ | * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.14 2001/03/08 07:49:13 noro Exp $ | ||
*/ | */ | ||
#include <ctype.h> | #include <ctype.h> | ||
#include "ca.h" | #include "ca.h" | ||
|
|
||
extern int main_parser; | extern int main_parser; | ||
extern char *parse_strp; | extern char *parse_strp; | ||
extern int recv_intr; | |||
static int skipspace(); | static int skipspace(); | ||
static int Getc(); | static int Getc(); | ||
|
|
||
w_purge_stdin(); | w_purge_stdin(); | ||
#elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) | #elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) | ||
stdin->_ptr = stdin->_base; stdin->_cnt = 0; | stdin->_ptr = stdin->_base; stdin->_cnt = 0; | ||
#elif defined(__MACH__) && defined(__ppc__) | |||
stdin->_r = 0; stdin->_p = stdin->_bf._base; | |||
#else | #else | ||
--->FIXIT | --->FIXIT | ||
#endif | #endif | ||
|
|
||
for ( c = Getc(); ; ) | for ( c = Getc(); ; ) | ||
switch ( c ) { | switch ( c ) { | ||
case ' ': case '\t': | case ' ': case '\t': case '\r': | ||
c = Getc(); break; | c = Getc(); break; | ||
case '\n': | case '\n': | ||
c = afternl(); break; | c = afternl(); break; | ||
|
|
||
int c; | int c; | ||
if ( fp ) { | if ( fp ) { | ||
c = getc(fp); | #if FEP | ||
if ( do_fep && isatty(fileno(fp)) ) | |||
c = readline_getc(); | |||
else | |||
#endif | |||
c = getc(fp); | |||
#if defined(VISUAL) | |||
if ( recv_intr ) { | |||
#include <signal.h> | |||
if ( recv_intr == 1 ) { | |||
recv_intr = 0; | |||
int_handler(SIGINT); | |||
} else { | |||
recv_intr = 0; | |||
ox_usr1_handler(0); | |||
} | |||
} | |||
#endif | |||
if ( c == EOF ) | if ( c == EOF ) | ||
return c; | return c; | ||
if ( asir_infile->encoded ) | if ( asir_infile->encoded ) | ||
|
|
||
if ( fp ) { | if ( fp ) { | ||
if ( asir_infile->encoded ) | if ( asir_infile->encoded ) | ||
c = (int)encrypt_char((unsigned char)c); | c = (int)encrypt_char((unsigned char)c); | ||
ungetc(c,fp); | #if FEP | ||
if ( do_fep && isatty(fileno(fp)) ) | |||
readline_ungetc(); | |||
else | |||
#endif | |||
ungetc(c,fp); | |||
} else | } else | ||
*--parse_strp = c; | *--parse_strp = c; | ||
} | } | ||
|
|
||
*s++ = c; | *s++ = c; | ||
*s = 0; | *s = 0; | ||
} | } | ||
#if FEP | |||
static char *readline_line; | |||
static int readline_nc,readline_index; | |||
char *readline_console(); | |||
int readline_getc() | |||
{ | |||
char buf[BUFSIZ]; | |||
if ( !readline_nc ) { | |||
if ( readline_line ) | |||
free(readline_line); | |||
sprompt(buf); | |||
readline_line = readline_console(buf); | |||
readline_nc = strlen(readline_line); | |||
readline_index = 0; | |||
} | |||
readline_nc--; | |||
return readline_line[readline_index++]; | |||
} | |||
void readline_ungetc() | |||
{ | |||
readline_nc++; readline_index--; | |||
} | |||
char *readline_console(prompt) | |||
char *prompt; | |||
{ | |||
char *line; | |||
int exp_result; | |||
char *expansion; | |||
while ( 1 ) { | |||
line = (char *)readline(prompt); | |||
if ( line && *line ) { | |||
using_history(); | |||
exp_result = history_expand(line,&expansion); | |||
if ( !exp_result ) { | |||
free(expansion); | |||
for ( ; isspace(*line); line++ ); | |||
add_history(line); | |||
break; | |||
} else if ( exp_result > 0 ) { | |||
free(line); | |||
line = expansion; | |||
break; | |||
} | |||
} | |||
} | |||
return line; | |||
} | |||
#endif |