Diff for /libraries/liblber/dtest.c between versions 1.3 and 1.32.2.2

version 1.3, 1998/11/08 01:31:31 version 1.32.2.2, 2004/01/01 18:16:29
Line 1 Line 1
 /* dtest.c - lber decoding test program */  /* dtest.c - lber decoding test program */
 /*  /* $OpenLDAP: pkg/ldap/libraries/liblber/dtest.c,v 1.32.2.1 2003/12/01 00:58:25 kurt Exp $ */
  * Copyright (c) 1990 Regents of the University of Michigan.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
    *
    * Copyright 1998-2004 The OpenLDAP Foundation.
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted only as authorized by the OpenLDAP
    * Public License.
    *
    * A copy of this license is available in the file LICENSE in the
    * top-level directory of the distribution or, alternatively, at
    * <http://www.OpenLDAP.org/license.html>.
    */
   /* Portions Copyright (c) 1990 Regents of the University of Michigan.
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms are permitted   * Redistribution and use in source and binary forms are permitted
Line 10 Line 23
  * software without specific prior written permission. This software   * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.   * is provided ``as is'' without express or implied warranty.
  */   */
   /* ACKNOWLEDGEMENTS:
    * This work was originally developed by the University of Michigan
    * (as part of U-MICH LDAP).
    */
   
 #include "portable.h"  #include "portable.h"
   
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  
   
   #include <ac/stdlib.h>
 #include <ac/string.h>  #include <ac/string.h>
 #include <ac/socket.h>  #include <ac/socket.h>
   #include <ac/unistd.h>
   #include <ac/errno.h>
   
 #ifdef HAVE_CONSOLE_H  #ifdef HAVE_CONSOLE_H
 #include <console.h>  #include <console.h>
 #endif /* MACOS */  #endif
   
 #include "lber-int.h"  #include <lber.h>
   
 static void usage( char *name )  static void usage( const char *name )
 {  {
         fprintf( stderr, "usage: %s fmt\n", name );          fprintf( stderr, "usage: %s fmt\n", name );
 }  }
Line 33  static void usage( char *name ) Line 52  static void usage( char *name )
 int  int
 main( int argc, char **argv )  main( int argc, char **argv )
 {  {
         long            i;          char *s;
         unsigned long   len;  
         int             tag;          ber_tag_t       tag;
         BerElement      ber;          ber_len_t       len;
         Sockbuf         sb;  
         extern char     *optarg;          BerElement      *ber;
           Sockbuf         *sb;
           int             fd;
   
           /* enable debugging */
           int ival = -1;
           ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &ival );
   
           if ( argc < 2 ) {
                   usage( argv[0] );
                   return( EXIT_FAILURE );
           }
   
 #ifdef HAVE_CONSOLE_H  #ifdef HAVE_CONSOLE_H
         ccommand( &argv );          ccommand( &argv );
         cshow( stdout );          cshow( stdout );
 #endif /* MACOS */  #endif
   
           sb = ber_sockbuf_alloc();
           fd = fileno( stdin );
           ber_sockbuf_add_io( sb, &ber_sockbuf_io_fd, LBER_SBIOD_LEVEL_PROVIDER,
                   (void *)&fd );
   
           ber = ber_alloc_t(LBER_USE_DER);
           if( ber == NULL ) {
                   perror( "ber_alloc_t" );
                   return( EXIT_FAILURE );
           }
   
           for (;;) {
                   tag = ber_get_next( sb, &len, ber);
                   if( tag != LBER_ERROR ) break;
   
         memset( &sb, 0, sizeof(sb) );                  if( errno == EWOULDBLOCK ) continue;
         sb.sb_sd = 0;                  if( errno == EAGAIN ) continue;
         sb.sb_ber.ber_buf = NULL;  
   
         if ( (tag = ber_get_next( &sb, &len, &ber )) == -1 ) {  
                 perror( "ber_get_next" );                  perror( "ber_get_next" );
                 exit( 1 );                  return( EXIT_FAILURE );
         }          }
         printf( "message has tag 0x%x and length %ld\n", tag, len );  
   
         if ( ber_scanf( &ber, "i", &i ) == -1 ) {          printf("decode: message tag 0x%lx and length %ld\n",
                 fprintf( stderr, "ber_scanf returns -1\n" );                  (unsigned long) tag, (long) len );
                 exit( 1 );  
           for( s = argv[1]; *s; s++ ) {
                   char buf[128];
                   char fmt[2];
                   fmt[0] = *s;
                   fmt[1] = '\0';
   
                   printf("decode: format %s\n", fmt );
                   len = sizeof(buf);
                   tag = ber_scanf( ber, fmt, &buf[0], &len );
   
                   if( tag == LBER_ERROR ) {
                           perror( "ber_scanf" );
                           return( EXIT_FAILURE );
                   }
         }          }
         printf( "got int %d\n", i );  
   
         return( 0 );          ber_sockbuf_free( sb );
           return( EXIT_SUCCESS );
 }  }

Removed from v.1.3  
changed lines
  Added in v.1.32.2.2


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org