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);
+}