NSAPI_PUBLIC void ACL_ExprDestroy( ACLExprHandle_t *expr ) { int ii; if ( expr == NULL ) return; if ( expr->expr_tag ) PERM_FREE( expr->expr_tag ); if ( expr->expr_argv ) { for ( ii = 0; ii < expr->expr_argc; ii++ ) if ( expr->expr_argv[ii] ) PERM_FREE( expr->expr_argv[ii] ); PERM_FREE( expr->expr_argv ); } for ( ii = 0; ii < expr->expr_term_index; ii++ ) ACL_ExprEntryDestroy( &expr->expr_arry[ii] ); if ( expr->expr_auth ) { PListEnumerate(expr->expr_auth, acl_expr_auth_destroy, NULL); PListDestroy(expr->expr_auth); } PERM_FREE( expr->expr_arry ); PERM_FREE( expr->expr_raw ); PERM_FREE( expr ); return; }
void ACL_Attr2IndexListDestroy(void) { PListDestroy(ACLAttr2IndexPList); if(acl_parse_crit) crit_terminate(acl_parse_crit); acl_free_buffer(); }
NSAPI_PUBLIC PList_t PListDuplicate(PList_t plist, pool_handle_t *new_mempool, int flags) { PListStruct_t *pl = (PListStruct_t *)plist; PLValueStruct_t **ppval; PLValueStruct_t *pv; int i; int rv = 0; PList_t new_plist; if (!plist) return NULL; new_plist = PListCreateDuplicate(plist, new_mempool, flags); if (new_plist == NULL) { return(NULL); } ppval = (PLValueStruct_t **)(pl->pl_ppval); /* Loop over the initialized property indices */ for (i = 0; i < pl->pl_initpi; ++i) { /* Got a property here? */ pv = ppval[i]; if (pv) { /* Create the property */ rv = PListDefProp(new_plist, i + 1, pv->pv_name, PLFLG_IGN_RES); if (rv > 0) { /* If that worked, set the value and type */ rv = PListSetValue(new_plist, rv, pv->pv_value, pv->pv_type); } if ( rv <= 0 ) { PListDestroy(new_plist); return(NULL); } } } return(new_plist); }