new: implement database keeps and files functions
This commit is contained in:
@ -37,6 +37,11 @@ int lm_package_data_handler(void *data, const char *_section, const char *_key,
|
||||
return 0;
|
||||
}
|
||||
|
||||
else if(eq(key, PKG_DATA_KEEPS)){
|
||||
if(!lm_package_keep_add(pkg, value))
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -55,5 +60,7 @@ void lm_package_data_free(lm_pkg_t *pkg){
|
||||
free(pkg->desc);
|
||||
free(pkg->name);
|
||||
free(pkg->version);
|
||||
|
||||
lm_package_depend_free(pkg);
|
||||
lm_package_keep_free(pkg);
|
||||
}
|
||||
|
@ -47,6 +47,9 @@ void lm_package_depend_free(lm_pkg_t *pkg){
|
||||
if(NULL == pkg)
|
||||
return;
|
||||
|
||||
if(NULL == pkg->depends)
|
||||
return;
|
||||
|
||||
for(int i = 0; pkg->depends[i] != NULL; i++)
|
||||
free(pkg->depends[i]);
|
||||
free(pkg->depends);
|
||||
@ -77,14 +80,22 @@ bool lm_package_depend_tostr(lm_pkg_t *pkg, char *buffer){
|
||||
return true;
|
||||
}
|
||||
|
||||
size_t bufsz = 0, depsz = 0;
|
||||
|
||||
for(int i = 0; NULL != pkg->depends[i]; i++){
|
||||
depsz = strlen(pkg->depends[i]);
|
||||
|
||||
if(i == 0){
|
||||
sprintf(buffer, "%s", pkg->depends[i]);
|
||||
memcpy(buffer, pkg->depends[i], depsz);
|
||||
continue;
|
||||
}
|
||||
sprintf(buffer, "%s,%s", buffer, pkg->depends[i]);
|
||||
|
||||
buffer[bufsz++] = ',';
|
||||
memcpy(buffer+bufsz, pkg->depends, depsz);
|
||||
bufsz += depsz;
|
||||
}
|
||||
|
||||
buffer[bufsz] = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -53,3 +53,17 @@ bool lm_package_keep_contains(lm_pkg_t *pkg, char *path){
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void lm_package_keep_free(lm_pkg_t *pkg){
|
||||
if(NULL == pkg)
|
||||
return;
|
||||
|
||||
if(NULL == pkg->keeps)
|
||||
return;
|
||||
|
||||
for(int i = 0; pkg->keeps[i] != NULL; i++)
|
||||
free(pkg->keeps[i]);
|
||||
free(pkg->keeps);
|
||||
|
||||
pkg->keeps = NULL;
|
||||
}
|
||||
|
Reference in New Issue
Block a user