commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 10/23: trans/magic: convert to trivfs dynamic classes and buckets


From: Samuel Thibault
Subject: [hurd] 10/23: trans/magic: convert to trivfs dynamic classes and buckets
Date: Tue, 13 Oct 2015 00:09:55 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit 580eeae985138272dc0f8c24d1e7f470e31fbcc3
Author: Justus Winter <address@hidden>
Date:   Sun Sep 27 23:35:26 2015 +0200

    trans/magic: convert to trivfs dynamic classes and buckets
    
    libtrivfs contains two ways of managing more than one port class and
    bucket.  There is the old way of using a statically allocated array
    with explicit length, and the new way with dynamically allocated
    vectors.
    
    Converting all users to the new way of handling multiple classes
    and/or buckets, we can simplify the code in libtrivfs.  In many cases,
    the code will be simpler and more expressive for the user.
    
    This also fixes a severe bug.  As no classes are given to
    `trivfs_startup', they are created and inserted into the dynamic
    vector of classes.  The server function `trivfs_S_fsys_forward',
    however, used the first item of the previously used static array,
    which is NULL.  This circumvented the typecheck.
    
    * trans/magic.c: Convert to dynamic classes and buckets.
---
 trans/magic.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/trans/magic.c b/trans/magic.c
index 5808483..a033db9 100644
--- a/trans/magic.c
+++ b/trans/magic.c
@@ -74,6 +74,9 @@ static struct trivfs_control *all_fsys;
 
 /* Trivfs hooks  */
 
+/* Our port class.  */
+struct port_class *trivfs_protid_class;
+
 int trivfs_fstype = FSTYPE_DEV;
 int trivfs_fsid = 0;
 
@@ -480,8 +483,12 @@ main (int argc, char **argv)
   if (m->directory)
     trivfs_peropen_destroy_hook = &magic_peropen_destroy;
 
+  err = trivfs_add_protid_port_class (&trivfs_protid_class);
+  if (err)
+    error (1, 0, "error creating protid port class");
+
   /* Reply to our parent */
-  err = trivfs_startup (bootstrap, 0, 0, 0, 0, 0, &fsys);
+  err = trivfs_startup (bootstrap, 0, 0, 0, trivfs_protid_class, 0, &fsys);
   mach_port_deallocate (mach_task_self (), bootstrap);
   if (err)
     error (3, err, "Contacting parent");
@@ -521,8 +528,7 @@ trivfs_S_fsys_forward (mach_port_t server,
                       char *argz, size_t argz_len)
 {
   struct trivfs_protid *cred
-    = ports_lookup_port (all_fsys->pi.bucket, server,
-                        trivfs_protid_portclasses[0]);
+    = ports_lookup_port (all_fsys->pi.bucket, server, trivfs_protid_class);
   if (!cred)
     return EOPNOTSUPP;
   ports_port_deref (cred);
@@ -547,8 +553,8 @@ trivfs_S_fsys_forward (mach_port_t server,
   /* Now we are ready to start up the filesystem.  Contact the parent.  */
   struct trivfs_control *fsys;
   err = trivfs_startup (requestor, 0,
-                       trivfs_cntl_portclasses[0], all_fsys->pi.bucket,
-                       trivfs_protid_portclasses[0], all_fsys->pi.bucket,
+                       NULL, all_fsys->pi.bucket,
+                       NULL, all_fsys->pi.bucket,
                        &fsys);
   if (err)
     {

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]