summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-04-15 13:59:07 +0100
committerRichard Jones <rjones@redhat.com>2009-04-15 13:59:07 +0100
commitad5abc8d367c9c410051062cae066b1b141b4c76 (patch)
tree9b22bc0900d83ac5a79a8bed7c3283f2fc742536 /src
parentd5ae4a54e83018687ec05255bc39e7f5ab71a453 (diff)
downloadlibguestfs-ad5abc8d367c9c410051062cae066b1b141b4c76.tar.gz
libguestfs-ad5abc8d367c9c410051062cae066b1b141b4c76.tar.xz
libguestfs-ad5abc8d367c9c410051062cae066b1b141b4c76.zip
Generated code for tune2fs-l command and RHashtable return type.
Diffstat (limited to 'src')
-rw-r--r--src/guestfs-actions.c78
-rw-r--r--src/guestfs-actions.h1
-rw-r--r--src/guestfs_protocol.c21
-rw-r--r--src/guestfs_protocol.h20
-rw-r--r--src/guestfs_protocol.x9
5 files changed, 128 insertions, 1 deletions
diff --git a/src/guestfs-actions.c b/src/guestfs-actions.c
index 8f40102e..0961df69 100644
--- a/src/guestfs-actions.c
+++ b/src/guestfs-actions.c
@@ -3924,3 +3924,81 @@ struct guestfs_statvfs *guestfs_statvfs (guestfs_h *g,
return safe_memdup (g, &rv.ret.statbuf, sizeof (rv.ret.statbuf));
}
+struct tune2fs_l_rv {
+ int cb_done; /* flag to indicate callback was called */
+ struct guestfs_message_header hdr;
+ struct guestfs_message_error err;
+ struct guestfs_tune2fs_l_ret ret;
+};
+
+static void tune2fs_l_cb (guestfs_h *g, void *data, XDR *xdr)
+{
+ struct tune2fs_l_rv *rv = (struct tune2fs_l_rv *) data;
+
+ if (!xdr_guestfs_message_header (xdr, &rv->hdr)) {
+ error (g, "guestfs_tune2fs_l: failed to parse reply header");
+ return;
+ }
+ if (rv->hdr.status == GUESTFS_STATUS_ERROR) {
+ if (!xdr_guestfs_message_error (xdr, &rv->err)) {
+ error (g, "guestfs_tune2fs_l: failed to parse reply error");
+ return;
+ }
+ goto done;
+ }
+ if (!xdr_guestfs_tune2fs_l_ret (xdr, &rv->ret)) {
+ error (g, "guestfs_tune2fs_l: failed to parse reply");
+ return;
+ }
+ done:
+ rv->cb_done = 1;
+ main_loop.main_loop_quit (g);
+}
+
+char **guestfs_tune2fs_l (guestfs_h *g,
+ const char *device)
+{
+ struct guestfs_tune2fs_l_args args;
+ struct tune2fs_l_rv rv;
+ int serial;
+
+ if (g->state != READY) {
+ error (g, "guestfs_tune2fs_l called from the wrong state, %d != READY",
+ g->state);
+ return NULL;
+ }
+
+ memset (&rv, 0, sizeof rv);
+
+ args.device = (char *) device;
+ serial = dispatch (g, GUESTFS_PROC_TUNE2FS_L,
+ (xdrproc_t) xdr_guestfs_tune2fs_l_args, (char *) &args);
+ if (serial == -1)
+ return NULL;
+
+ rv.cb_done = 0;
+ g->reply_cb_internal = tune2fs_l_cb;
+ g->reply_cb_internal_data = &rv;
+ main_loop.main_loop_run (g);
+ g->reply_cb_internal = NULL;
+ g->reply_cb_internal_data = NULL;
+ if (!rv.cb_done) {
+ error (g, "guestfs_tune2fs_l failed, see earlier error messages");
+ return NULL;
+ }
+
+ if (check_reply_header (g, &rv.hdr, GUESTFS_PROC_TUNE2FS_L, serial) == -1)
+ return NULL;
+
+ if (rv.hdr.status == GUESTFS_STATUS_ERROR) {
+ error (g, "%s", rv.err.error);
+ return NULL;
+ }
+
+ /* caller will free this, but we need to add a NULL entry */
+ rv.ret.superblock.superblock_val = safe_realloc (g, rv.ret.superblock.superblock_val,
+ sizeof (char *) * (rv.ret.superblock.superblock_len + 1));
+ rv.ret.superblock.superblock_val[rv.ret.superblock.superblock_len] = NULL;
+ return rv.ret.superblock.superblock_val;
+}
+
diff --git a/src/guestfs-actions.h b/src/guestfs-actions.h
index a838a049..5f523c34 100644
--- a/src/guestfs-actions.h
+++ b/src/guestfs-actions.h
@@ -85,3 +85,4 @@ extern char **guestfs_command_lines (guestfs_h *handle, char * const* const argu
extern struct guestfs_stat *guestfs_stat (guestfs_h *handle, const char *path);
extern struct guestfs_stat *guestfs_lstat (guestfs_h *handle, const char *path);
extern struct guestfs_statvfs *guestfs_statvfs (guestfs_h *handle, const char *path);
+extern char **guestfs_tune2fs_l (guestfs_h *handle, const char *device);
diff --git a/src/guestfs_protocol.c b/src/guestfs_protocol.c
index 99377b4d..33de1dc1 100644
--- a/src/guestfs_protocol.c
+++ b/src/guestfs_protocol.c
@@ -1014,6 +1014,27 @@ xdr_guestfs_statvfs_ret (XDR *xdrs, guestfs_statvfs_ret *objp)
}
bool_t
+xdr_guestfs_tune2fs_l_args (XDR *xdrs, guestfs_tune2fs_l_args *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_string (xdrs, &objp->device, ~0))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_guestfs_tune2fs_l_ret (XDR *xdrs, guestfs_tune2fs_l_ret *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_array (xdrs, (char **)&objp->superblock.superblock_val, (u_int *) &objp->superblock.superblock_len, ~0,
+ sizeof (str), (xdrproc_t) xdr_str))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
xdr_guestfs_procedure (XDR *xdrs, guestfs_procedure *objp)
{
register int32_t *buf;
diff --git a/src/guestfs_protocol.h b/src/guestfs_protocol.h
index 07207237..270571e5 100644
--- a/src/guestfs_protocol.h
+++ b/src/guestfs_protocol.h
@@ -527,6 +527,19 @@ struct guestfs_statvfs_ret {
};
typedef struct guestfs_statvfs_ret guestfs_statvfs_ret;
+struct guestfs_tune2fs_l_args {
+ char *device;
+};
+typedef struct guestfs_tune2fs_l_args guestfs_tune2fs_l_args;
+
+struct guestfs_tune2fs_l_ret {
+ struct {
+ u_int superblock_len;
+ str *superblock_val;
+ } superblock;
+};
+typedef struct guestfs_tune2fs_l_ret guestfs_tune2fs_l_ret;
+
enum guestfs_procedure {
GUESTFS_PROC_MOUNT = 1,
GUESTFS_PROC_SYNC = 2,
@@ -582,7 +595,8 @@ enum guestfs_procedure {
GUESTFS_PROC_STAT = 52,
GUESTFS_PROC_LSTAT = 53,
GUESTFS_PROC_STATVFS = 54,
- GUESTFS_PROC_dummy = 54 + 1,
+ GUESTFS_PROC_TUNE2FS_L = 55,
+ GUESTFS_PROC_dummy = 55 + 1,
};
typedef enum guestfs_procedure guestfs_procedure;
#define GUESTFS_MESSAGE_MAX 4194304
@@ -696,6 +710,8 @@ extern bool_t xdr_guestfs_lstat_args (XDR *, guestfs_lstat_args*);
extern bool_t xdr_guestfs_lstat_ret (XDR *, guestfs_lstat_ret*);
extern bool_t xdr_guestfs_statvfs_args (XDR *, guestfs_statvfs_args*);
extern bool_t xdr_guestfs_statvfs_ret (XDR *, guestfs_statvfs_ret*);
+extern bool_t xdr_guestfs_tune2fs_l_args (XDR *, guestfs_tune2fs_l_args*);
+extern bool_t xdr_guestfs_tune2fs_l_ret (XDR *, guestfs_tune2fs_l_ret*);
extern bool_t xdr_guestfs_procedure (XDR *, guestfs_procedure*);
extern bool_t xdr_guestfs_message_direction (XDR *, guestfs_message_direction*);
extern bool_t xdr_guestfs_message_status (XDR *, guestfs_message_status*);
@@ -779,6 +795,8 @@ extern bool_t xdr_guestfs_lstat_args ();
extern bool_t xdr_guestfs_lstat_ret ();
extern bool_t xdr_guestfs_statvfs_args ();
extern bool_t xdr_guestfs_statvfs_ret ();
+extern bool_t xdr_guestfs_tune2fs_l_args ();
+extern bool_t xdr_guestfs_tune2fs_l_ret ();
extern bool_t xdr_guestfs_procedure ();
extern bool_t xdr_guestfs_message_direction ();
extern bool_t xdr_guestfs_message_status ();
diff --git a/src/guestfs_protocol.x b/src/guestfs_protocol.x
index e03aef66..1b6e7175 100644
--- a/src/guestfs_protocol.x
+++ b/src/guestfs_protocol.x
@@ -406,6 +406,14 @@ struct guestfs_statvfs_ret {
guestfs_int_statvfs statbuf;
};
+struct guestfs_tune2fs_l_args {
+ string device<>;
+};
+
+struct guestfs_tune2fs_l_ret {
+ str superblock<>;
+};
+
enum guestfs_procedure {
GUESTFS_PROC_MOUNT = 1,
GUESTFS_PROC_SYNC = 2,
@@ -461,6 +469,7 @@ enum guestfs_procedure {
GUESTFS_PROC_STAT = 52,
GUESTFS_PROC_LSTAT = 53,
GUESTFS_PROC_STATVFS = 54,
+ GUESTFS_PROC_TUNE2FS_L = 55,
GUESTFS_PROC_dummy
};