Generated code for tune2fs-l command and RHashtable return type.
[libguestfs.git] / fish / cmds.c
index b658614..c68924a 100644 (file)
@@ -65,6 +65,7 @@ void list_commands (void)
   printf ("%-20s %s\n", "list-partitions", "list the partitions");
   printf ("%-20s %s\n", "ll", "list the files in a directory (long format)");
   printf ("%-20s %s\n", "ls", "list the files in a directory");
+  printf ("%-20s %s\n", "lstat", "get file information for a symbolic link");
   printf ("%-20s %s\n", "lvcreate", "create an LVM volume group");
   printf ("%-20s %s\n", "lvm-remove-all", "remove all LVM LVs, VGs and PVs");
   printf ("%-20s %s\n", "lvs", "list the LVM logical volumes (LVs)");
@@ -85,8 +86,11 @@ void list_commands (void)
   printf ("%-20s %s\n", "set-path", "set the search path");
   printf ("%-20s %s\n", "set-verbose", "set verbose mode");
   printf ("%-20s %s\n", "sfdisk", "create partitions on a block device");
+  printf ("%-20s %s\n", "stat", "get file information");
+  printf ("%-20s %s\n", "statvfs", "get file system statistics");
   printf ("%-20s %s\n", "sync", "sync disks, writes are flushed through to the disk image");
   printf ("%-20s %s\n", "touch", "update file timestamps or create a new file");
+  printf ("%-20s %s\n", "tune2fs-l", "get ext2/ext3 superblock details");
   printf ("%-20s %s\n", "umount", "unmount a filesystem");
   printf ("%-20s %s\n", "umount-all", "unmount all filesystems");
   printf ("%-20s %s\n", "vgcreate", "create an LVM volume group");
@@ -284,6 +288,18 @@ void display_command (const char *cmd)
   if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
     pod2text ("command-lines - run a command, returning lines", " command-lines <arguments>\n\nThis is the same as C<command>, but splits the\nresult into a list of lines.");
   else
+  if (strcasecmp (cmd, "stat") == 0)
+    pod2text ("stat - get file information", " stat <path>\n\nReturns file information for the given C<path>.\n\nThis is the same as the C<stat(2)> system call.");
+  else
+  if (strcasecmp (cmd, "lstat") == 0)
+    pod2text ("lstat - get file information for a symbolic link", " lstat <path>\n\nReturns file information for the given C<path>.\n\nThis is the same as C<stat> except that if C<path>\nis a symbolic link, then the link is stat-ed, not the file it\nrefers to.\n\nThis is the same as the C<lstat(2)> system call.");
+  else
+  if (strcasecmp (cmd, "statvfs") == 0)
+    pod2text ("statvfs - get file system statistics", " statvfs <path>\n\nReturns file system statistics for any mounted file system.\nC<path> should be a file or directory in the mounted file system\n(typically it is the mount point itself, but it doesn't need to be).\n\nThis is the same as the C<statvfs(2)> system call.");
+  else
+  if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
+    pod2text ("tune2fs-l - get ext2/ext3 superblock details", " tune2fs-l <device>\n\nThis returns the contents of the ext2 or ext3 filesystem superblock\non C<device>.\n\nIt is the same as running C<tune2fs -l device>.  See L<tune2fs(8)>\nmanpage for more details.  The list of fields returned isn't\nclearly defined, and depends on both the version of C<tune2fs>\nthat libguestfs was built against, and the filesystem itself.");
+  else
     display_builtin_command (cmd);
 }
 
@@ -389,6 +405,38 @@ static void print_lv_list (struct guestfs_lvm_lv_list *lvs)
     print_lv (&lvs->val[i]);
 }
 
