xref: /minix3/external/bsd/flex/dist/examples/manual/userinit.lex (revision 357f1050293be536ca8309aae20889945ce99fc1)
1*357f1050SThomas Veerman %{
2*357f1050SThomas Veerman #define YY_USER_INIT open_input_file()
3*357f1050SThomas Veerman 
4*357f1050SThomas Veerman extern FILE *yyin;
5*357f1050SThomas Veerman 
open_input_file(void)6*357f1050SThomas Veerman void open_input_file(void)
7*357f1050SThomas Veerman {
8*357f1050SThomas Veerman   char *file_name,buffer[1024];
9*357f1050SThomas Veerman 
10*357f1050SThomas Veerman   yyin      = NULL;
11*357f1050SThomas Veerman 
12*357f1050SThomas Veerman   while(yyin == NULL){
13*357f1050SThomas Veerman     printf("Input file: ");
14*357f1050SThomas Veerman     file_name = fgets(buffer,1024,stdin);
15*357f1050SThomas Veerman     if(file_name){
16*357f1050SThomas Veerman       file_name[strlen(file_name)-1] = '\0';
17*357f1050SThomas Veerman       yyin = fopen(file_name,"r");
18*357f1050SThomas Veerman       if(yyin == NULL){
19*357f1050SThomas Veerman         printf("Unable to open \"%s\"\n",file_name);
20*357f1050SThomas Veerman       }
21*357f1050SThomas Veerman     } else {
22*357f1050SThomas Veerman       printf("stdin\n");
23*357f1050SThomas Veerman       yyin = stdin;
24*357f1050SThomas Veerman       break;
25*357f1050SThomas Veerman     }
26*357f1050SThomas Veerman   }
27*357f1050SThomas Veerman }
28*357f1050SThomas Veerman 
29*357f1050SThomas Veerman %}
30*357f1050SThomas Veerman %%
31