List:Commits« Previous MessageNext Message »
From:Stewart Smith Date:August 21 2008 12:03pm
Subject:bzr push into mysql-5.1 branch (stewart:2785 to 2786)
View as plain text  
 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 Smith21 Aug