Commit e02430f73b35170f5628a6e3eadbc8f498f0be73

More portable month parser.

http://stackoverflow.com/questions/328215/does-anyone-know-of-a-c-compiler-that-fails-to-compile-this
logfiles.cpp
(25 / 12)
  
153153 int val;
154154};
155155
156#define MONTH_JAN (((((('J'<<8)|'a')<<8)|'n')<<8)|'/')
157#define MONTH_FEB (((((('F'<<8)|'e')<<8)|'b')<<8)|'/')
158#define MONTH_MAR (((((('M'<<8)|'a')<<8)|'r')<<8)|'/')
159#define MONTH_APR (((((('A'<<8)|'p')<<8)|'r')<<8)|'/')
160#define MONTH_MAY (((((('M'<<8)|'a')<<8)|'y')<<8)|'/')
161#define MONTH_JUN (((((('J'<<8)|'u')<<8)|'n')<<8)|'/')
162#define MONTH_JUL (((((('J'<<8)|'u')<<8)|'l')<<8)|'/')
163#define MONTH_AUG (((((('A'<<8)|'u')<<8)|'g')<<8)|'/')
164#define MONTH_SEP (((((('S'<<8)|'e')<<8)|'p')<<8)|'/')
165#define MONTH_OCT (((((('O'<<8)|'c')<<8)|'t')<<8)|'/')
166#define MONTH_NOV (((((('N'<<8)|'o')<<8)|'v')<<8)|'/')
167#define MONTH_DEC (((((('D'<<8)|'e')<<8)|'c')<<8)|'/')
168
156169/* Convert a three character month to the numeric value */
157170TESTED_STATIC int parseMonth(const char *input) {
158171 int rv=-1;
176176 }
177177
178178 switch(inputInt) {
179 case 'Jan/': rv=0; break;
180 case 'Feb/': rv=1; break;
181 case 'Mar/': rv=2; break;
182 case 'Apr/': rv=3; break;
183 case 'May/': rv=4; break;
184 case 'Jun/': rv=5; break;
185 case 'Jul/': rv=6; break;
186 case 'Aug/': rv=7; break;
187 case 'Sep/': rv=8; break;
188 case 'Oct/': rv=9; break;
189 case 'Nov/': rv=10; break;
190 case 'Dec/': rv=11; break;
179 case MONTH_JAN: rv=0; break;
180 case MONTH_FEB: rv=1; break;
181 case MONTH_MAR: rv=2; break;
182 case MONTH_APR: rv=3; break;
183 case MONTH_MAY: rv=4; break;
184 case MONTH_JUN: rv=5; break;
185 case MONTH_JUL: rv=6; break;
186 case MONTH_AUG: rv=7; break;
187 case MONTH_SEP: rv=8; break;
188 case MONTH_OCT: rv=9; break;
189 case MONTH_NOV: rv=10; break;
190 case MONTH_DEC: rv=11; break;
191191 }
192192
193193 return rv;

Comments

Add a new comment:

Login or create an account to post a comment

Add your comment