int parseMonth(const char *input) {
int rv=-1;
const char *p=input;
int len=strlen(input);
/* Short cut when the length falls outside of
expected ranges */
if(len < 3 || len > 3) {
return rv;
}
/* Collapsing anything with fewer than 4 paths */
/* 12 matches for "" */
switch(p[0]) {
case 'A':
/* 2 match(es) for "A" */
if(memcmp(p, "Apr\0", 4) == 0) {
rv=3;
} else if(memcmp(p, "Aug\0", 4) == 0) {
rv=7;
}
break;
case 'D':
/* 1 match(es) for "D" */
if(memcmp(p, "Dec\0", 4) == 0) {
rv=11;
}
break;
case 'F':
/* 1 match(es) for "F" */
if(memcmp(p, "Feb\0", 4) == 0) {
rv=1;
}
break;
case 'J':
/* 3 match(es) for "J" */
if(memcmp(p, "Jan\0", 4) == 0) {
rv=0;
} else if(memcmp(p, "Jun\0", 4) == 0) {
rv=5;
} else if(memcmp(p, "Jul\0", 4) == 0) {
rv=6;
}
break;
case 'M':
/* 2 match(es) for "M" */
if(memcmp(p, "Mar\0", 4) == 0) {
rv=2;
} else if(memcmp(p, "May\0", 4) == 0) {
rv=4;
}
break;
case 'O':
/* 1 match(es) for "O" */
if(memcmp(p, "Oct\0", 4) == 0) {
rv=9;
}
break;
case 'N':
/* 1 match(es) for "N" */
if(memcmp(p, "Nov\0", 4) == 0) {
rv=10;
}
break;
case 'S':
/* 1 match(es) for "S" */
if(memcmp(p, "Sep\0", 4) == 0) {
rv=8;
}
break;
}
return rv;
}