4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.3 2008/02/15 23:52:12 james
14 * *** empty log message ***
16 * Revision 1.2 2008/02/15 03:32:07 james
17 * *** empty log message ***
19 * Revision 1.1 2008/02/14 12:17:42 james
20 * *** empty log message ***
27 ipc_check_for_message_in_slide (Slide * s)
30 if (SLIDE_BYTES (s) < sizeof (IPC_Msg_hdr))
32 m = (IPC_Msg *) SLIDE_RPTR (s);
33 if (SLIDE_BYTES (s) < m->hdr.size)
35 if (m->hdr.size < sizeof (IPC_Msg_hdr))
42 ipc_consume_message_in_slide (Slide * s)
44 IPC_Msg *m = ipc_check_for_message_in_slide (s);
48 slide_consume (s, m->hdr.size);
53 ipc_msg_send (Socket * s, IPC_Msg * m)
55 int len = m->hdr.size;
56 return (socket_write (s, m, len) == len) ? 0 : -1;
61 ipc_msg_send_debug (Socket * s, char *msg)
63 char buf[sizeof (IPC_Msg_hdr) + IPC_MAX_BUF];
68 m = (IPC_Msg_debug *) buf;
69 m->type = IPC_MSG_TYPE_DEBUG;
70 strncpy (m->msg, msg, IPC_MAX_BUF);
71 m->msg[IPC_MAX_BUF - 1] = 0;
73 m->size = sizeof (IPC_Msg_hdr) + strlen (m->msg) + 1;
76 return ipc_msg_send (s, (IPC_Msg *) m);
80 ipc_msg_send_history (Socket * s, History_ent * l)
86 m.type = IPC_MSG_TYPE_HISTORY;
90 return ipc_msg_send (s, (IPC_Msg *) & m);
94 ipc_msg_send_vt102 (Socket * s, VT102 * v)
100 m.type = IPC_MSG_TYPE_VT102;
101 m.len = sizeof (VT102);
105 return ipc_msg_send (s, (IPC_Msg *) & m);
110 ipc_msg_send_key (Socket * s, int key)
115 m.type = IPC_MSG_TYPE_KEY;
117 return ipc_msg_send (s, (IPC_Msg *) & m);
123 ipc_msg_send_term (Socket * s, void *buf, int len)
125 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
127 IPC_Msg_term *m = (IPC_Msg_term *) mbuf;
132 m->size = len + sizeof (IPC_Msg_hdr);
133 m->type = IPC_MSG_TYPE_TERM;
135 memcpy (m->term, buf, len);
137 return ipc_msg_send (s, (IPC_Msg *) & m);
142 ipc_msg_send_status (Socket * s, char *buf)
144 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
145 IPC_Msg_status *m = (IPC_Msg_status *) mbuf;
150 len = strlen (buf) + 1;
152 m->size = len + sizeof (IPC_Msg_hdr);
153 m->type = IPC_MSG_TYPE_STATUS;
154 strncpy (m->status, buf, IPC_MAX_BUF - 1);
155 m->status[IPC_MAX_BUF - 1] = 0;
157 return ipc_msg_send (s, (IPC_Msg *) & m);
162 ipc_msg_send_setbaud (Socket * s, int baud)
167 m.type = IPC_MSG_TYPE_SETBAUD;
169 return ipc_msg_send (s, (IPC_Msg *) & m);
174 ipc_msg_send_sendbreak (Socket * s)
179 m.type = IPC_MSG_TYPE_SENDBREAK;
180 return ipc_msg_send (s, (IPC_Msg *) & m);
185 ipc_msg_send_setflow (Socket * s, int flow)
190 m.type = IPC_MSG_TYPE_SETFLOW;
192 return ipc_msg_send (s, (IPC_Msg *) & m);
196 ipc_msg_send_hangup (Socket * s)
201 m.type = IPC_MSG_TYPE_HANGUP;
202 return ipc_msg_send (s, (IPC_Msg *) & m);