/** * xmlSecPtrListDuplicate: * @list: the pointer to list. * * Creates a new copy of @list and all its items. * * Returns pointer to newly allocated list or NULL if an error occurs. */ xmlSecPtrListPtr xmlSecPtrListDuplicate(xmlSecPtrListPtr list) { xmlSecPtrListPtr newList; int ret; xmlSecAssert2(xmlSecPtrListIsValid(list), NULL); newList = xmlSecPtrListCreate(list->id); if(newList == NULL) { xmlSecErr_a_ignorar5(XMLSEC_ERRORS_HERE, xmlSecErrorsSafeString(xmlSecPtrListGetName(list)), "xmlSecPtrListCreate", XMLSEC_ERRORS_R_XMLSEC_FAILED, XMLSEC_ERRORS_NO_MESSAGE); return(NULL); } ret = xmlSecPtrListCopy(newList, list); if(ret < 0) { xmlSecErr_a_ignorar5(XMLSEC_ERRORS_HERE, xmlSecErrorsSafeString(xmlSecPtrListGetName(list)), "xmlSecPtrListCopy", XMLSEC_ERRORS_R_XMLSEC_FAILED, XMLSEC_ERRORS_NO_MESSAGE); xmlSecPtrListDestroy(newList); return(NULL); } return(newList); }
PyObject *xmlsec_PtrListCreate(PyObject *self, PyObject *args) { PyObject *id_obj; xmlSecPtrListPtr list; xmlSecPtrListId id = NULL; if (CheckArgs(args, "O:ptrListCreate")) { if(!PyArg_ParseTuple(args, (char *) "O:ptrListCreate", &id_obj)) return NULL; } else return NULL; id = xmlSecPtrListId_get(id_obj); list = xmlSecPtrListCreate(id); return (wrap_xmlSecPtrListPtr(list)); }
/** * xmlSecKeyAdoptData: * @key: the pointer to key. * @data: the pointer to key data. * * Adds @data to the @key. The @data object will be destroyed * by @key. * * Returns: 0 on success or a negative value otherwise. */ int xmlSecKeyAdoptData(xmlSecKeyPtr key, xmlSecKeyDataPtr data) { xmlSecKeyDataPtr tmp; xmlSecSize pos, size; xmlSecAssert2(key != NULL, -1); xmlSecAssert2(xmlSecKeyDataIsValid(data), -1); /* special cases */ if(data->id == xmlSecKeyDataValueId) { if(key->value != NULL) { xmlSecKeyDataDestroy(key->value); } key->value = data; return(0); } if(key->dataList == NULL) { key->dataList = xmlSecPtrListCreate(xmlSecKeyDataListId); if(key->dataList == NULL) { xmlSecError(XMLSEC_ERRORS_HERE, NULL, "xmlSecPtrListCreate", XMLSEC_ERRORS_R_XMLSEC_FAILED, XMLSEC_ERRORS_NO_MESSAGE); return(-1); } } size = xmlSecPtrListGetSize(key->dataList); for(pos = 0; pos < size; ++pos) { tmp = (xmlSecKeyDataPtr)xmlSecPtrListGetItem(key->dataList, pos); if((tmp != NULL) && (tmp->id == data->id)) { return(xmlSecPtrListSet(key->dataList, data, pos)); } } return(xmlSecPtrListAdd(key->dataList, data)); }
static int xmlSecRelationshipInitialize(xmlSecTransformPtr transform) { xmlSecRelationshipCtxPtr ctx; xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecTransformRelationshipId), -1); xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecRelationshipSize), -1); ctx = xmlSecRelationshipGetCtx(transform); xmlSecAssert2(ctx != NULL, -1); /* initialize context */ memset(ctx, 0, sizeof(xmlSecRelationshipCtx)); ctx->sourceIdList = xmlSecPtrListCreate(xmlSecStringListId); if(ctx->sourceIdList == NULL) { xmlSecError(XMLSEC_ERRORS_HERE, xmlSecErrorsSafeString(xmlSecTransformGetName(transform)), "xmlSecPtrListCreate", XMLSEC_ERRORS_R_XMLSEC_FAILED, XMLSEC_ERRORS_NO_MESSAGE); return(-1); } return(0); }