void inner_main(int argc, char **argv) { register_procs(); read_config_file(); /* now get on with the main business of the program ... */ gh_eval_str("(tortoise-turn 30)"); /* example: call C-defined procedure */ gh_eval_str("(polygon 3)"); /* example: call Scheme-defined procedure */ gh_repl(argc, argv); }
void read_config_file(void) { char *homedir; char *filename; FILE *file; char inputLine[1024]; /* hack: assume each line is less than 1024 chars */ char *p; /* open $HOME/.tortoise */ homedir = getenv("HOME"); if (homedir == NULL) return; filename = (char *)malloc(strlen(homedir) + strlen(CONFIGFILENAME) + strlen(DIRECTORYSEPARATOR) + 1); if (filename == NULL) return; sprintf(filename, "%s%s%s", homedir, DIRECTORYSEPARATOR, CONFIGFILENAME); file = fopen(filename, "r"); free(filename); if (file == NULL) return; /* spin through the file */ while (1) { p = fgets(inputLine, sizeof(inputLine), file); if (p == NULL) break; gh_eval_str(p); } fclose(file); }
void script_parse (char *string) { #ifdef USE_GUILE gh_eval_str (string); #endif #ifdef USE_PERL /* perl_method_call(); */ #endif }
void script_load (char *filename, int type) { int fh; char *buf, *tmpbuf; struct stat s; if ((fh = open (filename, O_RDONLY)) == -1) { perror ("BMUD script"); textfield_add (strerror (errno), MESSAGE_ERR); textfield_add (": ", MESSAGE_ERR); textfield_add (filename, MESSAGE_ERR); textfield_add ("\n", MESSAGE_ERR); return; } fstat (fh, &s); buf = (char *)malloc (s.st_size); read (fh, buf, s.st_size); close (fh); #ifdef USE_GUILE if (type == SCRIPT_GUILE) { gh_eval_str (buf); free (buf); return; } #endif #ifdef USE_PERL perl_parse (perl_env, NULL, 1, NULL, NULL); #endif tmpbuf = (char *)malloc (1024); sprintf (tmpbuf, "I can't support %s.\n", filename); textfield_add (tmpbuf, MESSAGE_ERR); free (buf); free (tmpbuf); return; }