840c0b18e9990fe15416283f869bc8532c1bbf3a
Stefan Schuermans add copyright headers and l...

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c   1) /**
libuptev/src/stringlist.c   2)  * UProcTrace: User-space Process Tracing
libuptev/src/stringlist.c   3)  * Copyright 2020: Stefan Schuermans, Aachen, Germany <stefan@schuermans.info>
libuptev/src/stringlist.c   4)  * Copyleft: GNU LESSER GENERAL PUBLIC LICENSE version 3 (see LICENSE)
libuptev/src/stringlist.c   5)  */
libuptev/src/stringlist.c   6) 
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 10) 
liblwpttr/src/stringlist.c 11) #include <fcntl.h>
liblwpttr/src/stringlist.c 12) #include <stdlib.h>
liblwpttr/src/stringlist.c 13) #include <string.h>
liblwpttr/src/stringlist.c 14) #include <sys/stat.h>
Stefan Schuermans formatting

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  18) 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 19)   /* count strings */
liblwpttr/src/stringlist.c 20)   size_t pos = 0;
liblwpttr/src/stringlist.c 21)   *cnt = 0;
liblwpttr/src/stringlist.c 22)   while (pos < sz) {
liblwpttr/src/stringlist.c 23)     pos += strlen(data + pos) + 1;
Stefan Schuermans detect overshooting end of...

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 27)     ++*cnt;
liblwpttr/src/stringlist.c 28)   }
liblwpttr/src/stringlist.c 29)   /* allocate array for pointers */
liblwpttr/src/stringlist.c 30)   char **ptrs = malloc(*cnt * sizeof(char *));
Stefan Schuermans formatting

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 32)     *cnt = 0;
liblwpttr/src/stringlist.c 33)     return NULL;
liblwpttr/src/stringlist.c 34)   }
liblwpttr/src/stringlist.c 35)   /* fill pointers into array */
liblwpttr/src/stringlist.c 36)   pos = 0;
liblwpttr/src/stringlist.c 37)   for (size_t i = 0; i < *cnt; ++i) {
liblwpttr/src/stringlist.c 38)     ptrs[i] = data + pos;
liblwpttr/src/stringlist.c 39)     pos += strlen(data + pos) + 1;
liblwpttr/src/stringlist.c 40)   }
liblwpttr/src/stringlist.c 41)   return ptrs;
liblwpttr/src/stringlist.c 42) }
liblwpttr/src/stringlist.c 43) 
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 46)   *n = 0;
liblwpttr/src/stringlist.c 47)   *strs = NULL;
liblwpttr/src/stringlist.c 48)   /* read file contents */
liblwpttr/src/stringlist.c 49)   size_t sz;
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

liblwpttr/src/stringlist.c 52)     return -1;
liblwpttr/src/stringlist.c 53)   }
liblwpttr/src/stringlist.c 54)   /* create pointer array */
liblwpttr/src/stringlist.c 55)   size_t cnt;
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

libuptev/src/stringlist.c  61)   /* add malloc-ed object to cleaner */
libuptev/src/stringlist.c  62)   if (uptev_cleaner_add_ptr(cleaner, data) != 0) {
libuptev/src/stringlist.c  63)     free(ptrs);
libuptev/src/stringlist.c  64)     return -1;
libuptev/src/stringlist.c  65)   }
libuptev/src/stringlist.c  66)   if (uptev_cleaner_add_ptr(cleaner, ptrs) != 0) {
libuptev/src/stringlist.c  67)     return -1;
libuptev/src/stringlist.c  68)   }
libuptev/src/stringlist.c  69)   /* success: return string array */