This commit is contained in:
anon 2023-08-04 13:31:03 +02:00
commit 2e063532a9
3 changed files with 71 additions and 8 deletions

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
# Script handling unity builds and options.
DIR=$(dirname $(readlink -f "$0"))
@ -26,5 +26,5 @@ fi
[ ! -z ${SAN} ] && CFLAGS=`echo "$CFLAGS -fsanitize=$SAN"`
echo "$CC $CFLAGS -pipe $DIR/src/unity.c -o $PREFIX/$PROGN $CPPFLAGS $LDFLAGS"
$CC $CFLAGS -pipe $DIR/src/unity.c -o $PREFIX/$PROGN $CPPFLAGS $LDFLAGS
time $CC $CFLAGS -pipe $DIR/src/unity.c -o $PREFIX/$PROGN $CPPFLAGS $LDFLAGS
echo -e "\nStatus: $?"

View File

@ -13,10 +13,12 @@ typedef struct
VARDECL creds_t creds;
DECL char * dump(void);
DECL char * raw(char const * const sql);
DECL char * remind(char * who);
DECL char * slurp(char const * fn);
DECL char ** str_split(char const * s, char c);
DECL void split_clean(char ** split);
DECL char * dump(void);
DECL char * raw(char const * const sql);
DECL char * remind(char * who);
DECL char * slurp(char const * fn);
DECL int is_admin(char const * user);
DECL void parse_admins(char * admin_string);
DECL int parse_pair(char const * buf, size_t const len);

View File

@ -52,6 +52,67 @@ VARDECL size_t const cred_names_len[] =
VARDECL creds_t creds = {0};
DECL char **
str_split(char const * s, char c)
{
char ** ret = NULL;
size_t i = 0;
size_t current_token_i = 0;
size_t token_start_i = 0;
size_t tokens_q = 0;
/* count tokens */
for (i = 1; s[i]; ++i)
{
/* end of a token*/
if (s[i] == c && s[i - 1] != c)
{ ++tokens_q; }
}
++tokens_q;
ret = (char **)calloc(tokens_q + 1, sizeof(char *));
if (!ret)
{ return ret; }
for (i = 1; s[i]; ++i)
{
if (s[i] == c && s[i - 1] != c)
{
/* end of a token*/
ret[current_token_i] = strndup(s + token_start_i, i - token_start_i);
if (!ret[current_token_i])
{
split_clean(ret);
return NULL;
}
++current_token_i;
}
else if (s[i] != c && s[i - 1] == c)
{
/* start of a token */
token_start_i = i;
}
}
/* Signal that the split array is ended (for iteration purposes) */
ret[current_token_i + 1] = NULL;
return ret;
}
DECL void
split_clean(char ** split)
{
while (*split)
{
free(*split);
}
free(split);
}
DECL char *
slurp(char const * fn)
{
@ -164,8 +225,8 @@ parse_pair(char const * buf, size_t len)
/* X macro for handling this data may be better */
if (strncmp(buf, cred_names[f], cred_names_len[f]) == 0)
{
fprintf(stderr, "f%ld:len%ld:%s\n", f, cred_names_len[f],
cred_names[f]); fflush(stderr);
/* fprintf(stderr, "f%ld:len%ld:%s\n", f, cred_names_len[f], */
/* cred_names[f]); fflush(stderr); */
buf += i;
while (buf[x] != '\0')
{