summaryrefslogtreecommitdiff
path: root/src/lib/libast/features/tmlib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libast/features/tmlib')
-rw-r--r--src/lib/libast/features/tmlib45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/lib/libast/features/tmlib b/src/lib/libast/features/tmlib
new file mode 100644
index 0000000..221079c
--- /dev/null
+++ b/src/lib/libast/features/tmlib
@@ -0,0 +1,45 @@
+set prototyped
+
+_cc_export_dynamic = note{ probe CC.EXPORT.DYNAMIC supported }end run{
+ case `{ probe -l C make cc | grep '^CC.EXPORT.DYNAMIC = .'; } 2>/dev/null` in
+ '') exit 1 ;;
+ esac
+}end
+
+tst tzset_environ note{ tzset() bypasses user getenv() }end execute{
+ #if _UWIN || !_cc_export_dynamic
+ int main()
+ {
+ return 0;
+ }
+ #else
+ #include <time.h>
+ extern char** environ;
+ extern char* tzname[2];
+ #if _STD_
+ extern char* getenv(char* s)
+ #else
+ extern char* getenv(s)
+ char* s;
+ #endif
+ {
+ return "foo0bar";
+ }
+ int main()
+ {
+ tzset();
+ return tzname[0] && !strcmp(tzname[0], "foo") &&
+ tzname[1] && !strcmp(tzname[1], "bar");
+ }
+ #endif
+}end
+
+if ( _tzset_environ ) {
+ #define tmlocaltime(p) _tm_localtime(p)
+
+ extern struct tm* _tm_localtime(const time_t*);
+}
+else {
+ #define tmlocaltime(p) localtime(p)
+}
+endif