4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.4 2008/02/22 17:07:00 james
14 * *** empty log message ***
16 * Revision 1.3 2008/02/15 23:52:12 james
17 * *** empty log message ***
19 * Revision 1.2 2008/02/15 03:32:07 james
20 * *** empty log message ***
22 * Revision 1.1 2008/02/14 12:17:42 james
23 * *** empty log message ***
30 ipc_check_for_message_in_slide (Slide * s)
33 if (SLIDE_BYTES (s) < sizeof (IPC_Msg_hdr))
35 m = (IPC_Msg *) SLIDE_RPTR (s);
36 if (SLIDE_BYTES (s) < m->hdr.size)
38 if (m->hdr.size < sizeof (IPC_Msg_hdr))
45 ipc_consume_message_in_slide (Slide * s)
47 IPC_Msg *m = ipc_check_for_message_in_slide (s);
51 slide_consume (s, m->hdr.size);
56 ipc_msg_send (Socket * s, IPC_Msg * m)
58 int len = m->hdr.size;
59 return (socket_write (s, m, len) == len) ? 0 : -1;
64 ipc_msg_send_debug (Socket * s, char *msg)
66 char buf[sizeof (IPC_Msg_hdr) + IPC_MAX_BUF];
71 m = (IPC_Msg_debug *) buf;
72 m->type = IPC_MSG_TYPE_DEBUG;
73 strncpy (m->msg, msg, IPC_MAX_BUF);
74 m->msg[IPC_MAX_BUF - 1] = 0;
76 m->size = sizeof (IPC_Msg_hdr) + strlen (m->msg) + 1;
79 return ipc_msg_send (s, (IPC_Msg *) m);
83 ipc_msg_send_history (Socket * s, History_ent * l)
89 m.type = IPC_MSG_TYPE_HISTORY;
93 return ipc_msg_send (s, (IPC_Msg *) & m);
97 ipc_msg_send_vt102 (Socket * s, VT102 * v)
103 m.type = IPC_MSG_TYPE_VT102;
104 m.len = sizeof (VT102);
108 return ipc_msg_send (s, (IPC_Msg *) & m);
113 ipc_msg_send_key (Socket * s, int key)
118 m.type = IPC_MSG_TYPE_KEY;
120 return ipc_msg_send (s, (IPC_Msg *) & m);
126 ipc_msg_send_term (Socket * s, void *buf, int len)
128 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
130 IPC_Msg_term *m = (IPC_Msg_term *) mbuf;
135 m->size = len + sizeof (IPC_Msg_hdr);
136 m->type = IPC_MSG_TYPE_TERM;
138 memcpy (m->term, buf, len);
140 return ipc_msg_send (s, (IPC_Msg *) & m);
145 ipc_msg_send_status (Socket * s, char *buf)
147 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
148 IPC_Msg_status *m = (IPC_Msg_status *) mbuf;
153 len = strlen (buf) + 1;
155 m->size = len + sizeof (IPC_Msg_hdr);
156 m->type = IPC_MSG_TYPE_STATUS;
157 strncpy (m->status, buf, IPC_MAX_BUF - 1);
158 m->status[IPC_MAX_BUF - 1] = 0;
160 return ipc_msg_send (s, (IPC_Msg *) & m);
165 ipc_msg_send_setbaud (Socket * s, int baud)
170 m.type = IPC_MSG_TYPE_SETBAUD;
172 return ipc_msg_send (s, (IPC_Msg *) & m);
177 ipc_msg_send_sendbreak (Socket * s)
182 m.type = IPC_MSG_TYPE_SENDBREAK;
183 return ipc_msg_send (s, (IPC_Msg *) & m);
188 ipc_msg_send_setflow (Socket * s, int flow)
193 m.type = IPC_MSG_TYPE_SETFLOW;
195 return ipc_msg_send (s, (IPC_Msg *) & m);
199 ipc_msg_send_setansi (Socket * s, int ansi)
204 m.type = IPC_MSG_TYPE_SETANSI;
206 return ipc_msg_send (s, (IPC_Msg *) & m);
210 ipc_msg_send_hangup (Socket * s)
215 m.type = IPC_MSG_TYPE_HANGUP;
216 return ipc_msg_send (s, (IPC_Msg *) & m);