static void test_mmap_delete(abts_case *tc, void *data) { apr_status_t rv; ABTS_PTR_NOTNULL(tc, themmap); rv = apr_mmap_delete(themmap); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); }
static int JK_METHOD jk2_shm_destroy(jk_env_t *env, jk_shm_t *shm) { apr_mmap_t *aprShm=(apr_mmap_t *)shm->privateData; if( aprShm==NULL ) return JK_OK; return apr_mmap_delete(aprShm); }
int load( const char* filename ) { free( resource ); apr_file_t* newfile; apr_file_open( &newfile, filename, APR_READ, APR_OS_DEFAULT, mempool ); apr_finfo_t finfo; apr_file_info_get( &finfo, APR_FINFO_SIZE, newfile ); apr_mmap_t* mmap; apr_mmap_create( &mmap, newfile, 0, finfo.size, APR_MMAP_READ, mempool ); resource = (char*)malloc( finfo.size ); memcpy( resource, mmap->mm, finfo.size ); apr_mmap_delete( mmap ); }
apr_status_t kahanaUtilChecksum( apr_pool_t *p, kCheckSumType_e type, const char **hex_digest, const char *msg, ... ) { apr_status_t rc = APR_SUCCESS; char *keys = NULL; if( !( keys = calloc( 0, sizeof( char ) ) ) ){ rc = APR_ENOMEM; } else { va_list args; char *key; int i, len = 0; va_start( args, msg ); while( ( key = va_arg( args, char* ) ) ) { if( ( i = strlen( key ) ) ) { if( !( keys = realloc( keys, len + i + 1 ) ) ){ rc = APR_ENOMEM; len = 0; break; } memcpy( keys + len, key, i ); len += i; keys[len] = '\0'; } } va_end( args ); if( len ) { rc = APR_SUCCESS; if( type == CHKSUM_STR ) { char *m = NULL; if( asprintf( &m, "%s", msg ) == -1 ){ rc = APR_ENOMEM; } else { *hex_digest = kahanaUtilHMACSHA1( p, (unsigned char*)keys, len, (const unsigned char*)m, strlen( m ) ); free( m ); } } else if( type == CHKSUM_FILE ) { apr_file_t *fp = NULL; if( ( rc = apr_file_open( &fp, msg, APR_READ|APR_BINARY, APR_OS_DEFAULT, p ) ) == APR_SUCCESS ) { apr_finfo_t finfo; apr_mmap_t *mm = NULL; if( ( rc = apr_file_info_get( &finfo, APR_FINFO_SIZE, fp ) ) == APR_SUCCESS && ( rc = apr_mmap_create( &mm, fp, 0, finfo.size, APR_MMAP_READ, p ) ) != APR_SUCCESS ){ mm = NULL; } apr_file_close( fp ); if( mm ){ *hex_digest = kahanaUtilHMACSHA1( p, (unsigned char*)keys, len, mm->mm, finfo.size ); rc = apr_mmap_delete( mm ); } } } else { rc = APR_BADARG; } } free( keys ); } return rc; }