- pos = nval_used(xb, xb_size);
-
- if(pos < xb_size && bsize < xb_size && namelen < xb_size){
- reclen = (sizeof(int) + namelen + 1 + bsize);
- if( pos + reclen < xb_size){
- memcpy(xb + pos,&reclen,sizeof(int));
- pos +=sizeof(int);
- strncpy(xb + pos, name, reclen);
- pos+= (namelen+1);
- memcpy(xb + pos,buf,bsize);
- pos+= bsize;
- return 0;
- }
+ reclen = (sizeof(int) + namelen + 1 + bsize);
+
+ if(reclen > space)
+ return -ENOSPC;
+
+ if(pos >= 0){
+ nval_del(xb,xb_size,name);
+ start = nval_used(xb, xb_size);