# endif
#endif
-#ifdef I_SYS_UN
-# ifdef __linux__
-# include <sys/un.h>
-# endif
-#endif
-
/* Put this after #includes because fork and vfork prototypes may conflict. */
#ifndef HAS_VFORK
# define vfork fork
(struct sockaddr *)namebuf, &bufsize);
if (count < 0)
RETPUSHUNDEF;
+#ifdef EPOC
+ /* Bogus return without padding */
+ bufsize = sizeof (struct sockaddr_in);
+#endif
SvCUR_set(bufsv, count);
*SvEND(bufsv) = '\0';
(void)SvPOK_only(bufsv);
if (!(IoFLAGS(io) & IOf_UNTAINT))
SvTAINTED_on(bufsv);
SP = ORIGMARK;
-#if defined(I_SYS_UN) && defined(__linux__)
- /* Linux returns the sum of actual pathname string length and the
- size of the other members of sockaddr_un members. It should
- return sizeof(struct sockaddr_un). */
- if (((struct sockaddr *)namebuf)->sa_family == AF_UNIX)
- bufsize = sizeof(struct sockaddr_un);
-#endif
sv_setpvn(TARG, namebuf, bufsize);
PUSHs(TARG);
RETURN;
RETPUSHUNDEF;
}
+ if (IoIFP(io))
+ do_close(gv, FALSE);
+
TAINT_PROPER("socket");
fd = PerlSock_socket(domain, type, protocol);
if (fd < 0)
RETPUSHUNDEF;
}
+ if (IoIFP(io1))
+ do_close(gv1, FALSE);
+ if (IoIFP(io2))
+ do_close(gv2, FALSE);
+
TAINT_PROPER("socketpair");
if (PerlSock_socketpair(domain, type, protocol, fd) < 0)
RETPUSHUNDEF;
setbuf( IoIFP(nstio), NULL); /* EPOC gets confused about sockets */
#endif
-#if defined(I_SYS_UN) && defined(__linux__)
- /* see the comment in pp_sysread */
- if (saddr.sa_family == AF_UNIX)
- len = sizeof(struct sockaddr_un);
-#endif
-
PUSHp((char *)&saddr, len);
RETURN;
if (len == BOGUS_GETNAME_RETURN)
len = sizeof(struct sockaddr);
#endif
-#if defined(I_SYS_UN) && defined(__linux__)
- /* see the comment in pp_sysread */
- if (((struct sockaddr *)SvPVX(sv))->sa_family == AF_UNIX)
- len = sizeof(struct sockaddr_un);
-#endif
SvCUR_set(sv, len);
*SvEND(sv) ='\0';
PUSHs(sv);