commit 91d19cceac80d14b5700bfe6d0e12c3f9bea7cb2
parent 608c724addbb45dee0c9c112c7a57868f935c4d9
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date: Tue, 8 Feb 2022 15:19:19 +0100
make journal entry argument processing saner
the mega-if was unreadable and caused lots of churn.
Diffstat:
1 file changed, 35 insertions(+), 13 deletions(-)
diff --git a/src/sync_state.c b/src/sync_state.c
@@ -279,18 +279,41 @@ load_state( sync_vars_t *svars )
}
buf[ll] = 0;
char c;
- int tn;
+ int tn, bad;
uint t1, t2, t3, t4;
- if ((c = buf[0]) == '#' ?
- (tn = 0, (sscanf( buf + 2, "%u %u %n", &t1, &t2, &tn ) < 2) || !tn || (ll - (uint)tn != TUIDL + 2)) :
- c == '!' ?
- (sscanf( buf + 2, "%u", &t1 ) != 1) :
- c == 'N' || c == 'F' || c == 'T' || c == '+' || c == '&' || c == '-' || c == '=' || c == '_' || c == '|' ?
- (sscanf( buf + 2, "%u %u", &t1, &t2 ) != 2) :
- c != '^' ?
- (sscanf( buf + 2, "%u %u %u", &t1, &t2, &t3 ) != 3) :
- (sscanf( buf + 2, "%u %u %u %u", &t1, &t2, &t3, &t4 ) != 4))
- {
+ switch ((c = buf[0])) {
+ case '#':
+ tn = 0;
+ bad = (sscanf( buf + 2, "%u %u %n", &t1, &t2, &tn ) < 2) || !tn || (ll - (uint)tn != TUIDL + 2);
+ break;
+ case '!':
+ bad = sscanf( buf + 2, "%u", &t1 ) != 1;
+ break;
+ case 'N':
+ case 'F':
+ case 'T':
+ case '+':
+ case '&':
+ case '-':
+ case '=':
+ case '_':
+ case '|':
+ bad = sscanf( buf + 2, "%u %u", &t1, &t2 ) != 2;
+ break;
+ case '<':
+ case '>':
+ case '*':
+ case '~':
+ bad = sscanf( buf + 2, "%u %u %u", &t1, &t2, &t3 ) != 3;
+ break;
+ case '^':
+ bad = sscanf( buf + 2, "%u %u %u %u", &t1, &t2, &t3, &t4 ) != 4;
+ break;
+ default:
+ error( "Error: unrecognized journal entry at %s:%d\n", svars->jname, line );
+ goto jbail;
+ }
+ if (bad) {
error( "Error: malformed journal entry at %s:%d\n", svars->jname, line );
goto jbail;
}
@@ -373,8 +396,7 @@ load_state( sync_vars_t *svars )
srec = upgrade_srec( svars, srec );
break;
default:
- error( "Error: unrecognized journal entry at %s:%d\n", svars->jname, line );
- goto jbail;
+ assert( !"Unhandled journal entry" );
}
}
}