[PATCH] java: Don't try to set -source 1.5 in options.
by Richard W.M. Jones
There was some code in configure.ac dating back to 2009
(commit b9014d6a0da8b2b3a76c4ab51fab2773fe7480b2) which attempted to
add the javac option `-source 1.5'. I don't think this code ever
worked.
However, if -source 1.5 is added, then you get this warning:
warning: [options] bootstrap class path not set in conjunction with -source 1.5
warning: [options] source value 1.5 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
and that's very hard to reliably fix because you have to know somehow
a magic path. For more details, see:
https://blogs.oracle.com/darcy/entry/bootclasspath_older_source
https://blogs.oracle.com/darcy/entry/how_to_cross_compile_for
Anyway, remove the voodoo from configure.ac.
As a side effect, this allows you to set the EXTRA_JAVAC_FLAGS
environment variable before ./configure with any extra javac flags
that you want.
---
m4/guestfs_java.m4 | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/m4/guestfs_java.m4 b/m4/guestfs_java.m4
index 649e21f..82cdc40 100644
--- a/m4/guestfs_java.m4
+++ b/m4/guestfs_java.m4
@@ -123,16 +123,6 @@ if test "x$with_java" != "xno"; then
fi
AC_MSG_RESULT([$JNI_CFLAGS])
- dnl Need extra version flag?
- AC_MSG_CHECKING([extra javac flags])
- EXTRA_JAVAC_FLAGS=
- javac_version=`$JAVAC -version 2>&1`
- case "$javac_version" in
- *Eclipse*)
- EXTRA_JAVAC_FLAGS="-source 1.5" ;;
- esac
- AC_MSG_RESULT([$EXTRA_JAVAC_FLAGS])
-
dnl Extra lint flags?
AC_MSG_CHECKING([extra javac lint flags])
if $JAVAC -X >/dev/null 2>&1 && \
--
2.7.4
8 years, 3 months
[PATCH 0/3] New API: find_inode
by Matteo Cafasso
The find_inode API allows the User to search all the entries referring
to a given inode and returns a tsk_dirent structure for each of them.
As I didn't want to change unrelated code, there is a little bit
of code duplication at the moment. Plan is to refactor the logic
in a dedicated set of patches.
Matteo Cafasso (3):
New API: internal_find_inode
New API: find_inode
find_inode: added API tests
daemon/tsk.c | 75 ++++++++++++++++++++++++++++++++++++++++++++
generator/actions.ml | 21 +++++++++++++
src/MAX_PROC_NR | 2 +-
src/tsk.c | 26 +++++++++++++++
tests/tsk/Makefile.am | 3 +-
tests/tsk/test-find-inode.sh | 66 ++++++++++++++++++++++++++++++++++++++
6 files changed, 191 insertions(+), 2 deletions(-)
create mode 100755 tests/tsk/test-find-inode.sh
--
2.9.3
8 years, 3 months
[PATCH] inspection: Fix parsing of btrfs subvolumes in /etc/fstab.
by Richard W.M. Jones
The code to parse btrfs subvol entries in /etc/fstab failed if the
entry had more than one comma-separated option, for example:
/dev/sda4 /home btrfs rw,user,subvol=foo 0 0
This commit fixes that code to use Augeas correctly.
Fixes commit 7ba0e10501f23358c38939930d613bf2393d744d.
Reported by: Zhongfu Li
https://bugs.launchpad.net/ubuntu/+source/libguestfs/+bug/1615337
---
src/inspect-fs-unix.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/inspect-fs-unix.c b/src/inspect-fs-unix.c
index cc0e6b1..0c34701 100644
--- a/src/inspect-fs-unix.c
+++ b/src/inspect-fs-unix.c
@@ -1347,27 +1347,28 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs)
if (vfstype == NULL) return -1;
if (STREQ (vfstype, "btrfs")) {
- char **opt;
+ size_t i;
snprintf (augpath, sizeof augpath, "%s/opt", *entry);
CLEANUP_FREE_STRING_LIST char **opts = guestfs_aug_match (g, augpath);
if (opts == NULL) return -1;
- for (opt = opts; *opt; opt++) {
- CLEANUP_FREE char *optname = guestfs_aug_get (g, augpath);
+ for (i = 0; opts[i] != NULL; ++i) {
+ CLEANUP_FREE char *optname = NULL, *optvalue = NULL, *subvol = NULL;
+ char *old_mountable;
+
+ optname = guestfs_aug_get (g, opts[i]);
if (optname == NULL) return -1;
if (STREQ (optname, "subvol")) {
- CLEANUP_FREE char *subvol = NULL;
- char *new;
+ optvalue = safe_asprintf (g, "%s/value", opts[i]);
- snprintf (augpath, sizeof augpath, "%s/value", *opt);
- subvol = guestfs_aug_get (g, augpath);
+ subvol = guestfs_aug_get (g, optvalue);
if (subvol == NULL) return -1;
- new = safe_asprintf (g, "btrfsvol:%s/%s", mountable, subvol);
- free (mountable);
- mountable = new;
+ old_mountable = mountable;
+ mountable = safe_asprintf (g, "btrfsvol:%s/%s", mountable, subvol);
+ free (old_mountable);
}
}
}
--
2.7.4
8 years, 3 months
[PATCH] filesystem_walk: fixed root inode listing
by Matteo Cafasso
With the current implementation, the root inode of the given partition
is ignored.
The root inode is now reported. Its name will be a single dot '.'
reproducing the TSK API.
Signed-off-by: Matteo Cafasso <noxdafox(a)gmail.com>
---
daemon/tsk.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/daemon/tsk.c b/daemon/tsk.c
index dd368d7..4a0517b 100644
--- a/daemon/tsk.c
+++ b/daemon/tsk.c
@@ -114,9 +114,12 @@ fswalk_callback (TSK_FS_FILE *fsfile, const char *path, void *data)
struct guestfs_int_tsk_dirent dirent;
/* Ignore ./ and ../ */
- ret = TSK_FS_ISDOT (fsfile->name->name);
- if (ret != 0)
- return TSK_WALK_CONT;
+ if (TSK_FS_ISDOT (fsfile->name->name)) {
+ /* Root is represented as . */
+ if (fsfile->fs_info->root_inum != fsfile->name->meta_addr ||
+ strcmp (fsfile->name->name, "."))
+ return TSK_WALK_CONT;
+ }
/* Build the full relative path of the entry */
ret = asprintf (&fname, "%s%s", path, fsfile->name->name);
--
2.9.3
8 years, 3 months
[PATCH] v2v: Allow libvirt >= 2.1.0 to be used for Xen and vCenter conversions.
by Richard W.M. Jones
Libvirt >= 2.1.0 now allows you to open files which have a "json:"
QEMU pseudo-URL as backingfile, whereas previously it would fail hard
in this case (RHBZ#1134878).
When virt-v2v performs conversions from Xen (over SSH) or vCenter
(over HTTPS) it uses these pseudo-URLs as backingfiles. We had to
tell people to use LIBGUESTFS_BACKEND=direct to avoid libvirt in this
situation.
This commit narrows the check so it will now only print the error if
libvirt < 2.1.0 and LIBGUESTFS_BACKEND=direct is not set. Also the
error is modified to tell users they can either upgrade libvirt or set
LIBGUESTFS_BACKEND=direct to work around the problem.
Note there is not an easy way apart from checking the version number
of libvirt to tell if the json pseudo-URL is supported.
As a side-effect, this commit also prints the libvirt version number
in debugging output when virt-v2v starts up, which is sometimes useful
information for narrowing down bugs (it is in fact already printed by
libguestfs, so this is duplicate information, but it's a bit easier to
find when it's at the top of the debug).
Thanks: Peter Krempa.
---
v2v/domainxml-c.c | 38 ++++++++++++++++++++++++++++++++++++++
v2v/domainxml.ml | 3 +++
v2v/domainxml.mli | 4 ++++
v2v/input_libvirt_other.ml | 16 ++++++++++++----
v2v/input_libvirt_other.mli | 2 +-
v2v/input_libvirt_vcenter_https.ml | 2 +-
v2v/input_libvirt_xen_ssh.ml | 2 +-
v2v/v2v.ml | 12 ++++++++++++
8 files changed, 72 insertions(+), 7 deletions(-)
diff --git a/v2v/domainxml-c.c b/v2v/domainxml-c.c
index 3b00cad..eb6deab 100644
--- a/v2v/domainxml-c.c
+++ b/v2v/domainxml-c.c
@@ -487,6 +487,43 @@ v2v_domain_exists (value connv, value domnamev)
CAMLreturn (Val_bool (domain_exists));
}
+/* XXX This function is stuffed here for convenience (accessing
+ * libvirt), not because it belongs logically with the rest of the
+ * functions in this file.
+ */
+value
+v2v_libvirt_get_version (value unitv)
+{
+ CAMLparam1 (unitv);
+ CAMLlocal1 (rv);
+ int major, minor, release;
+ /* We have to assemble the error on the stack because a dynamic
+ * string couldn't be freed.
+ */
+ char errmsg[ERROR_MESSAGE_LEN];
+ unsigned long ver;
+ virErrorPtr err;
+
+ if (virGetVersion (&ver, NULL, NULL) == -1) {
+ err = virGetLastError ();
+ snprintf (errmsg, sizeof errmsg,
+ _("cannot get libvirt library version: %s"),
+ err->message);
+ caml_invalid_argument (errmsg);
+ }
+
+ major = ver / 1000000UL;
+ minor = ver / 1000UL % 1000UL;
+ release = ver % 1000UL;
+
+ rv = caml_alloc (3, 0);
+ Store_field (rv, 0, Val_int (major));
+ Store_field (rv, 1, Val_int (minor));
+ Store_field (rv, 2, Val_int (release));
+
+ CAMLreturn (rv);
+}
+
#else /* !HAVE_LIBVIRT */
#define NO_LIBVIRT(proto) \
@@ -501,5 +538,6 @@ NO_LIBVIRT (value v2v_pool_dumpxml (value connv, value poolv))
NO_LIBVIRT (value v2v_vol_dumpxml (value connv, value poolnamev, value volnamev))
NO_LIBVIRT (value v2v_capabilities (value connv, value unitv))
NO_LIBVIRT (value v2v_domain_exists (value connv, value domnamev))
+NO_LIBVIRT (value v2v_libvirt_get_version (value unitv))
#endif /* !HAVE_LIBVIRT */
diff --git a/v2v/domainxml.ml b/v2v/domainxml.ml
index af053a5..b9d547d 100644
--- a/v2v/domainxml.ml
+++ b/v2v/domainxml.ml
@@ -26,3 +26,6 @@ external vol_dumpxml : ?conn:string -> string -> string -> string = "v2v_vol_dum
external capabilities : ?conn:string -> unit -> string = "v2v_capabilities"
external domain_exists : ?conn:string -> string -> bool = "v2v_domain_exists"
+
+external libvirt_get_version : unit -> int * int * int
+ = "v2v_libvirt_get_version"
diff --git a/v2v/domainxml.mli b/v2v/domainxml.mli
index 17289bb..6d933e4 100644
--- a/v2v/domainxml.mli
+++ b/v2v/domainxml.mli
@@ -49,3 +49,7 @@ val domain_exists : ?conn:string -> string -> bool
the libvirt XML domain [dom] exists.
The optional [?conn] parameter is the libvirt connection URI.
[dom] may be a guest name, but not a UUID. *)
+
+val libvirt_get_version : unit -> int * int * int
+(** [libvirt_get_version] returns the triple [(major, minor, release)]
+ version number of the libvirt library that we are linked against. *)
diff --git a/v2v/input_libvirt_other.ml b/v2v/input_libvirt_other.ml
index 6fd8d52..b2f3dc0 100644
--- a/v2v/input_libvirt_other.ml
+++ b/v2v/input_libvirt_other.ml
@@ -24,13 +24,21 @@ open Common_utils
open Types
open Utils
-(* Check the backend is not libvirt. Works around a libvirt bug
- * (RHBZ#1134592). This can be removed once the libvirt bug is fixed.
+(* Libvirt < 2.1.0 did not support the "json:" pseudo-URLs that
+ * we use as backingfiles, when accessing Xen over SSH or vCenter
+ * over HTTPS. Check this and print a workaround.
+ *
+ * We can remove this when/if we ever require libvirt >= 2.1.0 as
+ * a minimum version.
+ *
+ * See also RHBZ#1134878.
*)
-let error_if_libvirt_backend () =
+let error_if_libvirt_does_not_support_json_backingfile () =
let libguestfs_backend = (open_guestfs ())#get_backend () in
if libguestfs_backend = "libvirt" then (
- error (f_"because of libvirt bug https://bugzilla.redhat.com/show_bug.cgi?id=1134592 you must set this environment variable:\n\nexport LIBGUESTFS_BACKEND=direct\n\nand then rerun the virt-v2v command.")
+ let major, minor, _ = Domainxml.libvirt_get_version () in
+ if major < 2 || (major = 2 && minor < 1) then
+ error (f_"because of libvirt bug https://bugzilla.redhat.com/1134878 you must EITHER upgrade to libvirt >= 2.1.0, OR set this environment variable:\n\nexport LIBGUESTFS_BACKEND=direct\n\nand then rerun the virt-v2v command.")
)
(* xen+ssh URLs use the SSH driver in CURL. Currently this requires
diff --git a/v2v/input_libvirt_other.mli b/v2v/input_libvirt_other.mli
index 22cc21c..5b97f2f 100644
--- a/v2v/input_libvirt_other.mli
+++ b/v2v/input_libvirt_other.mli
@@ -18,7 +18,7 @@
(** [-i libvirt] source. *)
-val error_if_libvirt_backend : unit -> unit
+val error_if_libvirt_does_not_support_json_backingfile : unit -> unit
val error_if_no_ssh_agent : unit -> unit
class virtual input_libvirt : string option -> string option -> string -> object
diff --git a/v2v/input_libvirt_vcenter_https.ml b/v2v/input_libvirt_vcenter_https.ml
index 137f3d3..bcedf3f 100644
--- a/v2v/input_libvirt_vcenter_https.ml
+++ b/v2v/input_libvirt_vcenter_https.ml
@@ -45,7 +45,7 @@ object
debug "input_libvirt_vcenter_https: source: scheme %s server %s"
scheme server;
- error_if_libvirt_backend ();
+ error_if_libvirt_does_not_support_json_backingfile ();
(* Get the libvirt XML. This also checks (as a side-effect)
* that the domain is not running. (RHBZ#1138586)
diff --git a/v2v/input_libvirt_xen_ssh.ml b/v2v/input_libvirt_xen_ssh.ml
index 310b38b..f9adc58 100644
--- a/v2v/input_libvirt_xen_ssh.ml
+++ b/v2v/input_libvirt_xen_ssh.ml
@@ -38,7 +38,7 @@ object
debug "input_libvirt_xen_ssh: source: scheme %s server %s"
scheme server;
- error_if_libvirt_backend ();
+ error_if_libvirt_does_not_support_json_backingfile ();
error_if_no_ssh_agent ();
(* Get the libvirt XML. This also checks (as a side-effect)
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
index ccd369c..39054f7 100644
--- a/v2v/v2v.ml
+++ b/v2v/v2v.ml
@@ -44,6 +44,18 @@ let rec main () =
prog Guestfs_config.package_name
Guestfs_config.package_version Guestfs_config.host_cpu;
+ (* Print the libvirt version if debugging. Note that if
+ * we're configured --without-libvirt, then this will throw
+ * an exception, but some conversions should still be possible,
+ * hence the try block.
+ *)
+ if verbose () then (
+ try
+ let major, minor, release = Domainxml.libvirt_get_version () in
+ debug "libvirt version: %d.%d.%d" major minor release
+ with _ -> ()
+ );
+
let source = open_source cmdline input in
let source = amend_source cmdline source in
--
2.7.4
8 years, 3 months
[PATCH 0/2] v2v:windows: prevent conflicts with PnP on firstboot
by Roman Kagan
Wait for driver installations fired by the PnP manager to complete
before running firstboot scripts.
The first patch is a minor refactoring to pave the way for the second
patch. The latter contains the bulk of the changes as well as the
description of the idea.
Roman Kagan (2):
v2v:windows: factor out getting CurrentControlSet
v2v:windows: prevent conflicts with PnP on firstboot
v2v/convert_windows.ml | 109 +++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 101 insertions(+), 8 deletions(-)
--
2.7.4
8 years, 3 months
[PATCH] mllib: do not assume $PATH is set
by Pino Toscano
Make 'which' gracefully handle the case where $PATH is not set
(it will raise Executable_not_found, but that is the expected thing to
do).
Related to RHBZ#1367839.
---
mllib/common_utils.ml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml
index fdca713..9210cf8 100644
--- a/mllib/common_utils.ml
+++ b/mllib/common_utils.ml
@@ -319,7 +319,9 @@ let protect ~f ~finally =
match r with Either ret -> ret | Or exn -> raise exn
let which executable =
- let paths = String.nsplit ":" (Sys.getenv "PATH") in
+ let paths =
+ try String.nsplit ":" (Sys.getenv "PATH")
+ with Not_found -> [] in
let paths = filter_map (
fun p ->
let path = p // executable in
--
2.7.4
8 years, 3 months
[PATCH v2 0/4] New getprogname module
by Pino Toscano
Hi,
as discussed in [1], this series adds a new getprogname module.
All it does is providing a getprogname function, much like what is
found on e.g. *BSD systems, and using it in gnulib instead of progname.
Also, using it explicitly by modules avoids gnulib users the need of
either use the progname module (GPL), or to provide program_name (and
call set_program_name manually, which is not always doable).
Caveat: the progname is left as it is, so set_program_name will still
affect program_name but not what error will use.
(Please note it's my first big patch to gnulib, so bear with me for
anything wrong/missing.)
[1] http://lists.gnu.org/archive/html/bug-gnulib/2016-03/msg00048.html
Changes from v1:
- rebased, updating ChangeLog date
Pino Toscano (4):
getprogname: new module
Port modules to use getprogname explicitly
Port tests away from progname
main.mk: remove sc_program_name
ChangeLog | 162 +++++++++++++++++++++++++++++++++++
cfg.mk | 1 -
lib/argmatch.c | 12 +--
lib/c-stack.c | 5 +-
lib/chdir-long.c | 3 -
lib/error.c | 6 +-
lib/euidaccess.c | 3 -
lib/getprogname.c | 45 ++++++++++
lib/getprogname.h | 34 ++++++++
lib/git-merge-changelog.c | 11 +--
lib/group-member.c | 4 -
m4/getprogname.m4 | 13 +++
modules/acl-tests | 1 -
modules/argmatch-tests | 1 -
modules/argp-tests | 1 -
modules/argp-version-etc-tests | 1 -
modules/array-list-tests | 1 -
modules/array-oset-tests | 1 -
modules/avltree-list-tests | 1 -
modules/avltree-oset-tests | 1 -
modules/avltreehash-list-tests | 1 -
modules/c-stack | 1 +
modules/carray-list-tests | 1 -
modules/copy-file-tests | 1 -
modules/error | 1 +
modules/exclude-tests | 1 -
modules/fchownat-tests | 1 -
modules/fdopendir-tests | 1 -
modules/filenamecat-tests | 1 -
modules/fstatat-tests | 1 -
modules/fstrcmp-tests | 1 -
modules/getprogname | 28 ++++++
modules/git-merge-changelog | 2 +-
modules/linked-list-tests | 1 -
modules/linkedhash-list-tests | 1 -
modules/mkdirat-tests | 1 -
modules/nonblocking-pipe-tests | 1 -
modules/nonblocking-socket-tests | 1 -
modules/obstack-printf-tests | 1 -
modules/openat-tests | 1 -
modules/parse-datetime-tests | 1 -
modules/pipe-filter-gi-tests | 1 -
modules/pipe-filter-ii-tests | 1 -
modules/quotearg-simple-tests | 1 -
modules/quotearg-tests | 1 -
modules/rbtree-list-tests | 1 -
modules/rbtree-oset-tests | 1 -
modules/rbtreehash-list-tests | 1 -
modules/spawn-pipe-tests | 1 -
modules/system-quote-tests | 1 -
modules/uniname/uniname-tests | 1 -
modules/uninorm/nfc-tests | 1 -
modules/uninorm/nfd-tests | 1 -
modules/uninorm/nfkc-tests | 1 -
modules/uninorm/nfkd-tests | 1 -
modules/unistdio/u16-vsnprintf-tests | 1 -
modules/unistdio/u16-vsprintf-tests | 1 -
modules/unistdio/u32-vsnprintf-tests | 1 -
modules/unistdio/u32-vsprintf-tests | 1 -
modules/unistdio/u8-vsnprintf-tests | 1 -
modules/unistdio/u8-vsprintf-tests | 1 -
modules/unistdio/ulc-vsnprintf-tests | 1 -
modules/unistdio/ulc-vsprintf-tests | 1 -
modules/unlinkat-tests | 1 -
modules/version-etc-tests | 1 -
modules/xalloc-die-tests | 1 -
modules/xmemdup0-tests | 1 -
modules/xprintf-posix-tests | 1 -
modules/xvasprintf-tests | 1 -
tests/test-argmatch.c | 3 -
tests/test-argp-version-etc.c | 2 -
tests/test-argp.c | 3 -
tests/test-argv-iter.c | 1 -
tests/test-array_list.c | 3 -
tests/test-array_oset.c | 3 -
tests/test-avltree_list.c | 3 -
tests/test-avltree_oset.c | 3 -
tests/test-avltreehash_list.c | 3 -
tests/test-c-stack.c | 3 -
tests/test-carray_list.c | 3 -
tests/test-closein.c | 3 -
tests/test-copy-acl.c | 3 -
tests/test-copy-file.c | 3 -
tests/test-exclude.c | 3 -
tests/test-fchownat.c | 3 -
tests/test-fdopendir.c | 3 -
tests/test-filenamecat.c | 3 -
tests/test-fstatat.c | 3 -
tests/test-fstrcmp.c | 3 -
tests/test-linked_list.c | 3 -
tests/test-linkedhash_list.c | 3 -
tests/test-mkdirat.c | 3 -
tests/test-nonblocking-pipe-main.c | 3 -
tests/test-nonblocking-socket-main.c | 3 -
tests/test-obstack-printf.c | 3 -
tests/test-openat.c | 3 -
tests/test-parse-datetime.c | 3 -
tests/test-pipe-filter-gi1.c | 3 -
tests/test-pipe-filter-gi2-main.c | 3 -
tests/test-pipe-filter-ii1.c | 3 -
tests/test-pipe-filter-ii2-main.c | 3 -
tests/test-quotearg-simple.c | 3 -
tests/test-quotearg.c | 3 -
tests/test-rbtree_list.c | 3 -
tests/test-rbtree_oset.c | 3 -
tests/test-rbtreehash_list.c | 3 -
tests/test-sameacls.c | 3 -
tests/test-set-mode-acl.c | 3 -
tests/test-spawn-pipe-main.c | 3 -
tests/test-system-quote-main.c | 3 -
tests/test-unlinkat.c | 3 -
tests/test-version-etc.c | 2 -
tests/test-xalloc-die.c | 2 -
tests/test-xfprintf-posix.c | 3 -
tests/test-xmemdup0.c | 3 -
tests/test-xprintf-posix.c | 3 -
tests/test-xstrtol.c | 3 -
tests/test-xvasprintf.c | 3 -
tests/test-yesno.c | 3 -
tests/uniname/test-uninames.c | 3 -
tests/uninorm/test-u32-nfc-big.c | 2 -
tests/uninorm/test-u32-nfd-big.c | 2 -
tests/uninorm/test-u32-nfkc-big.c | 2 -
tests/uninorm/test-u32-nfkd-big.c | 2 -
tests/unistdio/test-u16-vsnprintf1.c | 3 -
tests/unistdio/test-u16-vsprintf1.c | 3 -
tests/unistdio/test-u32-vsnprintf1.c | 3 -
tests/unistdio/test-u32-vsprintf1.c | 3 -
tests/unistdio/test-u8-vsnprintf1.c | 3 -
tests/unistdio/test-u8-vsprintf1.c | 3 -
tests/unistdio/test-ulc-vsnprintf1.c | 3 -
tests/unistdio/test-ulc-vsprintf1.c | 3 -
top/maint.mk | 9 --
133 files changed, 297 insertions(+), 276 deletions(-)
create mode 100644 lib/getprogname.c
create mode 100644 lib/getprogname.h
create mode 100644 m4/getprogname.m4
create mode 100644 modules/getprogname
--
2.7.4
8 years, 3 months