18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#include <string.h>
#include <time.h>
#import "macros.h"
const char *
of_strptime(const char *buffer, const char *format, struct tm *tm, short *tz)
{
enum {
SEARCH_CONVERSION_SPECIFIER,
IN_CONVERSION_SPECIFIER
} state = SEARCH_CONVERSION_SPECIFIER;
size_t j, bufferLen, formatLen;
bufferLen = strlen(buffer);
formatLen = strlen(format);
j = 0;
for (size_t i = 0; i < formatLen; i++) {
if (j >= bufferLen)
return NULL;
switch (state) {
case SEARCH_CONVERSION_SPECIFIER:
if (format[i] == '%')
state = IN_CONVERSION_SPECIFIER;
else if (format[i] != buffer[j++])
return NULL;
break;
case IN_CONVERSION_SPECIFIER:;
int k, maxLen, number = 0;
switch (format[i]) {
case 'd':
case 'e':
case 'H':
case 'm':
|
|
|
|
|
|
|
|
<
|
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#include <string.h>
#include <time.h>
#import "macros.h"
const char *
OFStrPTime(const char *buffer, const char *format, struct tm *tm, short *tz)
{
enum {
stateSearchConversionSpecifier,
stateInConversionSpecifier
} state = stateSearchConversionSpecifier;
size_t j, bufferLen, formatLen;
bufferLen = strlen(buffer);
formatLen = strlen(format);
j = 0;
for (size_t i = 0; i < formatLen; i++) {
if (j >= bufferLen)
return NULL;
switch (state) {
case stateSearchConversionSpecifier:
if (format[i] == '%')
state = stateInConversionSpecifier;
else if (format[i] != buffer[j++])
return NULL;
break;
case stateInConversionSpecifier:;
int k, maxLen, number = 0;
switch (format[i]) {
case 'd':
case 'e':
case 'H':
case 'm':
|
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
break;
case 't':
if (buffer[j++] != '\t')
return NULL;
break;
}
state = SEARCH_CONVERSION_SPECIFIER;
break;
}
}
return buffer + j;
}
|
|
|
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
break;
case 't':
if (buffer[j++] != '\t')
return NULL;
break;
}
state = stateSearchConversionSpecifier;
break;
}
}
return buffer + j;
}
|