int filedev;
int fileino;
#endif
- int fileuid;
- int filegid;
+ Uid_t fileuid;
+ Gid_t filegid;
if (!PL_argvoutgv)
PL_argvoutgv = gv_fetchpv("ARGVOUT",TRUE,SVt_PVIO);
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 */
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();
#endif
#ifdef HAS_SEM
case OP_SEMCTL:
+#ifdef Semctl
if (cmd == IPC_STAT || cmd == IPC_SET)
infosize = sizeof(struct semid_ds);
else if (cmd == GETALL || cmd == SETALL)
/* "short" is technically wrong but much more portable
than guessing about u_?short(_t)? */
}
+#else
+ croak("%s not implemented", PL_op_desc[optype]);
+#endif
break;
#endif
#if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM)
#endif
#ifdef HAS_SEM
case OP_SEMCTL: {
+#ifdef Semctl
union semun unsemds;
unsemds.buf = (struct semid_ds *)a;
ret = Semctl(id, n, cmd, unsemds);
+#else
+ croak("%s not implemented", PL_op_desc[optype]);
+#endif
}
break;
#endif