/****************************************** * str example with apr * Sylvain Marechal * 25/10/2005 *****************************************/ #include "apr_general.h" static apr_status_t my_string_clear(void *data) { // This function is called when apr_pool_destroy is called printf( "The data to manipulate is (%s)\n", (char *)data); return APR_SUCCESS; } /********************************************* * apr_pstrdup, apr_pstrcat ********************************************/ void test_str( apr_pool_t *pool ) { char * p; char * p_user_data; apr_pool_t *subpool; if( apr_pool_create(&subpool, pool ) != APR_SUCCESS ) { printf( "Could not allocate subpool\n" ); exit( -1 ); } p = (char *)apr_pstrdup( subpool, "coucou" ); apr_pool_userdata_set( p, "TEST", my_string_clear, subpool ); apr_pool_userdata_get((void **)&p_user_data, "TEST", subpool ); printf( "allocated string: '%s', p_user_data='%s'\n", p, p_user_data ); p = (char *)apr_pstrcat( subpool, p, " les amis", NULL ); printf( "allocated string: '%s', p_user_data='%s'\n", p, p_user_data ); apr_pool_destroy( subpool ); printf( "after apr_pool_destroy(subpool)\n" ); } /********************************************* * main ********************************************/ int main( int argc, char * argv[] ) { apr_pool_t *pool; if (apr_initialize() != APR_SUCCESS) { printf( "Could not initialize\n"); exit(-1); } if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { printf( "Could not allocate pool\n"); exit( -1); } test_str( pool ); apr_pool_destroy( pool ); return 0; }