diff --git a/src/fd/line.cpp b/src/fd/line.cpp
new file mode 100644
index 0000000..36c1e6f
--- /dev/null
+++ b/src/fd/line.cpp
@@ -0,0 +1,59 @@
+#include <stdplus/exception.hpp>
+#include <stdplus/fd/line.hpp>
+#include <stdplus/fd/ops.hpp>
+
+namespace stdplus
+{
+namespace fd
+{
+
+LineReader::LineReader(Fd& fd) : fd(fd)
+{
+}
+
+const std::string* LineReader::readLine()
+{
+    if (hit_eof)
+    {
+        throw exception::Eof("readLine");
+    }
+    if (line_complete)
+    {
+        line.clear();
+    }
+    while (true)
+    {
+        if (buf_data.empty())
+        {
+            try
+            {
+                buf_data = read(fd, buf);
+                if (buf_data.empty())
+                {
+                    return nullptr;
+                }
+            }
+            catch (const exception::Eof&)
+            {
+                hit_eof = true;
+                return &line;
+            }
+        }
+        line_complete = false;
+        for (size_t i = 0; i < buf_data.size(); ++i)
+        {
+            if (buf_data[i] == '\n')
+            {
+                line.insert(line.end(), buf_data.begin(), buf_data.begin() + i);
+                buf_data = buf_data.subspan(i + 1);
+                line_complete = true;
+                return &line;
+            }
+        }
+        line.insert(line.end(), buf_data.begin(), buf_data.end());
+        buf_data = {};
+    }
+}
+
+} // namespace fd
+} // namespace stdplus
diff --git a/src/meson.build b/src/meson.build
index 34c3674..4364395 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -37,6 +37,7 @@
     'fd/create.cpp',
     'fd/dupable.cpp',
     'fd/impl.cpp',
+    'fd/line.cpp',
     'fd/managed.cpp',
     'fd/mmap.cpp',
     'fd/ops.cpp',
