+ ivac_add_to_monitor(ivac,"debug: end of parse function");
+
+ return SUCCESS;
+}
+
+int ivac_display_head(t_ivac *ivac) {
+
+ display_line(&(ivac->display),0,0,ivac->display.max_x,0,'#');
+ display_string(&(ivac->display),(ivac->display.max_x-strlen(PROG_NAME))/2,1,
+ PROG_NAME,strlen(PROG_NAME));
+ display_line(&(ivac->display),0,2,ivac->display.max_x,2,'#');
+
+ return SUCCESS;
+}
+
+int ivac_display_box(t_ivac *ivac) {
+
+ display_line(&(ivac->display),0,3,ivac->display.max_x,3,'-');
+ display_line(&(ivac->display),0,5,ivac->display.max_x,5,'-');
+ display_string(&(ivac->display),0,6,"connections:",12);
+ display_line(&(ivac->display),
+ 0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN-1,
+ ivac->display.max_x,
+ ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN-1,'-');
+
+ return SUCCESS;
+}
+
+int ivac_display_box_content(t_ivac *ivac) {
+
+ int channel;
+ char string[MAX_BOX_CHARS];
+
+ /* prepare challenger names */
+ for(channel=0;channel<MAX_CONNECTIONS;channel++)
+ if(ivac->challenger[channel].name[0]==0)
+ strcpy(ivac->challenger[channel].name,"<empty>");
+
+ sprintf(string,"username: %s, capabilities: %02x|%04x",
+ ivac->username,ivac->g_cap,ivac->av_cap);
+ display_string(&(ivac->display),0,4,string,strlen(string));
+
+ for(channel=0;channel<MAX_CONNECTIONS;channel++) {
+ if(ivac->net.connection[channel].status&C_INFO_A) {
+ snprintf(string,MAX_BOX_CHARS,
+ "channel %02d: %s:%d, status: %02x, name: %s\n",channel,
+ ivac->net.connection[channel].ip,
+ ivac->net.connection[channel].port,
+ ivac->net.connection[channel].status,
+ ivac->challenger[channel].name);
+ display_string(&(ivac->display),0,IVAC_HEAD_LEN+4+channel,
+ string,strlen(string));
+ }
+ }
+
+ return SUCCESS;
+}
+
+int ivac_display_console(t_ivac *ivac) {
+
+ display_string(&(ivac->display),
+ 0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN,
+ "console messages:",17);
+
+ return SUCCESS;
+}
+
+int ivac_display_console_content(t_ivac *ivac) {
+
+ int i;
+ char string[IVAC_CONSOLE_STRING_LEN];
+
+ for(i=0;i<IVAC_CONSOLE_LEN;i++) {
+ snprintf(string,IVAC_CONSOLE_STRING_LEN,"%s\n",ivac->console[i]);
+ display_string(&(ivac->display),
+ 0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN+1+i,
+ string,strlen(string));
+ }
+
+ return SUCCESS;
+}
+
+int ivac_display_prompt(t_ivac *ivac) {
+
+ display_string(&(ivac->display),0,ivac->display.max_y-1,"prompt: ",8);
+
+ return SUCCESS;
+}
+
+int ivac_display_prompt_content(t_ivac *ivac) {
+
+ char string[IVAC_CONSOLE_STRING_LEN];
+ int count;
+
+ for(count=0;count<ivac->input.c_count;count++)
+ string[count]=ivac->input.content[count];
+ for(;count<ivac->display.max_x-8;count++) string[count]=' ';
+ display_string(&(ivac->display),8,ivac->display.max_y-1,
+ string,ivac->display.max_x);
+
+ return SUCCESS;
+}
+
+int ivac_display_content(t_ivac *ivac) {
+
+ /* display box content */
+ ivac_display_box_content(ivac);
+
+ /* display console content */
+ ivac_display_console_content(ivac);
+
+ /* display prompt content */
+ ivac_display_prompt_content(ivac);
+
+ return SUCCESS;
+}
+
+int ivac_display(t_ivac *ivac) {
+
+ /* display static head */
+ ivac_display_head(ivac);
+
+ /* display static box */
+ ivac_display_box(ivac);
+
+ /* display static console */
+ ivac_display_console(ivac);
+
+ /* display command prompt */
+ ivac_display_prompt(ivac);
+
+ return SUCCESS;
+}
+
+int ivac_display_draw(t_ivac *ivac) {
+
+ display_draw(&(ivac->display));
+ display_set_cursor(&(ivac->display),ivac->input.c_count+8,
+ ivac->display.max_y-1);
+
+ return SUCCESS;
+}
+
+int ivac_add_to_monitor(t_ivac *ivac,char *msg) {
+
+ int i;
+
+ for(i=0;i<IVAC_CONSOLE_LEN-1;i++)
+ memcpy(ivac->console[i],ivac->console[i+1],IVAC_CONSOLE_STRING_LEN);
+ memcpy(ivac->console[IVAC_CONSOLE_LEN-1],msg,IVAC_CONSOLE_STRING_LEN);
+
+ ivac_display_console_content(ivac);
+ ivac_display_draw(ivac);
+
+ return SUCCESS;