if (SvIOK(sv)) {
if (SvGMAGICAL(sv))
mg_get(sv);
- PerlIO_printf(fp, "%ld", (long)SvIVX(sv));
+ if (SvIsUV(sv)) /* XXXX 64-bit? */
+ PerlIO_printf(fp, "%lu", (unsigned long)SvUVX(sv));
+ else
+ PerlIO_printf(fp, "%ld", (long)SvIVX(sv));
return !PerlIO_error(fp);
}
/* FALL THROUGH */
sv = POPs;
PUTBACK;
sv_setpv(PL_statname,SvPV(sv, n_a));
-#ifdef HAS_LSTAT
PL_laststatval = PerlLIO_lstat(SvPV(sv, n_a),&PL_statcache);
-#else
- PL_laststatval = PerlLIO_stat(SvPV(sv, n_a),&PL_statcache);
-#endif
if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(SvPV(sv, n_a), '\n'))
warner(WARN_NEWLINE, PL_warn_nl, "lstat");
return PL_laststatval;
bool
do_exec(char *cmd)
{
+ return do_exec3(cmd,0,0);
+}
+
+bool
+do_exec3(char *cmd, int fd, int do_report)
+{
register char **a;
register char *s;
char flags[10];
}
{
dTHR;
+ int e = errno;
+
if (ckWARN(WARN_EXEC))
warner(WARN_EXEC, "Can't exec \"%s\": %s",
PL_Argv[0], Strerror(errno));
+ if (do_report) {
+ PerlLIO_write(fd, (void*)&e, sizeof(int));
+ PerlLIO_close(fd);
+ }
}
}
do_execfree();
tot--;
}
else { /* don't let root wipe out directories without -U */
-#ifdef HAS_LSTAT
if (PerlLIO_lstat(s,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))
-#else
- if (PerlLIO_stat(s,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))
-#endif
tot--;
else {
if (UNLINK(s))