flist request
[reposerve] / src / proto.c
index 60e22b8..7d6466c 100644 (file)
@@ -142,3 +142,33 @@ int flist_finalize(struct flist *flist)
        flist->final_size = newsz;
        return 0;
 }
+
+int read_line(int s, char *buf, int bufsz)
+{
+       char *ptr = buf;
+       while(bufsz > 1 && read(s, ptr, 1) > 0 && *ptr++ != '\n');
+       *ptr = 0;
+       return ptr == buf ? -1 : 0;
+}
+
+int read_resp(int s)
+{
+       int sz, msglen = 0;
+       char buf[64];
+       char *ptr;
+
+       while(msglen < 3 && (sz = read(s, buf + msglen, 3 - msglen)) > 0) {
+               msglen += sz;
+       }
+       if(msglen < 3) return -1;
+
+       if(memcmp(buf, "ERR", 3) == 0) {
+               return -1;
+       }
+
+       ptr = buf;
+       while(read(s, ptr, 1) > 0 && *ptr++ != '\n');
+       *ptr = 0;
+
+       return atoi(buf);
+}