| Index: openssl/crypto/bio/bss_fd.c
|
| ===================================================================
|
| --- openssl/crypto/bio/bss_fd.c (revision 105093)
|
| +++ openssl/crypto/bio/bss_fd.c (working copy)
|
| @@ -60,7 +60,14 @@
|
| #include <errno.h>
|
| #define USE_SOCKETS
|
| #include "cryptlib.h"
|
| +
|
| +#if defined(OPENSSL_NO_POSIX_IO)
|
| /*
|
| + * One can argue that one should implement dummy placeholder for
|
| + * BIO_s_fd here...
|
| + */
|
| +#else
|
| +/*
|
| * As for unconditional usage of "UPLINK" interface in this module.
|
| * Trouble is that unlike Unix file descriptors [which are indexes
|
| * in kernel-side per-process table], corresponding descriptors on
|
| @@ -77,6 +84,7 @@
|
| static int fd_write(BIO *h, const char *buf, int num);
|
| static int fd_read(BIO *h, char *buf, int size);
|
| static int fd_puts(BIO *h, const char *str);
|
| +static int fd_gets(BIO *h, char *buf, int size);
|
| static long fd_ctrl(BIO *h, int cmd, long arg1, void *arg2);
|
| static int fd_new(BIO *h);
|
| static int fd_free(BIO *data);
|
| @@ -88,7 +96,7 @@
|
| fd_write,
|
| fd_read,
|
| fd_puts,
|
| - NULL, /* fd_gets, */
|
| + fd_gets,
|
| fd_ctrl,
|
| fd_new,
|
| fd_free,
|
| @@ -227,6 +235,22 @@
|
| return(ret);
|
| }
|
|
|
| +static int fd_gets(BIO *bp, char *buf, int size)
|
| + {
|
| + int ret=0;
|
| + char *ptr=buf;
|
| + char *end=buf+size-1;
|
| +
|
| + while ( (ptr < end) && (fd_read(bp, ptr, 1) > 0) && (ptr[0] != '\n') )
|
| + ptr++;
|
| +
|
| + ptr[0]='\0';
|
| +
|
| + if (buf[0] != '\0')
|
| + ret=strlen(buf);
|
| + return(ret);
|
| + }
|
| +
|
| int BIO_fd_should_retry(int i)
|
| {
|
| int err;
|
| @@ -292,3 +316,4 @@
|
| }
|
| return(0);
|
| }
|
| +#endif
|
|
|