]> git.sur5r.net Git - openldap/blobdiff - libraries/liblber/io.c
update ldap/lber headers towards ldapext-ldap-c-api-01
[openldap] / libraries / liblber / io.c
index 99cc2f3999e1f777b2f6753605d7228f45e70f8f..582a883d64a8df8c99a10512145c31199720e404 100644 (file)
  * is provided ``as is'' without express or implied warranty.
  */
 
-#include <stdio.h>
-#include <ctype.h>
-
-#if defined( DOS ) || defined( _WIN32 )
-#include "msdos.h"
-#endif /* DOS || _WIN32 */
+#include "portable.h"
 
-#ifdef MACOS
-#include <stdlib.h>
-#include "macos.h"
-#else /* MACOS */
-#if defined(NeXT) || defined(VMS)
+#include <stdio.h>
 #include <stdlib.h>
-#else /* next || vms */
-#ifndef __FreeBSD__
-#include <malloc.h>
-#endif
-#endif /* next || vms */
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#ifdef PCNFS
-#include <tklib.h>
-#endif /* PCNFS */
-#endif /* MACOS */
 
-#ifndef VMS
-#include <memory.h>
-#endif
-#include <string.h>
-#include "lber.h"
+#include <ac/ctype.h>
+#include <ac/errno.h>
+#include <ac/socket.h>
+#include <ac/string.h>
+#include <ac/unistd.h>
 
-#ifdef _WIN32
-#include <winsock.h>
+#ifdef HAVE_IO_H
 #include <io.h>
-#endif /* _WIN32 */
+#endif
 
-#ifdef NEEDPROTOS
-static int ber_realloc( BerElement *ber, unsigned long len );
-static int ber_filbuf( Sockbuf *sb, long len );
-static long BerRead( Sockbuf *sb, char *buf, long len );
+#include "lber-int.h"
+
+static int ber_realloc LDAP_P(( BerElement *ber, unsigned long len ));
+static int ber_filbuf LDAP_P(( Sockbuf *sb, long len ));
+static long BerRead LDAP_P(( Sockbuf *sb, char *buf, long len ));
 #ifdef PCNFS
-static int BerWrite( Sockbuf *sb, char *buf, long len );
+static int BerWrite LDAP_P(( Sockbuf *sb, char *buf, long len ));
 #endif /* PCNFS */
-#else
-int ber_filbuf();
-long BerRead();
-static int ber_realloc();
-#endif /* NEEDPROTOS */
 
 #define bergetc( sb, len )    ( sb->sb_ber.ber_end > sb->sb_ber.ber_ptr ? \
                          (unsigned char)*sb->sb_ber.ber_ptr++ : \
@@ -136,9 +109,9 @@ int
 ber_filbuf( Sockbuf *sb, long len )
 {
        short   rc;
-#ifdef CLDAP
+#ifdef LDAP_CONNECTIONLESS
        int     addrlen;
-#endif /* CLDAP */
+#endif /* LDAP_CONNECTIONLESS */
 
        if ( sb->sb_ber.ber_buf == NULL ) {
                if ( (sb->sb_ber.ber_buf = (char *) malloc( READBUFSIZ )) ==
@@ -149,7 +122,7 @@ ber_filbuf( Sockbuf *sb, long len )
        }
 
        if ( sb->sb_naddr > 0 ) {
-#ifdef CLDAP
+#ifdef LDAP_CONNECTIONLESS
                rc = udp_read(sb, sb->sb_ber.ber_buf, READBUFSIZ, addrlen );
 #ifdef LDAP_DEBUG
                if ( lber_debug ) {
@@ -159,14 +132,13 @@ ber_filbuf( Sockbuf *sb, long len )
                                lber_bprint( sb->sb_ber.ber_buf, rc );
                }
 #endif /* LDAP_DEBUG */
-#else /* CLDAP */
+#else /* LDAP_CONNECTIONLESS */
                rc = -1;
-#endif /* CLDAP */
+#endif /* LDAP_CONNECTIONLESS */
        } else {
                rc = read( sb->sb_sd, sb->sb_ber.ber_buf,
-                   ((sb->sb_options & LBER_NO_READ_AHEAD) &&
-                   (len < READBUFSIZ)) ?
-                   len : READBUFSIZ );
+                       ((sb->sb_options & LBER_NO_READ_AHEAD) && (len < READBUFSIZ)) ?
+                               len : READBUFSIZ );
        }
 
        if ( rc > 0 ) {
@@ -191,7 +163,7 @@ BerRead( Sockbuf *sb, char *buf, long len )
                                break;
                        return( c );
                }
-               *buf++ = c;
+               *buf++ = (char) c;
                nread++;
                len--;
        }
