#include "mygetline.h"
#include "memory.h"
-static char *mygetuntil(int fd, int eof)
+char *mygetline(int fd)
{
size_t i = 0, res, buf_size = BUFSIZE; /* initial buffer size */
char *buf, ch;
buf = myrealloc(buf, buf_size);
}
buf[i++] = ch;
- if(eof != EOF && ch == eof) {
+ if(ch == '\n') {
buf[i] = '\0';
return buf;
}
}
}
-
-char *mygetline(int fd)
-{
- return mygetuntil(fd, '\n');
-}
#include "utils.h"
#include "memory.h"
#include "mail-functions.h"
+#include "mygetline.h"
ATF_TC(random_int);
ATF_TC(statctrl);
ATF_TC(write_quit);
ATF_TC(write_rset);
ATF_TC(write_replyto);
+ATF_TC(mygetline);
ATF_TC_HEAD(random_int, tc) { }
ATF_TC_HEAD(statctrl, tc) { }
ATF_TC_HEAD(write_quit, tc) {}
ATF_TC_HEAD(write_rset, tc) {}
ATF_TC_HEAD(write_replyto, tc) {}
+ATF_TC_HEAD(mygetline, tc) {}
#ifndef NELEM
#define NELEM(array) (sizeof(array) / sizeof((array)[0]))
atf_tc_fail("Unexpected output");
}
+ATF_TC_BODY(mygetline, tc)
+{
+ int fd = open("test", O_CREAT|O_RDWR, 0644);
+ ATF_REQUIRE(mygetline(fd) == NULL);
+ dprintf(fd, "a");
+ lseek (fd, 0, SEEK_SET);
+ char *res = mygetline(fd);
+ ATF_REQUIRE(res != NULL);
+ ATF_REQUIRE_STREQ(res, "a");
+ for (int i = 0; i < BUFSIZ + 2; i++)
+ dprintf(fd, "a");
+ lseek (fd, 0, SEEK_SET);
+ res = mygetline(fd);
+ ATF_REQUIRE(res != NULL);
+ dprintf(fd, "\nab\n");
+ lseek (fd, 0, SEEK_SET);
+ res = mygetline(fd);
+ res = mygetline(fd);
+ ATF_REQUIRE(res != NULL);
+ ATF_REQUIRE_STREQ(res, "ab\n");
+ close(fd);
+}
+
ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, random_int);
ATF_TP_ADD_TC(tp, write_quit);
ATF_TP_ADD_TC(tp, write_rset);
ATF_TP_ADD_TC(tp, write_replyto);
+ ATF_TP_ADD_TC(tp, mygetline);
return (atf_no_error());
}