mirror of
https://github.com/samba-team/samba.git
synced 2025-11-26 04:23:49 +03:00
so we can include it for the configure test as it seems that strptime() is really broken on some hosts in the build farm, re should use the replacement code when we detect this in the configure test metze
153 lines
2.9 KiB
C
153 lines
2.9 KiB
C
|
|
#ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <time.h>
|
|
|
|
#define true 1
|
|
#define false 0
|
|
|
|
/* make printf a no-op */
|
|
#define printf if(0) printf
|
|
|
|
#else /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
|
|
|
|
#include "replace.h"
|
|
#include "system/time.h"
|
|
|
|
#endif /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
|
|
|
|
int libreplace_test_strptime(void)
|
|
{
|
|
const char *s = "20070414101546Z";
|
|
char *ret;
|
|
struct tm t, t2;
|
|
|
|
printf("test: strptime\n");
|
|
|
|
ret = strptime(s, "%Y%m%d%H%M%S", &t);
|
|
if ( ret == NULL ) {
|
|
printf("failure: strptime [\n"
|
|
"returned NULL\n"
|
|
"]\n");
|
|
return false;
|
|
}
|
|
|
|
if ( *ret != 'Z' ) {
|
|
printf("failure: strptime [\n"
|
|
"ret doesn't point to 'Z'\n"
|
|
"]\n");
|
|
return false;
|
|
}
|
|
|
|
ret = strptime(s, "%Y%m%d%H%M%SZ", &t2);
|
|
if ( ret == NULL ) {
|
|
printf("failure: strptime [\n"
|
|
"returned NULL with Z\n"
|
|
"]\n");
|
|
return false;
|
|
}
|
|
|
|
if ( *ret != '\0' ) {
|
|
printf("failure: strptime [\n"
|
|
"ret doesn't point to '\\0'\n"
|
|
"]\n");
|
|
return false;
|
|
}
|
|
|
|
if (memcmp(&t, &t2, sizeof(t)) == 0) {
|
|
printf("failure: strptime [\n"
|
|
"result differs if the format string has a 'Z' at the end\n"
|
|
"]\n");
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_sec != 46) {
|
|
printf("failure: strptime [\n"
|
|
"tm_sec: expected: 46, got: %d\n"
|
|
"]\n",
|
|
t.tm_sec);
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_min != 15) {
|
|
printf("failure: strptime [\n"
|
|
"tm_min: expected: 15, got: %d\n"
|
|
"]\n",
|
|
t.tm_min);
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_hour != 10) {
|
|
printf("failure: strptime [\n"
|
|
"tm_hour: expected: 10, got: %d\n"
|
|
"]\n",
|
|
t.tm_hour);
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_mday != 14) {
|
|
printf("failure: strptime [\n"
|
|
"tm_mday: expected: 14, got: %d\n"
|
|
"]\n",
|
|
t.tm_mday);
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_mon != 3) {
|
|
printf("failure: strptime [\n"
|
|
"tm_mon: expected: 3, got: %d\n"
|
|
"]\n",
|
|
t.tm_mon);
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_year != 107) {
|
|
printf("failure: strptime [\n"
|
|
"tm_year: expected: 107, got: %d\n"
|
|
"]\n",
|
|
t.tm_year);
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_wday != 6) { /* saturday */
|
|
printf("failure: strptime [\n"
|
|
"tm_wday: expected: 6, got: %d\n"
|
|
"]\n",
|
|
t.tm_wday);
|
|
return false;
|
|
}
|
|
|
|
if (t.tm_yday != 103) {
|
|
printf("failure: strptime [\n"
|
|
"tm_yday: expected: 103, got: %d\n"
|
|
"]\n",
|
|
t.tm_yday);
|
|
return false;
|
|
}
|
|
|
|
/* we don't test this as it depends on the host configuration
|
|
if (t.tm_isdst != 0) {
|
|
printf("failure: strptime [\n"
|
|
"tm_isdst: expected: 0, got: %d\n"
|
|
"]\n",
|
|
t.tm_isdst);
|
|
return false;
|
|
}*/
|
|
|
|
printf("success: strptime\n");
|
|
|
|
return true;
|
|
}
|
|
|
|
#ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
|
|
int main (void)
|
|
{
|
|
int ret;
|
|
ret = libreplace_test_strptime();
|
|
if (ret == false) return 1;
|
|
return 0;
|
|
}
|
|
#endif
|