aboutsummaryrefslogtreecommitdiffstats
path: root/src/raw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/raw.c')
-rw-r--r--src/raw.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/raw.c b/src/raw.c
new file mode 100644
index 0000000..5e6b586
--- /dev/null
+++ b/src/raw.c
@@ -0,0 +1,87 @@
+/*
+ * raw.c:
+ *
+ * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
+ * All rights reserved.
+ *
+ */
+
+static char rcsid[] = "$Id$";
+
+/*
+ * $Log$
+ * Revision 1.1 2008/03/06 16:49:05 james
+ * *** empty log message ***
+ *
+ *
+ */
+
+#include "project.h"
+
+typedef struct {
+ RX_SIGNATURE;
+ int rfd;
+ int wfd;
+} RX_Raw;
+
+static int rx_raw_rx(RX *_r,int ch)
+{
+RX_Raw *r=(RX_Raw *) _r;
+uint8_t c=ch;
+return (write(r->wfd,&c,1)==1) ? 0:-1;
+}
+
+static void rx_raw_close(RX *r)
+{
+free(r);
+}
+
+RX *rx_new_raw(int rfd,int wfd)
+{
+ RX_Raw *ret;
+
+ ret = malloc (sizeof (RX_Raw));
+ memset (ret, 0, sizeof (RX_Raw));
+
+ ret->rx=rx_raw_rx;
+ ret->close=rx_raw_close;
+
+ ret->rfd=rfd;
+ ret->wfd=wfd;
+
+ return (RX*) ret;
+}
+
+
+
+TTY *terminal_new_raw(int rfd,int wfd)
+{
+//FIXME
+return NULL;
+}
+
+static void
+ansi_raw_one_shot (ANSI * a, CRT * c)
+{
+}
+
+
+static void
+ansi_raw_free (ANSI * a)
+{
+ free (a);
+}
+
+ANSI *
+ansi_new_raw (int rfd,int wfd)
+{
+ ANSI *ret;
+
+ ret = malloc (sizeof (ANSI));
+ memset (ret, 0, sizeof (ANSI));
+
+ ret->terminal = terminal_new_raw(rfd,wfd);
+ ret->close = ansi_raw_free;
+
+ return ret;
+}