+static void print_stat (struct guestfs_stat *stat)
+{
+  printf ("dev: %" PRIi64 "\n", stat->dev);
+  printf ("ino: %" PRIi64 "\n", stat->ino);
+  printf ("mode: %" PRIi64 "\n", stat->mode);
+  printf ("nlink: %" PRIi64 "\n", stat->nlink);
+  printf ("uid: %" PRIi64 "\n", stat->uid);
+  printf ("gid: %" PRIi64 "\n", stat->gid);
+  printf ("rdev: %" PRIi64 "\n", stat->rdev);
+  printf ("size: %" PRIi64 "\n", stat->size);
+  printf ("blksize: %" PRIi64 "\n", stat->blksize);
+  printf ("blocks: %" PRIi64 "\n", stat->blocks);
+  printf ("atime: %" PRIi64 "\n", stat->atime);
+  printf ("mtime: %" PRIi64 "\n", stat->mtime);
+  printf ("ctime: %" PRIi64 "\n", stat->ctime);
+}
+
+static void print_statvfs (struct guestfs_statvfs *statvfs)
+{
+  printf ("bsize: %" PRIi64 "\n", statvfs->bsize);
+  printf ("frsize: %" PRIi64 "\n", statvfs->frsize);
+  printf ("blocks: %" PRIi64 "\n", statvfs->blocks);
+  printf ("bfree: %" PRIi64 "\n", statvfs->bfree);
+  printf ("bavail: %" PRIi64 "\n", statvfs->bavail);
+  printf ("files: %" PRIi64 "\n", statvfs->files);
+  printf ("ffree: %" PRIi64 "\n", statvfs->ffree);
+  printf ("favail: %" PRIi64 "\n", statvfs->favail);
+  printf ("fsid: %" PRIi64 "\n", statvfs->fsid);
+  printf ("flag: %" PRIi64 "\n", statvfs->flag);
+  printf ("namemax: %" PRIi64 "\n", statvfs->namemax);
+}
+
 static int run_launch (const char *cmd, int argc, char *argv[])
 {
   int r;
@@ -1340,6 +1388,74 @@ static int run_command_lines (const char *cmd, int argc, char *argv[])
   return 0;
 }
 
+static int run_stat (const char *cmd, int argc, char *argv[])
+{
+  struct guestfs_stat *r;
+  const char *path;
+  if (argc != 1) {
+    fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
+    fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
+    return -1;
+  }
+  path = argv[0];
+  r = guestfs_stat (g, path);
+  if (r == NULL) return -1;
+  print_stat (r);
+  free (r);
+  return 0;
+}
+
+static int run_lstat (const char *cmd, int argc, char *argv[])
+{
+  struct guestfs_stat *r;
+  const char *path;
+  if (argc != 1) {
+    fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
+    fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
+    return -1;
+  }
+  path = argv[0];
+  r = guestfs_lstat (g, path);
+  if (r == NULL) return -1;
+  print_stat (r);
+  free (r);
+  return 0;
+}
+
+static int run_statvfs (const char *cmd, int argc, char *argv[])
+{
+  struct guestfs_statvfs *r;
+  const char *path;
+  if (argc != 1) {
+    fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
+    fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
+    return -1;
+  }
+  path = argv[0];
+  r = guestfs_statvfs (g, path);
+  if (r == NULL) return -1;
+  print_statvfs (r);
+  free (r);
+  return 0;
+}
+
+static int run_tune2fs_l (const char *cmd, int argc, char *argv[])
+{
+  char **r;
+  const char *device;
+  if (argc != 1) {
+    fprintf (stderr, "%s should have 1 parameter(s)\n", cmd);
+    fprintf (stderr, "type 'help %s' for help on %s\n", cmd, cmd);
+    return -1;
+  }
+  device = argv[0];
+  r = guestfs_tune2fs_l (g, device);
+  if (r == NULL) return -1;
+  print_table (r);
+  free_strings (r);
+  return 0;
+}
+
 int run_action (const char *cmd, int argc, char *argv[])
 {
   if (strcasecmp (cmd, "launch") == 0 || strcasecmp (cmd, "run") == 0)
@@ -1528,6 +1644,18 @@ int run_action (const char *cmd, int argc, char *argv[])
   if (strcasecmp (cmd, "command_lines") == 0 || strcasecmp (cmd, "command-lines") == 0)
     return run_command_lines (cmd, argc, argv);
   else
+  if (strcasecmp (cmd, "stat") == 0)
+    return run_stat (cmd, argc, argv);
+  else
+  if (strcasecmp (cmd, "lstat") == 0)
+    return run_lstat (cmd, argc, argv);
+  else
+  if (strcasecmp (cmd, "statvfs") == 0)
+    return run_statvfs (cmd, argc, argv);
+  else
+  if (strcasecmp (cmd, "tune2fs_l") == 0 || strcasecmp (cmd, "tune2fs-l") == 0)
+    return run_tune2fs_l (cmd, argc, argv);
+  else
     {
       fprintf (stderr, "%s: unknown command\n", cmd);
       return -1;