2786 Stewart Smith 2008-08-21
WL4012 WL1744 (ndb on win32): add previously missing files (somebody broke my importmbox plugin!)
added:
include/my_socket.h
include/my_socket_posix.h
include/my_socket_win32.h
storage/ndb/src/common/util/ndb_opts.c
2785 stewart@stripped 2008-08-21
[patch 64/64] WL4012 WL1744 (ndb on win32): restore block include---
storage/ndb/src/kernel/blocks/restore.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: ndbwin32/storage/ndb/src/kernel/blocks/restore.cpp
===================================================================
modified:
storage/ndb/src/kernel/blocks/restore.cpp
=== added file 'include/my_socket.h'
--- a/include/my_socket.h 1970-01-01 00:00:00 +0000
+++ b/include/my_socket.h 2008-08-21 12:02:12 +0000
@@ -0,0 +1,12 @@
+
+#ifndef MY_SOCKET_H
+#define MY_SOCKET_H
+
+
+#ifdef __WIN__
+#include <my_socket_win32.h>
+#else
+#include <my_socket_posix.h>
+#endif
+
+#endif
=== added file 'include/my_socket_posix.h'
--- a/include/my_socket_posix.h 1970-01-01 00:00:00 +0000
+++ b/include/my_socket_posix.h 2008-08-21 12:02:12 +0000
@@ -0,0 +1,199 @@
+#include <netdb.h>
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/uio.h>
+
+#include <config.h>
+
+#define MY_SOCKET_FORMAT "%d"
+#define MY_SOCKET_FORMAT_VALUE(x) (x.fd)
+
+typedef struct { int fd; } my_socket;
+
+static inline int my_socket_valid(my_socket s)
+{
+ return (s.fd != -1);
+}
+
+static inline my_socket* my_socket_invalidate(my_socket *s)
+{
+ s->fd= -1;
+ return s;
+}
+
+static inline my_socket my_socket_create_invalid()
+{
+ my_socket s;
+ my_socket_invalidate(&s);
+ return s;
+}
+
+static inline int my_socket_close(my_socket s)
+{
+ return close(s.fd);
+}
+
+static inline int my_socket_errno()
+{
+ return errno;
+}
+
+static inline my_socket my_socket_create(int domain, int type, int protocol)
+{
+ my_socket s;
+ s.fd= socket(domain, type, protocol);
+
+ return s;
+}
+
+static inline int my_socket_nfds(my_socket s, int nfds)
+{
+ if(s.fd > nfds)
+ return s.fd;
+ return nfds;
+}
+
+static inline size_t my_recv(my_socket s, char* buf, size_t len, int flags)
+{
+ return recv(s.fd, buf, len, flags);
+}
+
+static inline
+size_t my_send(my_socket s, const char* buf, size_t len, int flags)
+{
+ return send(s.fd, buf, len, flags);
+}
+
+static inline int my_socket_reuseaddr(my_socket s, int enable)
+{
+ const int on = enable;
+ return setsockopt(s.fd, SOL_SOCKET, SO_REUSEADDR,
+ (const void*)&on, sizeof(on));
+}
+
+static inline int my_socket_nonblock(my_socket s, int enable)
+{
+ int flags;
+ flags = fcntl(s.fd, F_GETFL, 0);
+ if (flags < 0)
+ return flags;
+
+#if defined(O_NONBLOCK)
+#define NONBLOCKFLAG O_NONBLOCK
+#elif defined(O_NDELAY)
+#define NONBLOCKFLAG O_NDELAY
+#endif
+
+ if(enable)
+ flags |= NONBLOCKFLAG;
+ else
+ flags &= ~NONBLOCKFLAG;
+
+ if (fcntl(s.fd, F_SETFL, flags) == -1)
+ return my_socket_errno();
+
+ return 0;
+#undef NONBLOCKFLAG
+}
+
+static inline int my_bind(my_socket s, const struct sockaddr *my_addr,
+ SOCKET_SIZE_TYPE len)
+{
+ return bind(s.fd, my_addr, len);
+}
+
+static inline int my_bind_inet(my_socket s, const struct sockaddr_in *my_addr)
+{
+ return bind(s.fd, (struct sockaddr*)my_addr, sizeof(struct sockaddr_in));
+}
+
+static inline int my_socket_get_port(my_socket s, unsigned short *port)
+{
+ struct sockaddr_in servaddr;
+ SOCKET_SIZE_TYPE sock_len = sizeof(servaddr);
+ if(getsockname(s.fd, (struct sockaddr*)&servaddr, &sock_len) < 0) {
+ return 1;
+ }
+
+ *port= ntohs(servaddr.sin_port);
+ return 0;
+}
+
+static inline int my_listen(my_socket s, int backlog)
+{
+ return listen(s.fd, backlog);
+}
+
+static inline
+my_socket my_accept(my_socket s, struct sockaddr *addr,
+ SOCKET_SIZE_TYPE *addrlen)
+{
+ my_socket r;
+ r.fd= accept(s.fd, addr, addrlen);
+ return r;
+}
+
+static inline int my_connect_inet(my_socket s, const struct sockaddr_in *addr)
+{
+ return connect(s.fd, (const struct sockaddr*)addr,
+ sizeof(struct sockaddr_in));
+}
+
+static inline
+int my_getsockopt(my_socket s, int level, int optname,
+ void *optval, SOCKET_SIZE_TYPE *optlen)
+{
+ return getsockopt(s.fd, level, optname, optval, optlen);
+}
+
+static inline
+int my_setsockopt(my_socket s, int level, int optname,
+ void *optval, SOCKET_SIZE_TYPE optlen)
+{
+ return setsockopt(s.fd, level, optname, optval, optlen);
+}
+
+static inline int my_socket_connect_address(my_socket s, struct in_addr *a)
+{
+ struct sockaddr_in addr;
+ SOCKET_SIZE_TYPE addrlen= sizeof(addr);
+ if(getpeername(s.fd, (struct sockaddr*)&addr, &addrlen))
+ return my_socket_errno();
+
+ *a= addr.sin_addr;
+ return 0;
+}
+
+static inline int my_getpeername(my_socket s, struct sockaddr *a, SOCKET_SIZE_TYPE *addrlen)
+{
+ if(getpeername(s.fd, a, addrlen))
+ return my_socket_errno();
+
+ return 0;
+}
+
+static inline int my_shutdown(my_socket s, int how)
+{
+ return shutdown(s.fd, how);
+}
+
+static inline int my_socket_equal(my_socket s1, my_socket s2)
+{
+ return s1.fd==s2.fd;
+}
+
+static inline ssize_t my_socket_readv(my_socket s, const struct iovec *iov,
+ int iovcnt)
+{
+ return readv(s.fd, iov, iovcnt);
+}
+static inline ssize_t my_socket_writev(my_socket s, const struct iovec *iov,
+ int iovcnt)
+{
+ return writev(s.fd, iov, iovcnt);
+}
+
+
+#define my_FD_SET(s,set) FD_SET(s.fd,set)
+#define my_FD_ISSET(s,set) FD_ISSET(s.fd,set)
=== added file 'include/my_socket_win32.h'
--- a/include/my_socket_win32.h 1970-01-01 00:00:00 +0000
+++ b/include/my_socket_win32.h 2008-08-21 12:02:12 +0000
@@ -0,0 +1,196 @@
+
+#include <winsock2.h>
+#include <ws2tcpip.h>
+
+#include <my_global.h>
+
+#define MY_SOCKET_FORMAT "%p"
+#define MY_SOCKET_FORMAT_VALUE(x) (x.s)
+
+typedef struct { SOCKET s; } my_socket;
+
+static inline int my_socket_valid(my_socket s)
+{
+ return (s.s != INVALID_SOCKET);
+}
+
+static inline my_socket* my_socket_invalidate(my_socket *s)
+{
+ s->s= INVALID_SOCKET;
+ return s;
+}
+
+static inline my_socket my_socket_create_invalid()
+{
+ my_socket s;
+ my_socket_invalidate(&s);
+ return s;
+}
+
+static inline int my_socket_close(my_socket s)
+{
+ return closesocket(s.s);
+}
+
+static inline int my_socket_errno()
+{
+ return WSAGetLastError();
+}
+
+static inline my_socket my_socket_create(int domain, int type, int protocol)
+{
+ my_socket s;
+ s.s= socket(domain, type, protocol);
+
+ return s;
+}
+
+static inline int my_socket_nfds(my_socket s, int nfds)
+{
+ (void)s;
+ return nfds;
+}
+
+static inline size_t my_recv(my_socket s, char* buf, size_t len, int flags)
+{
+ return recv(s.s, buf, len, flags);
+}
+
+static inline
+size_t my_send(my_socket s, const char* buf, size_t len, int flags)
+{
+ return send(s.s, buf, len, flags);
+}
+
+static inline int my_socket_reuseaddr(my_socket s, int enable)
+{
+ const int on = enable;
+ return setsockopt(s.s, SOL_SOCKET, SO_REUSEADDR,
+ (const char*)&on, sizeof(on));
+}
+
+static inline int my_socket_nonblock(my_socket s, int enable)
+{
+ unsigned long ul = enable;
+
+ if(ioctlsocket(s.s, FIONBIO, &ul))
+ return my_socket_errno();
+
+ return 0;
+}
+
+static inline int my_bind(my_socket s, const struct sockaddr *my_addr,
+ SOCKET_SIZE_TYPE len)
+{
+ return bind(s.s, my_addr, len);
+}
+
+static inline int my_bind_inet(my_socket s, const struct sockaddr_in *my_addr)
+{
+ return bind(s.s, (const struct sockaddr*)my_addr, sizeof(struct sockaddr_in));
+}
+
+static inline int my_socket_get_port(my_socket s, unsigned short *port)
+{
+ struct sockaddr_in servaddr;
+ SOCKET_SIZE_TYPE sock_len = sizeof(servaddr);
+ if(getsockname(s.s, (struct sockaddr*)&servaddr, &sock_len) < 0) {
+ return 1;
+ }
+
+ *port= ntohs(servaddr.sin_port);
+ return 0;
+}
+
+static inline int my_listen(my_socket s, int backlog)
+{
+ return listen(s.s, backlog);
+}
+
+static inline
+my_socket my_accept(my_socket s, struct sockaddr *addr,
+ SOCKET_SIZE_TYPE *addrlen)
+{
+ my_socket r;
+ r.s= accept(s.s, addr, addrlen);
+ return r;
+}
+
+static inline int my_connect_inet(my_socket s, const struct sockaddr_in *addr)
+{
+ return connect(s.s, (const struct sockaddr*) addr,
+ sizeof(struct sockaddr_in));
+}
+
+static inline
+int my_getsockopt(my_socket s, int level, int optname,
+ void *optval, SOCKET_SIZE_TYPE *optlen)
+{
+ return getsockopt(s.s, level, optname, (char*)optval, optlen);
+}
+
+static inline
+int my_setsockopt(my_socket s, int level, int optname,
+ void *optval, SOCKET_SIZE_TYPE optlen)
+{
+ return setsockopt(s.s, level, optname, (char*)optval, optlen);
+}
+
+static inline int my_socket_connect_address(my_socket s, struct in_addr *a)
+{
+ struct sockaddr_in addr;
+ SOCKET_SIZE_TYPE addrlen= sizeof(addr);
+ if(getpeername(s.s, (struct sockaddr*)&addr, &addrlen)==SOCKET_ERROR)
+ return my_socket_errno();
+
+ *a= addr.sin_addr;
+ return 0;
+}
+
+static inline int my_getpeername(my_socket s, struct sockaddr *a,
+ SOCKET_SIZE_TYPE *addrlen)
+{
+ if(getpeername(s.s, a, addrlen))
+ return my_socket_errno();
+
+ return 0;
+}
+
+static inline int my_shutdown(my_socket s, int how)
+{
+ return shutdown(s.s, how);
+}
+
+static inline int my_socket_equal(my_socket s1, my_socket s2)
+{
+ return s1.s==s2.s;
+}
+
+/*
+ * NOTE: the order of len and base are *DIFFERENT* on Linux and Win32.
+ * casting our iovec to a WSABUF is fine as it's the same structure,
+ * just with different names for the members.
+ */
+struct iovec {
+ u_long iov_len; /* 'u_long len' in WSABUF */
+ void* iov_base; /* 'char* buf' in WSABUF */
+};
+
+static inline ssize_t my_socket_readv(my_socket s, const struct iovec *iov,
+ int iovcnt)
+{
+ DWORD rv=0;
+ WSARecv(s.s,(LPWSABUF)iov,iovcnt,&rv,0,0,0);
+ return rv;
+}
+
+static inline ssize_t my_socket_writev(my_socket s, const struct iovec *iov,
+ int iovcnt)
+{
+ DWORD rv=0;
+ WSASend(s.s,(LPWSABUF)iov,iovcnt,&rv,0,0,0);
+ return rv;
+}
+
+#define my_FD_SET(sock,set) FD_SET((sock).s,set)
+#define my_FD_ISSET(sock,set) FD_ISSET((sock).s,set)
=== added file 'storage/ndb/src/common/util/ndb_opts.c'
--- a/storage/ndb/src/common/util/ndb_opts.c 1970-01-01 00:00:00 +0000
+++ b/storage/ndb/src/common/util/ndb_opts.c 2008-08-21 12:02:12 +0000
@@ -0,0 +1,123 @@
+#include <my_global.h>
+#define OPTEXPORT
+#include <ndb_opts.h>
+
+static char* g_ndb_opt_progname= "ndbapi_program";
+
+static void default_ndb_opt_short(void)
+{
+ ndb_short_usage_sub(g_ndb_opt_progname,NULL);
+}
+
+static void default_ndb_opt_usage()
+{
+ struct my_option my_long_options[] =
+ {
+ NDB_STD_OPTS("ndbapi_program")
+ };
+ const char *load_default_groups[]= { "mysql_cluster", 0 };
+
+ ndb_usage(default_ndb_opt_short, load_default_groups, my_long_options);
+}
+
+static void (*g_ndb_opt_short_usage)(void)= default_ndb_opt_short;
+static void (*g_ndb_opt_usage)(void)= default_ndb_opt_usage;
+
+void ndb_opt_set_usage_funcs(const char* my_progname,
+ void (*short_usage)(void),
+ void (*usage)(void))
+{
+ if(my_progname)
+ g_ndb_opt_progname= my_progname;
+ if(short_usage)
+ g_ndb_opt_short_usage= short_usage;
+ if(usage)
+ g_ndb_opt_usage= usage;
+}
+
+void ndb_short_usage_sub(const char* my_progname, char* extra)
+{
+ printf("Usage: %s [OPTIONS]%s%s\n", my_progname,
+ (extra)?" ":"",
+ (extra)?extra:"");
+}
+
+void ndb_usage(void (*usagefunc)(void), const char *load_default_groups[],
+ struct my_option *my_long_options)
+{
+ (*usagefunc)();
+
+ ndb_std_print_version();
+ print_defaults(MYSQL_CONFIG_NAME,load_default_groups);
+ puts("");
+ my_print_help(my_long_options);
+ my_print_variables(my_long_options);
+}
+
+my_bool
+ndb_std_get_one_option(int optid,
+ const struct my_option *opt __attribute__((unused)),
+ char *argument)
+{
+ switch (optid) {
+#ifndef DBUG_OFF
+ case '#':
+ if (opt_debug)
+ {
+ DBUG_PUSH(opt_debug);
+ }
+ else
+ {
+ DBUG_PUSH("d:t");
+ }
+ opt_endinfo= 1;
+ break;
+#endif
+ case 'V':
+ ndb_std_print_version();
+ exit(0);
+ case '?':
+ (*g_ndb_opt_usage)();
+ exit(0);
+ case OPT_NDB_SHM:
+ if (opt_ndb_shm)
+ {
+#ifndef NDB_SHM_TRANSPORTER
+ printf("Warning: binary not compiled with shared memory support,\n"
+ "Tcp connections will now be used instead\n");
+ opt_ndb_shm= 0;
+#endif
+ }
+ break;
+ case OPT_NDB_MGMD:
+ case OPT_NDB_NODEID:
+ {
+ int len= my_snprintf(opt_ndb_constrbuf+opt_ndb_constrbuf_len,
+ sizeof(opt_ndb_constrbuf)-opt_ndb_constrbuf_len,
+ "%s%s%s",opt_ndb_constrbuf_len > 0 ? ",":"",
+ optid == OPT_NDB_NODEID ? "nodeid=" : "",
+ argument);
+ opt_ndb_constrbuf_len+= len;
+ }
+ /* fall through to add the connectstring to the end
+ * and set opt_ndbcluster_connectstring
+ */
+ case OPT_NDB_CONNECTSTRING:
+ if (opt_ndb_connectstring && opt_ndb_connectstring[0])
+ my_snprintf(opt_ndb_constrbuf+opt_ndb_constrbuf_len,
+ sizeof(opt_ndb_constrbuf)-opt_ndb_constrbuf_len,
+ "%s%s", opt_ndb_constrbuf_len > 0 ? ",":"",
+ opt_ndb_connectstring);
+ else
+ opt_ndb_constrbuf[opt_ndb_constrbuf_len]= 0;
+ opt_connect_str= opt_ndb_constrbuf;
+ break;
+ }
+ return 0;
+}
+
+void ndb_std_print_version()
+{
+ printf("MySQL distrib %s, for %s (%s)\n",
+ MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
+}
| Thread |
|---|
| • bzr push into mysql-5.1 branch (stewart:2785 to 2786) | Stewart Smith | 21 Aug |