troptions(CRLFOpt *options, const char *str)
{
switch (str[0]) {
- case 'l':
- if (strcmp(str, "lf-in-cr") == 0) {
- options->lfincr = !options->lfincr; return 0;
- } else if (strcmp(str, "lf-to-cr") == 0) {
- options->lftocr = !options->lftocr; return 0;
- } else {
- goto trerr;
- }
- break;
- case 'c':
- if (strcmp(str, "cr-in-lf") == 0) {
- options->crinlf = !options->crinlf; return 0;
- } else if (strcmp(str, "cr-to-lf") == 0) {
- options->crtolf = !options->crtolf; return 0;
- } else {
- goto trerr;
- }
- break;
- case 'n':
- if (strcmp(str, "no-lf") == 0) {
- options->nolf = !options->nolf; return 0;
- } else if (strcmp(str, "no-cr") == 0) {
- options->nocr = !options->nocr; return 0;
- } else {
- goto trerr;
- }
- break;
- default:
- trerr:
- fprintf(stderr, "invalid translation option: %s\n", str);
- return 1;
+ case 'l':
+ if (!strcmp(str, "lf-in-cr")) {
+ options->lfincr ^= 1; return 0;
+ } else if (!strcmp(str, "lf-to-cr")) {
+ options->lftocr ^= 1; return 0;
+ } else {
+ goto trerr;
+ }
+ break;
+ case 'c':
+ if (!strcmp(str, "cr-in-lf")) {
+ options->crinlf ^= 1; return 0;
+ } else if (!strcmp(str, "cr-to-lf")) {
+ options->crtolf ^= 1; return 0;
+ } else {
+ goto trerr;
+ }
+ break;
+ case 'n':
+ if (!strcmp(str, "no-lf")) {
+ options->nolf ^= 1; return 0;
+ } else if (!strcmp(str, "no-cr")) {
+ options->nocr ^= 1; return 0;
+ } else {
+ goto trerr;
+ }
+ break;
+ default:
+ trerr:
+ fprintf(stderr, "invalid translation option: %s\n", str);
+ return 1;
}
}