summaryrefslogtreecommitdiff
path: root/debian/patches/procfs-update.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/procfs-update.patch')
-rw-r--r--debian/patches/procfs-update.patch131
1 files changed, 131 insertions, 0 deletions
diff --git a/debian/patches/procfs-update.patch b/debian/patches/procfs-update.patch
new file mode 100644
index 00000000..fc5cb4a7
--- /dev/null
+++ b/debian/patches/procfs-update.patch
@@ -0,0 +1,131 @@
+Split the argument handling into a common part and one for
+fsys_update_options. Handle the --update parameter; for procfs this is
+a no-op.
+
+* procfs/main.c (common_options): New variable.
+(runtime_argp_parser): Handle --update.
+(startup_argp): New variable.
+(netfs_runtime_argp_): New variable.
+---
+ procfs/main.c | 93 ++++++++++++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 65 insertions(+), 28 deletions(-)
+
+diff --git a/procfs/main.c b/procfs/main.c
+index 1b19c01..ba74e87 100644
+--- a/procfs/main.c
++++ b/procfs/main.c
+@@ -109,45 +109,82 @@ argp_parser (int key, char *arg, struct argp_state *state)
+ return 0;
+ }
+
++struct argp_option common_options[] = {
++ { "clk-tck", 'h', "HZ", 0,
++ "Unit used for the values expressed in system clock ticks "
++ "(default: sysconf(_SC_CLK_TCK))" },
++ { "stat-mode", 's', "MODE", 0,
++ "The [pid]/stat file publishes information which on Hurd is only "
++ "available to the process owner. "
++ "You can use this option to override its mode to be more permissive "
++ "for compatibility purposes. "
++ "(default: 0400)" },
++ { "fake-self", 'S', "PID", OPTION_ARG_OPTIONAL,
++ "Provide a fake \"self\" symlink to the given PID, for compatibility "
++ "purposes. If PID is omitted, \"self\" will point to init. "
++ "(default: no self link)" },
++ { "kernel-process", 'k', "PID", 0,
++ "Process identifier for the kernel, used to retreive its command "
++ "line, as well as the global up and idle times. "
++ "(default: 2)" },
++ { "compatible", 'c', NULL, 0,
++ "Try to be compatible with the Linux procps utilities. "
++ "Currently equivalent to -h 100 -s 0444 -S 1." },
++ { "anonymous-owner", 'a', "USER", 0,
++ "Make USER the owner of files related to processes without one. "
++ "Be aware that USER will be granted access to the environment and "
++ "other sensitive information about the processes in question. "
++ "(default: use uid 0)" },
++ {}
++};
++
+ struct argp argp = {
+- .options = (struct argp_option []) {
+- { "clk-tck", 'h', "HZ", 0,
+- "Unit used for the values expressed in system clock ticks "
+- "(default: sysconf(_SC_CLK_TCK))" },
+- { "stat-mode", 's', "MODE", 0,
+- "The [pid]/stat file publishes information which on Hurd is only "
+- "available to the process owner. "
+- "You can use this option to override its mode to be more permissive "
+- "for compatibility purposes. "
+- "(default: 0400)" },
+- { "fake-self", 'S', "PID", OPTION_ARG_OPTIONAL,
+- "Provide a fake \"self\" symlink to the given PID, for compatibility "
+- "purposes. If PID is omitted, \"self\" will point to init. "
+- "(default: no self link)" },
+- { "kernel-process", 'k', "PID", 0,
+- "Process identifier for the kernel, used to retreive its command "
+- "line, as well as the global up and idle times. "
+- "(default: 2)" },
+- { "compatible", 'c', NULL, 0,
+- "Try to be compatible with the Linux procps utilities. "
+- "Currently equivalent to -h 100 -s 0444 -S 1." },
+- { "anonymous-owner", 'a', "USER", 0,
+- "Make USER the owner of files related to processes without one. "
+- "Be aware that USER will be granted access to the environment and "
+- "other sensitive information about the processes in question. "
+- "(default: use uid 0)" },
++ .options = common_options,
++ .parser = argp_parser,
++ .doc = "A virtual filesystem emulating the Linux procfs.",
++ .children = (struct argp_child []) {
++ { &netfs_std_startup_argp, },
+ {}
+ },
++};
++
++static error_t
++runtime_argp_parser (int key, char *arg, struct argp_state *state)
++{
++ switch (key)
++ {
++ case 'u':
++ /* do nothing */
++ break;
++
++ default:
++ return ARGP_ERR_UNKNOWN;
++ }
++
++ return 0;
++}
++
++struct argp runtime_argp = {
++ .options = (struct argp_option []) {
++ { "update", 'u', NULL, 0, "remount; for procfs this does nothing" },
++ {},
++ },
++ .parser = runtime_argp_parser,
++};
++
++struct argp netfs_runtime_argp_ = {
++ .options = common_options,
+ .parser = argp_parser,
+ .doc = "A virtual filesystem emulating the Linux procfs.",
+ .children = (struct argp_child []) {
+- { &netfs_std_startup_argp, },
++ { &runtime_argp, },
++ { &netfs_std_runtime_argp, },
+ {}
+ },
+ };
+
+ /* Used by netfs_set_options to handle runtime option parsing. */
+-struct argp *netfs_runtime_argp = &argp;
++struct argp *netfs_runtime_argp = &netfs_runtime_argp_;
+
+ error_t
+ root_make_node (struct ps_context *pc, struct node **np)
+--
+1.7.10.4
+
+