Fix write build error 71/196371/1
authorseolheui, kim <s414.kim@samsung.com>
Fri, 28 Dec 2018 01:38:47 +0000 (10:38 +0900)
committerseolheui, kim <s414.kim@samsung.com>
Fri, 28 Dec 2018 01:38:47 +0000 (10:38 +0900)
Change-Id: I9d19a4ade99aa43a49fa06d873eb8fcc42efdc74
Signed-off-by: seolheui, kim <s414.kim@samsung.com>
server/file-sink.cpp

index ebd2da1..50b86d1 100644 (file)
@@ -93,7 +93,21 @@ void FileLogSink::write(const std::string &message)
                        + std::to_string(tm.tm_sec) + "] ");
 
        log.append(message);
-       ::write(fd, log.c_str(), log.size());
+
+       size_t written = 0, size = log.size();
+       const char *data = log.c_str();
+
+       while (written < size) {
+               int bytes = ::write(fd, data + written, size-written);
+               if (bytes >= 0) {
+                       written += bytes;
+               } else if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) {
+                       continue;
+               } else {
+                       std::cerr << "Failed to write log" << std::endl;
+                       break;
+               }
+       }
        ::sync();
 }