]> git.armaanb.net Git - stagit.git/blobdiff - src/stagit.c
Merge cp.h into stagit.c
[stagit.git] / src / stagit.c
index c39e9ba54b0b6881a275fd5e9cd44308d4e76038..eef927ea8ded24b6dc5ca59fb3fa181adb4b66f4 100644 (file)
@@ -78,6 +78,29 @@ static char lastoidstr[GIT_OID_HEXSZ + 2]; /* id + newline + NUL byte */
 static FILE *rcachefp, *wcachefp;
 static const char *cachefile;
 
+int
+cp(const char fileSource[], const char fileDestination[])
+{
+       int c;
+       FILE *stream_R, *stream_W; 
+
+       stream_R = fopen(fileSource, "r");
+       if (stream_R == NULL)
+               return -1;
+       stream_W = fopen(fileDestination, "w");   //create and write to file
+       if (stream_W == NULL)
+       {
+               fclose(stream_R);
+               return -2;
+       }    
+       while ((c = fgetc(stream_R)) != EOF)
+               fputc(c, stream_W);
+       fclose(stream_R);
+       fclose(stream_W);
+
+       return 0;
+}
+
 void
 joinpath(char *buf, size_t bufsiz, const char *path, const char *path2)
 {
@@ -848,7 +871,6 @@ writeblob(git_object *obj, const char *fpath, const char *filename, git_off_t fi
        fputs("<p> ", fp);
        xmlencode(fp, filename, strlen(filename));
        fprintf(fp, " (%s)", convertbytes((int)filesize));
-
        fputs("</p><hr/>", fp);
 
        if (git_blob_is_binary((git_blob *)obj)) {
@@ -857,6 +879,15 @@ writeblob(git_object *obj, const char *fpath, const char *filename, git_off_t fi
                writeblobhtml(filename, fp, (git_blob *)obj);
                if (ferror(fp))
                        err(1, "fwrite");
+               else if (htmlized) {
+                       /* NOTE: recurses */
+                       char newfpath[PATH_MAX];
+                       strcat(newfpath, fpath);
+                       char newfilename[PATH_MAX];
+                       strcat(newfilename, filename);
+                       writeblob(obj, strcat(newfpath, "-raw"), strcat(newfilename, "-raw"), filesize);
+                       // TODO: Add view-raw button
+               }
        }
 
        writefooter(fp);