]> Pileus Git - ~andy/rsl/blob - rapic_to_radar.c
RSL v1.42
[~andy/rsl] / rapic_to_radar.c
1 #include "rsl.h"
2 #include <unistd.h>
3
4 extern Radar *rapic_radar;
5 extern int rapicparse(void);
6
7 Radar *RSL_rapic_to_radar(char *infile)
8 {
9   /* Attach infile to stdin and call the parser. */
10
11   FILE *fp;
12   Radar *radar;
13   int save_fd;
14   
15   radar = NULL;
16   if (infile == NULL) {
17         save_fd = dup(0);
18         fp = fdopen(save_fd, "r");
19   }  else {
20         if ((fp = fopen(infile, "r")) == NULL) {
21           perror(infile);
22           return radar;
23         }
24   }
25   fp = uncompress_pipe(fp); /* Transparently gunzip. */
26   close(0); dup(fileno(fp)); /* Redirect stdin. */
27
28   rapicparse();
29   radar = rapic_radar;
30
31   rsl_pclose(fp);
32         
33   return radar;
34 }