summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-07-30 15:16:45 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-07-30 15:16:45 +0100
commitb075b4d1feaaaa83272a8821828d9c7ce8843686 (patch)
treedcaff067f2a0dee741dc66b0d1935e1ed5d4e58f
parentb61a8a50bc8d481df32f929046abf09383c8380e (diff)
downloadlibguestfs-b075b4d1feaaaa83272a8821828d9c7ce8843686.tar.gz
libguestfs-b075b4d1feaaaa83272a8821828d9c7ce8843686.tar.xz
libguestfs-b075b4d1feaaaa83272a8821828d9c7ce8843686.zip
New API: utsname
Typical output: ><fs> utsname uts_sysname: Linux uts_release: 3.5.0-1.fc18.x86_64 uts_version: #1 SMP Mon Jul 23 17:43:39 UTC 2012 uts_machine: x86_64
-rw-r--r--daemon/Makefile.am2
-rw-r--r--daemon/utsname.c62
-rw-r--r--generator/generator_actions.ml14
-rw-r--r--generator/generator_structs.ml9
-rw-r--r--gobject/Makefile.inc2
-rw-r--r--java/Makefile.inc1
-rw-r--r--java/com/redhat/et/libguestfs/.gitignore1
-rw-r--r--po/POTFILES2
-rw-r--r--src/MAX_PROC_NR2
9 files changed, 94 insertions, 1 deletions
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index c43807e5..590901fd 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -163,11 +163,13 @@ guestfsd_SOURCES = \
umask.c \
upload.c \
utimens.c \
+ utsname.c \
wc.c \
xattr.c \
xfs.c \
zero.c \
zerofree.c
+
guestfsd_LDADD = \
liberrnostring.a \
libprotocol.a \
diff --git a/daemon/utsname.c b/daemon/utsname.c
new file mode 100644
index 00000000..dc492261
--- /dev/null
+++ b/daemon/utsname.c
@@ -0,0 +1,62 @@
+/* libguestfs - the guestfsd daemon
+ * Copyright (C) 2012 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/utsname.h>
+
+#include "guestfs_protocol.h"
+#include "daemon.h"
+#include "actions.h"
+
+guestfs_int_utsname *
+do_utsname (void)
+{
+ struct utsname uts;
+ guestfs_int_utsname *ret;
+
+ if (uname (&uts) == -1) {
+ reply_with_perror ("utsname");
+ return NULL;
+ }
+
+ ret = malloc (sizeof *ret);
+ if (ret == NULL) {
+ reply_with_perror ("malloc");
+ return NULL;
+ }
+
+ ret->uts_sysname = strdup (uts.sysname);
+ ret->uts_release = strdup (uts.release);
+ ret->uts_version = strdup (uts.version);
+ ret->uts_machine = strdup (uts.machine);
+ if (!ret->uts_sysname || !ret->uts_release ||
+ !ret->uts_version || !ret->uts_machine) {
+ reply_with_perror ("strdup");
+ free (ret->uts_sysname);
+ free (ret->uts_release);
+ free (ret->uts_version);
+ free (ret->uts_machine);
+ free (ret);
+ return NULL;
+ }
+
+ return ret;
+}
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index a07fce96..e4956f7a 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -9037,6 +9037,20 @@ Generate a new random UUID for the volume group C<vg>." };
longdesc = "\
Generate new random UUIDs for all volume groups." };
+ { defaults with
+ name = "utsname";
+ style = RStruct ("uts", "utsname"), [], [];
+ proc_nr = Some 342;
+ tests = [
+ InitEmpty, Always, TestRun (
+ [["utsname"]])
+ ];
+ shortdesc = "appliance kernel version";
+ longdesc = "\
+This returns the kernel version of the appliance, where this is
+available. This information is only useful for debugging. Nothing
+in the returned structure is defined by the API." };
+
]
(* Non-API meta-commands available only in guestfish.
diff --git a/generator/generator_structs.ml b/generator/generator_structs.ml
index c3339c24..d4fc1ce5 100644
--- a/generator/generator_structs.ml
+++ b/generator/generator_structs.ml
@@ -255,6 +255,14 @@ let structs = [
"xfs_rtblocks", FUInt64;
"xfs_rtextents", FUInt64;
];
+
+ (* utsname *)
+ "utsname", [
+ "uts_sysname", FString;
+ "uts_release", FString;
+ "uts_version", FString;
+ "uts_machine", FString;
+ ];
] (* end of structs *)
(* For bindings which want camel case *)
@@ -275,6 +283,7 @@ let camel_structs = [
"xfsinfo", "XFSInfo";
"mdstat", "MDStat";
"btrfssubvolume", "BTRFSSubvolume";
+ "utsname", "UTSName";
]
let camel_structs = List.sort (fun (_,a) (_,b) -> compare a b) camel_structs
diff --git a/gobject/Makefile.inc b/gobject/Makefile.inc
index 230d1140..7a60933b 100644
--- a/gobject/Makefile.inc
+++ b/gobject/Makefile.inc
@@ -39,6 +39,7 @@ guestfs_gobject_headers= \
include/guestfs-gobject/struct-mdstat.h \
include/guestfs-gobject/struct-btrfssubvolume.h \
include/guestfs-gobject/struct-xfsinfo.h \
+ include/guestfs-gobject/struct-utsname.h \
include/guestfs-gobject/optargs-internal_test.h \
include/guestfs-gobject/optargs-add_drive.h \
include/guestfs-gobject/optargs-add_domain.h \
@@ -85,6 +86,7 @@ guestfs_gobject_sources= \
src/struct-mdstat.c \
src/struct-btrfssubvolume.c \
src/struct-xfsinfo.c \
+ src/struct-utsname.c \
src/optargs-internal_test.c \
src/optargs-add_drive.c \
src/optargs-add_domain.c \
diff --git a/java/Makefile.inc b/java/Makefile.inc
index da8de49b..2b4b35e4 100644
--- a/java/Makefile.inc
+++ b/java/Makefile.inc
@@ -32,6 +32,7 @@ java_built_sources = \
com/redhat/et/libguestfs/Partition.java \
com/redhat/et/libguestfs/Stat.java \
com/redhat/et/libguestfs/StatVFS.java \
+ com/redhat/et/libguestfs/UTSName.java \
com/redhat/et/libguestfs/VG.java \
com/redhat/et/libguestfs/Version.java \
com/redhat/et/libguestfs/XAttr.java \
diff --git a/java/com/redhat/et/libguestfs/.gitignore b/java/com/redhat/et/libguestfs/.gitignore
index 10346658..80b245dc 100644
--- a/java/com/redhat/et/libguestfs/.gitignore
+++ b/java/com/redhat/et/libguestfs/.gitignore
@@ -10,6 +10,7 @@ PV.java
Partition.java
Stat.java
StatVFS.java
+UTSName.java
VG.java
Version.java
XAttr.java
diff --git a/po/POTFILES b/po/POTFILES
index 228aa39d..cdb873e3 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -82,6 +82,7 @@ daemon/truncate.c
daemon/umask.c
daemon/upload.c
daemon/utimens.c
+daemon/utsname.c
daemon/wc.c
daemon/xattr.c
daemon/xfs.c
@@ -173,6 +174,7 @@ gobject/src/struct-mdstat.c
gobject/src/struct-partition.c
gobject/src/struct-stat.c
gobject/src/struct-statvfs.c
+gobject/src/struct-utsname.c
gobject/src/struct-version.c
gobject/src/struct-xattr.c
gobject/src/struct-xfsinfo.c
diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR
index 947e93bc..c9693eb7 100644
--- a/src/MAX_PROC_NR
+++ b/src/MAX_PROC_NR
@@ -1 +1 @@
-341
+342