-#include <stdio.h>
-#include <readline/readline.h>
-#include <sys/types.h>
-#include <unistd.h>
+#include <GL/gl.h>
#include <libguile.h>
+#include "gacela_SDL.h"
-/* Read-Send-Print-Loop */
-void rspl(int pin, int pout)
+static void*
+register_functions (void* data)
{
- static char *line = (char *)NULL;
- int exit = 0;
-
- while (!exit) {
- if (line) {
- free(line);
- line = (char *)NULL;
- }
-
- line = readline("gacela>");
-
- if (line && *line) {
- add_history(line);
- if (strcmp(line, "(quit)") == 0)
- exit = 1;
- else {
- write(pout, line, strlen(line));
- write(pout, "\n", 1);
- }
- }
- }
+ SDL_register_functions (NULL);
+ return NULL;
}
-int main (int argc, char *argv[])
+int
+main (int argc, char *argv[])
{
- pid_t cpid;
- int pfd[2];
-
- pipe(pfd);
- cpid = fork();
- if (cpid != 0) {
- rspl(pfd[0], pfd[1]);
- return 0;
- }
- else {
- char buf;
- static char *line = (char *)NULL;
-
- dup2(pfd[0], 0);
- close(pfd[0]);
-
- while (1) {
- scm_init_guile();
- scm_c_eval_string("(if (char-ready? (current-input-port)) (format #t \"~a guile~%\" (read)))");
- /*
- if (line) {
- free(line);
- line = (char *)NULL;
- }
-
- line = readline("");
- if (line && *line) {
- printf("%s-\n", line);
- }
- */
- }
- }
+ scm_with_guile (®ister_functions, NULL);
+ scm_init_guile ();
+ scm_c_eval_string ("(set-repl-prompt! \"gacela>\")");
+ scm_c_eval_string ("(use-modules (ice-9 readline))");
+ scm_c_eval_string ("(activate-readline)");
+ scm_shell (argc, argv);
}