[med-svn] [Git][med-team/vsearch][upstream] New upstream version 2.21.1

Nilesh Patra (@nilesh) gitlab at salsa.debian.org
Sat Jan 22 11:19:56 GMT 2022



Nilesh Patra pushed to branch upstream at Debian Med / vsearch


Commits:
8245891e by Nilesh Patra at 2022-01-22T16:40:55+05:30
New upstream version 2.21.1
- - - - -


9 changed files:

- − .travis.yml
- README.md
- configure.ac
- man/vsearch.1
- src/align_simd.cc
- src/cpu.cc
- src/derep.cc
- src/fastx.cc
- src/fastx.h


Changes:

=====================================
.travis.yml deleted
=====================================
@@ -1,40 +0,0 @@
-language:
-- cpp
-
-arch:
-#- amd64
-- arm64
-- ppc64le
-
-os:
-- linux
-#- osx
-
-dist:
-- xenial
-
-osx_image:
-- xcode12.5
-
-addons:
-  apt:
-    packages:
-    - ghostscript
-    - valgrind
-    - groff
-  homebrew:
-    packages:
-    - ghostscript
-
-compiler:
-- g++
-- clang
-
-script:
-- ./autogen.sh
-- ./configure
-- make
-- export PATH=$PWD/bin:$PATH
-- git clone https://github.com/frederic-mahe/vsearch-tests.git
-- cd vsearch-tests
-- bash ./run_all_tests.sh


=====================================
README.md
=====================================
@@ -37,7 +37,7 @@ Most of the nucleotide based commands and options in USEARCH version 7 are suppo
 
 ## Getting Help
 
-If you can't find an answer in the [VSEARCH documentation](https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch_manual.pdf), please visit the [VSEARCH Web Forum](https://groups.google.com/forum/#!forum/vsearch-forum) to post a question or start a discussion.
+If you can't find an answer in the [VSEARCH documentation](https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch_manual.pdf), please visit the [VSEARCH Web Forum](https://groups.google.com/forum/#!forum/vsearch-forum) to post a question or start a discussion.
 
 ## Example
 
