diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2012-07-30 15:16:45 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2012-07-30 15:16:45 +0100 |
commit | b075b4d1feaaaa83272a8821828d9c7ce8843686 (patch) | |
tree | dcaff067f2a0dee741dc66b0d1935e1ed5d4e58f | |
parent | b61a8a50bc8d481df32f929046abf09383c8380e (diff) | |
download | libguestfs-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.am | 2 | ||||
-rw-r--r-- | daemon/utsname.c | 62 | ||||
-rw-r--r-- | generator/generator_actions.ml | 14 | ||||
-rw-r--r-- | generator/generator_structs.ml | 9 | ||||
-rw-r--r-- | gobject/Makefile.inc | 2 | ||||
-rw-r--r-- | java/Makefile.inc | 1 | ||||
-rw-r--r-- | java/com/redhat/et/libguestfs/.gitignore | 1 | ||||
-rw-r--r-- | po/POTFILES | 2 | ||||
-rw-r--r-- | src/MAX_PROC_NR | 2 |
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 |