#ifdef CURLDEBUG #ifndef _CURL_MEDEBUG_H #define _CURL_MEDEBUG_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2004, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://curl.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * * $Id: memdebug.h,v 1.27 2004/04/26 07:20:11 bagder Exp $ ***************************************************************************/ /* * CAUTION: this header is designed to work when included by the app-side * as well as the library. Do not mix with library internals! */ #include "setup.h" #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #include #ifdef HAVE_MEMORY_H #include #endif #define logfile curl_debuglogfile extern FILE *logfile; /* memory functions */ void *curl_domalloc( size_t size, int line, const char *source ); void *curl_docalloc( size_t elements, size_t size, int line, const char *source ); void *curl_dorealloc( void *ptr, size_t size, int line, const char *source ); void curl_dofree( void *ptr, int line, const char *source ); char *curl_dostrdup( const char *str, int line, const char *source ); void curl_memdebug( const char *logname ); void curl_memlimit( long limit ); /* file descriptor manipulators */ int curl_socket( int domain, int type, int protocol, int line, const char * ); int curl_sclose( int sockfd, int, const char *source ); int curl_accept( int s, void *addr, void *addrlen, int line, const char *source ); /* FILE functions */ FILE *curl_fopen( const char *file, const char *mode, int line, const char *source ); int curl_fclose( FILE *file, int line, const char *source ); #ifndef MEMDEBUG_NODEFINES /* Set this symbol on the command-line, recompile all lib-sources */ #undef strdup #define strdup( ptr ) curl_dostrdup( ptr, __LINE__, __FILE__ ) #define malloc( size ) curl_domalloc( size, __LINE__, __FILE__ ) #define calloc( nbelem,size ) curl_docalloc( nbelem, size, __LINE__, __FILE__ ) #define realloc( ptr,size ) curl_dorealloc( ptr, size, __LINE__, __FILE__ ) #define free( ptr ) curl_dofree( ptr, __LINE__, __FILE__ ) #define socket( domain,type,protocol ) \ curl_socket( domain,type,protocol,__LINE__,__FILE__ ) #undef accept /* for those with accept as a macro */ #define accept( sock,addr,len ) \ curl_accept( sock,addr,len,__LINE__,__FILE__ ) #define getaddrinfo( host,serv,hint,res ) \ curl_dogetaddrinfo( host,serv,hint,res,__LINE__,__FILE__ ) #define getnameinfo( sa,salen,host,hostlen,serv,servlen,flags ) \ curl_dogetnameinfo( sa,salen,host,hostlen,serv,servlen,flags, __LINE__, \ __FILE__ ) #define freeaddrinfo( data ) \ curl_dofreeaddrinfo( data,__LINE__,__FILE__ ) /* sclose is probably already defined, redefine it! */ #undef sclose #define sclose( sockfd ) curl_sclose( sockfd,__LINE__,__FILE__ ) /* ares-adjusted define: */ #undef closesocket #define closesocket( sockfd ) curl_sclose( sockfd,__LINE__,__FILE__ ) #undef fopen #define fopen( file,mode ) curl_fopen( file,mode,__LINE__,__FILE__ ) #define fclose( file ) curl_fclose( file,__LINE__,__FILE__ ) #endif /* MEMDEBUG_NODEFINES */ #endif /* _CURL_MEDEBUG_H */ #endif /* CURLDEBUG */