aboutsummaryrefslogtreecommitdiffstats
path: root/src/history.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/history.c')
-rw-r--r--src/history.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/history.c b/src/history.c
new file mode 100644
index 0000000..026714c
--- /dev/null
+++ b/src/history.c
@@ -0,0 +1,52 @@
+/*
+ * history.c:
+ *
+ * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
+ * All rights reserved.
+ *
+ */
+
+static char rcsid[] = "$Id$";
+
+/*
+ * $Log$
+ * Revision 1.1 2008/02/08 15:06:42 james
+ * *** empty log message ***
+ *
+ */
+
+#include "project.h"
+
+History *history_new(int n)
+{
+History *ret;
+
+ret=(History *) malloc(sizeof(History));
+ret->lines=malloc(n*sizeof(History_ent));
+memset(ret->lines,0,n*sizeof(History_ent));
+
+ret->wptr=0;
+ret->nlines=n;
+
+return ret;
+}
+
+void history_free(History *h)
+{
+if (!h) return;
+if (h->lines) free(h->lines);
+free(h);
+}
+
+
+void history_add(History *h,CRT_CA *c)
+{
+if (!h) return;
+
+memcpy(h->lines[h->wptr].line,c,sizeof(CRT_CA)*CRT_COLS);
+h->wptr++;
+
+if (h->wptr==h->nlines)
+ h->wptr=0;
+
+}