xref: /llvm-project/lldb/test/API/iohandler/sigint/cat.cpp (revision a4d6de2031ad2f92d399fc8d1b1301229ed8255b)
1 #include <cstdio>
2 #include <string>
3 #include <unistd.h>
4 
getline()5 std::string getline() {
6   std::string result;
7   while (true) {
8     int r;
9     char c;
10     do
11       r = read(fileno(stdin), &c, 1);
12     while (r == -1 && errno == EINTR);
13     if (r <= 0 || c == '\n')
14       return result;
15     result += c;
16   }
17 }
18 
input_copy_loop()19 void input_copy_loop() {
20   std::string str;
21   while (str = getline(), !str.empty())
22     printf("read: %s\n", str.c_str());
23 }
24 
main()25 int main() {
26   input_copy_loop();
27   return 0;
28 }
29