From 1bf3c3ad4e8c4f2ce35af71a40c67c6c8ce60ee2 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@fe.uni-lj.si>
Date: Thu, 11 Sep 2014 12:23:44 +0000
Subject: [PATCH] Tape template beginning.

---
 src/io.c |   25 +++++++++++++++++++------
 src/io.h |    1 +
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/io.c b/src/io.c
index 00f6db5..f9b0164 100644
--- a/src/io.c
+++ b/src/io.c
@@ -439,6 +439,7 @@
     sprintf(command_line_args.output_fullfilename,"output.pvd");
     sprintf(command_line_args.dump_fullfilename,"dump.bin");
     sprintf(command_line_args.tape_fullfilename,"tape");
+    sprintf(command_line_args.tape_templatefull,"./tape");
             FILE *file;
     
 while (1)
@@ -452,6 +453,7 @@
            {"directory",  required_argument, 0, 'd'},
            {"dump-filename", required_argument,0, 'f'},
            {"tape-options",required_argument,0,'c'},
+           {"tape-template", required_argument,0,0},
            {0, 0, 0, 0}
          };
        /* getopt_long stores the option index here. */
@@ -470,10 +472,14 @@
            /* If this option set a flag, do nothing else now. */
            if (long_options[option_index].flag != 0)
              break;
-           printf ("option %s", long_options[option_index].name);
+/*           printf ("option %s", long_options[option_index].name);
            if (optarg)
-             printf (" with arg %s", optarg);
-           printf ("\n");
+             printf (" with arg %s", optarg); 
+           printf ("\n"); */
+            //TODO: find a better way.
+            if(strcmp(long_options[option_index].name,"tape-template")==0){
+                strcpy(command_line_args.tape_templatefull,optarg);
+            }
            break;
 
          case 'c':
@@ -534,6 +540,7 @@
     if ((file = fopen(buffer, "w")) == NULL) {
                 fprintf(stderr,"Could not create output file %s!\n", buffer);
                 fatal("Please specify correct output file or check permissions of the file",1);
+                //there is a tape template. make a copy into desired directory
                 
             } else {
                 fclose(file);
@@ -544,8 +551,15 @@
     strcpy(buffer,command_line_args.path);
     strcat(buffer,command_line_args.tape_fullfilename);
     if (stat(buffer, &sb) == -1) {
-                ts_fprintf(stderr,"Tape '%s' does not exist!\n",buffer);
-                fatal("Please select correct tape or check permissions of the file",1);
+
+                //tape does not exist. does tape template exist?
+                if(stat(command_line_args.tape_templatefull, &sb)==-1){ 
+                    ts_fprintf(stderr,"Tape '%s' does not exist and no tape template was specified (or does not exist)!\n",buffer);
+                    fatal("Please select correct tape or check permissions of the file",1);
+                } else {
+                    //tape template found
+                    fatal("Samo did not program template copy yet",1); 
+                }
             } else {
                 strcpy(command_line_args.tape_fullfilename,buffer);
             }
@@ -573,7 +587,6 @@
     return TS_SUCCESS;
 
 }
-
 
 
 
diff --git a/src/io.h b/src/io.h
index c6f97fd..ec04fb1 100644
--- a/src/io.h
+++ b/src/io.h
@@ -15,6 +15,7 @@
     char output_fullfilename[1024]; //name of the master file
     char dump_fullfilename[1024]; //name of the dump file
     char tape_fullfilename[1024]; //name of the tape file
+    char tape_templatefull[1024]; //name of the tape template file
     char tape_opts[1000]; //commandline tape options
 } ts_args;
 

--
Gitblit v1.9.3