diff options
| author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-09-22 11:23:52 +0200 |
|---|---|---|
| committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-09-22 11:23:52 +0200 |
| commit | 6f2296c5ac808a50ca336b43235f91a9fc02347f (patch) | |
| tree | 93717923c9f3e66b64c2568d33526019d88aab69 /debian/patches/procfs-filesystems.patch | |
| parent | 1ca2f69fd0e5546f8da92ed48ac8e38d18fe1306 (diff) | |
new procfs patch series
Diffstat (limited to 'debian/patches/procfs-filesystems.patch')
| -rw-r--r-- | debian/patches/procfs-filesystems.patch | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/debian/patches/procfs-filesystems.patch b/debian/patches/procfs-filesystems.patch deleted file mode 100644 index cfa28db3..00000000 --- a/debian/patches/procfs-filesystems.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 4b30ee4249c752d935e1863365bef457a5389169 Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Thu, 18 Sep 2014 19:38:04 +0200 -Subject: [PATCH 2/2] procfs: implement /proc/filesystems - -* procfs/rootdir.c (rootdir_gc_filesystems): New function. -(rootdir_entries): Use the new function to implement /proc/filesystems. ---- - procfs/rootdir.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 60 insertions(+), 1 deletion(-) - -diff --git a/procfs/rootdir.c b/procfs/rootdir.c -index 0b13119..e500c3a 100644 ---- a/procfs/rootdir.c -+++ b/procfs/rootdir.c -@@ -1,5 +1,5 @@ - /* Hurd /proc filesystem, permanent files of the root directory. -- Copyright (C) 2010,13 Free Software Foundation, Inc. -+ Copyright (C) 2010,13,14 Free Software Foundation, Inc. - - This file is part of the GNU Hurd. - -@@ -32,6 +32,7 @@ - #include <sys/stat.h> - #include <argz.h> - #include <ps.h> -+#include <glob.h> - #include "procfs.h" - #include "procfs_dir.h" - #include "main.h" -@@ -535,6 +536,57 @@ rootdir_gc_slabinfo (void *hook, char **contents, ssize_t *contents_len) - cache_info, cache_info_count * sizeof *cache_info); - return err; - } -+ -+static error_t -+rootdir_gc_filesystems (void *hook, char **contents, ssize_t *contents_len) -+{ -+ error_t err = 0; -+ size_t i; -+ int glob_ret; -+ glob_t matches; -+ FILE *m; -+ -+ m = open_memstream (contents, contents_len); -+ if (m == NULL) -+ return errno; -+ -+ glob_ret = glob (_HURD "*fs", 0, NULL, &matches); -+ switch (glob_ret) -+ { -+ case 0: -+ for (i = 0; i < matches.gl_pathc; i++) -+ { -+ /* Get ith entry, shave off the prefix. */ -+ char *name = &matches.gl_pathv[i][sizeof _HURD - 1]; -+ -+ /* Linux naming convention is a bit inconsistent. */ -+ if (strncmp (name, "ext", 3) == 0 -+ || strcmp (name, "procfs") == 0) -+ /* Drop the fs suffix. */ -+ name[strlen (name) - 2] = 0; -+ -+ fprintf (m, "\t%s\n", name); -+ } -+ -+ globfree (&matches); -+ break; -+ -+ case GLOB_NOMATCH: -+ /* Poor fellow. */ -+ break; -+ -+ case GLOB_NOSPACE: -+ err = ENOMEM; -+ break; -+ -+ default: -+ /* This should not happen. */ -+ err = EGRATUITOUS; -+ } -+ -+ fclose (m); -+ return err; -+} - - /* Glue logic and entries table */ - -@@ -635,6 +687,13 @@ static const struct procfs_dir_entry rootdir_entries[] = { - .cleanup_contents = procfs_cleanup_contents_with_free, - }, - }, -+ { -+ .name = "filesystems", -+ .hook = & (struct procfs_node_ops) { -+ .get_contents = rootdir_gc_filesystems, -+ .cleanup_contents = procfs_cleanup_contents_with_free, -+ }, -+ }, - #ifdef PROFILE - /* In order to get a usable gmon.out file, we must apparently use exit(). */ - { --- -2.1.0 - |