@@ -303,7 +275,7 @@ ber_flush( Sockbuf *sb, BerElement *ber, int freeit )
 #ifdef LDAP_DEBUG
        if ( lber_debug ) {
                fprintf( stderr, "ber_flush: %ld bytes to sd %ld%s\n", towrite,
-                   sb->sb_sd, ber->ber_rwptr != ber->ber_buf ? " (re-flush)"
+                   (long) sb->sb_sd, ber->ber_rwptr != ber->ber_buf ? " (re-flush)"
                    : "" );
                if ( lber_debug > 1 )
                        lber_bprint( ber->ber_rwptr, towrite );
@@ -321,17 +293,18 @@ ber_flush( Sockbuf *sb, BerElement *ber, int freeit )
        nwritten = 0;
        do {
                if (sb->sb_naddr > 0) {
-#ifdef CLDAP
+#ifdef LDAP_CONNECTIONLESS
                        rc = udp_write( sb, ber->ber_buf + nwritten,
                            (size_t)towrite );
-#else /* CLDAP */
+#else /* LDAP_CONNECTIONLESS */
                        rc = -1;
-#endif /* CLDAP */
+#endif /* LDAP_CONNECTIONLESS */
                        if ( rc <= 0 )
                                return( -1 );
+
                        /* fake error if write was not atomic */
                        if (rc < towrite) {
-#if !defined( MACOS ) && !defined( DOS )
+#ifdef EMSGSIZE
                            errno = EMSGSIZE;
 #endif
                            return( -1 );
@@ -361,7 +334,7 @@ ber_alloc_t( int options )
        if ( (ber = (BerElement *) calloc( 1, sizeof(BerElement) )) == NULLBER )
                return( NULLBER );
        ber->ber_tag = LBER_DEFAULT;
-       ber->ber_options = options;
+       ber->ber_options = (char) options;
 
        return( ber );
 }
@@ -397,7 +370,7 @@ ber_init( BerElement *ber, int options )
 {
        (void) memset( (char *)ber, '\0', sizeof( BerElement ));
        ber->ber_tag = LBER_DEFAULT;
-       ber->ber_options = options;
+       ber->ber_options = (char) options;
 }
 
 
@@ -421,14 +394,16 @@ void
 ber_dump( BerElement *ber, int inout )
 {
        fprintf( stderr, "ber_dump: buf 0x%lx, ptr 0x%lx, end 0x%lx\n",
-           ber->ber_buf, ber->ber_ptr, ber->ber_end );
+           (long) ber->ber_buf,
+               (long) ber->ber_ptr,
+               (long) ber->ber_end );
        if ( inout == 1 ) {
                fprintf( stderr, "          current len %ld, contents:\n",
-                   ber->ber_end - ber->ber_ptr );
+                   (long) (ber->ber_end - ber->ber_ptr) );
                lber_bprint( ber->ber_ptr, ber->ber_end - ber->ber_ptr );
        } else {
                fprintf( stderr, "          current len %ld, contents:\n",
-                   ber->ber_ptr - ber->ber_buf );
+                   (long) (ber->ber_ptr - ber->ber_buf) );
                lber_bprint( ber->ber_buf, ber->ber_ptr - ber->ber_buf );
        }
 }
@@ -439,9 +414,9 @@ ber_sos_dump( Seqorset *sos )
        fprintf( stderr, "*** sos dump ***\n" );
        while ( sos != NULLSEQORSET ) {
                fprintf( stderr, "ber_sos_dump: clen %ld first 0x%lx ptr 0x%lx\n",
-                   sos->sos_clen, sos->sos_first, sos->sos_ptr );
+                   (long) sos->sos_clen, (long) sos->sos_first, (long) sos->sos_ptr );
                fprintf( stderr, "              current len %ld contents:\n",
-                   sos->sos_ptr - sos->sos_first );
+                   (long) (sos->sos_ptr - sos->sos_first) );
                lber_bprint( sos->sos_first, sos->sos_ptr - sos->sos_first );
 
                sos = sos->sos_next;
@@ -489,7 +464,7 @@ get_tag( Sockbuf *sb )
 unsigned long
 ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber )
 {
-       unsigned long   tag, netlen, toread;
+       unsigned long   tag = 0, netlen, toread;
        unsigned char   lc;
        long            rc;
        int             noctets, diff;
@@ -547,7 +522,7 @@ ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber )
                            noctets ) {
                                return( LBER_DEFAULT );
                        }
-                       *len = LBER_NTOHL( netlen );
+                       *len = AC_NTOHL( netlen );
                } else {
                        *len = lc;
                }
@@ -566,7 +541,7 @@ ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber )
 #endif /* DOS && !_WIN32 */
 
                if ( ( sb->sb_options & LBER_MAX_INCOMING_SIZE ) &&
-                   *len > sb->sb_max_incoming ) {
+                   *len > (unsigned long) sb->sb_max_incoming ) {
                        return( LBER_DEFAULT );
                }