diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2012-09-02 18:26:48 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2012-09-02 19:47:33 +0100 |
commit | d331fd70e2c3ba2815460c8cd93a97eb9a81c6a5 (patch) | |
tree | 40ff4f1be508a66ecf7d52e6511a6e446938a465 /generator/pr.ml | |
parent | 11d655ab83211eb6808d32296cbbab31fc023aac (diff) | |
download | libguestfs-d331fd70e2c3ba2815460c8cd93a97eb9a81c6a5.tar.gz libguestfs-d331fd70e2c3ba2815460c8cd93a97eb9a81c6a5.tar.xz libguestfs-d331fd70e2c3ba2815460c8cd93a97eb9a81c6a5.zip |
generator: Rename 'generator_*' as '*'.
This is a simple renaming of the files/modules.
Note that in OCaml, module names are derived from filenames by
capitalizing the first letter. Thus the old module names had the form
"Generator_api_versions". The new modules names have the form
"Api_versions".
Diffstat (limited to 'generator/pr.ml')
-rw-r--r-- | generator/pr.ml | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/generator/pr.ml b/generator/pr.ml new file mode 100644 index 00000000..fd927206 --- /dev/null +++ b/generator/pr.ml @@ -0,0 +1,70 @@ +(* libguestfs + * Copyright (C) 2009-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 + *) + +(* Please read generator/README first. *) + +open Unix +open Printf + +open Utils + +(* Output channel, 'pr' prints to this. *) +let chan = ref Pervasives.stdout + +(* Number of lines generated. *) +let lines = ref 0 + +(* Name of each file generated. *) +let files = ref [] + +(* Print-to-current-output function, used everywhere. It has + * printf-like semantics. + *) +let pr fs = + ksprintf + (fun str -> + let i = count_chars '\n' str in + lines := !lines + i; + output_string !chan str + ) fs + +let output_to ?(perm = 0o444) filename k = + files := filename :: !files; + + let filename_new = filename ^ ".new" in + chan := open_out filename_new; + k (); + close_out !chan; + chan := Pervasives.stdout; + + (* Is the new file different from the current file? *) + if Sys.file_exists filename && files_equal filename filename_new then + unlink filename_new (* same, so skip it *) + else ( + (* different, overwrite old one *) + (try chmod filename 0o644 with Unix_error _ -> ()); + rename filename_new filename; + chmod filename perm; + printf "written %s\n%!" filename; + ) + +let get_lines_generated () = + !lines + +let get_files_generated () = + List.rev !files |