void status_line(EVENT_MSG *msg,T_EVENT_ROOT **user_data) { T_EVENT_ROOT **p; static char st_line[256],oldline[256]={"\0"}; EVENT_MSG tg; static char recurse=1; if(msg->msg==E_INIT) { if (recurse) { T_EVENT_ROOT *p; recurse=0; send_message(E_ADD,E_IDLE,status_idle); send_message(E_ADD,E_REDRAW,status_idle); p=NULL; *user_data=p; draw_status_line(NULL); recurse=1; return; } else return; } shift_msg(msg,tg); if (tg.msg==E_REDRAW) { draw_status_line(oldline); return; } p=user_data; if (tg.msg==E_IDLE) { EVENT_MSG msg; msg.msg=E_IDLE; msg.data=&st_line; enter_event(p,&msg); if (strcmp(st_line,oldline)) { draw_status_line(st_line); strcpy(oldline,st_line); } } else tree_basics(p,&tg); return; }
int user_write(t_server *server, t_client *cl) { ssize_t wsize; ssize_t msglen; char *msg; msg = queue_front(cl->queue); msglen = strlen(msg); if ((wsize = write(cl->fd, msg, msglen)) <= 0) { perror(""); return (disconnect_user(server, cl)); } if (wsize < msglen) shift_msg(msg, wsize); else queue_pop(&cl->queue); return (0); }