]> git.xolatile.top Git - soikk-DB.git/commitdiff
Improved database name system.
authorSoikk <76824648+Soikk@users.noreply.github.com>
Tue, 9 Aug 2022 00:04:02 +0000 (02:04 +0200)
committerSoikk <76824648+Soikk@users.noreply.github.com>
Tue, 9 Aug 2022 00:04:02 +0000 (02:04 +0200)
CHANGELOG
include/str.h
src/database.c
src/main.c
src/str.c

index 2f43bc52dcc21c984886c22d0eab1d5c4506f5ad..6c5c7ba9494edb3c29d38340051343b1a4ac8d41 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+1660003394 (Tue Aug 09 2022 02:03:14 GMT+0200 (Central European Summer Time))
+Improved database name system.
+
 1659988523 (Mon Aug 08 2022 21:55:23 GMT+0200 (Central European Summer Time))
 Minor changes.
 
index 999f1e37e4ca381bdc1894ccb94f6d6eb78eeee4..7f5199696df4e7a7a0afc2d59eb108a30e18d0c4 100644 (file)
@@ -12,6 +12,10 @@ char *normalizeStr(const char *str, uint32_t *ln);
 
 char *normalizeStrLimit(const char *str, uint32_t *l, uint32_t limit);
 
+char *trimStr(const char *str, uint32_t *l);
+
+char *trimStrLimit(const char *str, uint32_t *l, uint32_t limit);
+
 ssize_t strInTags(const char *tags, int n, const char *ndl, int m, char sep); 
 
 #endif
index 5b03b4bc0aaad2d30b8bf83b2c612590b83ba82e..461e02de85d806a1b3c30dfb23ac7997f48667e2 100644 (file)
@@ -3,7 +3,9 @@
 
 database *newDatabase(char *name){
        database *db = malloc(sizeof(database));
-       memcpy(db->name, name, len(name)+1);
+       uint32_t l;
+       name = trimStrLimit(name, &l, 31);
+       memcpy(db->name, name, l+1);
        db->lfiles = newLtable(0);
        db->ltags = newLtable(0);
        db->cfiles = newCtable(0);
@@ -277,7 +279,7 @@ void printDatabase(database *db){
 
 void debugAVLtree(node *n){
        if(n != NULL){
-               printf("\t\t+%" PRIu64 " -> %" PRIu64 "\n", n->h, n->i);
+               printf("\t\t+ %" PRIu64 " -> %" PRIu64 "\n", n->h, n->i);
                debugAVLtree(n->left);
                debugAVLtree(n->right);
        }
@@ -288,11 +290,11 @@ void debugDatabase(database *db){
        printf("Name: %s\n", db->name);
        printf("\t-lfiles: %d\n", db->lfiles->size);
        for(uint64_t i = 0; i < db->lfiles->size; ++i){
-               printf("\t\t+[%" PRIu64 "] %s (%" PRIu64 ")\n", i, db->lfiles->table[i], db->cfiles->table[i]);
+               printf("\t\t+ %s (%" PRIu64 ")\n", db->lfiles->table[i], db->cfiles->table[i]);
        }
        printf("\t-ltags: %d\n", db->ltags->size);
        for(uint64_t i = 0; i < db->ltags->size; ++i){
-               printf("\t\t+[%" PRIu64 "] %s (%" PRIu64 ")\n", i, db->ltags->table[i], db->ctags->table[i]);
+               printf("\t\t+ %s (%" PRIu64 ")\n", db->ltags->table[i], db->ctags->table[i]);
        }
        printf("\t-hfiles: %d\n", db->lfiles->size);
        debugAVLtree(db->hfiles);
@@ -300,7 +302,7 @@ void debugDatabase(database *db){
        debugAVLtree(db->htags);
        printf("\t-map: %d\n", db->map->size);
        for(uint64_t i = 0; i < db->map->size; ++i){
-               printf("\t\t+[%" PRIu64 "] %" PRIu64 ":%" PRIu64 "\n", i, db->map->table[i].file, db->map->table[i].tag);
+               printf("\t\t+ %" PRIu64 ":%" PRIu64 "\n", db->map->table[i].file, db->map->table[i].tag);
        }
        printf("\n");
 }
index b6a21bca974e6de287075a92b092bf0fe36aec6e..b24dcb85065c251cc88d19c88c032d8c9202ae48 100644 (file)
@@ -4,11 +4,9 @@
 
 int main(){
 
-
        inputBuffer *in = newInputBuffer();
        database *db = newDatabase("miDB");
-
-
+       
        addFileTag(db, "vaca.png", "naturalezas");      
        addFileTags(db, "terry-davis.jpg", 3, "holyC", "programmer", "very cool");
        addFileTag(db, "vaca.png", "lovely");
@@ -30,13 +28,6 @@ int main(){
        
        }
        
-       addTagFiles(db, "elemento", 2, "vaca.png", "terry-davis.jpg");
-       
-       printDatabase(db);
-       
-       debugDatabase(db);
-       
-       
        
 
        while(0){
index d896868e716fcb5e0e2f4a34b2c07c8de94a16fa..ce43b8fa08e9609f414e07bbed6b81050f77eaa5 100644 (file)
--- a/src/str.c
+++ b/src/str.c
@@ -44,6 +44,36 @@ char *normalizeStrLimit(const char *str, uint32_t *l, uint32_t limit){
        return nstr;
 }
 
+// Trims trailing spaces
+char *trimStr(const char *str, uint32_t *l){
+       *l = len(str);
+       uint32_t trw = 0;
+       while(isspace(str[--(*l)]))
+               ++trw;
+       char *nstr = calloc(++(*l)+1, sizeof(char));
+       for(int i = 0; i < *l; ++i)
+               nstr[i] = str[i];
+       return nstr;
+}
+
+// Same as trimStr but with a limit (str[limit] will be equal to '\0')
+// If limit is 0, it will return NULL
+// WARNING: It allocates limit+1 characters
+char *trimStrLimit(const char *str, uint32_t *l, uint32_t limit){
+       if(limit == 0){
+               return NULL;
+       }
+       *l = len(str);
+       *l = (*l > limit) ? limit : *l;
+       uint32_t trw = 0;
+       while(isspace(str[--(*l)]))
+               ++trw;
+       char *nstr = calloc(++(*l)+1, sizeof(char));
+       for(int i = 0; i < *l; ++i)
+               nstr[i] = str[i];
+       return nstr;
+}
+
 // Auxiliary function for creating a lookup table of the haystack
 // table[i] will be the number of shifts right until the next
 // separator when checking position i