/* virt-filesystems
- * Copyright (C) 2010 Red Hat Inc.
+ * Copyright (C) 2010-2011 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include <inttypes.h>
#include <unistd.h>
#include <getopt.h>
+#include <locale.h>
#include <assert.h>
+#include <string.h>
+#include <libintl.h>
#include "c-ctype.h"
#include "human.h"
#include "guestfs.h"
#include "options.h"
+#define DISABLE_GUESTFS_ERRORS_FOR(stmt) do { \
+ guestfs_error_handler_cb old_error_cb; \
+ void *old_error_data; \
+ old_error_cb = guestfs_get_error_handler (g, &old_error_data); \
+ guestfs_set_error_handler (g, NULL, NULL); \
+ stmt; \
+ guestfs_set_error_handler (g, old_error_cb, old_error_data); \
+ } while (0)
+
/* These globals are shared with options.c. */
guestfs_h *g;
int read_only = 1;
+int live = 0;
int verbose = 0;
int keys_from_stdin = 0;
int echo_keys = 0;
*/
assert (read_only == 1);
assert (inspector == 0);
+ assert (live == 0);
/* Must be no extra arguments on the command line. */
if (optind != argc)
* otherwise pass them as NULL.
*/
if ((columns & COLUMN_VFS_LABEL)) {
- vfs_label = guestfs_vfs_label (g, fses[i]);
- if (vfs_label == NULL)
- exit (EXIT_FAILURE);
+ DISABLE_GUESTFS_ERRORS_FOR (
+ vfs_label = guestfs_vfs_label (g, fses[i]);
+ );
+ if (vfs_label == NULL) {
+ vfs_label = strdup ("");
+ if (!vfs_label) {
+ perror ("strdup");
+ exit (EXIT_FAILURE);
+ }
+ }
}
if ((columns & COLUMN_UUID)) {
- vfs_uuid = guestfs_vfs_uuid (g, fses[i]);
- if (vfs_uuid == NULL)
- exit (EXIT_FAILURE);
+ DISABLE_GUESTFS_ERRORS_FOR (
+ vfs_uuid = guestfs_vfs_uuid (g, fses[i]);
+ );
+ if (vfs_uuid == NULL) {
+ vfs_uuid = strdup ("");
+ if (!vfs_uuid) {
+ perror ("strdup");
+ exit (EXIT_FAILURE);
+ }
+ }
}
if ((columns & COLUMN_SIZE)) {
size = guestfs_blockdev_getsize64 (g, fses[i]);