📄 iperlsys.h
字号:
#ifdef PERL_OBJECT
#ifndef Sighandler_t
typedef Signal_t (*Sighandler_t) _((int));
#endif
#ifndef jmp_buf
#include <setjmp.h>
#endif
class IPerlProc
{
public:
virtual void Abort(void) = 0;
virtual char * Crypt(const char* clear, const char* salt) = 0;
virtual void Exit(int status) = 0;
virtual void _Exit(int status) = 0;
virtual int Execl(const char *cmdname, const char *arg0,
const char *arg1, const char *arg2,
const char *arg3) = 0;
virtual int Execv(const char *cmdname, const char *const *argv) = 0;
virtual int Execvp(const char *cmdname, const char *const *argv) = 0;
virtual uid_t Getuid(void) = 0;
virtual uid_t Geteuid(void) = 0;
virtual gid_t Getgid(void) = 0;
virtual gid_t Getegid(void) = 0;
virtual char * Getlogin(void) = 0;
virtual int Kill(int pid, int sig) = 0;
virtual int Killpg(int pid, int sig) = 0;
virtual int PauseProc(void) = 0;
virtual PerlIO * Popen(const char *command, const char *mode) = 0;
virtual int Pclose(PerlIO *stream) = 0;
virtual int Pipe(int *phandles) = 0;
virtual int Setuid(uid_t uid) = 0;
virtual int Setgid(gid_t gid) = 0;
virtual int Sleep(unsigned int) = 0;
virtual int Times(struct tms *timebuf) = 0;
virtual int Wait(int *status) = 0;
virtual int Waitpid(int pid, int *status, int flags) = 0;
virtual Sighandler_t Signal(int sig, Sighandler_t subcode) = 0;
#ifdef WIN32
virtual void GetSysMsg(char*& msg, DWORD& dwLen, DWORD dwErr) = 0;
virtual void FreeBuf(char* msg) = 0;
virtual BOOL DoCmd(char *cmd) = 0;
virtual int Spawn(char*cmds) = 0;
virtual int Spawnvp(int mode, const char *cmdname,
const char *const *argv) = 0;
virtual int ASpawn(void *vreally, void **vmark, void **vsp) = 0;
#endif
};
#define PerlProc_abort() PL_piProc->Abort()
#define PerlProc_crypt(c,s) PL_piProc->Crypt((c), (s))
#define PerlProc_exit(s) PL_piProc->Exit((s))
#define PerlProc__exit(s) PL_piProc->_Exit((s))
#define PerlProc_execl(c, w, x, y, z) \
PL_piProc->Execl((c), (w), (x), (y), (z))
#define PerlProc_execv(c, a) PL_piProc->Execv((c), (a))
#define PerlProc_execvp(c, a) PL_piProc->Execvp((c), (a))
#define PerlProc_getuid() PL_piProc->Getuid()
#define PerlProc_geteuid() PL_piProc->Geteuid()
#define PerlProc_getgid() PL_piProc->Getgid()
#define PerlProc_getegid() PL_piProc->Getegid()
#define PerlProc_getlogin() PL_piProc->Getlogin()
#define PerlProc_kill(i, a) PL_piProc->Kill((i), (a))
#define PerlProc_killpg(i, a) PL_piProc->Killpg((i), (a))
#define PerlProc_pause() PL_piProc->PauseProc()
#define PerlProc_popen(c, m) PL_piProc->Popen((c), (m))
#define PerlProc_pclose(f) PL_piProc->Pclose((f))
#define PerlProc_pipe(fd) PL_piProc->Pipe((fd))
#define PerlProc_setuid(u) PL_piProc->Setuid((u))
#define PerlProc_setgid(g) PL_piProc->Setgid((g))
#define PerlProc_sleep(t) PL_piProc->Sleep((t))
#define PerlProc_times(t) PL_piProc->Times((t))
#define PerlProc_wait(t) PL_piProc->Wait((t))
#define PerlProc_waitpid(p,s,f) PL_piProc->Waitpid((p), (s), (f))
#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n))
#define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
#define PerlProc_signal(n, h) PL_piProc->Signal((n), (h))
#ifdef WIN32
#define PerlProc_GetSysMsg(s,l,e) \
PL_piProc->GetSysMsg((s), (l), (e))
#define PerlProc_FreeBuf(s) PL_piProc->FreeBuf((s))
#define PerlProc_Cmd(s) PL_piProc->DoCmd((s))
#define do_spawn(s) PL_piProc->Spawn((s))
#define do_spawnvp(m, c, a) PL_piProc->Spawnvp((m), (c), (a))
#define PerlProc_aspawn(m,c,a) PL_piProc->ASpawn((m), (c), (a))
#endif
#else /* PERL_OBJECT */
#define PerlProc_abort() abort()
#define PerlProc_crypt(c,s) crypt((c), (s))
#define PerlProc_exit(s) exit((s))
#define PerlProc__exit(s) _exit((s))
#define PerlProc_execl(c,w,x,y,z) \
execl((c), (w), (x), (y), (z))
#define PerlProc_execv(c, a) execv((c), (a))
#define PerlProc_execvp(c, a) execvp((c), (a))
#define PerlProc_getuid() getuid()
#define PerlProc_geteuid() geteuid()
#define PerlProc_getgid() getgid()
#define PerlProc_getegid() getegid()
#define PerlProc_getlogin() getlogin()
#define PerlProc_kill(i, a) kill((i), (a))
#define PerlProc_killpg(i, a) killpg((i), (a))
#define PerlProc_pause() Pause()
#define PerlProc_popen(c, m) my_popen((c), (m))
#define PerlProc_pclose(f) my_pclose((f))
#define PerlProc_pipe(fd) pipe((fd))
#define PerlProc_setuid(u) setuid((u))
#define PerlProc_setgid(g) setgid((g))
#define PerlProc_sleep(t) sleep((t))
#define PerlProc_times(t) times((t))
#define PerlProc_wait(t) wait((t))
#define PerlProc_waitpid(p,s,f) waitpid((p), (s), (f))
#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n))
#define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
#define PerlProc_signal(n, h) signal((n), (h))
#endif /* PERL_OBJECT */
/*
Interface for perl socket functions
*/
#ifdef PERL_OBJECT
class IPerlSock
{
public:
virtual u_long Htonl(u_long hostlong) = 0;
virtual u_short Htons(u_short hostshort) = 0;
virtual u_long Ntohl(u_long netlong) = 0;
virtual u_short Ntohs(u_short netshort) = 0;
virtual SOCKET Accept(SOCKET s, struct sockaddr* addr,
int* addrlen, int &err) = 0;
virtual int Bind(SOCKET s, const struct sockaddr* name,
int namelen, int &err) = 0;
virtual int Connect(SOCKET s, const struct sockaddr* name,
int namelen, int &err) = 0;
virtual void Endhostent(int &err) = 0;
virtual void Endnetent(int &err) = 0;
virtual void Endprotoent(int &err) = 0;
virtual void Endservent(int &err) = 0;
virtual int Gethostname(char* name, int namelen, int &err) = 0;
virtual int Getpeername(SOCKET s, struct sockaddr* name,
int* namelen, int &err) = 0;
virtual struct hostent * Gethostbyaddr(const char* addr, int len,
int type, int &err) = 0;
virtual struct hostent * Gethostbyname(const char* name, int &err) = 0;
virtual struct hostent * Gethostent(int &err) = 0;
virtual struct netent * Getnetbyaddr(long net, int type, int &err) = 0;
virtual struct netent * Getnetbyname(const char *, int &err) = 0;
virtual struct netent * Getnetent(int &err) = 0;
virtual struct protoent * Getprotobyname(const char* name, int &err) = 0;
virtual struct protoent * Getprotobynumber(int number, int &err) = 0;
virtual struct protoent * Getprotoent(int &err) = 0;
virtual struct servent * Getservbyname(const char* name,
const char* proto, int &err) = 0;
virtual struct servent * Getservbyport(int port, const char* proto,
int &err) = 0;
virtual struct servent * Getservent(int &err) = 0;
virtual int Getsockname(SOCKET s, struct sockaddr* name,
int* namelen, int &err) = 0;
virtual int Getsockopt(SOCKET s, int level, int optname,
char* optval, int* optlen, int &err) = 0;
virtual unsigned long InetAddr(const char* cp, int &err) = 0;
virtual char * InetNtoa(struct in_addr in, int &err) = 0;
virtual int Listen(SOCKET s, int backlog, int &err) = 0;
virtual int Recv(SOCKET s, char* buf, int len,
int flags, int &err) = 0;
virtual int Recvfrom(SOCKET s, char* buf, int len, int flags,
struct sockaddr* from, int* fromlen, int &err) = 0;
virtual int Select(int nfds, char* readfds, char* writefds,
char* exceptfds, const struct timeval* timeout,
int &err) = 0;
virtual int Send(SOCKET s, const char* buf, int len,
int flags, int &err) = 0;
virtual int Sendto(SOCKET s, const char* buf, int len, int flags,
const struct sockaddr* to, int tolen, int &err) = 0;
virtual void Sethostent(int stayopen, int &err) = 0;
virtual void Setnetent(int stayopen, int &err) = 0;
virtual void Setprotoent(int stayopen, int &err) = 0;
virtual void Setservent(int stayopen, int &err) = 0;
virtual int Setsockopt(SOCKET s, int level, int optname,
const char* optval, int optlen, int &err) = 0;
virtual int Shutdown(SOCKET s, int how, int &err) = 0;
virtual SOCKET Socket(int af, int type, int protocol, int &err) = 0;
virtual int Socketpair(int domain, int type, int protocol,
int* fds, int &err) = 0;
#ifdef WIN32
virtual int Closesocket(SOCKET s, int& err) = 0;
virtual int Ioctlsocket(SOCKET s, long cmd, u_long *argp,
int& err) = 0;
#endif
};
#define PerlSock_htonl(x) PL_piSock->Htonl(x)
#define PerlSock_htons(x) PL_piSock->Htons(x)
#define PerlSock_ntohl(x) PL_piSock->Ntohl(x)
#define PerlSock_ntohs(x) PL_piSock->Ntohs(x)
#define PerlSock_accept(s, a, l) PL_piSock->Accept(s, a, l, ErrorNo())
#define PerlSock_bind(s, n, l) PL_piSock->Bind(s, n, l, ErrorNo())
#define PerlSock_connect(s, n, l) PL_piSock->Connect(s, n, l, ErrorNo())
#define PerlSock_endhostent() PL_piSock->Endhostent(ErrorNo())
#define PerlSock_endnetent() PL_piSock->Endnetent(ErrorNo())
#define PerlSock_endprotoent() PL_piSock->Endprotoent(ErrorNo())
#define PerlSock_endservent() PL_piSock->Endservent(ErrorNo())
#define PerlSock_gethostbyaddr(a, l, t) PL_piSock->Gethostbyaddr(a, l, t, ErrorNo())
#define PerlSock_gethostbyname(n) PL_piSock->Gethostbyname(n, ErrorNo())
#define PerlSock_gethostent() PL_piSock->Gethostent(ErrorNo())
#define PerlSock_gethostname(n, l) PL_piSock->Gethostname(n, l, ErrorNo())
#define PerlSock_getnetbyaddr(n, t) PL_piSock->Getnetbyaddr(n, t, ErrorNo())
#define PerlSock_getnetbyname(c) PL_piSock->Getnetbyname(c, ErrorNo())
#define PerlSock_getnetent() PL_piSock->Getnetent(ErrorNo())
#define PerlSock_getpeername(s, n, l) PL_piSock->Getpeername(s, n, l, ErrorNo())
#define PerlSock_getprotobyname(n) PL_piSock->Getprotobyname(n, ErrorNo())
#define PerlSock_getprotobynumber(n) PL_piSock->Getprotobynumber(n, ErrorNo())
#define PerlSock_getprotoent() PL_piSock->Getprotoent(ErrorNo())
#define PerlSock_getservbyname(n, p) PL_piSock->Getservbyname(n, p, ErrorNo())
#define PerlSock_getservbyport(port, p) PL_piSock->Getservbyport(port, p, ErrorNo())
#define PerlSock_getservent() PL_piSock->Getservent(ErrorNo())
#define PerlSock_getsockname(s, n, l) PL_piSock->Getsockname(s, n, l, ErrorNo())
#define PerlSock_getsockopt(s,l,n,v,i) PL_piSock->Getsockopt(s, l, n, v, i, ErrorNo())
#define PerlSock_inet_addr(c) PL_piSock->InetAddr(c, ErrorNo())
#define PerlSock_inet_ntoa(i) PL_piSock->InetNtoa(i, ErrorNo())
#define PerlSock_listen(s, b) PL_piSock->Listen(s, b, ErrorNo())
#define PerlSock_recv(s, b, l, f) PL_piSock->Recv(s, b, l, f, ErrorNo())
#define PerlSock_recvfrom(s,b,l,f,from,fromlen) \
PL_piSock->Recvfrom(s, b, l, f, from, fromlen, ErrorNo())
#define PerlSock_select(n, r, w, e, t) \
PL_piSock->Select(n, (char*)r, (char*)w, (char*)e, t, ErrorNo())
#define PerlSock_send(s, b, l, f) PL_piSock->Send(s, b, l, f, ErrorNo())
#define PerlSock_sendto(s, b, l, f, t, tlen) \
PL_piSock->Sendto(s, b, l, f, t, tlen, ErrorNo())
#define PerlSock_sethostent(f) PL_piSock->Sethostent(f, ErrorNo())
#define PerlSock_setnetent(f) PL_piSock->Setnetent(f, ErrorNo())
#define PerlSock_setprotoent(f) PL_piSock->Setprotoent(f, ErrorNo())
#define PerlSock_setservent(f) PL_piSock->Setservent(f, ErrorNo())
#define PerlSock_setsockopt(s, l, n, v, len) \
PL_piSock->Setsockopt(s, l, n, v, len, ErrorNo())
#define PerlSock_shutdown(s, h) PL_piSock->Shutdown(s, h, ErrorNo())
#define PerlSock_socket(a, t, p) PL_piSock->Socket(a, t, p, ErrorNo())
#define PerlSock_socketpair(a, t, p, f) PL_piSock->Socketpair(a, t, p, f, ErrorNo())
#else /* PERL_OBJECT */
#define PerlSock_htonl(x) htonl(x)
#define PerlSock_htons(x) htons(x)
#define PerlSock_ntohl(x) ntohl(x)
#define PerlSock_ntohs(x) ntohs(x)
#define PerlSock_accept(s, a, l) accept(s, a, l)
#define PerlSock_bind(s, n, l) bind(s, n, l)
#define PerlSock_connect(s, n, l) connect(s, n, l)
#define PerlSock_gethostbyaddr(a, l, t) gethostbyaddr(a, l, t)
#define PerlSock_gethostbyname(n) gethostbyname(n)
#define PerlSock_gethostent gethostent
#define PerlSock_endhostent endhostent
#define PerlSock_gethostname(n, l) gethostname(n, l)
#define PerlSock_getnetbyaddr(n, t) getnetbyaddr(n, t)
#define PerlSock_getnetbyname(n) getnetbyname(n)
#define PerlSock_getnetent getnetent
#define PerlSock_endnetent endnetent
#define PerlSock_getpeername(s, n, l) getpeername(s, n, l)
#define PerlSock_getprotobyname(n) getprotobyname(n)
#define PerlSock_getprotobynumber(n) getprotobynumber(n)
#define PerlSock_getprotoent getprotoent
#define PerlSock_endprotoent endprotoent
#define PerlSock_getservbyname(n, p) getservbyname(n, p)
#define PerlSock_getservbyport(port, p) getservbyport(port, p)
#define PerlSock_getservent getservent
#define PerlSock_endservent endservent
#define PerlSock_getsockname(s, n, l) getsockname(s, n, l)
#define PerlSock_getsockopt(s,l,n,v,i) getsockopt(s, l, n, v, i)
#define PerlSock_inet_addr(c) inet_addr(c)
#define PerlSock_inet_ntoa(i) inet_ntoa(i)
#define PerlSock_listen(s, b) listen(s, b)
#define PerlSock_recvfrom(s, b, l, f, from, fromlen) \
recvfrom(s, b, l, f, from, fromlen)
#define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t)
#define PerlSock_send(s, b, l, f) send(s, b, l, f)
#define PerlSock_sendto(s, b, l, f, t, tlen) \
sendto(s, b, l, f, t, tlen)
#define PerlSock_sethostent(f) sethostent(f)
#define PerlSock_setnetent(f) setnetent(f)
#define PerlSock_setprotoent(f) setprotoent(f)
#define PerlSock_setservent(f) setservent(f)
#define PerlSock_setsockopt(s, l, n, v, len) \
setsockopt(s, l, n, v, len)
#define PerlSock_shutdown(s, h) shutdown(s, h)
#define PerlSock_socket(a, t, p) socket(a, t, p)
#define PerlSock_socketpair(a, t, p, f) socketpair(a, t, p, f)
#endif /* PERL_OBJECT */
#endif /* __Inc__IPerl___ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -