4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.5 2008/02/28 11:27:48 james
14 * *** empty log message ***
16 * Revision 1.4 2008/02/22 17:07:00 james
17 * *** empty log message ***
19 * Revision 1.3 2008/02/15 23:52:12 james
20 * *** empty log message ***
22 * Revision 1.2 2008/02/15 03:32:07 james
23 * *** empty log message ***
25 * Revision 1.1 2008/02/14 12:17:42 james
26 * *** empty log message ***
33 ipc_check_for_message_in_slide (Slide * s)
36 if (SLIDE_BYTES (s) < sizeof (IPC_Msg_hdr))
38 m = (IPC_Msg *) SLIDE_RPTR (s);
39 if (SLIDE_BYTES (s) < m->hdr.size)
41 if (m->hdr.size < sizeof (IPC_Msg_hdr))
48 ipc_consume_message_in_slide (Slide * s)
50 IPC_Msg *m = ipc_check_for_message_in_slide (s);
54 slide_consume (s, m->hdr.size);
59 ipc_msg_send (Socket * s, IPC_Msg * m)
61 int len = m->hdr.size;
62 return (socket_write (s, m, len) == len) ? 0 : -1;
67 ipc_msg_send_debug (Socket * s, char *msg)
69 char buf[sizeof (IPC_Msg_hdr) + IPC_MAX_BUF];
74 m = (IPC_Msg_debug *) buf;
75 m->type = IPC_MSG_TYPE_DEBUG;
76 strncpy (m->msg, msg, IPC_MAX_BUF);
77 m->msg[IPC_MAX_BUF - 1] = 0;
79 m->size = sizeof (IPC_Msg_hdr) + strlen (m->msg) + 1;
82 return ipc_msg_send (s, (IPC_Msg *) m);
86 ipc_msg_send_history (Socket * s, History_ent * l)
92 m.type = IPC_MSG_TYPE_HISTORY;
96 return ipc_msg_send (s, (IPC_Msg *) & m);
100 ipc_msg_send_vt102 (Socket * s, VT102 * v)
106 m.type = IPC_MSG_TYPE_VT102;
107 m.len = sizeof (VT102);
111 return ipc_msg_send (s, (IPC_Msg *) & m);
116 ipc_msg_send_key (Socket * s, int key)
121 m.type = IPC_MSG_TYPE_KEY;
123 return ipc_msg_send (s, (IPC_Msg *) & m);
129 ipc_msg_send_term (Socket * s, void *buf, int len)
131 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
133 IPC_Msg_term *m = (IPC_Msg_term *) mbuf;
138 m->size = len + sizeof (IPC_Msg_hdr);
139 m->type = IPC_MSG_TYPE_TERM;
141 memcpy (m->term, buf, len);
143 return ipc_msg_send (s, (IPC_Msg *) & m);
148 ipc_msg_send_status (Socket * s, char *buf)
150 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
151 IPC_Msg_status *m = (IPC_Msg_status *) mbuf;
156 len = strlen (buf) + 1;
158 m->size = len + sizeof (IPC_Msg_hdr);
159 m->type = IPC_MSG_TYPE_STATUS;
160 strncpy (m->status, buf, IPC_MAX_BUF - 1);
161 m->status[IPC_MAX_BUF - 1] = 0;
163 return ipc_msg_send (s, (IPC_Msg *) & m);
168 ipc_msg_send_setbaud (Socket * s, int baud)
173 m.type = IPC_MSG_TYPE_SETBAUD;
175 return ipc_msg_send (s, (IPC_Msg *) & m);
180 ipc_msg_send_sendbreak (Socket * s)
185 m.type = IPC_MSG_TYPE_SENDBREAK;
186 return ipc_msg_send (s, (IPC_Msg *) & m);
191 ipc_msg_send_setflow (Socket * s, int flow)
196 m.type = IPC_MSG_TYPE_SETFLOW;
198 return ipc_msg_send (s, (IPC_Msg *) & m);
202 ipc_msg_send_setansi (Socket * s, int ansi)
207 m.type = IPC_MSG_TYPE_SETANSI;
209 return ipc_msg_send (s, (IPC_Msg *) & m);
213 ipc_msg_send_hangup (Socket * s)
218 m.type = IPC_MSG_TYPE_HANGUP;
219 return ipc_msg_send (s, (IPC_Msg *) & m);
223 ipc_msg_send_setsize (Socket * s,CRT_Pos size)
228 m.type = IPC_MSG_TYPE_SETSIZE;
231 return ipc_msg_send (s, (IPC_Msg *) & m);
235 ipc_msg_send_reset (Socket * s)
240 m.type = IPC_MSG_TYPE_RESET;
241 return ipc_msg_send (s, (IPC_Msg *) & m);