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 |   42 +++++++++++++++++++++++++++++-------------
 1 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/src/io.c b/src/io.c
index d8c1009..f9b0164 100644
--- a/src/io.c
+++ b/src/io.c
@@ -21,7 +21,7 @@
 
     /* save current state with wrong pointers. Will fix that later */
     ts_uint i,j,k;
-    FILE *fh=fopen("dump.bin","wb");
+    FILE *fh=fopen(command_line_args.dump_fullfilename,"wb");
 
     /* dump vesicle */
     fwrite(vesicle, sizeof(ts_vesicle),1,fh);
@@ -180,10 +180,10 @@
 /** RESTORE DUMP FROM DISK **/
 ts_vesicle *restore_state(ts_uint *iteration){
     ts_uint i,j,k;
-    FILE *fh=fopen("dump.bin","rb");
+    FILE *fh=fopen(command_line_args.dump_fullfilename,"rb");
 
     struct stat sb;
-    if (stat("dump.bin", &sb) == -1) {
+    if (stat(command_line_args.dump_fullfilename, &sb) == -1) {
         //dump file does not exist.
         return NULL;
     }
@@ -418,7 +418,7 @@
                 vesicle->filament_list->poly[i]->blist->bond[j]->vtx2=vesicle->filament_list->poly[i]->vlist->vtx[idx];
         }
     }
-    vesicle->tape=parsetape("tape");
+    vesicle->tape=parsetape(command_line_args.tape_fullfilename);
 // recreating space for cells // 
     vesicle->clist=init_cell_list(vesicle->tape->ncxmax, vesicle->tape->ncymax, vesicle->tape->nczmax, vesicle->tape->stepsize);
 	vesicle->clist->max_occupancy=8;
@@ -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;
 
 }
-
 
 
 
@@ -745,7 +758,7 @@
         }
 
 	fprintf(fh,"<?xml version=\"1.0\"?>\n<VTKFile type=\"Collection\" version=\"0.1\" byte_order=\"LittleEndian\" compressor=\"vtkZLibDataCompressor\">\n<Collection>");
-	DIR *dir = opendir(".");
+	DIR *dir = opendir(command_line_args.path);
 	if(dir){
 		struct dirent *ent;
         tstep=0;
@@ -774,10 +787,13 @@
 	ts_bond_list *blist=vesicle->blist;
 	ts_vertex **vtx=vlist->vtx;
     ts_uint i,j;
-    	char filename[255];
+    	char filename[10000];
+        char just_name[255];
 	FILE *fh;
+        strcpy(filename,command_line_args.path);
+    	sprintf(just_name,"timestep_%.6u.vtu",timestepno);
+        strcat(filename,just_name);
 
-    	sprintf(filename,"timestep_%.6u.vtu",timestepno);
 	fh=fopen(filename, "w");
 	if(fh==NULL){
 		err("Cannot open file %s for writing");

--
Gitblit v1.9.3