fixed nonsense with truncation
This commit is contained in:
15
src/lcpex/helpers.cpp
Normal file
15
src/lcpex/helpers.cpp
Normal file
@@ -0,0 +1,15 @@
|
||||
#include "helpers.h"
|
||||
|
||||
ssize_t write_all(int fd, const void *buf, size_t count) {
|
||||
const char *p = (const char *)buf;
|
||||
while (count > 0) {
|
||||
ssize_t written = write(fd, p, count);
|
||||
if (written == -1) {
|
||||
if (errno == EINTR || errno == EAGAIN) continue; // Retry
|
||||
return -1; // Other errors
|
||||
}
|
||||
count -= written;
|
||||
p += written;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef LCPEX_HELPERS_H
|
||||
#define LCPEX_HELPERS_H
|
||||
|
||||
#include <unistd.h>
|
||||
#include "errno.h"
|
||||
|
||||
// helper for sanity
|
||||
enum PIPE_ENDS {
|
||||
READ_END = 0,
|
||||
@@ -16,18 +19,6 @@ enum CHILD_PIPE_NAMES {
|
||||
|
||||
#define BUFFER_SIZE 1024
|
||||
|
||||
ssize_t write_all(int fd, const void *buf, size_t count) {
|
||||
const char *p = (const char *)buf;
|
||||
while (count > 0) {
|
||||
ssize_t written = write(fd, p, count);
|
||||
if (written == -1) {
|
||||
if (errno == EINTR || errno == EAGAIN) continue; // Retry
|
||||
return -1; // Other errors
|
||||
}
|
||||
count -= written;
|
||||
p += written;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
ssize_t write_all(int fd, const void *buf, size_t count);
|
||||
|
||||
#endif //LCPEX_HELPERS_H
|
||||
|
||||
Reference in New Issue
Block a user