1 (* 'df' command for virtual domains.
2 (C) Copyright 2007-2008 Richard W.M. Jones, Red Hat Inc.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 (* Part of the parser for LVM2 metadata. *)
22 type metadata = metastmt list
24 and metastmt = string * metavalue
27 | Metadata of metadata (* name { ... } *)
28 | String of string (* name = "..." *)
31 | List of metavalue list (* name = [...] *)
33 let rec output_metadata chan md =
34 _output_metadata chan "" md
36 and _output_metadata chan prefix = function
38 | (name, value) :: rest ->
39 output_string chan prefix;
40 output_string chan name;
41 output_string chan " = ";
42 output_metavalue chan prefix value;
43 output_string chan "\n";
44 _output_metadata chan prefix rest
46 and output_metavalue chan prefix = function
48 output_string chan "{\n";
49 _output_metadata chan (prefix ^ " ") md;
50 output_string chan prefix;
51 output_string chan "}";
54 output_string chan str;
57 output_string chan (Int63.to_string i)
59 output_string chan (string_of_float f)
61 | List [x] -> output_metavalue chan prefix x
63 output_metavalue chan prefix x;
64 output_string chan ", ";
65 output_metavalue chan prefix (List xs)