]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Thu, 7 Jul 2011 12:48:41 +0000 (12:48 +0000)
committerjsancho <devnull@localhost>
Thu, 7 Jul 2011 12:48:41 +0000 (12:48 +0000)
src/gacela.c
src/gacela_loader.scm
src/gacela_server.scm [new file with mode: 0644]

index e976bf6fb74383257c2e6fd5c092ce33f2814784..cb464a519d85f869da83bc5f5ceea87574661a40 100644 (file)
@@ -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 ();
+  }
 }
index 183df1daaf0c09588c16e7e49ce955f64ad6d786..c5f97faba24d783a623a7173c4b603eccb536c75 100644 (file)
@@ -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 (file)
index 0000000..e7a69c6
--- /dev/null
@@ -0,0 +1,27 @@
+;;; Gacela, a GNU Guile extension for fast games development
+;;; Copyright (C) 2009 by Javier Sancho Fernandez <jsf at jsancho dot org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+
+(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)))
+)