changes:
- fix broken detection of string parameter for ifnstif parameter (i.e. the 
filename of the connection matrix)
- handle connection matrix files in CRLF format as well as LF format
- scsnux_initw now initialises x0 (and x2) as well as x1.  this causes correct 
initialisation of the mass displacements, (i.e. as per the manual 
description) when init > 0.   without this, this present initiation of x1 
will simply be lost on the first iteration.
(if there is a better procedure for submitting patches, please point me to it)
cheers,
lily.
--- csound5/Opcodes/scansynx.c	2005-12-28 00:07:02.000000000 +1300
+++ ../Csound5.04/Opcodes/scansynx.c	2007-01-14 16:29:36.000000000 +1300
@@ -91,8 +91,11 @@
     }
     if (fi->flen != len)
       csound->Die(csound, Str("scanux: Init table has bad size"));
-    for (i = 0 ; i != len ; i++)
+    for (i = 0 ; i != len ; i++) {
+      p->x0[i] = fi->ftable[i];
       p->x1[i] = fi->ftable[i];
+      p->x2[i] = fi->ftable[i];
+    }
     return OK;
 }
 
@@ -273,7 +276,7 @@
     p->d = f->ftable;
 
     /* Spring stiffness */
-    if (*p->i_f != SSTRCOD) {
+    if (!p->XSTRCODE) {
       int j, ilen;
 
       /* Get the table */
@@ -325,18 +328,28 @@
         return csound->InitError(csound, Str("SCANU cannot load %s"), 
filnam);
       }
       else {
-#define MATRIX "\n"
-#define MATLEN (sizeof(MATRIX)-1)
-#define NMATRIX "\n"
-#define NMATLEN (sizeof(NMATRIX)-1)
+#define MATRIXLF "\n"
+#define MATLENLF (sizeof(MATRIXLF)-1)
+#define MATRIXCRLF "\r\n"
+#define MATLENCRLF (sizeof(MATRIXCRLF)-1)
+#define NMATRIXLF "\n"
+#define NMATLENLF (sizeof(NMATRIXLF)-1)
+#define NMATRIXCRLF "\r\n"
+#define NMATLENCRLF (sizeof(NMATRIXCRLF)-1)
         int j;
         char *pp = mfp->beginp;
-        if ((i=strncmp(pp, MATRIX, MATLEN))) {
+        if ((i=strncmp(pp, MATRIXLF, MATLENLF))==0) {
+          pp += MATLENLF;
+        }
+        else if ((i=strncmp(pp, MATRIXCRLF, MATLENCRLF))==0) {
+          pp += MATLENCRLF;
+        }
+        else {
           csound->Message(csound, "%d: Looking for (%ld)%s Found %.12s\n",
-                                  i, (long) MATLEN, MATRIX, pp);
+                                  i, (long) MATLENLF, MATRIXLF, pp);
           return csound->InitError(csound, "Not a valid matrix");
         }
-        else pp += MATLEN;
+
 #ifdef USING_CHAR
         csound->AuxAlloc(csound, len*len * sizeof(char), &p->aux_f);
         p->f = (char*)p->aux_f.auxp;
@@ -346,7 +359,8 @@
         p->f = (unsigned long*)p->aux_f.auxp;
 #endif
         while (pp < mfp->endp) {
-          if (strncmp(pp, NMATRIX, NMATLEN)==0) break;
+          if (strncmp(pp, NMATRIXLF, NMATLENLF)==0) break;
+          if (strncmp(pp, NMATRIXCRLF, NMATLENCRLF)==0) break;
           if (2 != sscanf(pp, "%d %d", &i, &j)) break;
 #ifdef USING_CHAR
           p->f[i*len+j] = 1;
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net