fixed input system (callback added), more ivac tests
[my-code/ivac.git] / src / ivac.c
index c567f28..f4995a7 100644 (file)
@@ -46,7 +46,10 @@ int main(int argc,char **argv) {
   input_init(&(ivac.input));
 
   /* network init */
-  network_init(&(ivac.net));
+  if(network_init(&(ivac.net))==N_ERROR) {
+    printf("[ivac] use 'fuser -n tcp %d' to kill that process",ivac.net.l_port);
+    return ERROR;
+  }
 
   /* add listening port + stdin to (read) event system */
   event_math(ivac.net.l_fd,&(ivac.event),READ,ADD);
@@ -55,6 +58,10 @@ int main(int argc,char **argv) {
   /* start event system - callbacks used: ivac_event_cb + ivac_regular_cb */
   event_start(&(ivac.event),(void *)&ivac,ivac_event_cb,ivac_regular_cb);
 
+  network_shutdown(&(ivac.net));
+
+  input_shutdown(&(ivac.input));
+
   return SUCCESS;
 }
 
@@ -79,7 +86,8 @@ int ivac_event_cb(t_event *event,void *ptr) {
         receive_info(channel,&(ivac->net));
 
   /* user interaction */
-  if(FD_ISSET(0,&(event->rfds))) input_get_char(ivac);
+  if(FD_ISSET(0,&(event->rfds)))
+    input_get_char(&(ivac->input),ivac_display,ivac);
     
   return SUCCESS;
 }
@@ -90,3 +98,14 @@ int ivac_regular_cb(t_event *event,void *ptr) {
 
   return SUCCESS;
 }
+
+int ivac_display(t_input *input,void *ptr) {
+
+  t_ivac *ivac;
+
+  ivac=(t_ivac *)ptr;
+
+  if(input->content[input->c_count-1]=='q') ivac->event.status=DISABLED;
+
+   return SUCCESS;
+}