new: implement and fix few more database functions

This commit is contained in:
ngn
2024-07-02 06:04:29 +03:00
parent 16992760ad
commit 17a073838d
8 changed files with 144 additions and 29 deletions

View File

@ -55,9 +55,5 @@ void lm_package_data_free(lm_pkg_t *pkg){
free(pkg->desc);
free(pkg->name);
free(pkg->version);
if(NULL != pkg->depends){
for(int i = 0; pkg->depends[i] != NULL; i++)
free(pkg->depends[i]);
}
lm_package_depend_free(pkg);
}

View File

@ -43,6 +43,17 @@ bool lm_package_depend_add(lm_pkg_t *pkg, char *depend){
return true;
}
void lm_package_depend_free(lm_pkg_t *pkg){
if(NULL == pkg)
return;
for(int i = 0; pkg->depends[i] != NULL; i++)
free(pkg->depends[i]);
free(pkg->depends);
pkg->depends = NULL;
}
size_t lm_package_depend_strlen(lm_pkg_t *pkg){
size_t len = 1;
@ -76,3 +87,22 @@ bool lm_package_depend_tostr(lm_pkg_t *pkg, char *buffer){
return true;
}
bool lm_package_depend_fromstr(lm_pkg_t *pkg, char *buffer){
if(NULL == pkg){
lm_error_set(LM_ERR_ArgNULL);
return false;
}
lm_package_depend_free(pkg);
if(NULL == buffer)
return true;
char *save = NULL, *dep = NULL;
while((dep = strtok_r(buffer, ",", &save)) != NULL)
if(!lm_package_depend_add(pkg, dep))
return false;
return true;
}

View File

@ -8,10 +8,15 @@
lm_pkg_t *lm_package_new(){
lm_pkg_t *pkg = malloc(sizeof(lm_pkg_t));
bzero(pkg, sizeof(lm_pkg_t));
lm_package_init(pkg);
return pkg;
}
void lm_package_init(lm_pkg_t *pkg){
bzero(pkg, sizeof(lm_pkg_t));
}
void lm_package_free(lm_pkg_t *pkg){
lm_package_data_free(pkg);
bzero(pkg, sizeof(lm_pkg_t));
}