ruby/internal/time.h
Hiroshi SHIBATA f7ec9546ee
merge revision(s) 3f07bc76ff, 34098b669c: [Backport #21144]
[Bug #21144] Win32: Use Windows time zone ID if TZ is not set

	If the TZ environment variable is not set, the time zone names
	retrieved from the system are localized for UI display and may vary
	across editions and language packs for the same time zone.
	Use the time zone IDs that are invariant across environments instead.

	[Bug #21144] Win32: Convert the time zone name to the current locale

	The Windows time zone IDs provided by Microsoft as of 24H1 are ASCII
	only all, but the API itself is not impossible to set non-ASCII key
	name.  Prefer the current locale encoding for now until we move to
	UTF-8 including environment variables and command line arguments.
2025-03-10 15:48:58 +09:00

37 lines
1.3 KiB
C

#ifndef INTERNAL_TIME_H /*-*-C-*-vi:se ft=c:*/
#define INTERNAL_TIME_H
/**
* @author Ruby developers <ruby-core@ruby-lang.org>
* @copyright This file is a part of the programming language Ruby.
* Permission is hereby granted, to either redistribute and/or
* modify this file, provided that the conditions mentioned in the
* file COPYING are met. Consult the file for details.
* @brief Internal header for Time.
*/
#include "ruby/internal/config.h" /* for SIGNEDNESS_OF_TIME_T */
#include "internal/bits.h" /* for SIGNED_INTEGER_MAX */
#include "ruby/ruby.h" /* for VALUE */
#if SIGNEDNESS_OF_TIME_T < 0 /* signed */
# define TIMET_MAX SIGNED_INTEGER_MAX(time_t)
# define TIMET_MIN SIGNED_INTEGER_MIN(time_t)
#elif SIGNEDNESS_OF_TIME_T > 0 /* unsigned */
# define TIMET_MAX UNSIGNED_INTEGER_MAX(time_t)
# define TIMET_MIN ((time_t)0)
#endif
struct timeval; /* <- in <sys/time.h> or <winsock2.h> */
/* time.c */
struct timeval rb_time_timeval(VALUE);
RUBY_SYMBOL_EXPORT_BEGIN
/* time.c (export) */
void ruby_reset_leap_second_info(void);
#ifdef RBIMPL_ATTR_DEPRECATED_INTERNAL_ONLY
RBIMPL_ATTR_DEPRECATED_INTERNAL_ONLY()
#endif
void ruby_reset_timezone(const char *);
RUBY_SYMBOL_EXPORT_END
#endif /* INTERNAL_TIME_H */