#include "EXTERN.h"
#define PERL_IN_PP_SYS_C
#include "perl.h"
-#include "time64.h"
-#include "time64.c"
+#if !defined(PERL_MICRO) && defined(Quad_t)
+# include "time64.h"
+# include "time64.c"
+#endif
#ifdef I_SHADOW
/* Shadow password support for solaris - pdo@cs.umd.edu
SV *sv;
if (MARK == SP - 1) {
- EXTEND(SP, 1000);
- sv = sv_2mortal(newSViv(sv_len(*SP)));
- PUSHs(sv);
+ sv = *SP;
+ mXPUSHi(sv_len(sv));
PUTBACK;
}
if (MAXARG < 2) {
pgrp = 0;
pid = 0;
+ XPUSHi(-1);
}
else {
pgrp = POPi;
{
dVAR;
dSP;
+#if defined(PERL_MICRO) || !defined(Quad_t)
+ Time_t when;
+ const struct tm *err;
+ struct tm tmbuf;
+#else
Time64_T when;
struct TM tmbuf;
struct TM *err;
- char *opname = PL_op->op_type == OP_LOCALTIME ? "localtime" : "gmtime";
+#endif
+ const char *opname = PL_op->op_type == OP_LOCALTIME ? "localtime" : "gmtime";
static const char * const dayname[] =
{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
static const char * const monname[] =
{"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+#if defined(PERL_MICRO) || !defined(Quad_t)
+ if (MAXARG < 1)
+ (void)time(&when);
+ else
+ when = (Time_t)SvIVx(POPs);
+
+ if (PL_op->op_type == OP_LOCALTIME)
+ err = localtime(&when);
+ else
+ err = gmtime(&when);
+
+ if (!err)
+ tmbuf = *err;
+#else
if (MAXARG < 1) {
time_t now;
(void)time(&now);
err = localtime64_r(&when, &tmbuf);
else
err = gmtime64_r(&when, &tmbuf);
+#endif
if( err == NULL ) {
/* XXX %lld broken for quads */