X-Git-Url: http://git.annexia.org/?p=virt-mem.git;a=blobdiff_plain;f=lib%2Fvirt_mem_utsname.ml;h=e766da433e603c3d260c171b638f3ec2f0ba5888;hp=084ba92a5820138d8b693cf961d8d87b3131857a;hb=f6bb3caa719a564615e7fd2f21a3ad5bca010a88;hpb=e7fad361d3dbf1689a22fdd1ae5f5579d6ef5fb0 diff --git a/lib/virt_mem_utsname.ml b/lib/virt_mem_utsname.ml index 084ba92..e766da4 100644 --- a/lib/virt_mem_utsname.ml +++ b/lib/virt_mem_utsname.ml @@ -24,16 +24,6 @@ open Virt_mem_utils open Virt_mem_types open Virt_mem_mmap -(* Truncate an OCaml string at the first ASCII NUL character, ie. as - * if it were a C string. - *) -let truncate str = - try - let i = String.index str '\000' in - String.sub str 0 i - with - Not_found -> str - let parse_utsname bits = (* Expect the first (sysname) field to always be "Linux", which is * also a good way to tell if we're synchronized to the right bit of @@ -47,17 +37,17 @@ let parse_utsname bits = machine : 65*8 : string; domainname : 65*8 : string } -> Some { - kernel_name = "Linux"; - nodename = truncate nodename; - kernel_release = truncate release; - kernel_version = truncate version; - machine = truncate machine; - domainname = truncate domainname + uts_kernel_name = "Linux"; + uts_nodename = truncate_c_string nodename; + uts_kernel_release = truncate_c_string release; + uts_kernel_version = truncate_c_string version; + uts_machine = truncate_c_string machine; + uts_domainname = truncate_c_string domainname } | { _ } -> None -let find_utsname debug ({ domname = name; mem = mem } as image, ksymmap) = +let find_utsname debug ({ domname = name; mem = mem } as image) ksymmap = let utsname = (* In Linux 2.6.25, the symbol is init_uts_ns. * http://lxr.linux.no/linux/init/version.c @@ -88,6 +78,8 @@ let find_utsname debug ({ domname = name; mem = mem } as image, ksymmap) = parse_utsname bits with Not_found -> - eprintf (f_"%s: could not find utsname in kernel image\n") name + eprintf (f_"%s: could not find utsname in kernel image\n") + name; + None in - (image, ksymmap, utsname) + image, utsname