14 while (
isspace((
unsigned char)*str))
24 end = str +
strlen(str) - 1;
25 while (end > str &&
isspace((
unsigned char)*end))
47 while (
fgets(line,
sizeof(line), file) !=
NULL)
51 if (p[0] ==
'#' || p[0] ==
';' || p[0] ==
'\0')
58 char* end =
strchr(p,
']');
66 if (
strcmp(name,
"meta") == 0)
70 else if (
strcmp(name,
"exec") == 0)
74 else if (
strcmp(name,
"env") == 0)
78 else if (
strcmp(name,
"sandbox") == 0)
82 else if (
strcmp(name,
"namespace") == 0)
99 char* equal =
strchr(p,
'=');
134 for (
uint64_t k = 0; k < amount; k++)
139 if (
snprintf(search,
sizeof(search),
"$%s", sub->
key) >= (
int)
sizeof(search))
144 size_t searchLen =
strlen(search);
147 char* ptr = entry->
value;
158 memmove(ptr + replaceLen, ptr + searchLen,
strlen(ptr + searchLen) + 1);
188 size_t len =
strlen(value);
194 for (
size_t i = 0; i < len; i++)
#define MAX_PATH
Maximum length of filepaths.
#define NULL
Pointer error value.
#define ERR
Integer error value.
uint64_t manifest_parse(manifest_t *manifest, const char *path)
char * manifest_get_value(section_t *section, const char *key)
void manifest_substitute(manifest_t *manifest, substitution_t *substitutions, uint64_t amount)
#define MANIFEST_SECTION_MAX
#define MANIFEST_STRING_MAX
uint64_t manifest_get_integer(section_t *section, const char *key)
static char * trim_whitespace(char *str)
_PUBLIC char * fgets(char *_RESTRICT s, int n, FILE *_RESTRICT stream)
_PUBLIC FILE * fopen(const char *_RESTRICT filename, const char *_RESTRICT mode)
_PUBLIC int fclose(FILE *stream)
_PUBLIC int snprintf(char *_RESTRICT s, size_t n, const char *_RESTRICT format,...)
_PUBLIC long long int atoll(const char *nptr)
_PUBLIC void * memmove(void *_RESTRICT s1, const void *_RESTRICT s2, size_t n)
_PUBLIC char * strncpy(char *_RESTRICT s1, const char *_RESTRICT s2, size_t n)
_PUBLIC void * memcpy(void *_RESTRICT s1, const void *_RESTRICT s2, size_t n)
_PUBLIC char * strstr(const char *s1, const char *s2)
_PUBLIC size_t strlen(const char *s)
_PUBLIC int strcmp(const char *s1, const char *s2)
_PUBLIC void * memset(void *s, int c, size_t n)
_PUBLIC char * strchr(const char *s, int c)
section_t sections[SECTION_TYPE_MAX]
char key[MANIFEST_STRING_MAX]
char value[MANIFEST_STRING_MAX]
section_entry_t entries[MANIFEST_SECTION_MAX]