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