we’ll need to distinguish these for sarge/etch as well
[alioth/jupp.git] / vs.c
diff --git a/vs.c b/vs.c
index b3ccb1c..c468159 100644 (file)
--- a/vs.c
+++ b/vs.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/vs.c,v 1.3 2010/01/03 18:22:04 tg Exp $ */
 /*
  *     Variable length strings
  *     Copyright
@@ -9,19 +8,14 @@
 #include "config.h"
 #include "types.h"
 
+__RCSID("$MirOS: contrib/code/jupp/vs.c,v 1.10 2017/12/02 02:07:38 tg Exp $");
+
+#include <stdlib.h>
+
 #include "blocks.h"
 #include "utils.h"
 #include "vs.h"
 
-int sicmp(unsigned char a, unsigned char b)
-{
-       if (a >= 'A' || a <= 'Z')
-               a += 'a' - 'A';
-       if (b >= 'A' || b <= 'Z')
-               b += 'a' - 'A';
-       return scmp(a, b);
-}
-
 sELEMENT *vsmk(int len)
 {
        int *new = (int *) joe_malloc((1 + len) * sizeof(sELEMENT) + 2 * sizeof(int));
@@ -104,7 +98,11 @@ sELEMENT *vsncpy(sELEMENT *vary, int pos, const sELEMENT *array, int len)
        }
        if (pos > olen)
                vary = vsfill(vary, olen, sblank, pos - olen);
+#ifdef TEST
+       memmove(vary + pos, array, len * sizeof(sELEMENT));
+#else
        mmove(vary + pos, array, len * sizeof(sELEMENT));
+#endif
        return vary;
 }
 
@@ -150,48 +148,7 @@ sELEMENT *_vsset(sELEMENT *vary, int pos, sELEMENT el)
        return vary;
 }
 
-#ifdef junk
-
-sELEMENT *vsins(sELEMENT *vary, int pos, int n)
-{
-       if (!vary || sLEN(vary) + n > sSIZ(vary))
-               vary = vsensure(vary, sLEN(vary) + n);
-       if (pos >= sLen(vary))
-               vary = vstrunc(vary, pos + n);
-       else {
-               mmove(vary + pos + n, vary + pos, sLen(vary) - (pos + n) + 1);
-               sLen(vary) += n;
-       }
-       return vary;
-}
-
-sELEMENT *vsdel(sELEMENT *vary, int pos, int n)
-{
-       if (pos >= sLEN(vary))
-               return vary;
-       if (pos + n >= sLen(vary))
-               return vstrunc(vary, pos);
-       mmove(vary + pos, vary + pos + n, sLen(vary) - (pos + n) + 1);
-       sLen(vary) -= n;
-       return vary;
-}
-
-int _scmp(sELEMENT a, sELEMENT b)
-{
-       return scmp(a, b);
-}
-
-sELEMENT *vssort(sELEMENT *ary, int len)
-{
-       if (!ary || !len)
-               return ary;
-       qsort(ary, len, sizeof(sELEMENT), _scmp);
-       return ary;
-}
-
-#endif
-
-int vsbsearch(sELEMENT *ary, int len, sELEMENT el)
+int vsbsearch(const sELEMENT *ary, int len, sELEMENT el)
 {
        int x, y, z;
 
@@ -216,36 +173,6 @@ int vsbsearch(sELEMENT *ary, int len, sELEMENT el)
        return y;
 }
 
-#ifdef junk
-
-int vsfirst(sELEMENT *ary, int len, sELEMENT el)
-{
-       int x;
-
-       if (!ary || !len)
-               return ~0;
-       for (x = 0; x != len; ++x)
-               if (!scmp(ary[x], el))
-                       return x;
-       return ~0;
-}
-
-int vslast(sELEMENT *ary, int len, sELEMENT el)
-{
-       int x = len;
-
-       if (!ary || !len)
-               return ~0;
-       do {
-               --x;
-               if (!scmp(ary[x], el))
-                       return x;
-       } while (x);
-       return ~0;
-}
-
-#endif
-
 int vscmpn(sELEMENT *a, int alen, sELEMENT *b, int blen)
 {
        int x, l;
@@ -275,53 +202,8 @@ int vscmp(sELEMENT *a, sELEMENT *b)
 {
        return vscmpn(sv(a), sv(b));
 }
-#ifdef junk
-int vsicmpn(sELEMENT *a, int alen, sELEMENT *b, int blen)
-{
-       int x, l;
-       int t;
-
-       if (!a && !b)
-               return 0;
-       if (!a)
-               return -1;
-       if (!b)
-               return 1;
-       if (alen > blen)
-               l = sLen(a);
-       else
-               l = blen;
-       for (x = 0; x != l; ++x)
-               if (t = sicmp(a[x], b[x]))
-                       return t;
-       if (alen > blen)
-               return 1;
-       if (alen < blen)
-               return -1;
-       return 0;
-}
-
-int vss(sELEMENT *a, int alen, sELEMENT *b, int blen)
-{
-       int x;
-
-       if (!a && !b)
-               return 0;
-       if (!a || !b)
-               return ~0;
-       if (alen < blen)
-               return ~0;
-       if (!blen)
-               return 0;
-       for (x = 0; x != alen - blen; ++x)
-               if (!vscmpn(a, blen, b, blen))
-                       return x;
-       return ~0;
-}
-
-#endif
 
-int vsscan(sELEMENT *a, int alen, sELEMENT *b, int blen)
+int vsscan(const sELEMENT *a, int alen, const sELEMENT *b, int blen)
 {
        int x;
 
@@ -338,6 +220,10 @@ int vsspan(sELEMENT *a, int alen, sELEMENT *b, int blen)
 {
        int x;
 
+       /* should not happen */
+       if (!b)
+               return (0);
+
        for (x = 0; x != alen; ++x) {
                int z = vsbsearch(b, blen, a[x]);
 
@@ -346,46 +232,3 @@ int vsspan(sELEMENT *a, int alen, sELEMENT *b, int blen)
        }
        return x;
 }
-
-#ifdef junk
-
-sELEMENT *vsread(sELEMENT d, int p, int (*getC)(), void *ptr)
-{
-       int c;
-
-       if (!d)
-               d = vsmk(10);
-       c = getC(ptr);
-       if (c == NO_MORE_DATA) {
-               vsrm(d);
-               return NULL;
-       } else if (c == '\n')
-               return d;
-       else {
-               d = vsset(d, p, c);
-               p++;
-       }
-       while (c = getC(ptr), c != NO_MORE_DATA && c != '\n') {
-               d = vsset(d, p, c);
-               p++;
-       }
-       return d;
-}
-
-sELEMENT *vwords(sELEMENT *s, sELEMENT **a, int len, sELEMENT t)
-{
-       int x;
-
-       if (!s)
-               s = vsmk(32);
-       else
-               s = vstrunc(s, 0);
-       for (x = 0; x != len; ++x) {
-               s = vsncpy(s, sLEN(s), sz(a[x]));
-               if (a[1])
-                       s = vsadd(s, t);
-       }
-       return s;
-}
-
-#endif