#include <stdlib.h>
#include "pd_readline.h"
+/* Note - make the up and down funcs return a buffer. */
+/* A line from the history file can be put into the */
+/* array member of the buffer. */
+/* Also test for the top and bottom of the history file. */
-/* Move up in history list. */
-int up(int i)
+/* Error function. */
+void error(void)
{
-
+ printf("Error \n");
+}
+
+
+
+/* Display a buffer */
+void show(buf b)
+{
+ printf("%s", b.array);
+}
+
+/* Enter a char into a buffer and display the buffer array. */
+buf set(buf b, int i)
+{
+ if ( (b.index < 80) )
+ {
+ b.array[b.index] = i;
+ b.index += 1 ;
+ }
+ else
+ {
+ memset(&b.array[0], 0, sizeof(b.array) );
+ b.array[0] = i;
+ b.index += 1 ;
+ }
+
+ show(b);
+ return b;
+
}
-/* Move down in history list. */
-int down(int i)
+/* Return a line from hist. */
+buf get(hist h)
{
+ buf b;
+ memcpy(&b.array[0], h.array[h.curindex], 80);
+ return b;
+}
+
+/* Move up in history list. */
+hist up(hist h)
+{
+
+ buf b;
+
+ if ( (h.curindex > 0) )
+ {
+ h.curindex -= 1;
+ memset(&b.array[0], 0, sizeof(b.array) );
+ memcpy(&b.array[0], h.array[h.curindex], 80);
+ show(b);
+ return h;
+ }
+
+ else error();
+
+}
+
+
+/* Move down in history list. */
+hist down(hist h)
+{
+
+ buf b;
+
+ if ( (h.curindex < 19) )
+ {
+ h.curindex += 1;
+ memset(&b.array[0], 0, sizeof(b.array) );
+ memcpy(&b.array[0], h.array[h.curindex], 80);
+ show(b);
+ return h;
+ }
+
+ else error();
+
}
}
-
-/* Function to handle escape sequences. */
-int esc(int i)
+void enter(void)
{
+ printf("Enter ");
+}
+
+
+/* Find if a number is in a given range. */
+int range(int rstart, int rend, int i)
+{
+ if ( (rstart <= i) && (i <= rend) ) return 1;
+ else return 0;
-
-
-
-}
+}
+/* Assign a type depending on the range that a */
+/* number is in. */
+int type(int i)
+{
+ int ret;
+
+ if ( range(0, 9, i) == 1 ) ret = 1;
+ else if ( range(10, 10, i) == 1 ) ret = 2;
+ else if ( range(27, 27, i) == 1 ) ret = 3;
+ else if ( range(32, 126, i) == 1 ) ret = 4;
+ else if ( range(127, 127, i) == 1 ) ret = 5;
+ else ret = 6;
+
+ return ret;
+
+}
+
+
+/* Function for special key combinations */
+/* (Ctrl, Alt, function keys. */
+void spec(hist h)
+{
+
+ int j = getch();
+
+ if ( ( j == 65 ) ) up(h);
+ else if ( ( j == 66 ) ) down(h);
+ else if ( ( j == 67 ) ) printf("Right ");
+ else if ( ( j == 68 ) ) printf("Left ");
+
+}