fish: Fix 'more' command to work with any file.
authorRichard Jones <rjones@redhat.com>
Thu, 9 Sep 2010 13:11:32 +0000 (14:11 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Sat, 23 Oct 2010 14:09:16 +0000 (15:09 +0100)
(cherry picked from commit 639ca1828b167bf59353f0cd3c8c79c6289bbd5d)

fish/guestfish.pod
fish/more.c

index e5ce492..5f56a9d 100644 (file)
@@ -752,9 +752,6 @@ This is used to view a file.
 The default viewer is C<$PAGER>.  However if you use the alternate
 command C<less> you will get the C<less> command specifically.
 
-NOTE: This will not work reliably for large files
-(> 2 MB) or binary files containing \0 bytes.
-
 =head2 quit | exit
 
 This exits guestfish.  You can also use C<^D> key.
index a32d5b4..55faefa 100644 (file)
@@ -33,7 +33,6 @@ do_more (const char *cmd, int argc, char *argv[])
   char filename[] = "/tmp/guestfishXXXXXX";
   char buf[256];
   const char *pager;
-  char *content;
   int r, fd;
 
   if (argc != 1) {
@@ -57,21 +56,14 @@ do_more (const char *cmd, int argc, char *argv[])
     return -1;
   }
 
-  if ((content = guestfs_cat (g, argv[0])) == NULL) {
-    close (fd);
-    unlink (filename);
-    return -1;
-  }
+  snprintf (buf, sizeof buf, "/dev/fd/%d", fd);
 
-  if (xwrite (fd, content, strlen (content)) == -1) {
+  if (guestfs_download (g, argv[0], buf) == -1) {
     close (fd);
     unlink (filename);
-    free (content);
     return -1;
   }
 
-  free (content);
-
   if (close (fd) == -1) {
     perror (filename);
     unlink (filename);