}
static void*
-init_gacela (void *data, int argc, char **argv)
+init_scheme (void *data, int argc, char **argv)
{
// Guile configuration
scm_c_eval_string ("(set-repl-prompt! \"gacela> \")");
}
void
-start_single ()
+init_gacela (char *path)
{
- char *argv = "guile";
-
- scm_shell (1, &argv);
+ scm_with_guile (&init_scheme, NULL);
+ load_scheme_files (path);
+ scm_c_eval_string ("(init-video-mode)");
}
void
main (int argc, char *argv[])
{
char *arg;
- int mode = 0; // shell: 1, server: 2, client: 3
+ int mode = 0; // dev: 1, server: 2, client: 3
char *host;
int port = 0;
int i;
// Checking arguments
for (i = 1; i < argc; i++) {
- if (strcmp (argv[i], "--shell-mode") == 0)
+ if (strcmp (argv[i], "--dev") == 0)
mode = 1;
else if (strncmp (argv[i], "--server", 8) == 0) {
mode = 2;
scm_init_guile ();
if (mode == 1) {
- scm_with_guile (&init_gacela, NULL);
- load_scheme_files (dirname (argv[0]));
- start_single ();
- }
- else if (mode == 2 && port != 0) {
- scm_with_guile (&init_gacela, NULL);
- load_scheme_files (dirname (argv[0]));
- start_server (port);
- }
- else if (mode == 3 && port != 0)
- start_remote_client (host, port);
- else {
fd1 = scm_pipe ();
fd2 = scm_pipe ();
pid = fork ();
if (pid == 0) {
scm_close (SCM_CAR (fd1));
scm_close (SCM_CDR (fd2));
- scm_with_guile (&init_gacela, NULL);
- load_scheme_files (dirname (argv[0]));
+ init_gacela (dirname (argv[0]));
start_local_server (scm_cons (SCM_CAR (fd2), SCM_CDR (fd1)));
}
else {
kill (pid, SIGKILL);
}
}
+ else if (mode == 2 && port != 0) {
+ init_gacela (dirname (argv[0]));
+ start_server (port);
+ }
+ else if (mode == 3 && port != 0)
+ start_remote_client (host, port);
+ else {
+ init_gacela (dirname (argv[0]));
+ scm_shell (argc, argv);
+ SDL_Quit ();
+ }
}