diff options
author | kris <kris@FreeBSD.org> | 2000-11-13 01:03:58 +0000 |
---|---|---|
committer | kris <kris@FreeBSD.org> | 2000-11-13 01:03:58 +0000 |
commit | 539b977eff7c71f628cb2a407543a51070b14763 (patch) | |
tree | 258f64877cac3711a3434257baddcbae72af2af3 /crypto/openssl/crypto/bio/b_dump.c | |
parent | 893841d237b49d10e810e8b130839b4b63fd5ab4 (diff) | |
download | FreeBSD-src-539b977eff7c71f628cb2a407543a51070b14763.zip FreeBSD-src-539b977eff7c71f628cb2a407543a51070b14763.tar.gz |
Initial import of OpenSSL 0.9.6
Diffstat (limited to 'crypto/openssl/crypto/bio/b_dump.c')
-rw-r--r-- | crypto/openssl/crypto/bio/b_dump.c | 122 |
1 files changed, 73 insertions, 49 deletions
diff --git a/crypto/openssl/crypto/bio/b_dump.c b/crypto/openssl/crypto/bio/b_dump.c index f5aeb23..8397cfa 100644 --- a/crypto/openssl/crypto/bio/b_dump.c +++ b/crypto/openssl/crypto/bio/b_dump.c @@ -66,63 +66,87 @@ #define TRUNCATE #define DUMP_WIDTH 16 +#define DUMP_WIDTH_LESS_INDENT(i) (DUMP_WIDTH-((i-(i>6?6:i)+3)/4)) int BIO_dump(BIO *bio, const char *s, int len) -{ - int ret=0; - char buf[160+1],tmp[20]; - int i,j,rows,trunc; - unsigned char ch; - - trunc=0; + { + return BIO_dump_indent(bio, s, len, 0); + } +int BIO_dump_indent(BIO *bio, const char *s, int len, int indent) + { + int ret=0; + char buf[288+1],tmp[20],str[128+1]; + int i,j,rows,trunc; + unsigned char ch; + int dump_width; + + trunc=0; + #ifdef TRUNCATE - for(; (len > 0) && ((s[len-1] == ' ') || (s[len-1] == '\0')); len--) - trunc++; + for(; (len > 0) && ((s[len-1] == ' ') || (s[len-1] == '\0')); len--) + trunc++; #endif - rows=(len/DUMP_WIDTH); - if ((rows*DUMP_WIDTH)<len) - rows++; - for(i=0;i<rows;i++) { - buf[0]='\0'; /* start with empty string */ - sprintf(tmp,"%04x - ",i*DUMP_WIDTH); - strcpy(buf,tmp); - for(j=0;j<DUMP_WIDTH;j++) { - if (((i*DUMP_WIDTH)+j)>=len) { - strcat(buf," "); - } else { - ch=((unsigned char)*(s+i*DUMP_WIDTH+j)) & 0xff; - sprintf(tmp,"%02x%c",ch,j==7?'-':' '); - strcat(buf,tmp); - } - } - strcat(buf," "); - for(j=0;j<DUMP_WIDTH;j++) { - if (((i*DUMP_WIDTH)+j)>=len) - break; - ch=((unsigned char)*(s+i*DUMP_WIDTH+j)) & 0xff; + if (indent < 0) + indent = 0; + if (indent) + { + if (indent > 128) indent=128; + memset(str,' ',indent); + } + str[indent]='\0'; + + dump_width=DUMP_WIDTH_LESS_INDENT(indent); + rows=(len/dump_width); + if ((rows*dump_width)<len) + rows++; + for(i=0;i<rows;i++) + { + buf[0]='\0'; /* start with empty string */ + strcpy(buf,str); + sprintf(tmp,"%04x - ",i*dump_width); + strcat(buf,tmp); + for(j=0;j<dump_width;j++) + { + if (((i*dump_width)+j)>=len) + { + strcat(buf," "); + } + else + { + ch=((unsigned char)*(s+i*dump_width+j)) & 0xff; + sprintf(tmp,"%02x%c",ch,j==7?'-':' '); + strcat(buf,tmp); + } + } + strcat(buf," "); + for(j=0;j<dump_width;j++) + { + if (((i*dump_width)+j)>=len) + break; + ch=((unsigned char)*(s+i*dump_width+j)) & 0xff; #ifndef CHARSET_EBCDIC - sprintf(tmp,"%c",((ch>=' ')&&(ch<='~'))?ch:'.'); + sprintf(tmp,"%c",((ch>=' ')&&(ch<='~'))?ch:'.'); #else - sprintf(tmp,"%c",((ch>=os_toascii[' '])&&(ch<=os_toascii['~'])) - ? os_toebcdic[ch] - : '.'); + sprintf(tmp,"%c",((ch>=os_toascii[' '])&&(ch<=os_toascii['~'])) + ? os_toebcdic[ch] + : '.'); #endif - strcat(buf,tmp); - } - strcat(buf,"\n"); - /* if this is the last call then update the ddt_dump thing so that - * we will move the selection point in the debug window - */ - ret+=BIO_write(bio,(char *)buf,strlen(buf)); - } + strcat(buf,tmp); + } + strcat(buf,"\n"); + /* if this is the last call then update the ddt_dump thing so that + * we will move the selection point in the debug window + */ + ret+=BIO_write(bio,(char *)buf,strlen(buf)); + } #ifdef TRUNCATE - if (trunc > 0) { - sprintf(buf,"%04x - <SPACES/NULS>\n",len+trunc); - ret+=BIO_write(bio,(char *)buf,strlen(buf)); - } + if (trunc > 0) + { + sprintf(buf,"%s%04x - <SPACES/NULS>\n",str,len+trunc); + ret+=BIO_write(bio,(char *)buf,strlen(buf)); + } #endif - return(ret); -} - + return(ret); + } |