Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / fasta34 / re_getlib.c
diff --git a/website/archive/binaries/mac/src/fasta34/re_getlib.c b/website/archive/binaries/mac/src/fasta34/re_getlib.c
new file mode 100644 (file)
index 0000000..e53951b
--- /dev/null
@@ -0,0 +1,59 @@
+/* re_getlib.c - re-acquire a sequence given lseek, lcont */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "defs.h"
+#include "mm_file.h"
+
+#define GETLIB (m_fptr->getlib)
+
+int
+re_getlib(unsigned char *aa1,
+         int maxn,     /* longest aa1 */
+         int maxt3,    /* alternate maxn */
+         int loff,     /* overlap */
+         int lcont,
+         int term_code,
+         long *loffset,        /* offset from real start of sequence */
+         long *l_off_p,        /* coordinate of sequence start */
+         struct lmf_str *m_fptr) {
+
+  unsigned char *aa1ptr;
+  int icont, maxt, ccont, n1;
+  char libstr[20];
+  fseek_t lmark; 
+  
+  aa1ptr = aa1;
+  icont=0;
+
+  *loffset = 0l;
+  maxt = maxn;
+  n1 = -1;
+  for (ccont=0; ccont<=lcont-1; ccont++) {
+
+    n1= GETLIB(aa1ptr,maxt,libstr,sizeof(libstr),&lmark,&icont,m_fptr,l_off_p);
+
+    if (term_code && m_fptr->lib_aa && aa1ptr[n1-1]!=term_code) {
+      aa1ptr[n1++]=term_code;
+      aa1ptr[n1]=0;
+    }
+
+    if (aa1ptr!=aa1) n1 += loff;
+
+    if (icont>lcont-1) break;
+
+    if (icont) {
+      maxt = maxt3;
+      memcpy(aa1,&aa1[n1-loff],loff);
+      aa1ptr= &aa1[loff];
+      *loffset += n1 - loff;
+    }
+    else {
+      maxt = maxn;
+      aa1ptr=aa1;
+    }
+  }
+  return n1;
+}