From b30b33d598039b2f708783271e8c2f65613a24d4 Mon Sep 17 00:00:00 2001 From: Soikk <76824648+Soikk@users.noreply.github.com> Date: Sat, 13 Aug 2022 19:12:50 +0200 Subject: [PATCH] Got rid of old functionalities (strnatcmp, BM). --- CHANGELOG | 4 + TODO | 4 +- include/bm.h | 9 --- include/strnatcmp.h | 31 -------- src/bm.c | 44 ----------- src/strnatcmp.c | 187 -------------------------------------------- 6 files changed, 6 insertions(+), 273 deletions(-) delete mode 100644 include/bm.h delete mode 100644 include/strnatcmp.h delete mode 100644 src/bm.c delete mode 100644 src/strnatcmp.c diff --git a/CHANGELOG b/CHANGELOG index cd27251..282c47a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +1660410686 (Sat Aug 13 2022 19:11:26 GMT+0200 (Central European Summer Time)) +Got rid of old functionalities (strnatcmp, BM). + + 1660409336 (Sat Aug 13 2022 18:48:56 GMT+0200 (Central European Summer Time)) Added primitive repl, delete functions for database and remove tag from file function. diff --git a/TODO b/TODO index 404586a..f97362d 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,8 @@ TODO Show files with multiple tags & viceversa -TODO Get rid of old functionalities (strnatcmp, BM) - ---------------------------------------------------------------- +DONE Get rid of old functionalities (strnatcmp, BM) + DONE Add remove tag from file function DONE Add delete functions diff --git a/include/bm.h b/include/bm.h deleted file mode 100644 index 80ddee8..0000000 --- a/include/bm.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef BM_H -#define BM_H - -#include "db.h" - - -ssize_t BM(char *x, int m, char *y, int n); - -#endif \ No newline at end of file diff --git a/include/strnatcmp.h b/include/strnatcmp.h deleted file mode 100644 index 9d98198..0000000 --- a/include/strnatcmp.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- mode: c; c-file-style: "k&r" -*- - - strnatcmp.c -- Perform 'natural order' comparisons of strings in C. - Copyright (C) 2000, 2004 by Martin Pool - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - - -/* CUSTOMIZATION SECTION - * - * You can change this typedef, but must then also change the inline - * functions in strnatcmp.c */ -typedef char nat_char; - -int strnatcmp(nat_char const *a, nat_char const *b); -int strnatcasecmp(nat_char const *a, nat_char const *b); \ No newline at end of file diff --git a/src/bm.c b/src/bm.c deleted file mode 100644 index d2afb0a..0000000 --- a/src/bm.c +++ /dev/null @@ -1,44 +0,0 @@ -#include "db.h" - -/* - Implementation of the tuned Boyer-Moore string search algorithm, - as defined here: - http://www-igm.univ-mlv.fr/~lecroq/string/tunedbm.html#SECTION00195 - and here: - http://www-igm.univ-mlv.fr/~lecroq/string/node14.html#SECTION00140 -*/ - -#define ASIZE 128 // alphabet size, need to include most ascii characters - -static void preBmBc(char *x, int m, int bmBc[]){ - for(int i = 0; i < ASIZE; ++i) - bmBc[i] = m; - for(int i = 0; i < m - 1; ++i) - bmBc[x[i]] = m - i - 1; -} - -// x is the needle, y is the haystack -// Should be called TUNEDBM, called BM for simplicity -ssize_t BM(char *x, int m, char *y, int n){ - int j, k, shift, bmBc[ASIZE]; - - /* Preprocessing */ - preBmBc(x, m, bmBc); - shift = bmBc[x[m-1]]; - bmBc[x[m-1]] = 0; - - /* Searching */ - j = 0; - while(j < n){ - k = bmBc[y[j + m -1]]; - while(k != 0){ - j += k; k = bmBc[y[j + m - 1]]; - j += k; k = bmBc[y[j + m - 1]]; - j += k; k = bmBc[y[j + m - 1]]; - } - if(memcmp(x, y + j, m) == 0 && j < n) - return j; - j += shift; /* shift */ - } - return -1; -} diff --git a/src/strnatcmp.c b/src/strnatcmp.c deleted file mode 100644 index 46b7946..0000000 --- a/src/strnatcmp.c +++ /dev/null @@ -1,187 +0,0 @@ -/* -*- mode: c; c-file-style: "k&r" -*- - - strnatcmp.c -- Perform 'natural order' comparisons of strings in C. - Copyright (C) 2000, 2004 by Martin Pool - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - - -/* partial change history: - * - * 2004-10-10 mbp: Lift out character type dependencies into macros. - * - * Eric Sosman pointed out that ctype functions take a parameter whose - * value must be that of an unsigned int, even on platforms that have - * negative chars in their default char type. - */ - -#include -#include -#include -#include - -#include "strnatcmp.h" - - -/* These are defined as macros to make it easier to adapt this code to - * different characters types or comparison functions. */ -static inline int -nat_isdigit(nat_char a) -{ - return isdigit((unsigned char) a); -} - - -static inline int -nat_isspace(nat_char a) -{ - return isspace((unsigned char) a); -} - - -static inline nat_char -nat_toupper(nat_char a) -{ - return toupper((unsigned char) a); -} - - - -static int -compare_right(nat_char const *a, nat_char const *b) -{ - int bias = 0; - - /* The longest run of digits wins. That aside, the greatest - value wins, but we can't know that it will until we've scanned - both numbers to know that they have the same magnitude, so we - remember it in BIAS. */ - for (;; a++, b++) { - if (!nat_isdigit(*a) && !nat_isdigit(*b)) - return bias; - else if (!nat_isdigit(*a)) - return -1; - else if (!nat_isdigit(*b)) - return +1; - else if (*a < *b) { - if (!bias) - bias = -1; - } else if (*a > *b) { - if (!bias) - bias = +1; - } else if (!*a && !*b) - return bias; - } - - return 0; -} - - -static int -compare_left(nat_char const *a, nat_char const *b) -{ - /* Compare two left-aligned numbers: the first to have a - different value wins. */ - for (;; a++, b++) { - if (!nat_isdigit(*a) && !nat_isdigit(*b)) - return 0; - else if (!nat_isdigit(*a)) - return -1; - else if (!nat_isdigit(*b)) - return +1; - else if (*a < *b) - return -1; - else if (*a > *b) - return +1; - } - - return 0; -} - - -static int strnatcmp0(nat_char const *a, nat_char const *b, int fold_case) -{ - int ai, bi; - nat_char ca, cb; - int fractional, result; - - assert(a && b); - ai = bi = 0; - while (1) { - ca = a[ai]; cb = b[bi]; - - /* skip over leading spaces or zeros */ - while (nat_isspace(ca)) - ca = a[++ai]; - - while (nat_isspace(cb)) - cb = b[++bi]; - - /* process run of digits */ - if (nat_isdigit(ca) && nat_isdigit(cb)) { - /* - Modified by Soikk for the purpose of DB - To revert to original version, remove this comment, - the uncommented code inside this if statement and - uncomment the remaining piece of code inside this - if statement - */ - if ((result = compare_right(a+ai, b+bi)) != 0) - return result; - /*fractional = (ca == '0' || cb == '0'); - - if (fractional) { - if ((result = compare_left(a+ai, b+bi)) != 0) - return result; - } else { - if ((result = compare_right(a+ai, b+bi)) != 0) - return result; - }*/ - } - - if (!ca && !cb) { - /* The strings compare the same. Perhaps the caller - will want to call strcmp to break the tie. */ - return 0; - } - - if (fold_case) { - ca = nat_toupper(ca); - cb = nat_toupper(cb); - } - - if (ca < cb) - return -1; - else if (ca > cb) - return +1; - - ++ai; ++bi; - } -} - - - -int strnatcmp(nat_char const *a, nat_char const *b) { - return strnatcmp0(a, b, 0); -} - - -/* Compare, recognizing numeric string and ignoring case. */ -int strnatcasecmp(nat_char const *a, nat_char const *b) { - return strnatcmp0(a, b, 1); -} \ No newline at end of file -- 2.39.5