* [PATCH v5 0/8] imap-send: Windows support @ 2009-10-21 17:04 Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 1/8] imap-send: remove useless uid code Erik Faye-Lund 2009-10-22 17:42 ` [msysGit] [PATCH v5 0/8] imap-send: Windows support Johannes Schindelin 0 siblings, 2 replies; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Erik Faye-Lund Here's the 5th iteration of my patches for Windows-compatibility in imap-send. - Patch 1-3 is about getting rid of or rewriting code with portability issues. - Patch 4 fixes a compilation error on Windows - Patch 5 enables compilation of imap-send - Patch 6-7 enables SSL-suport for mingw - Patch 8 enables imap-send and SSL for msvc The only change compared to the previous iteration is that patch 7 and 8 enables NEEDS_CRYPTO_WITH_SSL. Please note that I haven't tested Patch 8 with NEEDS_CRYPTO_WITH_SSL under MSVC, as I don't have a working setup with both msysgit and MSVC installed. I'd love it if someone with such a working setup could verify that it works, preferrably also with BLK_SHA1 enabled. Erik Faye-Lund (6): imap-send: use separate read and write fds imap-send: use run-command API for tunneling imap-send: fix compilation-error on Windows imap-send: build imap-send on Windows mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle mingw: enable OpenSSL Jeff King (1): imap-send: remove useless uid code Marius Storm-Olsen (1): MSVC: Enable OpenSSL, and translate -lcrypto Makefile | 6 +- compat/mingw.h | 21 ++++ compat/vcbuild/scripts/clink.pl | 3 + contrib/buildsystems/engine.pl | 3 + imap-send.c | 226 +++++++++------------------------------ 5 files changed, 79 insertions(+), 180 deletions(-) ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v5 1/8] imap-send: remove useless uid code 2009-10-21 17:04 [PATCH v5 0/8] imap-send: Windows support Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 2/8] imap-send: use separate read and write fds Erik Faye-Lund 2009-10-22 17:42 ` [msysGit] [PATCH v5 0/8] imap-send: Windows support Johannes Schindelin 1 sibling, 1 reply; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Jeff King, Erik Faye-Lund From: Jeff King <peff@peff.net> The imap-send code is based on code from isync, a program for syncing imap mailboxes. Because of this, it has inherited some code that makes sense for isync, but not for imap-send. In particular, when storing a message, it does one of: - if the server supports it, note the server-assigned unique identifier (UID) given to each message - otherwise, assigned a random UID and store it in the message header as X-TUID Presumably this is used in isync to be able to synchronize mailstores multiple times without duplication. But for imap-send, the values are useless; we never do anything with them and simply forget them at the end of the program. This patch removes the useless code. Not only is it nice for maintainability to get rid of dead code, but the removed code relied on the existence of /dev/urandom, which made it a portability problem for non-Unix platforms. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- imap-send.c | 155 ++++------------------------------------------------------ 1 files changed, 11 insertions(+), 144 deletions(-) diff --git a/imap-send.c b/imap-send.c index 3847fd1..8da7a94 100644 --- a/imap-send.c +++ b/imap-send.c @@ -123,9 +123,6 @@ static int nfvasprintf(char **strp, const char *fmt, va_list ap) return len; } -static void arc4_init(void); -static unsigned char arc4_getbyte(void); - struct imap_server_conf { char *name; char *tunnel; @@ -489,52 +486,6 @@ static int nfsnprintf(char *buf, int blen, const char *fmt, ...) return ret; } -static struct { - unsigned char i, j, s[256]; -} rs; - -static void arc4_init(void) -{ - int i, fd; - unsigned char j, si, dat[128]; - - if ((fd = open("/dev/urandom", O_RDONLY)) < 0 && (fd = open("/dev/random", O_RDONLY)) < 0) { - fprintf(stderr, "Fatal: no random number source available.\n"); - exit(3); - } - if (read_in_full(fd, dat, 128) != 128) { - fprintf(stderr, "Fatal: cannot read random number source.\n"); - exit(3); - } - close(fd); - - for (i = 0; i < 256; i++) - rs.s[i] = i; - for (i = j = 0; i < 256; i++) { - si = rs.s[i]; - j += si + dat[i & 127]; - rs.s[i] = rs.s[j]; - rs.s[j] = si; - } - rs.i = rs.j = 0; - - for (i = 0; i < 256; i++) - arc4_getbyte(); -} - -static unsigned char arc4_getbyte(void) -{ - unsigned char si, sj; - - rs.i++; - si = rs.s[rs.i]; - rs.j += si; - sj = rs.s[rs.j]; - rs.s[rs.i] = sj; - rs.s[rs.j] = si; - return rs.s[(si + sj) & 0xff]; -} - static struct imap_cmd *v_issue_imap_cmd(struct imap_store *ctx, struct imap_cmd_cb *cb, const char *fmt, va_list ap) @@ -1198,88 +1149,20 @@ static int imap_make_flags(int flags, char *buf) return d; } -#define TUIDL 8 - -static int imap_store_msg(struct store *gctx, struct msg_data *data, int *uid) +static int imap_store_msg(struct store *gctx, struct msg_data *data) { struct imap_store *ctx = (struct imap_store *)gctx; struct imap *imap = ctx->imap; struct imap_cmd_cb cb; - char *fmap, *buf; const char *prefix, *box; - int ret, i, j, d, len, extra, nocr; - int start, sbreak = 0, ebreak = 0; - char flagstr[128], tuid[TUIDL * 2 + 1]; + int ret, d; + char flagstr[128]; memset(&cb, 0, sizeof(cb)); - fmap = data->data; - len = data->len; - nocr = !data->crlf; - extra = 0, i = 0; - if (!CAP(UIDPLUS) && uid) { - nloop: - start = i; - while (i < len) - if (fmap[i++] == '\n') { - extra += nocr; - if (i - 2 + nocr == start) { - sbreak = ebreak = i - 2 + nocr; - goto mktid; - } - if (!memcmp(fmap + start, "X-TUID: ", 8)) { - extra -= (ebreak = i) - (sbreak = start) + nocr; - goto mktid; - } - goto nloop; - } - /* invalid message */ - free(fmap); - return DRV_MSG_BAD; - mktid: - for (j = 0; j < TUIDL; j++) - sprintf(tuid + j * 2, "%02x", arc4_getbyte()); - extra += 8 + TUIDL * 2 + 2; - } - if (nocr) - for (; i < len; i++) - if (fmap[i] == '\n') - extra++; - - cb.dlen = len + extra; - buf = cb.data = xmalloc(cb.dlen); - i = 0; - if (!CAP(UIDPLUS) && uid) { - if (nocr) { - for (; i < sbreak; i++) - if (fmap[i] == '\n') { - *buf++ = '\r'; - *buf++ = '\n'; - } else - *buf++ = fmap[i]; - } else { - memcpy(buf, fmap, sbreak); - buf += sbreak; - } - memcpy(buf, "X-TUID: ", 8); - buf += 8; - memcpy(buf, tuid, TUIDL * 2); - buf += TUIDL * 2; - *buf++ = '\r'; - *buf++ = '\n'; - i = ebreak; - } - if (nocr) { - for (; i < len; i++) - if (fmap[i] == '\n') { - *buf++ = '\r'; - *buf++ = '\n'; - } else - *buf++ = fmap[i]; - } else - memcpy(buf, fmap + i, len - i); - - free(fmap); + cb.dlen = data->len; + cb.data = xmalloc(cb.dlen); + memcpy(cb.data, data->data, data->len); d = 0; if (data->flags) { @@ -1288,26 +1171,14 @@ static int imap_store_msg(struct store *gctx, struct msg_data *data, int *uid) } flagstr[d] = 0; - if (!uid) { - box = gctx->conf->trash; - prefix = ctx->prefix; - cb.create = 1; - if (ctx->trashnc) - imap->caps = imap->rcaps & ~(1 << LITERALPLUS); - } else { - box = gctx->name; - prefix = !strcmp(box, "INBOX") ? "" : ctx->prefix; - cb.create = 0; - } - cb.ctx = uid; + box = gctx->name; + prefix = !strcmp(box, "INBOX") ? "" : ctx->prefix; + cb.create = 0; ret = imap_exec_m(ctx, &cb, "APPEND \"%s%s\" %s", prefix, box, flagstr); imap->caps = imap->rcaps; if (ret != DRV_OK) return ret; - if (!uid) - ctx->trashnc = 0; - else - gctx->count++; + gctx->count++; return DRV_OK; } @@ -1483,7 +1354,6 @@ int main(int argc, char **argv) { struct msg_data all_msgs, msg; struct store *ctx = NULL; - int uid = 0; int ofs = 0; int r; int total, n = 0; @@ -1491,9 +1361,6 @@ int main(int argc, char **argv) git_extract_argv0_path(argv[0]); - /* init the random number generator */ - arc4_init(); - setup_git_directory_gently(&nongit_ok); git_config(git_imap_config, NULL); @@ -1540,7 +1407,7 @@ int main(int argc, char **argv) break; if (server.use_html) wrap_in_html(&msg); - r = imap_store_msg(ctx, &msg, &uid); + r = imap_store_msg(ctx, &msg); if (r != DRV_OK) break; n++; -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 2/8] imap-send: use separate read and write fds 2009-10-21 17:04 ` [PATCH v5 1/8] imap-send: remove useless uid code Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 3/8] imap-send: use run-command API for tunneling Erik Faye-Lund 0 siblings, 1 reply; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Erik Faye-Lund This is a patch that enables us to use the run-command API, which is supported on Windows. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- imap-send.c | 37 +++++++++++++++++++++++-------------- 1 files changed, 23 insertions(+), 14 deletions(-) diff --git a/imap-send.c b/imap-send.c index 8da7a94..7216453 100644 --- a/imap-send.c +++ b/imap-send.c @@ -151,7 +151,7 @@ struct imap_list { }; struct imap_socket { - int fd; + int fd[2]; SSL *ssl; }; @@ -301,8 +301,12 @@ static int ssl_socket_connect(struct imap_socket *sock, int use_tls_only, int ve ssl_socket_perror("SSL_new"); return -1; } - if (!SSL_set_fd(sock->ssl, sock->fd)) { - ssl_socket_perror("SSL_set_fd"); + if (!SSL_set_rfd(sock->ssl, sock->fd[0])) { + ssl_socket_perror("SSL_set_rfd"); + return -1; + } + if (!SSL_set_wfd(sock->ssl, sock->fd[1])) { + ssl_socket_perror("SSL_set_wfd"); return -1; } @@ -324,11 +328,12 @@ static int socket_read(struct imap_socket *sock, char *buf, int len) n = SSL_read(sock->ssl, buf, len); else #endif - n = xread(sock->fd, buf, len); + n = xread(sock->fd[0], buf, len); if (n <= 0) { socket_perror("read", sock, n); - close(sock->fd); - sock->fd = -1; + close(sock->fd[0]); + close(sock->fd[1]); + sock->fd[0] = sock->fd[1] = -1; } return n; } @@ -341,11 +346,12 @@ static int socket_write(struct imap_socket *sock, const char *buf, int len) n = SSL_write(sock->ssl, buf, len); else #endif - n = write_in_full(sock->fd, buf, len); + n = write_in_full(sock->fd[1], buf, len); if (n != len) { socket_perror("write", sock, n); - close(sock->fd); - sock->fd = -1; + close(sock->fd[0]); + close(sock->fd[1]); + sock->fd[0] = sock->fd[1] = -1; } return n; } @@ -358,7 +364,8 @@ static void socket_shutdown(struct imap_socket *sock) SSL_free(sock->ssl); } #endif - close(sock->fd); + close(sock->fd[0]); + close(sock->fd[1]); } /* simple line buffering */ @@ -911,7 +918,7 @@ static void imap_close_server(struct imap_store *ictx) { struct imap *imap = ictx->imap; - if (imap->buf.sock.fd != -1) { + if (imap->buf.sock.fd[0] != -1) { imap_exec(ictx, NULL, "LOGOUT"); socket_shutdown(&imap->buf.sock); } @@ -939,7 +946,7 @@ static struct store *imap_open_store(struct imap_server_conf *srvc) ctx = xcalloc(sizeof(*ctx), 1); ctx->imap = imap = xcalloc(sizeof(*imap), 1); - imap->buf.sock.fd = -1; + imap->buf.sock.fd[0] = imap->buf.sock.fd[1] = -1; imap->in_progress_append = &imap->in_progress; /* open connection to IMAP server */ @@ -966,7 +973,8 @@ static struct store *imap_open_store(struct imap_server_conf *srvc) close(a[0]); - imap->buf.sock.fd = a[1]; + imap->buf.sock.fd[0] = a[1]; + imap->buf.sock.fd[1] = dup(a[1]); imap_info("ok\n"); } else { @@ -1043,7 +1051,8 @@ static struct store *imap_open_store(struct imap_server_conf *srvc) goto bail; } - imap->buf.sock.fd = s; + imap->buf.sock.fd[0] = s; + imap->buf.sock.fd[1] = dup(s); if (srvc->use_ssl && ssl_socket_connect(&imap->buf.sock, 0, srvc->ssl_verify)) { -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 3/8] imap-send: use run-command API for tunneling 2009-10-21 17:04 ` [PATCH v5 2/8] imap-send: use separate read and write fds Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 4/8] imap-send: fix compilation-error on Windows Erik Faye-Lund 0 siblings, 1 reply; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Erik Faye-Lund Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- imap-send.c | 37 ++++++++++++++++--------------------- 1 files changed, 16 insertions(+), 21 deletions(-) diff --git a/imap-send.c b/imap-send.c index 7216453..72ed640 100644 --- a/imap-send.c +++ b/imap-send.c @@ -24,6 +24,7 @@ #include "cache.h" #include "exec_cmd.h" +#include "run-command.h" #ifdef NO_OPENSSL typedef void *SSL; #endif @@ -940,8 +941,7 @@ static struct store *imap_open_store(struct imap_server_conf *srvc) struct imap_store *ctx; struct imap *imap; char *arg, *rsp; - int s = -1, a[2], preauth; - pid_t pid; + int s = -1, preauth; ctx = xcalloc(sizeof(*ctx), 1); @@ -952,29 +952,24 @@ static struct store *imap_open_store(struct imap_server_conf *srvc) /* open connection to IMAP server */ if (srvc->tunnel) { - imap_info("Starting tunnel '%s'... ", srvc->tunnel); + const char *argv[4]; + struct child_process tunnel = {0}; - if (socketpair(PF_UNIX, SOCK_STREAM, 0, a)) { - perror("socketpair"); - exit(1); - } + imap_info("Starting tunnel '%s'... ", srvc->tunnel); - pid = fork(); - if (pid < 0) - _exit(127); - if (!pid) { - if (dup2(a[0], 0) == -1 || dup2(a[0], 1) == -1) - _exit(127); - close(a[0]); - close(a[1]); - execl("/bin/sh", "sh", "-c", srvc->tunnel, NULL); - _exit(127); - } + argv[0] = "sh"; + argv[1] = "-c"; + argv[2] = srvc->tunnel; + argv[3] = NULL; - close(a[0]); + tunnel.argv = argv; + tunnel.in = -1; + tunnel.out = -1; + if (start_command(&tunnel)) + die("cannot start proxy %s", argv[0]); - imap->buf.sock.fd[0] = a[1]; - imap->buf.sock.fd[1] = dup(a[1]); + imap->buf.sock.fd[0] = tunnel.out; + imap->buf.sock.fd[1] = tunnel.in; imap_info("ok\n"); } else { -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 4/8] imap-send: fix compilation-error on Windows 2009-10-21 17:04 ` [PATCH v5 3/8] imap-send: use run-command API for tunneling Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 5/8] imap-send: build imap-send " Erik Faye-Lund 0 siblings, 1 reply; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Erik Faye-Lund mmsystem.h (included from windows.h) defines DRV_OK to 1. To avoid an error due to DRV_OK redefenition, this patch undefines the old definition (i.e the one from mmsystem.h) before defining DRV_OK. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- imap-send.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/imap-send.c b/imap-send.c index 72ed640..69e6142 100644 --- a/imap-send.c +++ b/imap-send.c @@ -94,6 +94,7 @@ struct msg_data { unsigned int crlf:1; }; +#undef DRV_OK #define DRV_OK 0 #define DRV_MSG_BAD -1 #define DRV_BOX_BAD -2 -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 5/8] imap-send: build imap-send on Windows 2009-10-21 17:04 ` [PATCH v5 4/8] imap-send: fix compilation-error on Windows Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 6/8] mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle Erik Faye-Lund 0 siblings, 1 reply; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Erik Faye-Lund Since the POSIX-specific tunneling code has been replaced by the run-command API (and a compile-error has been cleaned away), we can now enable imap-send on Windows builds. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index fea237b..0d13af3 100644 --- a/Makefile +++ b/Makefile @@ -354,6 +354,7 @@ EXTRA_PROGRAMS = PROGRAMS += $(EXTRA_PROGRAMS) PROGRAMS += git-fast-import$X PROGRAMS += git-hash-object$X +PROGRAMS += git-imap-send$X PROGRAMS += git-index-pack$X PROGRAMS += git-merge-index$X PROGRAMS += git-merge-tree$X @@ -1075,7 +1076,6 @@ EXTLIBS += -lz ifndef NO_POSIX_ONLY_PROGRAMS PROGRAMS += git-daemon$X - PROGRAMS += git-imap-send$X endif ifndef NO_OPENSSL OPENSSL_LIBSSL = -lssl -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 6/8] mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle 2009-10-21 17:04 ` [PATCH v5 5/8] imap-send: build imap-send " Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 7/8] mingw: enable OpenSSL Erik Faye-Lund 0 siblings, 1 reply; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Erik Faye-Lund SSL_set_fd (and friends) expects a OS file handle on Windows, not a file descriptor as on UNIX(-ish). This patch makes the Windows version of SSL_set_fd behave like the UNIX versions, by calling _get_osfhandle on it's input. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- compat/mingw.h | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-) diff --git a/compat/mingw.h b/compat/mingw.h index 5b5258b..6907345 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -124,6 +124,27 @@ static inline int waitpid(pid_t pid, int *status, unsigned options) return -1; } +#ifndef NO_OPENSSL +#include <openssl/ssl.h> +static inline int mingw_SSL_set_fd(SSL *ssl, int fd) +{ + return SSL_set_fd(ssl, _get_osfhandle(fd)); +} +#define SSL_set_fd mingw_SSL_set_fd + +static inline int mingw_SSL_set_rfd(SSL *ssl, int fd) +{ + return SSL_set_rfd(ssl, _get_osfhandle(fd)); +} +#define SSL_set_rfd mingw_SSL_set_rfd + +static inline int mingw_SSL_set_wfd(SSL *ssl, int fd) +{ + return SSL_set_wfd(ssl, _get_osfhandle(fd)); +} +#define SSL_set_wfd mingw_SSL_set_wfd +#endif + /* * implementations of missing functions */ -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 7/8] mingw: enable OpenSSL 2009-10-21 17:04 ` [PATCH v5 6/8] mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 8/8] MSVC: Enable OpenSSL, and translate -lcrypto Erik Faye-Lund 2009-10-22 18:38 ` [msysGit] [PATCH v5 7/8] mingw: enable OpenSSL Johannes Sixt 0 siblings, 2 replies; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Erik Faye-Lund Since we have OpenSSL in msysgit now, enable it to support SSL encryption for imap-send. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 0d13af3..986483b 100644 --- a/Makefile +++ b/Makefile @@ -952,7 +952,7 @@ else ifneq (,$(findstring MINGW,$(uname_S))) pathsep = ; NO_PREAD = YesPlease - NO_OPENSSL = YesPlease + NEEDS_CRYPTO_WITH_SSL = YesPlease NO_LIBGEN_H = YesPlease NO_SYMLINK_HEAD = YesPlease NO_IPV6 = YesPlease -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 8/8] MSVC: Enable OpenSSL, and translate -lcrypto 2009-10-21 17:04 ` [PATCH v5 7/8] mingw: enable OpenSSL Erik Faye-Lund @ 2009-10-21 17:04 ` Erik Faye-Lund 2009-10-22 18:38 ` [msysGit] [PATCH v5 7/8] mingw: enable OpenSSL Johannes Sixt 1 sibling, 0 replies; 16+ messages in thread From: Erik Faye-Lund @ 2009-10-21 17:04 UTC (permalink / raw) To: git; +Cc: msysgit, Marius Storm-Olsen, Erik Faye-Lund From: Marius Storm-Olsen <mstormo@gmail.com> We don't use crypto, but rather require libeay32 and ssleay32. handle it in both the Makefile msvc linker script, and the buildsystem generator. Signed-off-by: Marius Storm-Olsen <mstormo@gmail.com> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- Makefile | 2 +- compat/vcbuild/scripts/clink.pl | 3 +++ contrib/buildsystems/engine.pl | 3 +++ 3 files changed, 7 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 986483b..1e1a2f2 100644 --- a/Makefile +++ b/Makefile @@ -900,7 +900,7 @@ ifdef MSVC GIT_VERSION := $(GIT_VERSION).MSVC pathsep = ; NO_PREAD = YesPlease - NO_OPENSSL = YesPlease + NEEDS_CRYPTO_WITH_SSL = YesPlease NO_LIBGEN_H = YesPlease NO_SYMLINK_HEAD = YesPlease NO_IPV6 = YesPlease diff --git a/compat/vcbuild/scripts/clink.pl b/compat/vcbuild/scripts/clink.pl index f9528c0..8a2112f 100644 --- a/compat/vcbuild/scripts/clink.pl +++ b/compat/vcbuild/scripts/clink.pl @@ -29,6 +29,9 @@ while (@ARGV) { push(@args, "zlib.lib"); } elsif ("$arg" eq "-liconv") { push(@args, "iconv.lib"); + } elsif ("$arg" eq "-lcrypto") { + push(@args, "libeay32.lib"); + push(@args, "ssleay32.lib"); } elsif ("$arg" =~ /^-L/ && "$arg" ne "-LTCG") { $arg =~ s/^-L/-LIBPATH:/; push(@args, $arg); diff --git a/contrib/buildsystems/engine.pl b/contrib/buildsystems/engine.pl index 20bd061..d506717 100644 --- a/contrib/buildsystems/engine.pl +++ b/contrib/buildsystems/engine.pl @@ -315,6 +315,9 @@ sub handleLinkLine $appout = shift @parts; } elsif ("$part" eq "-lz") { push(@libs, "zlib.lib"); + } elsif ("$part" eq "-lcrypto") { + push(@libs, "libeay32.lib"); + push(@libs, "ssleay32.lib"); } elsif ($part =~ /^-/) { push(@lflags, $part); } elsif ($part =~ /\.(a|lib)$/) { -- 1.6.4.msysgit.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [msysGit] [PATCH v5 7/8] mingw: enable OpenSSL 2009-10-21 17:04 ` [PATCH v5 7/8] mingw: enable OpenSSL Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 8/8] MSVC: Enable OpenSSL, and translate -lcrypto Erik Faye-Lund @ 2009-10-22 18:38 ` Johannes Sixt 1 sibling, 0 replies; 16+ messages in thread From: Johannes Sixt @ 2009-10-22 18:38 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: msysgit, git, Erik Faye-Lund On Mittwoch, 21. Oktober 2009, Erik Faye-Lund wrote: > Since we have OpenSSL in msysgit now, enable it to support SSL > encryption for imap-send. > > Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Acked-by: Johannes Sixt <j6t@kdbg.org> -- Hannes ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [msysGit] [PATCH v5 0/8] imap-send: Windows support 2009-10-21 17:04 [PATCH v5 0/8] imap-send: Windows support Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 1/8] imap-send: remove useless uid code Erik Faye-Lund @ 2009-10-22 17:42 ` Johannes Schindelin 2009-10-22 18:11 ` [msysGit] " Johannes Sixt 1 sibling, 1 reply; 16+ messages in thread From: Johannes Schindelin @ 2009-10-22 17:42 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: git, msysgit, Erik Faye-Lund Hi, On Wed, 21 Oct 2009, Erik Faye-Lund wrote: > Here's the 5th iteration of my patches for Windows-compatibility in > imap-send. > > - Patch 1-3 is about getting rid of or rewriting > code with portability issues. > - Patch 4 fixes a compilation error on Windows > - Patch 5 enables compilation of imap-send > - Patch 6-7 enables SSL-suport for mingw > - Patch 8 enables imap-send and SSL for msvc > > The only change compared to the previous iteration > is that patch 7 and 8 enables NEEDS_CRYPTO_WITH_SSL. > > Please note that I haven't tested Patch 8 with > NEEDS_CRYPTO_WITH_SSL under MSVC, as I don't have a > working setup with both msysgit and MSVC installed. > > I'd love it if someone with such a working setup > could verify that it works, preferrably also with > BLK_SHA1 enabled. If there are no objections, I will apply them tomorrow. Ciao, Dscho ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [msysGit] Re: [PATCH v5 0/8] imap-send: Windows support 2009-10-22 17:42 ` [msysGit] [PATCH v5 0/8] imap-send: Windows support Johannes Schindelin @ 2009-10-22 18:11 ` Johannes Sixt 2009-10-22 18:26 ` [PATCH ef/msys-imap] mingw: use BLK_SHA1 again Johannes Sixt 2009-10-22 19:20 ` [msysGit] Re: [PATCH v5 0/8] imap-send: Windows support Junio C Hamano 0 siblings, 2 replies; 16+ messages in thread From: Johannes Sixt @ 2009-10-22 18:11 UTC (permalink / raw) To: Johannes Schindelin; +Cc: msysgit, Erik Faye-Lund, git, Erik Faye-Lund On Donnerstag, 22. Oktober 2009, Johannes Schindelin wrote: > If there are no objections, I will apply them tomorrow. The series is already in pu (FYI), and I have one more patch to be applied on top of the series. -- Hannes ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH ef/msys-imap] mingw: use BLK_SHA1 again 2009-10-22 18:11 ` [msysGit] " Johannes Sixt @ 2009-10-22 18:26 ` Johannes Sixt 2009-10-26 22:26 ` Johannes Schindelin 2009-10-22 19:20 ` [msysGit] Re: [PATCH v5 0/8] imap-send: Windows support Junio C Hamano 1 sibling, 1 reply; 16+ messages in thread From: Johannes Sixt @ 2009-10-22 18:26 UTC (permalink / raw) To: Johannes Schindelin Cc: msysgit, Erik Faye-Lund, git, Erik Faye-Lund, Junio C Hamano, Marius Storm-Olsen Since NO_OPENSSL is no longer defined on Windows, BLK_SHA1 is not defined anymore implicitly. Define it explicitly. As a nice side-effect, we no longer link against libcrypto.dll, which has non-trivial startup costs because it depends on 6 otherwise unneeded DLLs. Signed-off-by: Johannes Sixt <j6t@kdbg.org> --- On Donnerstag, 22. Oktober 2009, Johannes Sixt wrote: > ... and I have one more patch to be applied on top of the series. Here it is. I haven't tested the MSVC aspect of the patch. I would appreciate feedback in this regard. -- Hannes Makefile | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index 5403fad..f666d2f 100644 --- a/Makefile +++ b/Makefile @@ -911,6 +911,7 @@ ifdef MSVC NO_REGEX = YesPlease NO_CURL = YesPlease NO_PTHREADS = YesPlease + BLK_SHA1 = YesPlease CC = compat/vcbuild/scripts/clink.pl AR = compat/vcbuild/scripts/lib.pl @@ -960,6 +961,7 @@ ifneq (,$(findstring MINGW,$(uname_S))) UNRELIABLE_FSTAT = UnfortunatelyYes OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo NO_REGEX = YesPlease + BLK_SHA1 = YesPlease COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" COMPAT_OBJS += compat/mingw.o compat/fnmatch/fnmatch.o compat/winansi.o -- 1.6.5.rc3.70.gfc1aa ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH ef/msys-imap] mingw: use BLK_SHA1 again 2009-10-22 18:26 ` [PATCH ef/msys-imap] mingw: use BLK_SHA1 again Johannes Sixt @ 2009-10-26 22:26 ` Johannes Schindelin 2009-10-27 6:56 ` Johannes Sixt 0 siblings, 1 reply; 16+ messages in thread From: Johannes Schindelin @ 2009-10-26 22:26 UTC (permalink / raw) To: Johannes Sixt Cc: msysgit, git, Erik Faye-Lund, Junio C Hamano, Marius Storm-Olsen Hi, On Thu, 22 Oct 2009, Johannes Sixt wrote: > Since NO_OPENSSL is no longer defined on Windows, BLK_SHA1 is not defined > anymore implicitly. Define it explicitly. > > As a nice side-effect, we no longer link against libcrypto.dll, which has > non-trivial startup costs because it depends on 6 otherwise unneeded > DLLs. > > Signed-off-by: Johannes Sixt <j6t@kdbg.org> > --- > On Donnerstag, 22. Oktober 2009, Johannes Sixt wrote: > > ... and I have one more patch to be applied on top of the series. > > Here it is. I haven't tested the MSVC aspect of the patch. I would > appreciate feedback in this regard. For better visibility, I pushed it to the work/msys-imap branch in 4msysgit.git (but I could not even compile-test it today, due to lack of access to a Windows machine). If nobody complains by the end of the week, I will merge it into 4msysgit.git's 'devel' branch (I can only compile-test by then). Ciao, Dscho ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH ef/msys-imap] mingw: use BLK_SHA1 again 2009-10-26 22:26 ` Johannes Schindelin @ 2009-10-27 6:56 ` Johannes Sixt 0 siblings, 0 replies; 16+ messages in thread From: Johannes Sixt @ 2009-10-27 6:56 UTC (permalink / raw) To: Johannes Schindelin, Junio C Hamano Cc: msysgit, git, Erik Faye-Lund, Junio C Hamano, Marius Storm-Olsen Johannes Schindelin schrieb: > For better visibility, I pushed it to the work/msys-imap branch in > 4msysgit.git (but I could not even compile-test it today, due to lack of > access to a Windows machine). > > If nobody complains by the end of the week, I will merge it into > 4msysgit.git's 'devel' branch (I can only compile-test by then). Ugh, I totally forgot: I have this branch ready for Junio to pull: git://repo.or.cz/git/mingw/j6t.git ef/imap-send-windows Only the top 3 commits are different from what is currently in pu: I added my ACK, and reworded the commit message of my patch that is at the tip. Content-wise it is identical to the series in pu. I haven't seen an ACK from Marius regarding the changes that touch MSVC parts, but there was plenty of time to test, and the changes look obvious enough. Junio, please pull. -- Hannes ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [msysGit] Re: [PATCH v5 0/8] imap-send: Windows support 2009-10-22 18:11 ` [msysGit] " Johannes Sixt 2009-10-22 18:26 ` [PATCH ef/msys-imap] mingw: use BLK_SHA1 again Johannes Sixt @ 2009-10-22 19:20 ` Junio C Hamano 1 sibling, 0 replies; 16+ messages in thread From: Junio C Hamano @ 2009-10-22 19:20 UTC (permalink / raw) To: Johannes Sixt Cc: Johannes Schindelin, msysgit, Erik Faye-Lund, git, Erik Faye-Lund Johannes Sixt <j6t@kdbg.org> writes: > On Donnerstag, 22. Oktober 2009, Johannes Schindelin wrote: >> If there are no objections, I will apply them tomorrow. > > The series is already in pu (FYI),... Please don't mind me; if msysgit people are happy with this series that affects only msysgit, I would be a lot happier to get a pull request to merge them with Acks and Sign-offs from you guys directly into 'master', rather than me shepherding the series from 'pu' down to 'master'. ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2009-10-27 6:56 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-10-21 17:04 [PATCH v5 0/8] imap-send: Windows support Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 1/8] imap-send: remove useless uid code Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 2/8] imap-send: use separate read and write fds Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 3/8] imap-send: use run-command API for tunneling Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 4/8] imap-send: fix compilation-error on Windows Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 5/8] imap-send: build imap-send " Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 6/8] mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 7/8] mingw: enable OpenSSL Erik Faye-Lund 2009-10-21 17:04 ` [PATCH v5 8/8] MSVC: Enable OpenSSL, and translate -lcrypto Erik Faye-Lund 2009-10-22 18:38 ` [msysGit] [PATCH v5 7/8] mingw: enable OpenSSL Johannes Sixt 2009-10-22 17:42 ` [msysGit] [PATCH v5 0/8] imap-send: Windows support Johannes Schindelin 2009-10-22 18:11 ` [msysGit] " Johannes Sixt 2009-10-22 18:26 ` [PATCH ef/msys-imap] mingw: use BLK_SHA1 again Johannes Sixt 2009-10-26 22:26 ` Johannes Schindelin 2009-10-27 6:56 ` Johannes Sixt 2009-10-22 19:20 ` [msysGit] Re: [PATCH v5 0/8] imap-send: Windows support Junio C Hamano
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).