summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsshaik <sshaik>2005-05-26 11:17:42 +0000
committersshaik <sshaik>2005-05-26 11:17:42 +0000
commitb694219148361e33877bf90a98324bef73aa300d (patch)
tree240738f7bc2fd1904b1c8a2b49e5f14e28e559d0
parent2f3d68c3597ef75474ec2c39dc4b24679bc6f988 (diff)
Added readline function by bhargavi
-rw-r--r--utils.c31
-rw-r--r--utils.h1
2 files changed, 32 insertions, 0 deletions
diff --git a/utils.c b/utils.c
index 0437deb..b304600 100644
--- a/utils.c
+++ b/utils.c
@@ -63,3 +63,34 @@ char *strip_delim (char *data, char delim)
stripped_data[j] = '\0';
return stripped_data;
}
+
+char *read_line (int fd )
+{
+ int len = 128;
+ int size = 0;
+ char ch;
+ char *data = NULL;
+
+ while (read (fd, &ch, 1) > 0)
+ {
+ if (!data)
+ {
+ data = (char *) malloc (sizeof (char)*len);
+ }
+ if (size%len == 0)
+ {
+ data = (char *) realloc (data, sizeof (char)*len+size+1);
+ }
+ data[size++] = ch;
+ if (ch == '\n')
+ {
+ if (size%len == 0)
+ {
+ data = (char *) realloc (data, sizeof (char)+size+1);
+ }
+ data[size] = '\0';
+ return data;
+ }
+ }
+ return NULL;
+}
diff --git a/utils.h b/utils.h
index 41c7e1b..5345556 100644
--- a/utils.h
+++ b/utils.h
@@ -7,5 +7,6 @@
char *strip_white_space (char *data);
char *strip_delim (char *data, char delim);
+char *read_line (int fd);
#endif