@@ -50,9 +50,9 @@ In the example below, VSEARCH will identify sequences in the file database.fsa t
 **Source distribution** To download the source distribution from a [release](https://github.com/torognes/vsearch/releases) and build the executable and the documentation, use the following commands:
 
 ```
-wget https://github.com/torognes/vsearch/archive/v2.21.0.tar.gz
-tar xzf v2.21.0.tar.gz
-cd vsearch-2.21.0
+wget https://github.com/torognes/vsearch/archive/v2.21.1.tar.gz
+tar xzf v2.21.1.tar.gz
+cd vsearch-2.21.1
 ./autogen.sh
 ./configure CFLAGS="-O3" CXXFLAGS="-O3"
 make
@@ -81,43 +81,43 @@ Binary distributions are provided for x86-64 systems running GNU/Linux, macOS (v
 Download the appropriate executable for your system using the following commands if you are using a Linux x86_64 system:
 
 ```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-linux-x86_64.tar.gz
-tar xzf vsearch-2.21.0-linux-x86_64.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-linux-x86_64.tar.gz
+tar xzf vsearch-2.21.1-linux-x86_64.tar.gz
 ```
 
 Or these commands if you are using a Linux ppc64le system:
 
 ```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-linux-ppc64le.tar.gz
-tar xzf vsearch-2.21.0-linux-ppc64le.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-linux-ppc64le.tar.gz
+tar xzf vsearch-2.21.1-linux-ppc64le.tar.gz
 ```
 
 Or these commands if you are using a Linux aarch64 (arm64) system:
 
 ```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-linux-aarch64.tar.gz
-tar xzf vsearch-2.21.0-linux-aarch64.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-linux-aarch64.tar.gz
+tar xzf vsearch-2.21.1-linux-aarch64.tar.gz
 ```
 
 Or these commands if you are using a Mac:
 
 ```sh
-wget https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-macos-x86_64.tar.gz
-tar xzf vsearch-2.21.0-macos-x86_64.tar.gz
+wget https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-macos-x86_64.tar.gz
+tar xzf vsearch-2.21.1-macos-x86_64.tar.gz
 ```
 
 Or if you are using Windows, download and extract (unzip) the contents of this file:
 
 ```
-https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch-2.21.0-win-x86_64.zip
+https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch-2.21.1-win-x86_64.zip
 ```
 
-Linux and Mac: You will now have the binary distribution in a folder called `vsearch-2.21.0-linux-x86_64` or `vsearch-2.21.0-macos-x86_64` in which you will find three subfolders `bin`, `man` and `doc`. We recommend making a copy or a symbolic link to the vsearch binary `bin/vsearch` in a folder included in your `$PATH`, and a copy or a symbolic link to the vsearch man page `man/vsearch.1` in a folder included in your `$MANPATH`. The PDF version of the manual is available in `doc/vsearch_manual.pdf`. Versions with statically compiled libraries are available for Linux systems. These have "-static" in their name, and could be used on systems that do not have all the necessary libraries installed.
+Linux and Mac: You will now have the binary distribution in a folder called `vsearch-2.21.1-linux-x86_64` or `vsearch-2.21.1-macos-x86_64` in which you will find three subfolders `bin`, `man` and `doc`. We recommend making a copy or a symbolic link to the vsearch binary `bin/vsearch` in a folder included in your `$PATH`, and a copy or a symbolic link to the vsearch man page `man/vsearch.1` in a folder included in your `$MANPATH`. The PDF version of the manual is available in `doc/vsearch_manual.pdf`. Versions with statically compiled libraries are available for Linux systems. These have "-static" in their name, and could be used on systems that do not have all the necessary libraries installed.
 
-Windows: You will now have the binary distribution in a folder called `vsearch-2.21.0-win-x86_64`. The vsearch executable is called `vsearch.exe`. The manual in PDF format is called `vsearch_manual.pdf`.
+Windows: You will now have the binary distribution in a folder called `vsearch-2.21.1-win-x86_64`. The vsearch executable is called `vsearch.exe`. The manual in PDF format is called `vsearch_manual.pdf`.
 
 
-**Documentation** The VSEARCH user's manual is available in the `man` folder in the form of a [man page](https://github.com/torognes/vsearch/blob/master/man/vsearch.1). A pdf version ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch_manual.pdf)) will be generated by `make`. To install the manpage manually, copy the `vsearch.1` file or a create a symbolic link to `vsearch.1` in a folder included in your `$MANPATH`. The manual in both formats is also available with the binary distribution. The manual in PDF form ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.0/vsearch_manual.pdf)) is also attached to the latest [release](https://github.com/torognes/vsearch/releases).
+**Documentation** The VSEARCH user's manual is available in the `man` folder in the form of a [man page](https://github.com/torognes/vsearch/blob/master/man/vsearch.1). A pdf version ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch_manual.pdf)) will be generated by `make`. To install the manpage manually, copy the `vsearch.1` file or a create a symbolic link to `vsearch.1` in a folder included in your `$MANPATH`. The manual in both formats is also available with the binary distribution. The manual in PDF form ([vsearch_manual.pdf](https://github.com/torognes/vsearch/releases/download/v2.21.1/vsearch_manual.pdf)) is also attached to the latest [release](https://github.com/torognes/vsearch/releases).
 
 
 ## Packages, plugins, and wrappers


=====================================
configure.ac
=====================================
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.63])
-AC_INIT([vsearch], [2.21.0], [torognes at ifi.uio.no], [vsearch], [https://github.com/torognes/vsearch])
+AC_INIT([vsearch], [2.21.1], [torognes at ifi.uio.no], [vsearch], [https://github.com/torognes/vsearch])
 AC_CANONICAL_TARGET
 AM_INIT_AUTOMAKE([subdir-objects])
 AC_LANG([C++])


=====================================
man/vsearch.1
=====================================
@@ -1,5 +1,5 @@
 .\" ============================================================================
-.TH vsearch 1 "January 12, 2022" "version 2.21.0" "USER COMMANDS"
+.TH vsearch 1 "January 18, 2022" "version 2.21.1" "USER COMMANDS"
 .\" ============================================================================
 .SH NAME
 vsearch \(em a versatile open-source tool for microbiome analysis,
@@ -4627,6 +4627,10 @@ end when using multiple threads.
 .BR v2.21.0\~ "released January 12th, 2022"
 This version adds the sample, qsegout and tsegout options. It enables
 the use of UDB databases with uchime_ref.
+.TP
+.BR v2.21.1\~ "released January 18th, 2022"
+Fix a problem with dereplication of empty input files. Update Altivec
+code on ppc64le for improved compiler compatibility (vector->__vector).
 .LP
 .\" ============================================================================
 .\" TODO:


=====================================
src/align_simd.cc
=====================================
@@ -102,25 +102,25 @@ static int64_t scorematrix[16][16];
 
 #ifdef __PPC__
 
-typedef vector signed short VECTOR_SHORT;
+typedef __vector signed short VECTOR_SHORT;
 
-const vector unsigned char perm_merge_long_low =
+const __vector unsigned char perm_merge_long_low =
   {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17};
 
-const vector unsigned char perm_merge_long_high =
+const __vector unsigned char perm_merge_long_high =
   {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f};
 
 #define v_init(a,b,c,d,e,f,g,h) (const VECTOR_SHORT){a,b,c,d,e,f,g,h}
 #define v_load(a) vec_ld(0, (VECTOR_SHORT *)(a))
-#define v_store(a, b) vec_st((vector unsigned char)(b), 0,      \
-                             (vector unsigned char *)(a))
+#define v_store(a, b) vec_st((__vector unsigned char)(b), 0,    \
+                             (__vector unsigned char *)(a))
 #define v_add(a, b) vec_adds((a), (b))
 #define v_sub(a, b) vec_subs((a), (b))
 #define v_sub_unsigned(a, b) ((VECTOR_SHORT)                            \
-                              vec_subs((vector unsigned short) (a),     \
-                                       (vector unsigned short) (b)))
+                              vec_subs((__vector unsigned short) (a),   \
+                                       (__vector unsigned short) (b)))
 #define v_max(a, b) vec_max((a), (b))
 #define v_min(a, b) vec_min((a), (b))
 #define v_dup(a) vec_splat((VECTOR_SHORT){(short)(a), 0, 0, 0, 0, 0, 0, 0}, 0);
@@ -298,13 +298,13 @@ void dprofile_fill16(CELL * dprofile_word,
         {
 
 #ifdef __PPC__
-          vector signed short     reg0, reg1, reg2, reg3,
+          __vector signed short     reg0, reg1, reg2, reg3,
             reg4, reg5, reg6, reg7;
-          vector signed int       reg8, reg9, reg10,reg11,
+          __vector signed int       reg8, reg9, reg10,reg11,
             reg12,reg13,reg14,reg15;
-          vector signed long long reg16,reg17,reg18,reg19,
+          __vector signed long long reg16,reg17,reg18,reg19,
             reg20,reg21,reg22,reg23;
-          vector signed long long reg24,reg25,reg26,reg27,
+          __vector signed long long reg24,reg25,reg26,reg27,
             reg28,reg29,reg30,reg31;
 #else
           VECTOR_SHORT reg0,  reg1,  reg2,  reg3,  reg4,  reg5,  reg6,  reg7;
@@ -323,39 +323,39 @@ void dprofile_fill16(CELL * dprofile_word,
           reg7 = v_load(score_matrix_word + d[7] + i);
 
 #ifdef __PPC__
-          reg8  = (vector signed int) vec_mergeh(reg0, reg1);
-          reg9  = (vector signed int) vec_mergel(reg0, reg1);
-          reg10 = (vector signed int) vec_mergeh(reg2, reg3);
-          reg11 = (vector signed int) vec_mergel(reg2, reg3);
-          reg12 = (vector signed int) vec_mergeh(reg4, reg5);
-          reg13 = (vector signed int) vec_mergel(reg4, reg5);
-          reg14 = (vector signed int) vec_mergeh(reg6, reg7);
-          reg15 = (vector signed int) vec_mergel(reg6, reg7);
-
-          reg16 = (vector signed long long) vec_mergeh(reg8,  reg10);
-          reg17 = (vector signed long long) vec_mergel(reg8,  reg10);
-          reg18 = (vector signed long long) vec_mergeh(reg12, reg14);
-          reg19 = (vector signed long long) vec_mergel(reg12, reg14);
-          reg20 = (vector signed long long) vec_mergeh(reg9,  reg11);
-          reg21 = (vector signed long long) vec_mergel(reg9,  reg11);
-          reg22 = (vector signed long long) vec_mergeh(reg13, reg15);
-          reg23 = (vector signed long long) vec_mergel(reg13, reg15);
-
-          reg24 = (vector signed long long) vec_perm
+          reg8  = (__vector signed int) vec_mergeh(reg0, reg1);
+          reg9  = (__vector signed int) vec_mergel(reg0, reg1);
+          reg10 = (__vector signed int) vec_mergeh(reg2, reg3);
+          reg11 = (__vector signed int) vec_mergel(reg2, reg3);
+          reg12 = (__vector signed int) vec_mergeh(reg4, reg5);
+          reg13 = (__vector signed int) vec_mergel(reg4, reg5);
+          reg14 = (__vector signed int) vec_mergeh(reg6, reg7);
+          reg15 = (__vector signed int) vec_mergel(reg6, reg7);
+
+          reg16 = (__vector signed long long) vec_mergeh(reg8,  reg10);
+          reg17 = (__vector signed long long) vec_mergel(reg8,  reg10);
+          reg18 = (__vector signed long long) vec_mergeh(reg12, reg14);
+          reg19 = (__vector signed long long) vec_mergel(reg12, reg14);
+          reg20 = (__vector signed long long) vec_mergeh(reg9,  reg11);
+          reg21 = (__vector signed long long) vec_mergel(reg9,  reg11);
+          reg22 = (__vector signed long long) vec_mergeh(reg13, reg15);
+          reg23 = (__vector signed long long) vec_mergel(reg13, reg15);
+
+          reg24 = (__vector signed long long) vec_perm
             (reg16, reg18, perm_merge_long_low);
-          reg25 = (vector signed long long) vec_perm
+          reg25 = (__vector signed long long) vec_perm
             (reg16, reg18, perm_merge_long_high);
-          reg26 = (vector signed long long) vec_perm
+          reg26 = (__vector signed long long) vec_perm
             (reg17, reg19, perm_merge_long_low);
-          reg27 = (vector signed long long) vec_perm
+          reg27 = (__vector signed long long) vec_perm
             (reg17, reg19, perm_merge_long_high);
-          reg28 = (vector signed long long) vec_perm
+          reg28 = (__vector signed long long) vec_perm
             (reg20, reg22, perm_merge_long_low);
-          reg29 = (vector signed long long) vec_perm
+          reg29 = (__vector signed long long) vec_perm
             (reg20, reg22, perm_merge_long_high);
-          reg30 = (vector signed long long) vec_perm
+          reg30 = (__vector signed long long) vec_perm
             (reg21, reg23, perm_merge_long_low);
-          reg31 = (vector signed long long) vec_perm
+          reg31 = (__vector signed long long) vec_perm
             (reg21, reg23, perm_merge_long_high);
 #else
           reg8  = v_merge_lo_16(reg0,  reg1);
@@ -428,38 +428,38 @@ void dprofile_fill16(CELL * dprofile_word,
 /* The VSX vec_bperm instruction puts the 16 selected bits of the first
    source into bits 48-63 of the destination. */
 
-const vector unsigned char perm  = { 120, 112, 104,  96,  88,  80,  72,  64,
+const __vector unsigned char perm  = { 120, 112, 104,  96,  88,  80,  72,  64,
   56,  48,  40,  32,  24,  16,   8,   0 };
 
 #define ALIGNCORE(H, N, F, V, RES, QR_q, R_q, QR_t, R_t, H_MIN, H_MAX)  \
   {                                                                     \
-    vector unsigned short W, X, Y, Z;                                   \
-    vector unsigned int WX, YZ;                                         \
-    vector short VV;                                                    \
+    __vector unsigned short W, X, Y, Z;                                 \
+    __vector unsigned int WX, YZ;                                       \
+    __vector short VV;                                                  \
     VV = v_load(&V);                                                    \
     H = v_add(H, VV);                                                   \
-    W = (vector unsigned short) VECTORBYTEPERMUTE                       \
-      ((vector unsigned char) vec_cmpgt(F, H), perm);                   \
+    W = (__vector unsigned short) VECTORBYTEPERMUTE                     \
+      ((__vector unsigned char) vec_cmpgt(F, H), perm);                 \
     H = v_max(H, F);                                                    \
-    X = (vector unsigned short) VECTORBYTEPERMUTE                       \
-      ((vector unsigned char) vec_cmpgt(E, H), perm);                   \
+    X = (__vector unsigned short) VECTORBYTEPERMUTE                     \
+      ((__vector unsigned char) vec_cmpgt(E, H), perm);                 \
     H = v_max(H, E);                                                    \
     H_MIN = v_min(H_MIN, H);                                            \
     H_MAX = v_max(H_MAX, H);                                            \
     N = H;                                                              \
     HF = v_sub(H, QR_t);                                                \
     F = v_sub(F, R_t);                                                  \
-    Y = (vector unsigned short) VECTORBYTEPERMUTE                       \
-      ((vector unsigned char) vec_cmpgt(F, HF), perm);                  \
+    Y = (__vector unsigned short) VECTORBYTEPERMUTE                     \
+      ((__vector unsigned char) vec_cmpgt(F, HF), perm);                \
     F = v_max(F, HF);                                                   \
     HE = v_sub(H, QR_q);                                                \
     E = v_sub(E, R_q);                                                  \
-    Z = (vector unsigned short) VECTORBYTEPERMUTE                       \
-      ((vector unsigned char) vec_cmpgt(E, HE), perm);                  \
+    Z = (__vector unsigned short) VECTORBYTEPERMUTE                     \
+      ((__vector unsigned char) vec_cmpgt(E, HE), perm);                \
     E = v_max(E, HE);                                                   \
-    WX = (vector unsigned int) vec_mergel(W, X);                        \
-    YZ = (vector unsigned int) vec_mergel(Y, Z);                        \
-    RES = (vector unsigned long long) vec_mergeh(WX, YZ);               \
+    WX = (__vector unsigned int) vec_mergel(W, X);                      \
+    YZ = (__vector unsigned int) vec_mergel(Y, Z);                      \
+    RES = (__vector unsigned long long) vec_mergeh(WX, YZ);             \
   }
 
 #else
@@ -527,7 +527,7 @@ void aligncolumns_first(VECTOR_SHORT * Sm,
   VECTOR_SHORT h_max = v_zero;
 
 #ifdef __PPC__
-  vector unsigned long long RES1, RES2, RES;
+  __vector unsigned long long RES1, RES2, RES;
 #endif
 
   int64_t i;
@@ -679,7 +679,7 @@ void aligncolumns_rest(VECTOR_SHORT * Sm,
   VECTOR_SHORT h_max = v_zero;
 
 #ifdef __PPC__
-  vector unsigned long long RES1, RES2, RES;
+  __vector unsigned long long RES1, RES2, RES;
 #endif
 
   int64_t i;


=====================================
src/cpu.cc
=====================================
@@ -121,32 +121,32 @@ void increment_counters_from_bitmap(count_t * counters,
                                     unsigned char * bitmap,
                                     unsigned int totalbits)
 {
-  const vector unsigned char c1 =
+  const __vector unsigned char c1 =
     { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
-  const vector unsigned char c2 =
+  const __vector unsigned char c2 =
     { 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f,
       0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f };
-  const vector unsigned char c3 =
+  const __vector unsigned char c3 =
     { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 
   unsigned short * p = (unsigned short *)(bitmap);
-  vector signed short * q = (vector signed short *) (counters);
+  __vector signed short * q = (__vector signed short *) (counters);
   int r = (totalbits + 15) / 16;
 
   for(int j=0; j<r; j++)
     {
-      vector unsigned char r0, r1, r2;
-      vector __bool char r3;
-      vector signed short r4, r5;
+      __vector unsigned char r0, r1, r2;
+      __vector __bool char r3;
+      __vector signed short r4, r5;
 
       memcpy(&r0, p, 2);
       p++;
       r1 = vec_perm(r0, r0, c1);
       r2 = vec_or(r1, c2);
       r3 = vec_cmpeq(r2, c3);
-      r4 = (vector signed short) vec_unpackl(r3);
-      r5 = (vector signed short) vec_unpackh(r3);
+      r4 = (__vector signed short) vec_unpackl(r3);
+      r5 = (__vector signed short) vec_unpackh(r3);
       *q = vec_subs(*q, r4);
       q++;
       *q = vec_subs(*q, r5);


=====================================
src/derep.cc
=====================================
@@ -286,17 +286,20 @@ void derep(char * input_filename, bool use_header)
       fatal("Unrecognized input file type (not proper FASTA or FASTQ format)");
     }
 
-  if (fastx_is_fastq(h))
+  if (! fastx_is_empty(h))
     {
-      if (!opt_fastx_uniques)
-        fatal("FASTQ input is only allowed with the fastx_uniques command");
-    }
-  else
-    {
-      if (opt_fastqout)
-        fatal("Cannot write FASTQ output when input file is not in FASTQ format");
-      if (opt_tabbedout)
-        fatal("Cannot write tab separated output file when input file is not in FASTQ format");
+      if (fastx_is_fastq(h))
+        {
+          if (!opt_fastx_uniques)
+            fatal("FASTQ input is only allowed with the fastx_uniques command");
+        }
+      else
+        {
+          if (opt_fastqout)
+            fatal("Cannot write FASTQ output when input file is not in FASTQ format");
+          if (opt_tabbedout)
+            fatal("Cannot write tab separated output file when input file is not in FASTQ format");
+        }
     }
 
   FILE * fp_fastaout = nullptr;


=====================================
src/fastx.cc
=====================================
@@ -464,6 +464,11 @@ bool fastx_is_fastq(fastx_handle h)
   return h->is_fastq || h->is_empty;
 }
 
+bool fastx_is_empty(fastx_handle h)
+{
+  return h->is_empty;
+}
+
 void fastx_close(fastx_handle h)
 {
   /* Warn about stripped chars */


=====================================
src/fastx.h
=====================================
@@ -115,6 +115,7 @@ typedef struct fastx_s * fastx_handle;
 /* fastx input */
 
 bool fastx_is_fastq(fastx_handle h);
+bool fastx_is_empty(fastx_handle h);
 void fastx_filter_header(fastx_handle h, bool truncateatspace);
 fastx_handle fastx_open(const char * filename);
 void fastx_close(fastx_handle h);



View it on GitLab: https://salsa.debian.org/med-team/vsearch/-/commit/8245891e5dcbf0d413785deb883df3a306543dad

-- 
View it on GitLab: https://salsa.debian.org/med-team/vsearch/-/commit/8245891e5dcbf0d413785deb883df3a306543dad
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20220122/b4a146b7/attachment-0001.htm>


More information about the debian-med-commit mailing list