#include "gacela_GL.h"
#include "gacela_FTGL.h"
-// Generic variables
+// Global variables
int ctrl_c = 0;
int pid = 0;
+char *history_path = NULL;
+
static int
find_matching_paren (int k)
}
void
-look_child_handler (int signum)
+child_dies_handler (int signum)
{
- printf ("Hola\n");
+ write_history (history_path);
+ exit (0);
}
static void
init_gacela_client ()
{
- struct sigaction ctrl_c_action, look_child_action;
+ struct sigaction ctrl_c_action, child_dies_action;
// init bouncing parens
rl_bind_key (')', match_paren);
// SIGALRM
if (pid != 0) {
- look_child_action.sa_handler = look_child_handler;
- sigemptyset (&look_child_action.sa_mask);
- look_child_action.sa_flags = 0;
+ child_dies_action.sa_handler = child_dies_handler;
+ sigemptyset (&child_dies_action.sa_mask);
+ child_dies_action.sa_flags = 0;
- sigaction (SIGALRM, &look_child_action, NULL);
+ sigaction (SIGALRM, &child_dies_action, NULL);
}
}
&& line[i - 1] != '\\')
break;
}
+ else if (line[i] == ';') {
+ // Comment until endline
+ break;
+ }
else if (line[i] == c)
opened++;
else if (line[i] == k)
int n;
SCM buffer;
char *line = NULL, *line_for_sending = NULL;
- char *history_path;
int opened = 0;
// Command line
}
else {
line_for_sending = realloc (line_for_sending, strlen (line_for_sending) + strlen (line) + 2);
- line_for_sending = strcat (line_for_sending, " ");
+ line_for_sending = strcat (line_for_sending, "\n");
line_for_sending = strcat (line_for_sending, line);
}
scm_close (SCM_CDR (fd2));
init_gacela (dirname (argv[0]));
start_local_server (scm_cons (SCM_CAR (fd2), SCM_CDR (fd1)));
+ kill (getppid (), SIGALRM);
}
else {
scm_close (SCM_CDR (fd1));