save works
This commit is contained in:
parent
f4b1ba4cd7
commit
acfbec875b
51 changed files with 622 additions and 1175 deletions
|
|
@ -112,8 +112,33 @@ static typeinfo_t resobj_type
|
|||
.reference = (reference_fn_t)resobj_reference,
|
||||
.dereference = (dereference_fn_t)resobj_dereference } } };
|
||||
|
||||
xce_resource_t* makeResource(xce_resource_t* w)
|
||||
xce_resource_t* makeResource(var resmgr, xce_resource_t* r)
|
||||
{
|
||||
xce_resource_t* resobj = makeInstance(&resobj_type, w);
|
||||
xce_resource_t* resobj = NULL;
|
||||
int rc;
|
||||
|
||||
rc = key_find(resmgr, (void*)r->name, (void**)&resobj);
|
||||
if ((rc < 0) && (rc != -ENOENT)) {
|
||||
errno = -rc;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (rc > 0) {
|
||||
errno = EEXIST;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
resobj = makeInstance(&resobj_type, r);
|
||||
if (resobj != NULL) {
|
||||
reference(resobj);
|
||||
rc = key_add(resmgr, (void*)resobj->name, (void*)resobj);
|
||||
if (rc < 0) {
|
||||
destroy(resobj);
|
||||
|
||||
errno = -rc;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return resobj;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue