simple blocking write, to be refined later
authorChristian Thaeter <ct@pipapo.org>
Thu, 4 Oct 2007 07:04:57 +0000 (09:04 +0200)
committerChristian Thaeter <ct@pipapo.org>
Thu, 4 Oct 2007 07:04:57 +0000 (09:04 +0200)
rxpd.c
rxpd.h

diff --git a/rxpd.c b/rxpd.c
index e7a71d6..7bcea15 100644 (file)
--- a/rxpd.c
+++ b/rxpd.c
@@ -354,10 +354,40 @@ rxpd_buffer_readline (struct rxpd_buffer* self, int again)
     }
 
   // TODO handle buffer overfulls
+
   return self->eol == self->buffer ? NULL : self->buffer;
 }
 
+/*
+void
+rxpd_buffer_write(int fd, short event, void* ptr)
+{
+  struct rxpd_buffer* self = (struct rxpd_buffer*) ptr;
+
+  ssize_t n = write(int fd, const void *buf, size_t count);
+
+}
+*/
+
+int
+rxpd_buffer_printf (struct rxpd_buffer* self, const char* fmt, ...)
+{
+  // for now we do a blocking write, needs to be fixed some day
+  // add string to buffer
+  va_list ap;
+  va_start(ap, fmt);
+  //int sz = self->buffer+4096 - self->eob;
+  int n = vsnprintf (self->buffer, 4096, fmt, ap);
+  va_end(ap);
+
+  write (self->conn->fd, self->buffer, n);
+
+  if (n>4095)
+    return 0;
+
+  return 1;
+}
+
 
 
 
diff --git a/rxpd.h b/rxpd.h
index be3b80d..e60e8e0 100644 (file)
--- a/rxpd.h
+++ b/rxpd.h
@@ -27,6 +27,7 @@
 #include <errno.h>
 #include <string.h>
 #include <stdlib.h>
+#include <stdarg.h>
 #include <unistd.h>
 #include <regex.h>
 #include <sys/stat.h>