From 07c07eb7366d293db4307541ca7c107f248f4e5e Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 18 Sep 2015 11:07:22 +0200
Subject: [PATCH] lfi2cdf: new option: "-s or --split" to split the variables
 in different files          WARNING: not yet implemented! (the option is just
 recognized)

---
 tools/lfi2cdf/src/lfi2cdf.f90 |  4 ++--
 tools/lfi2cdf/src/newmain.c   | 20 ++++++++++++++++----
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/tools/lfi2cdf/src/lfi2cdf.f90 b/tools/lfi2cdf/src/lfi2cdf.f90
index 41886f556..15a77be1c 100644
--- a/tools/lfi2cdf/src/lfi2cdf.f90
+++ b/tools/lfi2cdf/src/lfi2cdf.f90
@@ -1,5 +1,5 @@
 subroutine  LFI2CDFMAIN(hinfile,iiflen,ooutname,houtfile,ioflen,hvarlist,ivlen,olfi2cdf,olfilist,ohdf5,omerge,nb_levels,&
-                        oreduceprecision,ocompress,compress_level)
+                        oreduceprecision,osplit,ocompress,compress_level)
   USE mode_util
   IMPLICIT NONE 
   INTEGER :: iiflen, ioflen, ivlen
@@ -7,7 +7,7 @@ subroutine  LFI2CDFMAIN(hinfile,iiflen,ooutname,houtfile,ioflen,hvarlist,ivlen,o
   CHARACTER(LEN=iiflen) :: hinfile
   CHARACTER(LEN=ioflen) :: houtfile
   CHARACTER(LEN=ivlen)  :: hvarlist
-  LOGICAL :: ooutname, olfi2cdf, olfilist, ohdf5, omerge, oreduceprecision, ocompress
+  LOGICAL :: ooutname, olfi2cdf, olfilist, ohdf5, omerge, oreduceprecision, osplit, ocompress
   INTEGER :: compress_level
 
   INTEGER :: ibuflen
diff --git a/tools/lfi2cdf/src/newmain.c b/tools/lfi2cdf/src/newmain.c
index f2e5d0b9e..92b39642b 100644
--- a/tools/lfi2cdf/src/newmain.c
+++ b/tools/lfi2cdf/src/newmain.c
@@ -5,7 +5,7 @@
 
 #define BUFSIZE 4096
 
-extern lfi2cdfmain_(char*, int*, int *, char*, int*, char*, int*, int*, int*, int*, int*, int*, int*, int*, int*);
+extern lfi2cdfmain_(char*, int*, int *, char*, int*, char*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*);
 
 char *cleancomma(char *varlist)
 {
@@ -34,6 +34,7 @@ int main(int argc, char **argv)
   int reduceprecision_flag;
   int outname_flag;
   int compress_flag, compress_level;
+  int split_flag;
   char *cmd, *infile;
   int c;
   char buff[BUFSIZE];
@@ -72,11 +73,12 @@ int main(int argc, char **argv)
       {"merge",            required_argument, 0, 'm' },
       {"output",           required_argument, 0, 'o' },
       {"reduce-precision", no_argument,       0, 'r' },
+      {"split",            no_argument,       0, 's' },
       {"var",              required_argument, 0, 'v' },
       {0,                  0,                 0,  0  }
     };
 
-    c = getopt_long(argc, argv, "4c:lm:o:rv:",
+    c = getopt_long(argc, argv, "4c:lm:o:rsv:",
 		    long_options, &option_index);
     if (c == -1)
       break;
@@ -114,6 +116,9 @@ int main(int argc, char **argv)
     case 'r':
       reduceprecision_flag = 1;
       break;
+    case 's':
+      split_flag = 1;
+      break;
     case 'v':
       if (l2c_flag) {
 	lenopt = strlen(optarg);
@@ -135,7 +140,7 @@ int main(int argc, char **argv)
   }
 
   if (optind == argc) {
-    printf("usage : lfi2cdf [--cdf4 -4] [-l] [-v --var var1[,...]] [-r --reduce-precision] [-m --merge number_of_z_levels] [-o --output output-file.nc] [-c --compress compression_level] input-file.lfi\n");
+    printf("usage : lfi2cdf [--cdf4 -4] [-l] [-v --var var1[,...]] [-r --reduce-precision] [-m --merge number_of_z_levels] [-s --split] [-o --output output-file.nc] [-c --compress compression_level] input-file.lfi\n");
     printf("        cdf2lfi [-o --output output-file.lfi] input-file.nc\n");
     exit(EXIT_FAILURE);
   } 
@@ -178,8 +183,15 @@ int main(int argc, char **argv)
          infile, ilen, outfile, olen, varlist, varlistlen);
   */
 
+  /* Split flag only supported if -v is set */
+  if (varlistlen==0) {
+	  split_flag = 0;
+	  printf("Warning: split option is forced to disable.\n");
+  }
+
+
   lfi2cdfmain_(infile, &ilen, &outname_flag, outfile, &olen, varlist, &varlistlen, &l2c_flag, &list_flag, &hdf5_flag, &merge_flag,
-		       &nb_levels, &reduceprecision_flag, &compress_flag, &compress_level);
+		       &nb_levels, &reduceprecision_flag, &split_flag, &compress_flag, &compress_level);
 
   exit(EXIT_SUCCESS);
 }
-- 
GitLab