[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[hurd] 01/06: procfs: provide magic retry response for /proc/self
From: |
Samuel Thibault |
Subject: |
[hurd] 01/06: procfs: provide magic retry response for /proc/self |
Date: |
Mon, 02 Jan 2017 19:59:54 +0000 |
This is an automated email from the git hooks/post-receive script.
sthibault pushed a commit to branch upstream
in repository hurd.
commit b2c97e251bb470e6f967c716081675a96dbde59c
Author: Justus Winter <address@hidden>
Date: Mon Dec 19 02:13:06 2016 +0100
procfs: provide magic retry response for /proc/self
* hurd/hurd_types.h: Document the magic retry string `pid'.
* hurd/paths.h (_HURD_MAGIC): New macro.
* procfs/main.c: Remove all code related to faking /proc/self.
* procfs/main.h: Likewise.
* procfs/rootdir.c: Likewise. Instead, return the magic retry
response `pid' for the `self' node.
---
hurd/hurd_types.h | 3 +++
hurd/paths.h | 1 +
procfs/main.c | 24 ------------------------
procfs/main.h | 1 -
procfs/rootdir.c | 23 ++++-------------------
5 files changed, 8 insertions(+), 44 deletions(-)
diff --git a/hurd/hurd_types.h b/hurd/hurd_types.h
index 4341177..2960a29 100644
--- a/hurd/hurd_types.h
+++ b/hurd/hurd_types.h
@@ -114,6 +114,9 @@ enum retry_type
as for FS_RETRY_NORMAL.
"/..." means retry "...", but starting from the users root directory.
+
+ "pid/..." means replace `pid' with the PID of the current process in %u
+ format and then retry as for FS_RETRY_NORMAL.
*/
};
typedef enum retry_type retry_type;
diff --git a/hurd/paths.h b/hurd/paths.h
index a13ba9b..e1b00e9 100644
--- a/hurd/paths.h
+++ b/hurd/paths.h
@@ -54,6 +54,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA
02139, USA. */
#define _HURD_IFSOCK _HURD "ifsock" /* S_IFSOCK */
/* Symbolic names for all non-essential translators. */
+#define _HURD_MAGIC _HURD "magic"
#define _HURD_MTAB _HURD "mtab"
#endif /* hurd/paths.h */
diff --git a/procfs/main.c b/procfs/main.c
index 857eac4..87c726f 100644
--- a/procfs/main.c
+++ b/procfs/main.c
@@ -35,14 +35,12 @@
/* Command-line options */
int opt_clk_tck;
mode_t opt_stat_mode;
-pid_t opt_fake_self;
pid_t opt_kernel_pid;
uid_t opt_anon_owner;
/* Default values */
#define OPT_CLK_TCK sysconf(_SC_CLK_TCK)
#define OPT_STAT_MODE 0400
-#define OPT_FAKE_SELF -1
#define OPT_KERNEL_PID HURD_PID_KERNEL
#define OPT_ANON_OWNER 0
@@ -54,7 +52,6 @@ static void set_compatibility_options (void)
{
opt_clk_tck = 100;
opt_stat_mode = 0444;
- opt_fake_self = 1;
}
static error_t
@@ -82,19 +79,6 @@ argp_parser (int key, char *arg, struct argp_state *state)
opt_stat_mode = v;
break;
- case 'S':
- if (arg)
- {
- v = strtol (arg, &endp, 0);
- if (*endp || ! *arg)
- argp_error (state, "--fake-self: PID must be an integer");
- else
- opt_fake_self = v;
- }
- else
- opt_fake_self = 1;
- break;
-
case 'k':
v = strtol (arg, &endp, 0);
if (*endp || ! *arg || (signed) opt_kernel_pid < 0)
@@ -160,10 +144,6 @@ struct argp_option common_options[] = {
"You can use this option to override its mode to be more permissive "
"for compatibility purposes. "
"(default: " STR (OPT_STAT_MODE) ")" },
- { "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 retrieve its command "
"line, as well as the global up and idle times. "
@@ -259,9 +239,6 @@ netfs_append_args (char **argz, size_t *argz_len)
FOPT (opt_stat_mode, OPT_STAT_MODE,
"--stat-mode=%o", opt_stat_mode);
- FOPT (opt_fake_self, OPT_FAKE_SELF,
- "--fake-self=%d", opt_fake_self);
-
FOPT (opt_anon_owner, OPT_ANON_OWNER,
"--anonymous-owner=%d", opt_anon_owner);
@@ -315,7 +292,6 @@ int main (int argc, char **argv)
opt_clk_tck = OPT_CLK_TCK;
opt_stat_mode = OPT_STAT_MODE;
- opt_fake_self = OPT_FAKE_SELF;
opt_kernel_pid = OPT_KERNEL_PID;
opt_anon_owner = OPT_ANON_OWNER;
err = argp_parse (&argp, argc, argv, 0, 0, 0);
diff --git a/procfs/main.h b/procfs/main.h
index 4e28b7e..051db95 100644
--- a/procfs/main.h
+++ b/procfs/main.h
@@ -20,6 +20,5 @@
/* Startup options */
extern int opt_clk_tck;
extern mode_t opt_stat_mode;
-extern pid_t opt_fake_self;
extern pid_t opt_kernel_pid;
extern uid_t opt_anon_owner;
diff --git a/procfs/rootdir.c b/procfs/rootdir.c
index 748805e..4f4a142 100644
--- a/procfs/rootdir.c
+++ b/procfs/rootdir.c
@@ -416,19 +416,7 @@ out:
return err;
}
-static int
-rootdir_fakeself_exists (void *dir_hook, const void *entry_hook)
-{
- return opt_fake_self >= 0;
-}
-
-static error_t
-rootdir_gc_fakeself (void *hook, char **contents, ssize_t *contents_len)
-{
- *contents_len = asprintf (contents, "%d", opt_fake_self);
- return 0;
-}
-
+static struct node *rootdir_self_node;
static struct node *rootdir_mounts_node;
static error_t
@@ -694,13 +682,10 @@ rootdir_translated_node_get_translator (void *hook, char
**argz,
static const struct procfs_dir_entry rootdir_entries[] = {
{
.name = "self",
- .hook = & (struct procfs_node_ops) {
- .get_contents = rootdir_gc_fakeself,
- .cleanup_contents = procfs_cleanup_contents_with_free,
- },
+ .hook = ROOTDIR_DEFINE_TRANSLATED_NODE (&rootdir_self_node,
+ _HURD_MAGIC "\0pid"),
.ops = {
- .make_node = rootdir_symlink_make_node,
- .exists = rootdir_fakeself_exists,
+ .make_node = rootdir_make_translated_node,
}
},
{
--
Alioth's /usr/local/bin/git-commit-notice on
/srv/git.debian.org/git/pkg-hurd/hurd.git
- [hurd] branch upstream updated (5add1f4 -> 1320458), Samuel Thibault, 2017/01/02
- [hurd] 05/06: Revert "libnetfs: remove unused fields.", Samuel Thibault, 2017/01/02
- [hurd] 03/06: mach-defpager: make the default pager use vm_wire_all, Samuel Thibault, 2017/01/02
- [hurd] 04/06: mach-defpager: fix pager leak, Samuel Thibault, 2017/01/02
- [hurd] 01/06: procfs: provide magic retry response for /proc/self,
Samuel Thibault <=
- [hurd] 02/06: libps: Fix time comparison, Samuel Thibault, 2017/01/02
- [hurd] 06/06: Fix libports dependencies, Samuel Thibault, 2017/01/02