From: jsancho Date: Thu, 7 Jul 2011 12:48:41 +0000 (+0000) Subject: (no commit message) X-Git-Url: https://git.jsancho.org/?a=commitdiff_plain;h=3957d4932d42a1c3c7292034f0bde8ca5abeb32a;p=gacela.git --- diff --git a/src/gacela.c b/src/gacela.c index e976bf6..cb464a5 100644 --- a/src/gacela.c +++ b/src/gacela.c @@ -128,9 +128,12 @@ void gacela_client (void) { char *line; + char *history_path; + + asprintf (&history_path, "%s/.gacela_history", getenv("HOME")); init_gacela_client (); - read_history (".gacela_history"); + read_history (history_path); while (1) { line = readline ("gacela> "); @@ -143,7 +146,8 @@ gacela_client (void) free (line); } - write_history (".gacela_history"); + write_history (history_path); + free (history_path); } static void* @@ -155,7 +159,7 @@ init_gacela (void *data, int argc, char **argv) scm_c_eval_string ("(activate-readline)"); scm_c_eval_string ("(use-modules (ice-9 optargs))"); scm_c_eval_string ("(use-modules (ice-9 receive))"); - scm_c_eval_string ("(read-enable 'case-insensitive)"); + // scm_c_eval_string ("(read-enable 'case-insensitive)"); // Bindings for C functions and structs SDL_register_functions (NULL); @@ -178,11 +182,15 @@ load_scheme_files (char *path) int main (int argc, char *argv[]) { - /* - scm_with_guile (&init_gacela, NULL); - load_scheme_files (dirname (argv[0])); - scm_shell (argc, argv); - */ - scm_init_guile (); - gacela_client (); + if (fork () == 0) { + scm_with_guile (&init_gacela, NULL); + load_scheme_files (dirname (argv[0])); + //scm_shell (argc, argv); + scm_c_eval_string ("(start-server 1234)"); + scm_c_eval_string ("(run-game)"); + } + else { + scm_init_guile (); + gacela_client (); + } } diff --git a/src/gacela_loader.scm b/src/gacela_loader.scm index 183df1d..c5f97fa 100644 --- a/src/gacela_loader.scm +++ b/src/gacela_loader.scm @@ -21,3 +21,4 @@ (primitive-load-path "gacela_ttf.scm") (primitive-load-path "gacela_mobs.scm") (primitive-load-path "gacela_misc.scm") +(primitive-load-path "gacela_server.scm") diff --git a/src/gacela_server.scm b/src/gacela_server.scm new file mode 100644 index 0000000..e7a69c6 --- /dev/null +++ b/src/gacela_server.scm @@ -0,0 +1,27 @@ +;;; Gacela, a GNU Guile extension for fast games development +;;; Copyright (C) 2009 by Javier Sancho Fernandez +;;; +;;; This program is free software: you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation, either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see . + + +(define start-server #f) + +(let ((server-socket #f) (clients '())) + (set! start-server + (lambda (port) + (set! server-socket (socket PF_INET SOCK_STREAM 0)) + (setsockopt server-socket SOL_SOCKET SO_REUSEADDR 1) + (bind server-socket AF_INET INADDR_ANY port) + (listen server-socket 5))) +)