4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.6 2008/02/28 16:57:51 james
14 * *** empty log message ***
16 * Revision 1.5 2008/02/28 11:27:48 james
17 * *** empty log message ***
19 * Revision 1.4 2008/02/22 17:07:00 james
20 * *** empty log message ***
22 * Revision 1.3 2008/02/15 23:52:12 james
23 * *** empty log message ***
25 * Revision 1.2 2008/02/15 03:32:07 james
26 * *** empty log message ***
28 * Revision 1.1 2008/02/14 12:17:42 james
29 * *** empty log message ***
36 ipc_check_for_message_in_slide (Slide * s)
39 if (SLIDE_BYTES (s) < sizeof (IPC_Msg_hdr))
41 m = (IPC_Msg *) SLIDE_RPTR (s);
42 if (SLIDE_BYTES (s) < m->hdr.size)
44 if (m->hdr.size < sizeof (IPC_Msg_hdr))
51 ipc_consume_message_in_slide (Slide * s)
53 IPC_Msg *m = ipc_check_for_message_in_slide (s);
57 slide_consume (s, m->hdr.size);
62 ipc_msg_send (Socket * s, IPC_Msg * m)
64 int len = m->hdr.size;
65 return (socket_write (s, m, len) == len) ? 0 : -1;
70 ipc_msg_send_debug (Socket * s, char *msg)
72 char buf[sizeof (IPC_Msg_hdr) + IPC_MAX_BUF];
77 m = (IPC_Msg_debug *) buf;
78 m->type = IPC_MSG_TYPE_DEBUG;
79 strncpy (m->msg, msg, IPC_MAX_BUF);
80 m->msg[IPC_MAX_BUF - 1] = 0;
82 m->size = sizeof (IPC_Msg_hdr) + strlen (m->msg) + 1;
85 return ipc_msg_send (s, (IPC_Msg *) m);
89 ipc_msg_send_history (Socket * s, History_ent * l)
95 m.type = IPC_MSG_TYPE_HISTORY;
99 return ipc_msg_send (s, (IPC_Msg *) & m);
103 ipc_msg_send_vt102 (Socket * s, VT102 * v)
109 m.type = IPC_MSG_TYPE_VT102;
110 m.len = sizeof (VT102);
114 return ipc_msg_send (s, (IPC_Msg *) & m);
119 ipc_msg_send_key (Socket * s, int key)
124 m.type = IPC_MSG_TYPE_KEY;
126 return ipc_msg_send (s, (IPC_Msg *) & m);
132 ipc_msg_send_term (Socket * s, void *buf, int len)
134 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
136 IPC_Msg_term *m = (IPC_Msg_term *) mbuf;
141 m->size = len + sizeof (IPC_Msg_hdr);
142 m->type = IPC_MSG_TYPE_TERM;
144 memcpy (m->term, buf, len);
146 return ipc_msg_send (s, (IPC_Msg *) & m);
151 ipc_msg_send_status (Socket * s, char *buf)
153 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
154 IPC_Msg_status *m = (IPC_Msg_status *) mbuf;
159 len = strlen (buf) + 1;
161 m->size = len + sizeof (IPC_Msg_hdr);
162 m->type = IPC_MSG_TYPE_STATUS;
163 strncpy (m->status, buf, IPC_MAX_BUF - 1);
164 m->status[IPC_MAX_BUF - 1] = 0;
166 return ipc_msg_send (s, (IPC_Msg *) & m);
171 ipc_msg_send_setbaud (Socket * s, int baud)
176 m.type = IPC_MSG_TYPE_SETBAUD;
178 return ipc_msg_send (s, (IPC_Msg *) & m);
183 ipc_msg_send_sendbreak (Socket * s)
188 m.type = IPC_MSG_TYPE_SENDBREAK;
189 return ipc_msg_send (s, (IPC_Msg *) & m);
194 ipc_msg_send_setflow (Socket * s, int flow)
199 m.type = IPC_MSG_TYPE_SETFLOW;
201 return ipc_msg_send (s, (IPC_Msg *) & m);
205 ipc_msg_send_setansi (Socket * s, int ansi)
210 m.type = IPC_MSG_TYPE_SETANSI;
212 return ipc_msg_send (s, (IPC_Msg *) & m);
216 ipc_msg_send_hangup (Socket * s)
221 m.type = IPC_MSG_TYPE_HANGUP;
222 return ipc_msg_send (s, (IPC_Msg *) & m);
226 ipc_msg_send_setsize (Socket * s, CRT_Pos size)
231 m.type = IPC_MSG_TYPE_SETSIZE;
234 return ipc_msg_send (s, (IPC_Msg *) & m);
238 ipc_msg_send_reset (Socket * s)
243 m.type = IPC_MSG_TYPE_RESET;
244 return ipc_msg_send (s, (IPC_Msg *) & m);