bugfixes + improvements
[physik/nlsop.git] / nlsop_gui.c
index 477d264..a7b447d 100644 (file)
@@ -222,10 +222,12 @@ int get_command(t_event *event,void *allineed) {
   t_net *net;
   t_display *display;
   t_input *input;
+  unsigned int addr[3];
 
-  net=(t_net *)allineed;
-  display=(t_display *)(allineed+sizeof(t_net));
-  input=(t_input *)(allineed+sizeof(t_net)+sizeof(t_display));
+  memcpy(addr,allineed,3*sizeof(unsigned int));
+  net=(t_net *)addr[0];
+  display=(t_display *)addr[1];
+  input=(t_input *)addr[2];
 
   switch(input->content[0]) {
     case GUI_INFO:
@@ -271,8 +273,15 @@ int main(int argc,char **argv)
 
   int fd;
 
+  unsigned int addr[3];
   void *allyouneed;
 
+  allyouneed=(void *)addr;
+
+  addr[0]=(unsigned int)&net;
+  addr[1]=(unsigned int)&display;
+  addr[2]=(unsigned int)&input;
+
   /* default values */
   strcpy(logfile,LOGFILE);
   strcpy(server_ip,"");
@@ -305,16 +314,11 @@ int main(int argc,char **argv)
     return -1;
   }
 
-  if((fd=open(logfile,O_WRONLY,O_CREAT))<0) {
+  if((fd=open(logfile,O_WRONLY|O_CREAT))<0) {
     printf("unable to open file %s\n",logfile);
     return -1;
   }
 
-  allyouneed=malloc(sizeof(t_net)+sizeof(t_display)+sizeof(t_input));
-  memcpy(allyouneed,&net,sizeof(t_net));
-  memcpy(allyouneed+sizeof(t_net),&display,sizeof(t_display));
-  memcpy(allyouneed+sizeof(t_net)+sizeof(t_display),&input,sizeof(t_input));
-
   /* input init */
   input_init(&input,fd);
   input.mode=CONTENT_BUFFER|LINE_BUFFERED|INPUT_ECHO;