rem: if (!remove_one && prevcomma) *prevcomma = ',';
add: if (!remove_one) { if (prevcomma) *prevcomma = ','; prevcomma = comma; }
context: static int process_option_group(char *arg, struct opt opts[],                                int case_sensitive){    int remove = 1;    char *prevcomma = NULL;    while (1) {        int remove_one;        char *comma = strchr(arg, ',');        if (comma)            *comma = '\0';        remove_one = process_option(arg, opts, case_sensitive);        if (remove_one) {            if (comma)                memmove(arg, comma + 1, strlen(comma + 1) + 1);        } else {            remove = 0;            if (comma)                arg = comma + 1;        }        if (!remove_one && prevcomma)            *prevcomma = ',';        if (!comma)            break;        prevcomma = comma;    }    return remove;}