4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.1 2008/02/14 12:17:42 james
14 * *** empty log message ***
21 ipc_check_for_message_in_slide (Slide * s)
24 if (SLIDE_BYTES (s) < sizeof (IPC_Msg_hdr))
26 m = (IPC_Msg *) SLIDE_RPTR (s);
27 if (SLIDE_BYTES (s) < m->hdr.size)
29 if (m->hdr.size < sizeof (IPC_Msg_hdr))
36 ipc_consume_message_in_slide (Slide * s)
38 IPC_Msg *m = ipc_check_for_message_in_slide (s);
42 slide_consume (s, m->hdr.size);
47 ipc_msg_send (Socket * s, IPC_Msg * m)
49 int len = m->hdr.size;
50 return (socket_write (s, m, len) == len) ? 0 : -1;
55 ipc_msg_send_debug (Socket * s, char *msg)
57 char buf[sizeof (IPC_Msg_hdr) + IPC_MAX_BUF];
62 m = (IPC_Msg_debug *) buf;
63 m->type = IPC_MSG_TYPE_DEBUG;
64 strncpy (m->msg, msg, IPC_MAX_BUF);
65 m->msg[IPC_MAX_BUF - 1] = 0;
67 m->size = sizeof (IPC_Msg_hdr) + strlen (m->msg) + 1;
70 return ipc_msg_send (s, (IPC_Msg *) m);
74 ipc_msg_send_history (Socket * s, History_ent * l)
80 m.type = IPC_MSG_TYPE_HISTORY;
84 return ipc_msg_send (s, (IPC_Msg *) & m);
88 ipc_msg_send_vt102 (Socket * s, VT102 * v)
94 m.type = IPC_MSG_TYPE_VT102;
95 m.len = sizeof (VT102);
99 return ipc_msg_send (s, (IPC_Msg *) & m);
104 ipc_msg_send_key (Socket * s, int key)
109 m.type = IPC_MSG_TYPE_KEY;
111 return ipc_msg_send (s, (IPC_Msg *) & m);
117 ipc_msg_send_term (Socket * s, void *buf, int len)
119 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
121 IPC_Msg_term *m = (IPC_Msg_term *) mbuf;
126 m->size = len + sizeof (IPC_Msg_hdr);
127 m->type = IPC_MSG_TYPE_TERM;
129 memcpy (m->term, buf, len);
131 return ipc_msg_send (s, (IPC_Msg *) & m);
136 ipc_msg_send_status (Socket * s, char *buf)
138 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
139 IPC_Msg_status *m = (IPC_Msg_status *) mbuf;
144 len = strlen (buf) + 1;
146 m->size = len + sizeof (IPC_Msg_hdr);
147 m->type = IPC_MSG_TYPE_STATUS;
148 strncpy (m->status, buf, IPC_MAX_BUF - 1);
149 m->status[IPC_MAX_BUF - 1] = 0;
151 return ipc_msg_send (s, (IPC_Msg *) & m);