aboutsummaryrefslogtreecommitdiff
path: root/src/IO.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/IO.c')
-rw-r--r--src/IO.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/IO.c b/src/IO.c
index caca243..8bd1568 100644
--- a/src/IO.c
+++ b/src/IO.c
@@ -178,3 +178,53 @@ int BH_IOEndOfFile(BH_IO *device)
return flags & BH_IO_FLAG_EOF;
}
+
+
+char *BH_IOReadLine(BH_IO *device,
+ char *str,
+ size_t size)
+{
+ size_t i, actual;
+
+ if (size < 1)
+ return NULL;
+
+ i = 0;
+ while (i < size - 1)
+ {
+ if (BH_IORead(device, str + i, 1, &actual) || actual != 1)
+ break;
+
+ if (str[i++] == '\n')
+ break;
+ }
+ str[i] = 0;
+ return i ? str : NULL;
+}
+
+
+char *BH_IOReadLineFull(BH_IO *device,
+ char *str,
+ size_t size)
+{
+ size_t i, actual;
+ char data;
+
+ if (size < 1)
+ return NULL;
+
+ i = 0;
+ while (1)
+ {
+ if (BH_IORead(device, &data, 1, &actual) || actual != 1)
+ break;
+
+ if (i < size - 1)
+ str[i++] = data;
+
+ if (data == '\n')
+ break;
+ }
+ str[i] = 0;
+ return i ? str : NULL;
+}