Update to 2.0.0 tree from current Fremantle build
[opencv] / 3rdparty / lapack / s_copy.c
diff --git a/3rdparty/lapack/s_copy.c b/3rdparty/lapack/s_copy.c
new file mode 100644 (file)
index 0000000..26f223f
--- /dev/null
@@ -0,0 +1,38 @@
+/* Unless compiled with -DNO_OVERWRITE, this variant of s_copy allows the
+ * target of an assignment to appear on its right-hand side (contrary
+ * to the Fortran 77 Standard, but in accordance with Fortran 90),
+ * as in  a(2:5) = a(4:7) .
+ */
+
+#include "clapack.h"
+
+/* assign strings:  a = b */
+
+void s_copy(register char *a, register char *b, ftnlen la, ftnlen lb)
+{
+       register char *aend, *bend;
+
+       aend = a + la;
+
+       if(la <= lb)
+               if (a <= b || a >= b + la)
+                       while(a < aend)
+                               *a++ = *b++;
+               else
+                       for(b += la; a < aend; )
+                               *--aend = *--b;
+       else {
+               bend = b + lb;
+               if (a <= b || a >= bend)
+                       while(b < bend)
+                               *a++ = *b++;
+               else {
+                       a += lb;
+                       while(b < bend)
+                               *--a = *--bend;
+                       a += lb;
+                       }
+               while(a < aend)
+                       *a++ = ' ';
+       }
+}