Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fixed bug #77576 pull the libmagic implementation of gmtime_r
This commit is contained in:
Anatol Belski 2019-03-08 20:48:24 +01:00
commit c8ebfaa4eb
2 changed files with 8 additions and 33 deletions

View file

@ -23,6 +23,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "php.h"
#include "file.h" #include "file.h"
@ -152,7 +153,7 @@ cdf_timespec_to_timestamp(cdf_timestamp_t *t, const struct timespec *ts)
#endif #endif
#ifdef notyet #ifdef notyet
struct tm tm; struct tm tm;
if (gmtime_r(&ts->ts_sec, &tm) == NULL) { if (php_gmtime_r(&ts->ts_sec, &tm) == NULL) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
@ -168,7 +169,7 @@ cdf_timespec_to_timestamp(cdf_timestamp_t *t, const struct timespec *ts)
char * char *
cdf_ctime(const time_t *sec, char *buf) cdf_ctime(const time_t *sec, char *buf)
{ {
char *ptr = ctime_r(sec, buf); char *ptr = php_ctime_r(sec, buf);
if (ptr != NULL) if (ptr != NULL)
return buf; return buf;
(void)snprintf(buf, 26, "*Bad* %#16.16" INT64_T_FORMAT "x\n", (void)snprintf(buf, 26, "*Bad* %#16.16" INT64_T_FORMAT "x\n",

View file

@ -28,7 +28,6 @@
/* /*
* print.c - debugging printout routines * print.c - debugging printout routines
*/ */
#define _GNU_SOURCE
#include "php.h" #include "php.h"
#include "file.h" #include "file.h"
@ -45,11 +44,6 @@ FILE_RCSID("@(#)$File: print.c,v 1.82 2017/02/10 18:14:01 christos Exp $")
#endif #endif
#include <time.h> #include <time.h>
#ifdef PHP_WIN32
# define asctime_r php_asctime_r
# define ctime_r php_ctime_r
#endif
#define SZOF(a) (sizeof(a) / sizeof(a[0])) #define SZOF(a) (sizeof(a) / sizeof(a[0]))
#include "cdf.h" #include "cdf.h"
@ -240,8 +234,8 @@ protected const char *
file_fmttime(uint64_t v, int flags, char *buf) file_fmttime(uint64_t v, int flags, char *buf)
{ {
char *pp; char *pp;
time_t t = (time_t)v; time_t t;
struct tm *tm = NULL; struct tm *tm, tmz;
if (flags & FILE_T_WINDOWS) { if (flags & FILE_T_WINDOWS) {
struct timespec ts; struct timespec ts;
@ -254,33 +248,13 @@ file_fmttime(uint64_t v, int flags, char *buf)
} }
if (flags & FILE_T_LOCAL) { if (flags & FILE_T_LOCAL) {
pp = ctime_r(&t, buf); tm = php_localtime_r(&t, &tmz);
} else { } else {
#ifndef HAVE_DAYLIGHT tm = php_gmtime_r(&t, &tmz);
private int daylight = 0;
#ifdef HAVE_TM_ISDST
private time_t now = (time_t)0;
if (now == (time_t)0) {
struct tm *tm1;
(void)time(&now);
tm1 = localtime(&now);
if (tm1 == NULL)
goto out;
daylight = tm1->tm_isdst;
}
#endif /* HAVE_TM_ISDST */
#endif /* HAVE_DAYLIGHT */
if (daylight)
t += 3600;
tm = gmtime(&t);
if (tm == NULL)
goto out;
pp = asctime_r(tm, buf);
} }
if (tm == NULL) if (tm == NULL)
goto out; goto out;
pp = asctime_r(tm, buf); pp = php_asctime_r(tm, buf);
if (pp == NULL) if (pp == NULL)
goto out; goto out;