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 c60a03f..c468159 100644 (file)
--- a/vs.c
+++ b/vs.c
@@ -1,4 +1,3 @@
-/* $MirOS: contrib/code/jupp/vs.c,v 1.4 2012/06/08 16:55:29 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,7 +148,7 @@ sELEMENT *_vsset(sELEMENT *vary, int pos, sELEMENT el)
        return vary;
 }
 
-int vsbsearch(sELEMENT *ary, int len, sELEMENT el)
+int vsbsearch(const sELEMENT *ary, int len, sELEMENT el)
 {
        int x, y, z;
 
@@ -205,7 +203,7 @@ int vscmp(sELEMENT *a, sELEMENT *b)
        return vscmpn(sv(a), sv(b));
 }
 
-int vsscan(sELEMENT *a, int alen, sELEMENT *b, int blen)
+int vsscan(const sELEMENT *a, int alen, const sELEMENT *b, int blen)
 {
        int x;
 
@@ -222,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]);