#include <getopt.h>
#include "ust/ustconsumer.h"
+#include "../libustconsumer/lowlevel.h"
#include "usterr.h"
char *sock_path=NULL;
result = patient_write(buf_local->file_fd, buf->mem + subbuf_index * buf->subbuf_size, valid_length);
if(result == -1) {
ERR("Error writing to buffer file");
- return;
+ return result;
}
/* pad with empty bytes */
result = patient_write(buf_local->file_fd, tmp, pad_size);
if(result == -1) {
ERR("Error writing to buffer file");
- return;
+ return result;
}
free(tmp);
}
-
+ return result;
}
int on_open_buffer(struct ustconsumer_callbacks *data, struct buffer_info *buf)
trace_path, buf->pid, buf->pidunique, buf->name);
return 1;
}
+again:
result = fd = open(tmp, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, 00600);
+ if (result == -1 && errno == EINTR)
+ goto again;
+
if(result == -1) {
PERROR("open");
ERR("failed opening trace file %s", tmp);
int on_close_buffer(struct ustconsumer_callbacks *data, struct buffer_info *buf)
{
struct buffer_info_local *buf_local = buf->user_data;
- int result = close(buf_local->file_fd);
+ int result;
+
+again:
+ result = close(buf_local->file_fd);
+ if (result == -1 && errno == EINTR)
+ goto again;
free(buf_local);
if(result == -1) {
PERROR("close");
int on_put_error(struct ustconsumer_callbacks *data, struct buffer_info *buf)
{
- unwrite_last_subbuffer(buf);
+ return unwrite_last_subbuffer(buf);
}
struct ustconsumer_callbacks *new_callbacks()