diff options
Diffstat (limited to 'debian/patches/gpg0003-utils-settrans-add-option-to-specify-the-underlying-.patch')
-rw-r--r-- | debian/patches/gpg0003-utils-settrans-add-option-to-specify-the-underlying-.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/debian/patches/gpg0003-utils-settrans-add-option-to-specify-the-underlying-.patch b/debian/patches/gpg0003-utils-settrans-add-option-to-specify-the-underlying-.patch new file mode 100644 index 00000000..bcc8b06e --- /dev/null +++ b/debian/patches/gpg0003-utils-settrans-add-option-to-specify-the-underlying-.patch @@ -0,0 +1,71 @@ +From 6ff6261bb8b2bcf419689fdae4b68f6114f014a3 Mon Sep 17 00:00:00 2001 +From: Justus Winter <justus@gnupg.org> +Date: Thu, 24 Mar 2016 20:45:01 +0100 +Subject: [PATCH hurd 3/6] utils/settrans: add option to specify the underlying + node + +* utils/settrans.c (options): Add '--underlying'. +(main): Handle new option. +(open_node): Open the node if given. +--- + utils/settrans.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +diff --git a/utils/settrans.c b/utils/settrans.c +index 399bd12..e01906b 100644 +--- a/utils/settrans.c ++++ b/utils/settrans.c +@@ -64,6 +64,8 @@ static struct argp_option options[] = + {"exclusive", 'x', 0, 0, "Only set the translator if there is not one already"}, + {"orphan", 'o', 0, 0, "Disconnect old translator from the filesystem " + "(do not ask it to go away)"}, ++ {"underlying", 'U', "NODE", 0, "Open NODE and hand it to the translator " ++ "as the underlying node"}, + + {"chroot", 'C', 0, 0, + "Instead of setting the node's translator, take following arguments up to" +@@ -157,6 +159,7 @@ main(int argc, char *argv[]) + char *pid_file = NULL; + int excl = 0; + int timeout = DEFAULT_TIMEOUT * 1000; /* ms */ ++ char *underlying_node_name = NULL; + char **chroot_command = 0; + char *chroot_chdir = "/"; + +@@ -202,6 +205,11 @@ main(int argc, char *argv[]) + break; + + case 'o': orphan = 1; break; ++ case 'U': ++ underlying_node_name = strdup (arg); ++ if (underlying_node_name == NULL) ++ error(3, ENOMEM, "Failed to duplicate argument"); ++ break; + + case 'C': + if (chroot_command) +@@ -330,7 +338,20 @@ main(int argc, char *argv[]) + return open_err; + } + +- *underlying = node; ++ if (underlying_node_name) ++ { ++ *underlying = file_name_lookup (underlying_node_name, ++ flags | lookup_flags, 0666); ++ if (! MACH_PORT_VALID (*underlying)) ++ { ++ /* For the error message. */ ++ node_name = underlying_node_name; ++ open_err = errno; ++ return open_err; ++ } ++ } ++ else ++ *underlying = node; + *underlying_type = MACH_MSG_TYPE_COPY_SEND; + + return 0; +-- +2.1.4 + |