diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-10 20:27:27 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-10 20:27:27 +0200 |
commit | 30f0686fb2d332cdc0ced15ac2c04094a127783a (patch) | |
tree | 33f3e088d2583e4c4708076a074eaab96e431ab1 /flags.c | |
download | mblaze-30f0686fb2d332cdc0ced15ac2c04094a127783a.tar.gz mblaze-30f0686fb2d332cdc0ced15ac2c04094a127783a.tar.xz mblaze-30f0686fb2d332cdc0ced15ac2c04094a127783a.zip |
various code that may end up as a mail client
Diffstat (limited to 'flags.c')
-rw-r--r-- | flags.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/flags.c b/flags.c new file mode 100644 index 0000000..fd66951 --- /dev/null +++ b/flags.c @@ -0,0 +1,48 @@ +#include <string.h> +#include <stdio.h> +#include <stdint.h> + +int +main(int argc, char *argv[]) +{ + int i; + unsigned int j; + char *f, *e; + + int8_t flagmod[255] = { 0 }; + + for (i = 1; i < argc; i++) { + if (*argv[i] == '+') { + f = argv[i] + 1; + while (*f) + flagmod[(int)*f++]++; + continue; + } else if (*argv[i] == '-') { + f = argv[i] + 1; + while (*f) + flagmod[(int)*f++]--; + continue; + } + + int8_t flags[255] = { 0 }; + char flagstr[255]; + f = e = strstr(argv[i], ":2,"); + + if (!f) + continue; + f += 3; + while (*f) + flags[(int)*f++] = 1; + + *e = 0; + f = flagstr; + for (j = 0; j < sizeof flags; j++) + if (flags[j] + flagmod[j]) + *f++ = j; + *f = 0; + + printf("%s:2,%s\n", argv[i], flagstr); + } + + return 0; +} |