2642378e93c564f94a5fded1324def6e58c69eac
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

1) #include "write.h"
2) 
Stefan Schuermans implement proc_end event

Stefan Schuermans authored 4 years ago

3) #include <fcntl.h>
Stefan Schuermans add header to events to sep...

Stefan Schuermans authored 4 years ago

4) #include <stdint.h>
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

5) #include <stdlib.h>
Stefan Schuermans implement proc_end event

Stefan Schuermans authored 4 years ago

6) #include <string.h>
7) #include <sys/file.h>
8) #include <unistd.h>
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

9) 
Stefan Schuermans add header to events to sep...

Stefan Schuermans authored 4 years ago

10) struct lwptpl_event_header_s {
11)   uint8_t magic[4]; /**< l w p t */
12)   uint8_t size[4]; /**< size of payload in network byte oder */
13) } __attribute__((packed));
14) 
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

15) void lwptpl_write(void const *data, size_t size) {
Stefan Schuermans add header to events to sep...

Stefan Schuermans authored 4 years ago

16)   if (! data || ! size || size > 0xFFFFFFFF) {
Stefan Schuermans implement proc_end event

Stefan Schuermans authored 4 years ago

17)     return;
18)   }
19)   char const *filename = getenv("LWPTPL_OUTPUT");
20)   if (! filename) {
21)     return;
22)   }
23)   int fd = open(filename, O_WRONLY | O_APPEND);
24)   if (fd == -1) {
25)     return;
26)   }
27)   if (flock(fd, LOCK_EX) == -1) {
28)     close(fd);
29)     return;
30)   }
Stefan Schuermans add header to events to sep...

Stefan Schuermans authored 4 years ago

31)   struct lwptpl_event_header_s lwptpl_event_header = {
32)     .magic = { 'l', 'w', 'p', 't' },
33)     .size = {
34)       (size >> 24) & 0xFF,
35)       (size >> 16) & 0xFF,
36)       (size >> 8) & 0xFF,
37)       size & 0xFF,
38)     }
39)   };
40)   write(fd, &lwptpl_event_header, sizeof(lwptpl_event_header));
Stefan Schuermans implement proc_end event

Stefan Schuermans authored 4 years ago

41)   write(fd, data, size);
42)   flock(fd, LOCK_UN);
43)   close(fd);