separator module #1

Merged
poz merged 5 commits from krizej/modfetch:sepmodule into master 2024-02-09 22:48:17 +01:00
Showing only changes of commit f1a28fb6b4 - Show all commits

View file

@ -18,49 +18,49 @@ uint8_t version_patch(void) { return 0; }
const char *module_name(void) { return "sep"; }
static size_t length = 8;
static char *sep_char = (char[]){'-', '\0'};
static char *sep_char = "-";
krizej marked this conversation as resolved Outdated
Outdated
Review

implicitly cast the literal to char* because of a warning

modules/sep.c:21:25: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
   21 | static char *sep_char = "-";
      |                         ^~~
implicitly cast the literal to `char*` because of a warning ``` modules/sep.c:21:25: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 21 | static char *sep_char = "-"; | ^~~ ```

that produces basically the same warning but don't worry i've found a way :-)

that produces basically the same warning but don't worry i've found a way :-)
Outdated
Review

turn it back to "-"

turn it back to "-"
static size_t sep_char_length = 1;
void init(char **config) {
for (char *opt = *config; opt != NULL; opt = *++config) {
if (strncmp(opt, "sep", 3) == 0) {
char *valstr = opt + 4; // skip 'sep='
long value = strtol(valstr, NULL, 10);
for (char *opt = *config; opt != NULL; opt = *++config) {
krizej marked this conversation as resolved Outdated
Outdated
Review

for(...) -> for (...)
same for if

`for(...)` -> `for (...)` same for if

why not functions though boy

why not functions though boy
Outdated
Review

functions are simply built different

functions are simply built different

that is why their braces should be on a new line ;-)

that is why their braces should be on a new line ;-)
if (strncmp(opt, "sep", 3) == 0) {
krizej marked this conversation as resolved Outdated
Outdated
Review

instead of ! use == 0, same in the if below

instead of `!` use `== 0`, same in the if below
char *valstr = opt + 4; // skip 'sep='
long value = strtol(valstr, NULL, 10);
if (value >= 0) {
length = (size_t) value;
}
} else if (strncmp(opt, "char", 4) == 0) {
char *value = opt + 5; // skip 'char='
if (value >= 0) {
length = (size_t) value;
}
} else if (strncmp(opt, "char", 4) == 0) {
char *value = opt + 5; // skip 'char='
if (*value != 0) { // todo: see if there are any more characters that should be rejected
sep_char_length = strlen(value);
sep_char = malloc((sep_char_length + 1) * sizeof(*sep_char));
strncpy(sep_char, value, sep_char_length);
sep_char[sep_char_length] = '\0';
} else {
sep_char = NULL;
}
}
}
if (*value != 0) { // todo: see if there are any more characters that should be rejected
sep_char_length = strlen(value);
sep_char = malloc((sep_char_length + 1) * sizeof(char));
krizej marked this conversation as resolved Outdated
Outdated
Review

in all the mallocs do sizeof(type) even if the size is 1 byte

in all the mallocs do `sizeof(type)` even if the size is 1 byte
strncpy(sep_char, value, sep_char_length);
sep_char[sep_char_length] = '\0';
} else {
sep_char = NULL;
}
}
}
}
const char *get(void) {
char *ret;
char *ret;
if (sep_char == NULL) {
ret = malloc(1 * sizeof(*ret));
*ret = 0;
return ret;
}
if (sep_char == NULL) {
ret = malloc(1 * sizeof(char));
*ret = 0;
return ret;
}
ret = malloc((length * sep_char_length + 1) * sizeof(*ret));
memset(ret, 0, length * sep_char_length + 1);
ret = malloc((length * sep_char_length + 1) * sizeof(char));
memset(ret, 0, length * sep_char_length + 1);
for (size_t i = 0; i < length; i++)
strncat(ret, sep_char, sep_char_length);
for (size_t i = 0; i < length; i++)
strncat(ret, sep_char, sep_char_length);
ret[length * sep_char_length] = '\0'; // just to be sure :-D
ret[length * sep_char_length] = '\0'; // just to be sure :-D
return ret;
return ret;
}