Initial version
[spider.git] / perl / persist.c
1         
2         /* persistent.c */
3 #include <EXTERN.h>
4 #include <perl.h>
5         
6         /* 1 = clean out filename's symbol table after each request, 0 = don't */
7 #ifndef DO_CLEAN
8 # define DO_CLEAN 0
9 #endif
10         
11 static PerlInterpreter *perl = NULL;
12
13 int     main(int argc, char **argv, char **env)
14 {
15         char *embedding[] = { "", "persistent.pl"};
16         char *args[] = { "", DO_CLEAN, NULL     };
17         char filename [1024];
18         int exitstatus = 0;
19         
20         if ((perl = perl_alloc()) == NULL) {
21                 fprintf(stderr, "no memory!");
22                 exit(1);
23         }
24         perl_construct(perl);
25         
26         exitstatus = perl_parse(perl, NULL, 2, embedding, NULL);
27         
28         if(!exitstatus) {
29                 exitstatus = perl_run(perl);
30                 
31                 while(printf("Enter file name: ") && gets(filename)) {
32                         
33                         /* call the subroutine, passing it the filename as an argument */
34                         args[0] = filename;
35                         perl_call_argv("Embed::Persistent::eval_file",
36                                                    G_DISCARD | G_EVAL, args);
37                         
38                         /* check $@ */
39                         if(SvTRUE(GvSV(errgv)))
40                                 fprintf(stderr, "eval error: %s\n", SvPV(GvSV(errgv),na));
41                 }
42         }
43         
44         perl_destruct_level = 0;
45         perl_destruct(perl);
46         perl_free(perl);
47         exit(exitstatus);
48 }