summaryrefslogtreecommitdiff
path: root/edit-null.c
diff options
context:
space:
mode:
authortjg <tjg>2003-09-30 10:21:45 +0000
committerToby Goodwin <toby@paccrat.org>2015-05-16 21:23:24 +0100
commit27e15d138e55da4dbb626b727424d550a1464a69 (patch)
treef1f53762b7bfc1f24479a4ebd31f59035dad039a /edit-null.c
parentd000dc89db8f65db051a3d870bbc8f4d4edefd8d (diff)
Initial revision
Diffstat (limited to 'edit-null.c')
-rw-r--r--edit-null.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/edit-null.c b/edit-null.c
new file mode 100644
index 0000000..ea6c5db
--- /dev/null
+++ b/edit-null.c
@@ -0,0 +1,72 @@
+#include "rc.h"
+
+#include <errno.h>
+
+#include <sys/types.h>
+
+#include "edit.h"
+
+bool editing = 0;
+
+void *edit_init(int fd) {
+ /* this function deliberately left blank */
+ return NULL;
+}
+
+char *edit_alloc(void *cookie, int *count) {
+ char *buf;
+ int size, used;
+ ssize_t r;
+
+ used = 0;
+ size = 1;
+ buf = ealloc(size + 1); /* leave room for terminating \0 */
+ do {
+ if (used >= size) { /* >= leaves room for terminating \0 */
+ size = size * 2;
+ buf = erealloc(buf, size);
+ }
+ do {
+ r = rc_read(0, buf + used, size - used);
+ sigchk();
+ if (r == -1)
+ switch (errno) {
+ case EAGAIN:
+ if (!makeblocking(0))
+ panic("not O_NONBLOCK");
+ errno = EINTR;
+ break;
+ case EIO:
+ if (makesamepgrp(0))
+ errno = EINTR;
+ else
+ errno = EIO;
+ break;
+ }
+ } while (r < 0 && errno == EINTR);
+
+ if (r == 0)
+ return NULL;
+
+ used += r;
+ buf[used] = '\0';
+ } while (strchr(buf, '\n') == NULL);
+
+ *count = used;
+ if (used)
+ return buf;
+ else
+ return NULL;
+}
+
+void edit_prompt(void *cookie, char *prompt) {
+ fprint(2, "%s", prompt);
+}
+
+void edit_free(void *buffer) {
+ efree(buffer);
+}
+
+void edit_end(void *cookie) {
+ /* this function deliberately left blank */
+}