new: implement database keeps and files functions

This commit is contained in:
ngn
2024-07-03 03:40:52 +03:00
parent 17a073838d
commit 43cf7d26c8
14 changed files with 461 additions and 32 deletions

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}