Author: kientzle
Date: Fri Apr 17 00:39:35 2009
New Revision: 191165
URL: http://svn.freebsd.org/changeset/base/191165

Log:
  Merge from libarchive.googlecode.com:  If we're
  given an empty filename, just invoke write_open_fd()
  instead of re-implementing the code to use stdout.

Modified:
  head/lib/libarchive/archive_write_open_filename.c

Modified: head/lib/libarchive/archive_write_open_filename.c
==============================================================================
--- head/lib/libarchive/archive_write_open_filename.c   Fri Apr 17 00:30:56 
2009        (r191164)
+++ head/lib/libarchive/archive_write_open_filename.c   Fri Apr 17 00:39:35 
2009        (r191165)
@@ -71,24 +71,18 @@ archive_write_open_filename(struct archi
 {
        struct write_file_data *mine;
 
-       if (filename == NULL || filename[0] == '\0') {
-               mine = (struct write_file_data *)malloc(sizeof(*mine));
-               if (mine == NULL) {
-                       archive_set_error(a, ENOMEM, "No memory");
-                       return (ARCHIVE_FATAL);
-               }
-               mine->filename[0] = '\0'; /* Record that we're using stdout. */
-       } else {
-               mine = (struct write_file_data *)malloc(sizeof(*mine) + 
strlen(filename));
-               if (mine == NULL) {
-                       archive_set_error(a, ENOMEM, "No memory");
-                       return (ARCHIVE_FATAL);
-               }
-               strcpy(mine->filename, filename);
+       if (filename == NULL || filename[0] == '\0')
+               return (archive_write_open_fd(a, 1));
+
+       mine = (struct write_file_data *)malloc(sizeof(*mine) + 
strlen(filename));
+       if (mine == NULL) {
+               archive_set_error(a, ENOMEM, "No memory");
+               return (ARCHIVE_FATAL);
        }
+       strcpy(mine->filename, filename);
        mine->fd = -1;
        return (archive_write_open(a, mine,
-                   file_open, file_write, file_close));
+               file_open, file_write, file_close));
 }
 
 static int
@@ -104,21 +98,11 @@ file_open(struct archive *a, void *clien
        /*
         * Open the file.
         */
-       if (mine->filename[0] != '\0') {
-               mine->fd = open(mine->filename, flags, 0666);
-               if (mine->fd < 0) {
-                       archive_set_error(a, errno, "Failed to open '%s'",
-                           mine->filename);
-                       return (ARCHIVE_FATAL);
-               }
-       } else {
-               /*
-                * NULL filename is stdout.
-                */
-               mine->fd = 1;
-               /* By default, pad archive when writing to stdout. */
-               if (archive_write_get_bytes_in_last_block(a) < 0)
-                       archive_write_set_bytes_in_last_block(a, 0);
+       mine->fd = open(mine->filename, flags, 0666);
+       if (mine->fd < 0) {
+               archive_set_error(a, errno, "Failed to open '%s'",
+                   mine->filename);
+               return (ARCHIVE_FATAL);
        }
 
        if (fstat(mine->fd, &st) != 0) {
@@ -172,8 +156,7 @@ file_close(struct archive *a, void *clie
        struct write_file_data  *mine = (struct write_file_data *)client_data;
 
        (void)a; /* UNUSED */
-       if (mine->filename[0] != '\0')
-               close(mine->fd);
+       close(mine->fd);
        free(mine);
        return (ARCHIVE_OK);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to