a4974cc65d6b21f11b02481bfbb0fff67814f245
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c  1) #include "stringlist.h"
liblwpttr/src/stringlist.c  2) #include "cleaner.h"
Stefan Schuermans factor reading file to sepr...

Stefan Schuermans authored 4 years ago

liblwptev/src/stringlist.c  3) #include "read_file.h"
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c  4) 
liblwpttr/src/stringlist.c  5) #include <fcntl.h>
liblwpttr/src/stringlist.c  6) #include <stdlib.h>
liblwpttr/src/stringlist.c  7) #include <string.h>
liblwpttr/src/stringlist.c  8) #include <sys/stat.h>
Stefan Schuermans formatting

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c   9) #include <sys/types.h>
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 10) #include <unistd.h>
liblwpttr/src/stringlist.c 11) 
Stefan Schuermans formatting

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  12) static char **uptev_stringlist_make_ptrs(char *data, size_t sz, size_t *cnt) {
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 13)   /* count strings */
liblwpttr/src/stringlist.c 14)   size_t pos = 0;
liblwpttr/src/stringlist.c 15)   *cnt = 0;
liblwpttr/src/stringlist.c 16)   while (pos < sz) {
liblwpttr/src/stringlist.c 17)     pos += strlen(data + pos) + 1;
Stefan Schuermans detect overshooting end of...

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  18)     if (pos > sz) {
libuptev/src/stringlist.c  19)       break; /* last string overshoots end of data -> ignore it */
libuptev/src/stringlist.c  20)     }
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 21)     ++*cnt;
liblwpttr/src/stringlist.c 22)   }
liblwpttr/src/stringlist.c 23)   /* allocate array for pointers */
liblwpttr/src/stringlist.c 24)   char **ptrs = malloc(*cnt * sizeof(char *));
Stefan Schuermans formatting

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  25)   if (!ptrs) {
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 26)     *cnt = 0;
liblwpttr/src/stringlist.c 27)     return NULL;
liblwpttr/src/stringlist.c 28)   }
liblwpttr/src/stringlist.c 29)   /* fill pointers into array */
liblwpttr/src/stringlist.c 30)   pos = 0;
liblwpttr/src/stringlist.c 31)   for (size_t i = 0; i < *cnt; ++i) {
liblwpttr/src/stringlist.c 32)     ptrs[i] = data + pos;
liblwpttr/src/stringlist.c 33)     pos += strlen(data + pos) + 1;
liblwpttr/src/stringlist.c 34)   }
liblwpttr/src/stringlist.c 35)   return ptrs;
liblwpttr/src/stringlist.c 36) }
liblwpttr/src/stringlist.c 37) 
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  38) int uptev_stringlist_read(char const *pathname, size_t *n, char ***strs,
libuptev/src/stringlist.c  39)                           uptev_cleaner_t *cleaner) {
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 40)   *n = 0;
liblwpttr/src/stringlist.c 41)   *strs = NULL;
liblwpttr/src/stringlist.c 42)   /* read file contents */
liblwpttr/src/stringlist.c 43)   size_t sz;
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  44)   char *data = uptev_read_file(pathname, &sz);
Stefan Schuermans formatting

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  45)   if (!data) {
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 46)     return -1;
liblwpttr/src/stringlist.c 47)   }
liblwpttr/src/stringlist.c 48)   /* create pointer array */
liblwpttr/src/stringlist.c 49)   size_t cnt;
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  50)   char **ptrs = uptev_stringlist_make_ptrs(data, sz, &cnt);
Stefan Schuermans formatting

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  51)   if (!ptrs) {
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  52)     free(data);
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 53)     return -1;
liblwpttr/src/stringlist.c 54)   }
Stefan Schuermans handle cleaner out of memory

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  55)   /* add malloc-ed object to cleaner */
libuptev/src/stringlist.c  56)   if (uptev_cleaner_add_ptr(cleaner, data) != 0) {
libuptev/src/stringlist.c  57)     free(ptrs);
libuptev/src/stringlist.c  58)     return -1;
libuptev/src/stringlist.c  59)   }
libuptev/src/stringlist.c  60)   if (uptev_cleaner_add_ptr(cleaner, ptrs) != 0) {
libuptev/src/stringlist.c  61)     return -1;
libuptev/src/stringlist.c  62)   }
libuptev/src/stringlist.c  63)   /* success: return string array */