wq instead of wp? That's gotta be among the more amazing typos I've
[openssl.git] / crypto / bio / bio_lib.c
index 50df2238fac905e2553bbbbb00d31eb3c79725be..dcc989f9d6bfb930ec667f87855fcf7bc67006db 100644 (file)
@@ -144,7 +144,7 @@ void BIO_vfree(BIO *a)
 int BIO_read(BIO *b, void *out, int outl)
        {
        int i;
-       long (*cb)();
+       long (*cb)(BIO *,int,const char *,int,long,long);
 
        if ((b == NULL) || (b->method == NULL) || (b->method->bread == NULL))
                {
@@ -176,7 +176,7 @@ int BIO_read(BIO *b, void *out, int outl)
 int BIO_write(BIO *b, const void *in, int inl)
        {
        int i;
-       long (*cb)();
+       long (*cb)(BIO *,int,const char *,int,long,long);
 
        if (b == NULL)
                return(0);
@@ -211,7 +211,7 @@ int BIO_write(BIO *b, const void *in, int inl)
 int BIO_puts(BIO *b, const char *in)
        {
        int i;
-       long (*cb)();
+       long (*cb)(BIO *,int,const char *,int,long,long);
 
        if ((b == NULL) || (b->method == NULL) || (b->method->bputs == NULL))
                {
@@ -244,7 +244,7 @@ int BIO_puts(BIO *b, const char *in)
 int BIO_gets(BIO *b, char *in, int inl)
        {
        int i;
-       long (*cb)();
+       long (*cb)(BIO *,int,const char *,int,long,long);
 
        if ((b == NULL) || (b->method == NULL) || (b->method->bgets == NULL))
                {
@@ -272,6 +272,18 @@ int BIO_gets(BIO *b, char *in, int inl)
        return(i);
        }
 
+int BIO_indent(BIO *b,int indent,int max)
+       {
+       if(indent < 0)
+               indent=0;
+       if(indent > max)
+               indent=max;
+       while(indent--)
+               if(BIO_puts(b," ") != 1)
+                       return 0;
+       return 1;
+       }
+
 long BIO_int_ctrl(BIO *b, int cmd, long larg, int iarg)
        {
        int i;
@@ -293,7 +305,7 @@ char *BIO_ptr_ctrl(BIO *b, int cmd, long larg)
 long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
        {
        long ret;
-       long (*cb)();
+       long (*cb)(BIO *,int,const char *,int,long,long);
 
        if (b == NULL) return(0);
 
@@ -320,13 +332,13 @@ long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
 long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)(struct bio_st *, int, const char *, int, long, long))
        {
        long ret;
-       long (*cb)();
+       long (*cb)(BIO *,int,const char *,int,long,long);
 
        if (b == NULL) return(0);
 
        if ((b->method == NULL) || (b->method->callback_ctrl == NULL))
                {
-               BIOerr(BIO_F_BIO_CTRL,BIO_R_UNSUPPORTED_METHOD);
+               BIOerr(BIO_F_BIO_CALLBACK_CTRL,BIO_R_UNSUPPORTED_METHOD);
                return(-2);
                }
 
@@ -383,6 +395,8 @@ BIO *BIO_pop(BIO *b)
        if (b == NULL) return(NULL);
        ret=b->next_bio;
 
+       BIO_ctrl(b,BIO_CTRL_POP,0,NULL);
+
        if (b->prev_bio != NULL)
                b->prev_bio->next_bio=b->next_bio;
        if (b->next_bio != NULL)
@@ -390,7 +404,6 @@ BIO *BIO_pop(BIO *b)
 
        b->next_bio=NULL;
        b->prev_bio=NULL;
-       BIO_ctrl(b,BIO_CTRL_POP,0,NULL);
        return(ret);
        }