1# This tests, which things in the IO package exist on a given platform:
2StdGlobalVarsIO := Set(
3[ "IO", "IO_AddToPickled", "IO_AddToUnpickled", "IO_ClearPickleCache",
4  "IO_Close", "IO_CloseAllFDs", "IO_EOF", "IO_Environment", "IO_Error",
5  "IO_File", "IO_FinalizePickled", "IO_FinalizeUnpickled", "IO_Flush",
6  "IO_FlushNonBlocking", "IO_GenericObjectPickler",
7  "IO_GenericObjectUnpickler", "IO_GetFD", "IO_GetWBuf", "IO_HasData",
8  "IO_InstallSIGCHLDHandler", "IO_ListDir", "IO_MakeEnvList",
9  "IO_MakeIPAddressPort", "IO_Nothing", "IO_OK",
10  "IO_PICKLECACHE", "IO_Pickle", "IO_PickleByString", "IO_PipeThrough",
11  "IO_PipeThroughWithError", "IO_Popen", "IO_Popen2", "IO_Popen3", "IO_Read",
12  "IO_ReadAttribute", "IO_ReadBlock", "IO_ReadLine", "IO_ReadLines",
13  "IO_ReadSmallInt", "IO_ReadUntilEOF", "IO_ReadyForFlush",
14  "IO_ReadyForWrite", "IO_RestoreSIGCHLDHandler", "IO_Result",
15  "IO_ResultsFamily", "IO_Select", "IO_SendStringBackground", "IO_Unpickle",
16  "IO_UnpickleByEvalString", "IO_Unpicklers", "IO_WaitPid", "IO_WrapFD",
17  "IO_Write", "IO_WriteAttribute", "IO_WriteFlush", "IO_WriteLine",
18  "IO_WriteLines", "IO_WriteNonBlocking", "IO_WriteSmallInt", "IO_accept",
19  "IO_bind", "IO_chdir", "IO_chmod", "IO_chown", "IO_close", "IO_closedir",
20  "IO_connect", "IO_creat", "IO_dup", "IO_dup2", "IO_environ", "IO_execv",
21  "IO_execve", "IO_execvp", "IO_exit", "IO_fchmod", "IO_fchown", "IO_fcntl",
22  "IO_fork", "IO_fstat", "IO_gethostbyname", "IO_getsockopt", "IO_lchown",
23  "IO_link", "IO_listen", "IO_lseek", "IO_lstat", "IO_make_sockaddr_in",
24  "IO_mkdir", "IO_mkfifo", "IO_mknod", "IO_open", "IO_opendir", "IO_pipe",
25  "IO_read", "IO_readdir", "IO_readlink", "IO_recv", "IO_recvfrom",
26  "IO_rename", "IO_rewinddir", "IO_rmdir", "IO_seekdir", "IO_select",
27  "IO_send", "IO_sendto", "IO_setsockopt", "IO_socket", "IO_stat",
28  "IO_symlink", "IO_telldir", "IO_unlink", "IO_write",
29  "IO_FileFilterString", "IO_FilteredFile", "IO_FindExecutable",
30  "IO_ForkExecWithFDs", "IO_StartPipeline", "IO_StringFilterFile",
31  "IO_FuncToUnpickle", "IO_IsAlreadyPickled", "IO_PackageIsLoaded",
32  "IO_PkgThingsToRead", "IO_getpid", "IO_getppid", "IO_kill",
33  "IO_gettimeofday", "IO_gmtime", "IO_localtime", "IO_gethostname",
34  "IO_getsockname", "IOHub", "IOHubFamily", "IOHubType" ] );
35StdComponentsIO := Set(
36[ "AF_APPLETALK", "AF_ASH", "AF_ATMPVC", "AF_ATMSVC", "AF_AX25",
37  "AF_BLUETOOTH", "AF_BRIDGE", "AF_DECnet", "AF_ECONET", "AF_FILE",
38  "AF_INET", "AF_INET6", "AF_IPX", "AF_IRDA", "AF_KEY", "AF_LOCAL", "AF_MAX",
39  "AF_NETBEUI", "AF_NETLINK", "AF_NETROM", "AF_PACKET", "AF_PPPOX",
40  "AF_ROSE", "AF_ROUTE", "AF_SECURITY", "AF_SNA", "AF_UNIX", "AF_UNSPEC",
41  "AF_WANPIPE", "AF_X25", "DefaultBufSize", "EACCES", "EADDRINUSE",
42  "EAFNOSUPPORT", "EAGAIN", "EALREADY", "EBADF", "EBUSY", "ECHILD",
43  "ECONNABORTED", "ECONNREFUSED", "EEXIST", "EFAULT", "EFBIG", "EINPROGRESS",
44  "EINTR", "EINVAL", "EIO", "EISCONN", "EISDIR", "ELOOP", "EMFILE", "EMLINK",
45  "ENAMETOOLONG", "ENFILE", "ENODEV", "ENOENT", "ENOMEM", "ENOSPC",
46  "ENOTDIR", "ENOTEMPTY", "ENOTSOCK", "ENXIO", "EOPNOTSUPP", "EOVERFLOW",
47  "EPERM", "EPIPE", "EPROTO", "EPROTONOSUPPORT", "EROFS", "ESPIPE",
48  "ETIMEDOUT", "ETXTBSY", "EWOULDBLOCK", "EXDEV", "FD_CLOEXEC", "F_DUPFD",
49  "F_GETFD", "F_GETFL", "F_GETLEASE", "F_GETOWN", "F_GETSIG", "F_RDLCK",
50  "F_SETFD", "F_SETFL", "F_SETLEASE", "F_SETOWN", "F_SETSIG", "F_UNLCK",
51  "F_WRLCK", "HOST_NOT_FOUND", "IP_ADD_MEMBERSHIP", "IP_DROP_MEMBERSHIP",
52  "IP_HDRINCL", "IP_MTU_DISCOVER", "IP_MULTICAST_IF", "IP_MULTICAST_LOOP",
53  "IP_MULTICAST_TTL", "IP_OPTIONS", "IP_PKTINFO", "IP_RECVERR",
54  "IP_RECVOPTS", "IP_RECVTOS", "IP_RECVTTL", "IP_RETOPTS", "IP_ROUTER_ALERT",
55  "IP_TOS", "IP_TTL", "LineEndChar", "LineEndChars", "MSG_CTRUNC",
56  "MSG_DONTWAIT", "MSG_EOR", "MSG_ERRQUEUE", "MSG_OOB", "MSG_PEEK",
57  "MSG_TRUNC", "MSG_WAITALL", "MaxFDToClose", "NO_ADDRESS", "NO_DATA",
58  "NO_RECOVERY", "O_APPEND", "O_ASYNC", "O_CREAT", "O_DIRECT", "O_DIRECTORY",
59  "O_EXCL", "O_LARGEFILE", "O_NDELAY", "O_NOATIME", "O_NOCTTY", "O_NOFOLLOW",
60  "O_NONBLOCK", "O_RDONLY", "O_RDWR", "O_SYNC", "O_TRUNC", "O_WRONLY",
61  "PF_APPLETALK", "PF_ASH", "PF_ATMPVC", "PF_ATMSVC", "PF_AX25",
62  "PF_BLUETOOTH", "PF_BRIDGE", "PF_DECnet", "PF_ECONET", "PF_FILE",
63  "PF_INET", "PF_INET6", "PF_IPX", "PF_IRDA", "PF_KEY", "PF_LOCAL", "PF_MAX",
64  "PF_NETBEUI", "PF_NETLINK", "PF_NETROM", "PF_PACKET", "PF_PPPOX",
65  "PF_ROSE", "PF_ROUTE", "PF_SECURITY", "PF_SNA", "PF_UNIX", "PF_WANPIPE",
66  "PF_X25", "PIPE_BUF", "SEEK_CUR", "SEEK_END", "SEEK_SET", "SOCK_DGRAM",
67  "SOCK_PACKET", "SOCK_RAW", "SOCK_RDM", "SOCK_SEQPACKET", "SOCK_STREAM",
68  "SOL_SOCKET", "SO_ACCEPTCONN", "SO_BINDTODEVICE", "SO_BROADCAST",
69  "SO_BSDCOMPAT", "SO_DEBUG", "SO_DONTROUTE", "SO_ERROR", "SO_KEEPALIVE",
70  "SO_LINGER", "SO_OOBINLINE", "SO_PASSCRED", "SO_PEERCRED", "SO_PRIORITY",
71  "SO_RCVBUF", "SO_RCVLOWAT", "SO_RCVTIMEO", "SO_REUSEADDR", "SO_SNDBUF",
72  "SO_SNDLOWAT", "SO_SNDTIMEO", "SO_TYPE", "S_IFBLK", "S_IFCHR", "S_IFDIR",
73  "S_IFIFO", "S_IFLNK", "S_IFMT", "S_IFREG", "S_IFSOCK", "S_IRGRP",
74  "S_IROTH", "S_IRUSR", "S_IRWXG", "S_IRWXO", "S_IRWXU", "S_ISGID",
75  "S_ISUID", "S_ISVTX", "S_IWGRP", "S_IWOTH", "S_IWUSR", "S_IXGRP",
76  "S_IXOTH", "S_IXUSR", "TCP_CORK", "TCP_DEFER_ACCEPT", "TCP_INFO",
77  "TCP_KEEPCNT", "TCP_KEEPIDLE", "TCP_KEEPINTVL", "TCP_LINGER2",
78  "TCP_MAXSEG", "TCP_NODELAY", "TCP_QUICKACK", "TCP_SYNCNT",
79  "TCP_WINDOW_CLAMP", "TRY_AGAIN", "__GNUC_MINOR__", "__GNUC__",
80  "NonBlockWriteAmount", "SIGABRT", "SIGALRM", "SIGBUS", "SIGCHLD",
81  "SIGCLD", "SIGCONT", "SIGFPE",
82  "SIGHUP", "SIGILL", "SIGINT", "SIGIO", "SIGIOT", "SIGKILL", "SIGPIPE",
83  "SIGPOLL", "SIGPROF", "SIGPWR", "SIGQUIT", "SIGSEGV", "SIGSTKFLT",
84  "SIGSTOP", "SIGSYS", "SIGTERM", "SIGTRAP", "SIGTSTP", "SIGTTIN", "SIGTTOU",
85  "SIGUNUSED", "SIGURG", "SIGUSR1", "SIGUSR2", "SIGVTALRM", "SIGWINCH",
86  "SIGXCPU", "SIGXFSZ", "IP_MTU" ]);
87# Note missing but possible (includes missing because of autoconf:
88#   "ENOBUGS", "ICMP_FILTER", "IP_MTU"
89GlobalVarsIO :=
90  Set(Filtered(NamesGVars(),x->Length(x)>=2 and x{[1..2]} = "IO"));
91ComponentsIO := Set(NamesOfComponents(IO));
92
93Print("Not available here:\n",Difference(StdGlobalVarsIO,GlobalVarsIO),"\n",
94      Difference(StdComponentsIO,ComponentsIO),"\n\n");
95Print("More available here:\n",Difference(GlobalVarsIO,StdGlobalVarsIO),"\n",
96      Difference(ComponentsIO,StdComponentsIO),"\n\n");
97
98
99