diff options
6 files changed, 0 insertions, 1225 deletions
diff --git a/debian/patches/fs_unification0001-libfshelp-pass-cookie-to-the-callback-function.patch b/debian/patches/fs_unification0001-libfshelp-pass-cookie-to-the-callback-function.patch deleted file mode 100644 index b6bee27c..00000000 --- a/debian/patches/fs_unification0001-libfshelp-pass-cookie-to-the-callback-function.patch +++ /dev/null @@ -1,30 +0,0 @@ -From c220ebb1de81ae4ee21943b7e2d81b9a45d28e53 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@gnupg.org> -Date: Wed, 20 Apr 2016 16:42:02 +0200 -Subject: [PATCH hurd 1/5] libfshelp: pass cookie to the callback function - -Previously, NULL was passed as cookie. That notably caused some -'peropen' objects to be created without context. - -* libfshelp/fetch-root.c (fshelp_fetch_root): Pass cookie to the -callback function. ---- - libfshelp/fetch-root.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libfshelp/fetch-root.c b/libfshelp/fetch-root.c -index cc9fa50..eb0f315 100644 ---- a/libfshelp/fetch-root.c -+++ b/libfshelp/fetch-root.c -@@ -134,7 +134,7 @@ fshelp_fetch_root (struct transbox *box, void *cookie, - - fds[STDERR_FILENO] = reauth (getdport (STDERR_FILENO)); - -- err = fshelp_start_translator_long (fetch_underlying, NULL, -+ err = fshelp_start_translator_long (fetch_underlying, cookie, - argz, argz, argz_len, - fds, MACH_MSG_TYPE_COPY_SEND, - STDERR_FILENO + 1, --- -2.1.4 - diff --git a/debian/patches/fs_unification0002-libnetfs-rename-error-to-err.patch b/debian/patches/fs_unification0002-libnetfs-rename-error-to-err.patch deleted file mode 100644 index 7503f1c5..00000000 --- a/debian/patches/fs_unification0002-libnetfs-rename-error-to-err.patch +++ /dev/null @@ -1,259 +0,0 @@ -From eac2e69368d4380eeae9bae285ed8f97a19cd528 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@gnupg.org> -Date: Mon, 18 Apr 2016 19:00:31 +0200 -Subject: [PATCH hurd 2/5] libnetfs: rename 'error' to 'err' - -* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Rename 'error' to 'err'. ---- - libnetfs/dir-lookup.c | 92 +++++++++++++++++++++++++-------------------------- - 1 file changed, 46 insertions(+), 46 deletions(-) - -diff --git a/libnetfs/dir-lookup.c b/libnetfs/dir-lookup.c -index cbe2941..9a92c29 100644 ---- a/libnetfs/dir-lookup.c -+++ b/libnetfs/dir-lookup.c -@@ -48,7 +48,7 @@ netfs_S_dir_lookup (struct protid *diruser, - struct node *dnp, *np; - char *nextname; - char *relpath; -- error_t error; -+ error_t err; - struct protid *newpi = NULL; - struct iouser *user; - -@@ -132,7 +132,7 @@ netfs_S_dir_lookup (struct protid *diruser, - strcpy (retry_name, "/"); - else if (!lastcomp) - strcpy (retry_name, nextname); -- error = 0; -+ err = 0; - pthread_mutex_unlock (&dnp->lock); - goto out; - } -@@ -148,40 +148,40 @@ netfs_S_dir_lookup (struct protid *diruser, - strcpy (retry_name, "/"); - else if (!lastcomp) - strcpy (retry_name, nextname); -- error = 0; -+ err = 0; - pthread_mutex_unlock (&dnp->lock); - goto out; - } - else - /* We are global root */ - { -- error = 0; -+ err = 0; - np = dnp; - netfs_nref (np); - } - else - /* Attempt a lookup on the next pathname component. */ -- error = netfs_attempt_lookup (diruser->user, dnp, filename, &np); -+ err = netfs_attempt_lookup (diruser->user, dnp, filename, &np); - - /* At this point, DNP is unlocked */ - - /* Implement O_EXCL flag here */ -- if (lastcomp && create && excl && !error) -- error = EEXIST; -+ if (lastcomp && create && excl && !err) -+ err = EEXIST; - - /* Create the new node if necessary */ -- if (lastcomp && create && error == ENOENT) -+ if (lastcomp && create && err == ENOENT) - { - mode &= ~(S_IFMT | S_ISPARE | S_ISVTX); - mode |= S_IFREG; - pthread_mutex_lock (&dnp->lock); -- error = netfs_attempt_create_file (diruser->user, dnp, -- filename, mode, &np); -+ err = netfs_attempt_create_file (diruser->user, dnp, -+ filename, mode, &np); - - /* If someone has already created the file (between our lookup - and this create) then we just got EEXIST. If we are - EXCL, that's fine; otherwise, we have to retry the lookup. */ -- if (error == EEXIST && !excl) -+ if (err == EEXIST && !excl) - { - pthread_mutex_lock (&dnp->lock); - goto retry_lookup; -@@ -191,11 +191,11 @@ netfs_S_dir_lookup (struct protid *diruser, - } - - /* All remaining errors get returned to the user */ -- if (error) -+ if (err) - goto out; - -- error = netfs_validate_stat (np, diruser->user); -- if (error) -+ err = netfs_validate_stat (np, diruser->user); -+ if (err) - goto out; - - if ((((flags & O_NOTRANS) == 0) || !lastcomp || mustbedir) -@@ -251,21 +251,21 @@ netfs_S_dir_lookup (struct protid *diruser, - - /* Create an unauthenticated port for DNP, and then - unlock it. */ -- error = iohelp_create_empty_iouser (&user); -- if (! error) -+ err = iohelp_create_empty_iouser (&user); -+ if (! err) - { - newpi = netfs_make_protid (netfs_make_peropen (dnp, 0, - diruser->po), - user); - if (! newpi) - { -- error = errno; -+ err = errno; - iohelp_free_iouser (user); - } - } - - boolean_t register_translator = 0; -- if (! error) -+ if (! err) - { - dirport = ports_get_send_right (newpi); - -@@ -275,24 +275,24 @@ netfs_S_dir_lookup (struct protid *diruser, - translators. */ - register_translator = np->transbox.active == MACH_PORT_NULL; - -- error = fshelp_fetch_root (&np->transbox, diruser->po, -- dirport, -- diruser->user, -- lastcomp ? flags : 0, -- ((np->nn_translated & S_IPTRANS) -- ? _netfs_translator_callback1 -- : short_circuited_callback1), -- _netfs_translator_callback2, -- do_retry, retry_name, retry_port); -+ err = fshelp_fetch_root (&np->transbox, diruser->po, -+ dirport, -+ diruser->user, -+ lastcomp ? flags : 0, -+ ((np->nn_translated & S_IPTRANS) -+ ? _netfs_translator_callback1 -+ : short_circuited_callback1), -+ _netfs_translator_callback2, -+ do_retry, retry_name, retry_port); - /* fetch_root copies DIRPORT for success, so we always should - deallocate our send right. */ - mach_port_deallocate (mach_task_self (), dirport); - } - -- if (error != ENOENT) -+ if (err != ENOENT) - { - *retry_port_type = MACH_MSG_TYPE_MOVE_SEND; -- if (!error) -+ if (!err) - { - char *end = strchr (retry_name, '\0'); - if (mustbedir) -@@ -326,12 +326,12 @@ netfs_S_dir_lookup (struct protid *diruser, - else - asprintf (&complete_path, "%s/%s", diruser->po->path, translator_path); - -- error = fshelp_set_active_translator (&newpi->pi, -- complete_path, -- np->transbox.active); -+ err = fshelp_set_active_translator (&newpi->pi, -+ complete_path, -+ np->transbox.active); - if (complete_path != translator_path) - free(complete_path); -- if (error) -+ if (err) - { - ports_port_deref (newpi); - goto out; -@@ -346,7 +346,7 @@ netfs_S_dir_lookup (struct protid *diruser, - - /* ENOENT means there was a hiccup, and the translator vanished - while NP was unlocked inside fshelp_fetch_root; continue as normal. */ -- error = 0; -+ err = 0; - } - - if (S_ISLNK (np->nn_translated) -@@ -360,7 +360,7 @@ netfs_S_dir_lookup (struct protid *diruser, - /* Handle symlink interpretation */ - if (nsymlinks++ > netfs_maxsymlinks) - { -- error = ELOOP; -+ err = ELOOP; - goto out; - } - -@@ -370,8 +370,8 @@ netfs_S_dir_lookup (struct protid *diruser, - newnamelen = nextnamelen + linklen + 1 + 1; - linkbuf = alloca (newnamelen); - -- error = netfs_attempt_readlink (diruser->user, np, linkbuf); -- if (error) -+ err = netfs_attempt_readlink (diruser->user, np, linkbuf); -+ if (err) - goto out; - - if (nextname) -@@ -436,19 +436,19 @@ netfs_S_dir_lookup (struct protid *diruser, - netfs_validate_stat (np, diruser->user); - if (!S_ISDIR (np->nn_stat.st_mode)) - { -- error = ENOTDIR; -+ err = ENOTDIR; - goto out; - } - } -- error = netfs_check_open_permissions (diruser->user, np, -- flags, newnode); -- if (error) -+ err = netfs_check_open_permissions (diruser->user, np, -+ flags, newnode); -+ if (err) - goto out; - - flags &= ~OPENONLY_STATE_MODES; - -- error = iohelp_dup_iouser (&user, diruser->user); -- if (error) -+ err = iohelp_dup_iouser (&user, diruser->user); -+ if (err) - goto out; - - newpi = netfs_make_protid (netfs_make_peropen (np, flags, diruser->po), -@@ -456,7 +456,7 @@ netfs_S_dir_lookup (struct protid *diruser, - if (! newpi) - { - iohelp_free_iouser (user); -- error = errno; -+ err = errno; - goto out; - } - -@@ -474,7 +474,7 @@ netfs_S_dir_lookup (struct protid *diruser, - } - - if (! newpi->po->path) -- error = errno; -+ err = errno; - - *retry_port = ports_get_right (newpi); - ports_port_deref (newpi); -@@ -485,5 +485,5 @@ netfs_S_dir_lookup (struct protid *diruser, - if (dnp) - netfs_nrele (dnp); - free (relpath); -- return error; -+ return err; - } --- -2.1.4 - diff --git a/debian/patches/fs_unification0003-libnetfs-rename-diruser-to-dircred.patch b/debian/patches/fs_unification0003-libnetfs-rename-diruser-to-dircred.patch deleted file mode 100644 index 53799235..00000000 --- a/debian/patches/fs_unification0003-libnetfs-rename-diruser-to-dircred.patch +++ /dev/null @@ -1,226 +0,0 @@ -From c4880bff7005cebb12f77360566624c91f1a76d4 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@gnupg.org> -Date: Mon, 18 Apr 2016 19:06:59 +0200 -Subject: [PATCH hurd 3/5] libnetfs: rename 'diruser' to 'dircred' - -* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Rename 'diruser' to -'dircred'. ---- - libnetfs/dir-lookup.c | 58 +++++++++++++++++++++++++-------------------------- - 1 file changed, 29 insertions(+), 29 deletions(-) - -diff --git a/libnetfs/dir-lookup.c b/libnetfs/dir-lookup.c -index 9a92c29..caeb151 100644 ---- a/libnetfs/dir-lookup.c -+++ b/libnetfs/dir-lookup.c -@@ -30,7 +30,7 @@ - #include "misc.h" - - error_t --netfs_S_dir_lookup (struct protid *diruser, -+netfs_S_dir_lookup (struct protid *dircred, - char *filename, - int flags, - mode_t mode, -@@ -52,7 +52,7 @@ netfs_S_dir_lookup (struct protid *diruser, - struct protid *newpi = NULL; - struct iouser *user; - -- if (!diruser) -+ if (!dircred) - return EOPNOTSUPP; - - create = (flags & O_CREAT); -@@ -62,7 +62,7 @@ netfs_S_dir_lookup (struct protid *diruser, - while (*filename == '/') - filename++; - -- /* Preserve the path relative to diruser->po->path. */ -+ /* Preserve the path relative to dircred->po->path. */ - relpath = strdup (filename); - if (! relpath) - return ENOMEM; -@@ -79,13 +79,13 @@ netfs_S_dir_lookup (struct protid *diruser, - { - /* Set things up in the state expected by the code from gotit: on. */ - dnp = 0; -- np = diruser->po->np; -+ np = dircred->po->np; - pthread_mutex_lock (&np->lock); - netfs_nref (np); - goto gotit; - } - -- dnp = diruser->po->np; -+ dnp = dircred->po->np; - pthread_mutex_lock (&dnp->lock); - - netfs_nref (dnp); /* acquire a reference for later netfs_nput */ -@@ -120,13 +120,13 @@ netfs_S_dir_lookup (struct protid *diruser, - - retry_lookup: - -- if ((dnp == netfs_root_node || dnp == diruser->po->shadow_root) -+ if ((dnp == netfs_root_node || dnp == dircred->po->shadow_root) - && filename[0] == '.' && filename[1] == '.' && filename[2] == '\0') -- if (dnp == diruser->po->shadow_root) -+ if (dnp == dircred->po->shadow_root) - /* We're at the root of a shadow tree. */ - { - *do_retry = FS_RETRY_REAUTH; -- *retry_port = diruser->po->shadow_root_parent; -+ *retry_port = dircred->po->shadow_root_parent; - *retry_port_type = MACH_MSG_TYPE_COPY_SEND; - if (lastcomp && mustbedir) /* Trailing slash. */ - strcpy (retry_name, "/"); -@@ -136,13 +136,13 @@ netfs_S_dir_lookup (struct protid *diruser, - pthread_mutex_unlock (&dnp->lock); - goto out; - } -- else if (diruser->po->root_parent != MACH_PORT_NULL) -- /* We're at a real translator root; even if DIRUSER->po has a -+ else if (dircred->po->root_parent != MACH_PORT_NULL) -+ /* We're at a real translator root; even if DIRCRED->po has a - shadow root, we can get here if its in a directory that was - renamed out from under it... */ - { - *do_retry = FS_RETRY_REAUTH; -- *retry_port = diruser->po->root_parent; -+ *retry_port = dircred->po->root_parent; - *retry_port_type = MACH_MSG_TYPE_COPY_SEND; - if (lastcomp && mustbedir) /* Trailing slash. */ - strcpy (retry_name, "/"); -@@ -161,7 +161,7 @@ netfs_S_dir_lookup (struct protid *diruser, - } - else - /* Attempt a lookup on the next pathname component. */ -- err = netfs_attempt_lookup (diruser->user, dnp, filename, &np); -+ err = netfs_attempt_lookup (dircred->user, dnp, filename, &np); - - /* At this point, DNP is unlocked */ - -@@ -175,7 +175,7 @@ netfs_S_dir_lookup (struct protid *diruser, - mode &= ~(S_IFMT | S_ISPARE | S_ISVTX); - mode |= S_IFREG; - pthread_mutex_lock (&dnp->lock); -- err = netfs_attempt_create_file (diruser->user, dnp, -+ err = netfs_attempt_create_file (dircred->user, dnp, - filename, mode, &np); - - /* If someone has already created the file (between our lookup -@@ -194,7 +194,7 @@ netfs_S_dir_lookup (struct protid *diruser, - if (err) - goto out; - -- err = netfs_validate_stat (np, diruser->user); -+ err = netfs_validate_stat (np, dircred->user); - if (err) - goto out; - -@@ -216,7 +216,7 @@ netfs_S_dir_lookup (struct protid *diruser, - struct node *np = cookie1; - error_t err; - -- err = netfs_validate_stat (np, diruser->user); -+ err = netfs_validate_stat (np, dircred->user); - if (err) - return err; - -@@ -255,7 +255,7 @@ netfs_S_dir_lookup (struct protid *diruser, - if (! err) - { - newpi = netfs_make_protid (netfs_make_peropen (dnp, 0, -- diruser->po), -+ dircred->po), - user); - if (! newpi) - { -@@ -275,9 +275,9 @@ netfs_S_dir_lookup (struct protid *diruser, - translators. */ - register_translator = np->transbox.active == MACH_PORT_NULL; - -- err = fshelp_fetch_root (&np->transbox, diruser->po, -+ err = fshelp_fetch_root (&np->transbox, dircred->po, - dirport, -- diruser->user, -+ dircred->user, - lastcomp ? flags : 0, - ((np->nn_translated & S_IPTRANS) - ? _netfs_translator_callback1 -@@ -320,11 +320,11 @@ netfs_S_dir_lookup (struct protid *diruser, - translator_path[end - filename_start] = '\0'; - } - -- if (diruser->po->path == NULL || !strcmp (diruser->po->path,".")) -- /* diruser is the root directory. */ -+ if (dircred->po->path == NULL || !strcmp (dircred->po->path,".")) -+ /* dircred is the root directory. */ - complete_path = translator_path; - else -- asprintf (&complete_path, "%s/%s", diruser->po->path, translator_path); -+ asprintf (&complete_path, "%s/%s", dircred->po->path, translator_path); - - err = fshelp_set_active_translator (&newpi->pi, - complete_path, -@@ -370,7 +370,7 @@ netfs_S_dir_lookup (struct protid *diruser, - newnamelen = nextnamelen + linklen + 1 + 1; - linkbuf = alloca (newnamelen); - -- err = netfs_attempt_readlink (diruser->user, np, linkbuf); -+ err = netfs_attempt_readlink (dircred->user, np, linkbuf); - if (err) - goto out; - -@@ -433,25 +433,25 @@ netfs_S_dir_lookup (struct protid *diruser, - - if (mustbedir) - { -- netfs_validate_stat (np, diruser->user); -+ netfs_validate_stat (np, dircred->user); - if (!S_ISDIR (np->nn_stat.st_mode)) - { - err = ENOTDIR; - goto out; - } - } -- err = netfs_check_open_permissions (diruser->user, np, -+ err = netfs_check_open_permissions (dircred->user, np, - flags, newnode); - if (err) - goto out; - - flags &= ~OPENONLY_STATE_MODES; - -- err = iohelp_dup_iouser (&user, diruser->user); -+ err = iohelp_dup_iouser (&user, dircred->user); - if (err) - goto out; - -- newpi = netfs_make_protid (netfs_make_peropen (np, flags, diruser->po), -+ newpi = netfs_make_protid (netfs_make_peropen (np, flags, dircred->po), - user); - if (! newpi) - { -@@ -461,16 +461,16 @@ netfs_S_dir_lookup (struct protid *diruser, - } - - free (newpi->po->path); -- if (diruser->po->path == NULL || !strcmp (diruser->po->path,".")) -+ if (dircred->po->path == NULL || !strcmp (dircred->po->path,".")) - { -- /* diruser is the root directory. */ -+ /* dircred is the root directory. */ - newpi->po->path = relpath; - relpath = NULL; /* Do not free relpath. */ - } - else - { - newpi->po->path = NULL; -- asprintf (&newpi->po->path, "%s/%s", diruser->po->path, relpath); -+ asprintf (&newpi->po->path, "%s/%s", dircred->po->path, relpath); - } - - if (! newpi->po->path) --- -2.1.4 - diff --git a/debian/patches/fs_unification0004-libdiskfs-cosmetic-changes.patch b/debian/patches/fs_unification0004-libdiskfs-cosmetic-changes.patch deleted file mode 100644 index 93aa5c5e..00000000 --- a/debian/patches/fs_unification0004-libdiskfs-cosmetic-changes.patch +++ /dev/null @@ -1,314 +0,0 @@ -From db244ee3e14f1ec6a4fb9082365bde6d1c939690 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@gnupg.org> -Date: Mon, 18 Apr 2016 19:33:03 +0200 -Subject: [PATCH hurd 4/5] libdiskfs: cosmetic changes - -* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Rename identifiers to -be more idiomatic and closer to libnetfs and the interface -specification. Massage the code so that it aligns closer with the -dir_lookup server function in libnetfs. It should not change the -behavior. ---- - libdiskfs/dir-lookup.c | 113 +++++++++++++++++++++++++------------------------ - 1 file changed, 57 insertions(+), 56 deletions(-) - -diff --git a/libdiskfs/dir-lookup.c b/libdiskfs/dir-lookup.c -index c50970d..72ada0f 100644 ---- a/libdiskfs/dir-lookup.c -+++ b/libdiskfs/dir-lookup.c -@@ -27,19 +27,19 @@ - #include "fs_S.h" - - /* Implement dir_lookup as described in <hurd/fs.defs>. */ --kern_return_t -+error_t - diskfs_S_dir_lookup (struct protid *dircred, -- char *path, -+ char *filename, - int flags, - mode_t mode, -- enum retry_type *retry, -- char *retryname, -- file_t *returned_port, -- mach_msg_type_name_t *returned_port_poly) -+ retry_type *do_retry, -+ char *retry_name, -+ mach_port_t *retry_port, -+ mach_msg_type_name_t *retry_port_type) - { - struct node *dnp; - struct node *np; -- int nsymlink = 0; -+ int nsymlinks = 0; - char *nextname; - char *relpath; - int nextnamelen; -@@ -66,23 +66,23 @@ diskfs_S_dir_lookup (struct protid *dircred, - excl = (flags & O_EXCL); - - /* Skip leading slashes */ -- while (path[0] == '/') -- path++; -+ while (*filename == '/') -+ filename++; - -- /* Preserve the path relative to diruser->po->path. */ -- relpath = strdup (path); -+ /* Preserve the path relative to dircred->po->path. */ -+ relpath = strdup (filename); - if (! relpath) - return ENOMEM; - -- /* Keep a pointer to the start of the path for length -+ /* Keep a pointer to the start of the filename for length - calculations. */ -- char *path_start = path; -+ char *filename_start = filename; - -- *returned_port_poly = MACH_MSG_TYPE_MAKE_SEND; -- *retry = FS_RETRY_NORMAL; -- retryname[0] = '\0'; -+ *retry_port_type = MACH_MSG_TYPE_MAKE_SEND; -+ *do_retry = FS_RETRY_NORMAL; -+ *retry_name = '\0'; - -- if (path[0] == '\0') -+ if (*filename == '\0') - { - /* Set things up in the state expected by the code from gotit: on. */ - dnp = 0; -@@ -93,9 +93,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - } - - dnp = dircred->po->np; -- - pthread_mutex_lock (&dnp->lock); -- np = 0; - - diskfs_nref (dnp); /* acquire a reference for later diskfs_nput */ - -@@ -104,7 +102,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - assert (!lastcomp); - - /* Find the name of the next pathname component */ -- nextname = index (path, '/'); -+ nextname = index (filename, '/'); - - if (nextname) - { -@@ -132,10 +130,10 @@ diskfs_S_dir_lookup (struct protid *dircred, - { - if (!ds) - ds = alloca (diskfs_dirstat_size); -- err = diskfs_lookup (dnp, path, CREATE, &np, ds, dircred); -+ err = diskfs_lookup (dnp, filename, CREATE, &np, ds, dircred); - } - else -- err = diskfs_lookup (dnp, path, LOOKUP, &np, 0, dircred); -+ err = diskfs_lookup (dnp, filename, LOOKUP, &np, 0, dircred); - - if (lastcomp && create && excl && (!err || err == EAGAIN)) - err = EEXIST; -@@ -158,13 +156,13 @@ diskfs_S_dir_lookup (struct protid *dircred, - else - { - /* Punt the client up to the shadow root parent. */ -- *retry = FS_RETRY_REAUTH; -- *returned_port = dircred->po->shadow_root_parent; -- *returned_port_poly = MACH_MSG_TYPE_COPY_SEND; -+ *do_retry = FS_RETRY_REAUTH; -+ *retry_port = dircred->po->shadow_root_parent; -+ *retry_port_type = MACH_MSG_TYPE_COPY_SEND; - if (lastcomp && mustbedir) /* Trailing slash. */ -- strcpy (retryname, "/"); -+ strcpy (retry_name, "/"); - else if (!lastcomp) -- strcpy (retryname, nextname); -+ strcpy (retry_name, nextname); - err = 0; - goto out; - } -@@ -174,13 +172,13 @@ diskfs_S_dir_lookup (struct protid *dircred, - shadow root, we can get here if its in a directory that was - renamed out from under it... */ - { -- *retry = FS_RETRY_REAUTH; -- *returned_port = dircred->po->root_parent; -- *returned_port_poly = MACH_MSG_TYPE_COPY_SEND; -+ *do_retry = FS_RETRY_REAUTH; -+ *retry_port = dircred->po->root_parent; -+ *retry_port_type = MACH_MSG_TYPE_COPY_SEND; - if (lastcomp && mustbedir) /* Trailing slash. */ -- strcpy (retryname, "/"); -+ strcpy (retry_name, "/"); - else if (!lastcomp) -- strcpy (retryname, nextname); -+ strcpy (retry_name, nextname); - err = 0; - goto out; - } -@@ -200,7 +198,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - { - mode &= ~(S_IFMT | S_ISPARE | S_ISVTX | S_ITRANS); - mode |= S_IFREG; -- err = diskfs_create_node (dnp, path, mode, &np, dircred, ds); -+ err = diskfs_create_node (dnp, filename, mode, &np, dircred, ds); - if (diskfs_synchronous) - { - diskfs_file_update (dnp, 1); -@@ -228,7 +226,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - struct iouser *user; - - /* A callback function for short-circuited translators. -- Symlink & ifsock are handled elsewhere. */ -+ S_ISLNK and S_IFSOCK are handled elsewhere. */ - error_t short_circuited_callback1 (void *cookie1, void *cookie2, - uid_t *uid, gid_t *gid, - char **argz, size_t *argz_len) -@@ -239,17 +237,19 @@ diskfs_S_dir_lookup (struct protid *dircred, - { - case S_IFCHR: - case S_IFBLK: -- asprintf (argz, "%s%c%d%c%d", -- (S_ISCHR (node->dn_stat.st_mode) -- ? _HURD_CHRDEV : _HURD_BLKDEV), -- 0, major (node->dn_stat.st_rdev), -- 0, minor (node->dn_stat.st_rdev)); -+ if (asprintf (argz, "%s%c%d%c%d", -+ (S_ISCHR (node->dn_stat.st_mode) -+ ? _HURD_CHRDEV : _HURD_BLKDEV), -+ 0, major (node->dn_stat.st_rdev), -+ 0, minor (node->dn_stat.st_rdev)) < 0) -+ return ENOMEM; - *argz_len = strlen (*argz) + 1; - *argz_len += strlen (*argz + *argz_len) + 1; - *argz_len += strlen (*argz + *argz_len) + 1; - break; - case S_IFIFO: -- asprintf (argz, "%s", _HURD_FIFO); -+ if (asprintf (argz, "%s", _HURD_FIFO) < 0) -+ return ENOMEM; - *argz_len = strlen (*argz) + 1; - break; - default: -@@ -299,7 +299,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - ? _diskfs_translator_callback1 - : short_circuited_callback1), - _diskfs_translator_callback2, -- retry, retryname, returned_port); -+ do_retry, retry_name, retry_port); - - /* fetch_root copies DIRPORT for success, so we always should - deallocate our send right. */ -@@ -307,14 +307,14 @@ diskfs_S_dir_lookup (struct protid *dircred, - - if (err != ENOENT) - { -- *returned_port_poly = MACH_MSG_TYPE_MOVE_SEND; -+ *retry_port_type = MACH_MSG_TYPE_MOVE_SEND; - if (!err) - { -- char *end = strchr (retryname, '\0'); -+ char *end = strchr (retry_name, '\0'); - if (mustbedir) - *end++ = '/'; /* Trailing slash. */ - else if (!lastcomp) { -- if (end != retryname) -+ if (end != retry_name) - *end++ = '/'; - strcpy (end, nextname); - } -@@ -333,7 +333,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - char *end = nextname; - while (*end != 0) - end--; -- translator_path[end - path_start] = '\0'; -+ translator_path[end - filename_start] = '\0'; - } - - if (dircred->po->path == NULL || !strcmp (dircred->po->path,".")) -@@ -363,7 +363,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - err = 0; - if (np != dnp) - { -- if (!strcmp (path, "..")) -+ if (!strcmp (filename, "..")) - pthread_mutex_lock (&dnp->lock); - else - { -@@ -384,7 +384,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - { - /* Handle symlink interpretation */ - -- if (nsymlink++ > diskfs_maxsymlinks) -+ if (nsymlinks++ > diskfs_maxsymlinks) - { - err = ELOOP; - goto out; -@@ -412,7 +412,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - goto out; - - if (np->dn_stat.st_size == 0) /* symlink to "" */ -- path = nextname; -+ filename = nextname; - else - { - if (nextname) -@@ -432,13 +432,13 @@ diskfs_S_dir_lookup (struct protid *dircred, - if (pathbuf[0] == '/') - { - /* Punt to the caller. */ -- *retry = FS_RETRY_MAGICAL; -- *returned_port = MACH_PORT_NULL; -- strcpy (retryname, pathbuf); -+ *do_retry = FS_RETRY_MAGICAL; -+ *retry_port = MACH_PORT_NULL; -+ strcpy (retry_name, pathbuf); - goto out; - } - -- path = pathbuf; -+ filename = pathbuf; - mustbedir = 0; - } - -@@ -448,7 +448,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - diskfs_nput (np); - np = 0; - -- if (path == 0) /* symlink to "" was the last component */ -+ if (filename == 0) /* symlink to "" was the last component */ - { - np = dnp; - dnp = 0; -@@ -458,7 +458,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - else - { - /* Handle normal nodes */ -- path = nextname; -+ filename = nextname; - if (np == dnp) - diskfs_nrele (dnp); - else -@@ -471,7 +471,8 @@ diskfs_S_dir_lookup (struct protid *dircred, - else - dnp = 0; - } -- } while (path && *path); -+ } -+ while (filename && *filename); - - /* At this point, np is the node to return. If newnode is set, then - we just created this node. */ -@@ -553,7 +554,7 @@ diskfs_S_dir_lookup (struct protid *dircred, - if (! newpi->po->path) - err = errno; - -- *returned_port = ports_get_right (newpi); -+ *retry_port = ports_get_right (newpi); - ports_port_deref (newpi); - newpi = 0; - } --- -2.1.4 - diff --git a/debian/patches/fs_unification0005-YYY-Unify-the-short-circuit-translator-logic.patch b/debian/patches/fs_unification0005-YYY-Unify-the-short-circuit-translator-logic.patch deleted file mode 100644 index 560aa7d6..00000000 --- a/debian/patches/fs_unification0005-YYY-Unify-the-short-circuit-translator-logic.patch +++ /dev/null @@ -1,391 +0,0 @@ -From 01d2c455497b09f3dca87dfc061634c5d8d01cd9 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@gnupg.org> -Date: Mon, 18 Apr 2016 21:53:28 +0200 -Subject: [PATCH hurd 5/5] YYY Unify the short-circuit translator logic - -* libdiskfs/dir-lookup.c (short_circuited_callback1): Drop function. -* libdiskfs/trans-callback.c -* libfshelp/fetch-root.c -* libfshelp/fshelp.h -* libnetfs/dir-lookup.c -* libnetfs/trans-callback.c ---- - libdiskfs/dir-lookup.c | 61 ++++++++++++---------------------------------- - libdiskfs/fsys-getroot.c | 13 +++++++--- - libdiskfs/trans-callback.c | 4 ++- - libfshelp/fetch-root.c | 39 +++++++++++++++++++++++++++++ - libfshelp/fshelp.h | 16 ++++++++++++ - libnetfs/dir-lookup.c | 53 +++++++--------------------------------- - libnetfs/fsys-getroot.c | 7 +++++- - libnetfs/trans-callback.c | 4 ++- - 8 files changed, 101 insertions(+), 96 deletions(-) - -diff --git a/libdiskfs/dir-lookup.c b/libdiskfs/dir-lookup.c -index 72ada0f..8b43e27 100644 ---- a/libdiskfs/dir-lookup.c -+++ b/libdiskfs/dir-lookup.c -@@ -20,6 +20,7 @@ - #include <fcntl.h> - #include <string.h> - #include <sys/file.h> -+#include <hurd/fshelp.h> - #include <hurd/fsys.h> - #include <hurd/paths.h> - -@@ -225,43 +226,6 @@ diskfs_S_dir_lookup (struct protid *dircred, - mach_port_t dirport; - struct iouser *user; - -- /* A callback function for short-circuited translators. -- S_ISLNK and S_IFSOCK are handled elsewhere. */ -- error_t short_circuited_callback1 (void *cookie1, void *cookie2, -- uid_t *uid, gid_t *gid, -- char **argz, size_t *argz_len) -- { -- struct node *node = cookie1; -- -- switch (node->dn_stat.st_mode & S_IFMT) -- { -- case S_IFCHR: -- case S_IFBLK: -- if (asprintf (argz, "%s%c%d%c%d", -- (S_ISCHR (node->dn_stat.st_mode) -- ? _HURD_CHRDEV : _HURD_BLKDEV), -- 0, major (node->dn_stat.st_rdev), -- 0, minor (node->dn_stat.st_rdev)) < 0) -- return ENOMEM; -- *argz_len = strlen (*argz) + 1; -- *argz_len += strlen (*argz + *argz_len) + 1; -- *argz_len += strlen (*argz + *argz_len) + 1; -- break; -- case S_IFIFO: -- if (asprintf (argz, "%s", _HURD_FIFO) < 0) -- return ENOMEM; -- *argz_len = strlen (*argz) + 1; -- break; -- default: -- return ENOENT; -- } -- -- *uid = node->dn_stat.st_uid; -- *gid = node->dn_stat.st_gid; -- -- return 0; -- } -- - /* Create an unauthenticated port for DNP, and then - unlock it. */ - err = iohelp_create_empty_iouser (&user); -@@ -292,14 +256,21 @@ diskfs_S_dir_lookup (struct protid *dircred, - boolean_t register_translator = - np->transbox.active == MACH_PORT_NULL; - -- err = fshelp_fetch_root (&np->transbox, dircred->po, -- dirport, dircred->user, -- lastcomp ? flags : 0, -- ((np->dn_stat.st_mode & S_IPTRANS) -- ? _diskfs_translator_callback1 -- : short_circuited_callback1), -- _diskfs_translator_callback2, -- do_retry, retry_name, retry_port); -+ struct fshelp_stat_cookie2 cookie = { -+ .statp = &np->dn_stat, -+ .modep = &np->dn_stat.st_mode, -+ .next = dircred->po, -+ }; -+ err = fshelp_fetch_root (&np->transbox, -+ &cookie, -+ dirport, -+ dircred->user, -+ lastcomp ? flags : 0, -+ ((np->dn_stat.st_mode & S_IPTRANS) -+ ? _diskfs_translator_callback1 -+ : fshelp_short_circuited_callback1), -+ _diskfs_translator_callback2, -+ do_retry, retry_name, retry_port); - - /* fetch_root copies DIRPORT for success, so we always should - deallocate our send right. */ -diff --git a/libdiskfs/fsys-getroot.c b/libdiskfs/fsys-getroot.c -index 401f103..6f93888 100644 ---- a/libdiskfs/fsys-getroot.c -+++ b/libdiskfs/fsys-getroot.c -@@ -21,6 +21,7 @@ - - #include "priv.h" - #include "fsys_S.h" -+#include <hurd/fshelp.h> - #include <hurd/fsys.h> - #include <fcntl.h> - -@@ -78,11 +79,15 @@ diskfs_S_fsys_getroot (struct diskfs_control *pt, - || fshelp_translated (&diskfs_root_node->transbox)) - && !(flags & O_NOTRANS)) - { -+ struct fshelp_stat_cookie2 cookie = { -+ .next = &peropen_context, -+ }; -+ - err = fshelp_fetch_root (&diskfs_root_node->transbox, -- &peropen_context, dotdot, &user, flags, -- _diskfs_translator_callback1, -- _diskfs_translator_callback2, -- retry, retryname, returned_port); -+ &cookie, dotdot, &user, flags, -+ _diskfs_translator_callback1, -+ _diskfs_translator_callback2, -+ retry, retryname, returned_port); - if (err != ENOENT) - { - pthread_mutex_unlock (&diskfs_root_node->lock); -diff --git a/libdiskfs/trans-callback.c b/libdiskfs/trans-callback.c -index 283b184..15e8f9a 100644 ---- a/libdiskfs/trans-callback.c -+++ b/libdiskfs/trans-callback.c -@@ -20,6 +20,7 @@ - - #include "priv.h" - #include <fcntl.h> -+#include <hurd/fshelp.h> - - /* Callback function needed for calls to fshelp_fetch_root. See - <hurd/fshelp.h> for the interface description. */ -@@ -56,6 +57,7 @@ _diskfs_translator_callback2_fn (void *cookie1, void *cookie2, - mach_msg_type_name_t *underlying_type) - { - struct node *np = cookie1; -+ struct fshelp_stat_cookie2 *statc = cookie2; - struct protid *cred; - struct peropen *po; - error_t err; -@@ -66,7 +68,7 @@ _diskfs_translator_callback2_fn (void *cookie1, void *cookie2, - if (err) - return err; - -- err = diskfs_make_peropen (np, flags, cookie2, &po); -+ err = diskfs_make_peropen (np, flags, statc->next, &po); - if (! err) - { - err = diskfs_create_protid (po, user, &cred); -diff --git a/libfshelp/fetch-root.c b/libfshelp/fetch-root.c -index eb0f315..dfd7477 100644 ---- a/libfshelp/fetch-root.c -+++ b/libfshelp/fetch-root.c -@@ -20,6 +20,7 @@ - - #include <assert.h> - #include <hurd/fsys.h> -+#include <hurd/paths.h> - #include <hurd/ports.h> - #include <stdlib.h> - #include <string.h> -@@ -197,3 +198,41 @@ fshelp_fetch_root (struct transbox *box, void *cookie, - - return err; - } -+ -+/* A callback function for short-circuited translators. S_ISLNK and -+ S_IFSOCK must be handled elsewhere. */ -+error_t -+fshelp_short_circuited_callback1 (void *cookie1, void *cookie2, -+ uid_t *uid, gid_t *gid, -+ char **argz, size_t *argz_len) -+{ -+ struct fshelp_stat_cookie2 *statc = cookie2; -+ -+ switch (*statc->modep & S_IFMT) -+ { -+ case S_IFCHR: -+ case S_IFBLK: -+ if (asprintf (argz, "%s%c%d%c%d", -+ (S_ISCHR (*statc->modep) -+ ? _HURD_CHRDEV : _HURD_BLKDEV), -+ 0, major (statc->statp->st_rdev), -+ 0, minor (statc->statp->st_rdev)) < 0) -+ return ENOMEM; -+ *argz_len = strlen (*argz) + 1; -+ *argz_len += strlen (*argz + *argz_len) + 1; -+ *argz_len += strlen (*argz + *argz_len) + 1; -+ break; -+ case S_IFIFO: -+ if (asprintf (argz, "%s", _HURD_FIFO) < 0) -+ return ENOMEM; -+ *argz_len = strlen (*argz) + 1; -+ break; -+ default: -+ return ENOENT; -+ } -+ -+ *uid = statc->statp->st_uid; -+ *gid = statc->statp->st_gid; -+ -+ return 0; -+} -diff --git a/libfshelp/fshelp.h b/libfshelp/fshelp.h -index d04c056..ecd9335 100644 ---- a/libfshelp/fshelp.h -+++ b/libfshelp/fshelp.h -@@ -148,6 +148,22 @@ typedef error_t (*fshelp_fetch_root_callback1_t) (void *cookie1, void *cookie2, - uid_t *uid, gid_t *gid, - char **argz, size_t *argz_len); - -+/* A cookie for fshelp_short_circuited_callback1. Such a structure -+ must be passed to the call to fshelp_fetch_root. */ -+struct fshelp_stat_cookie2 -+{ -+ io_statbuf_t *statp; -+ mode_t *modep; -+ void *next; -+}; -+ -+/* A callback function for short-circuited translators. S_ISLNK and -+ S_IFSOCK must be handled elsewhere. */ -+error_t fshelp_short_circuited_callback1 (void *cookie1, void *cookie2, -+ uid_t *uid, gid_t *gid, -+ char **argz, size_t *argz_len); -+ -+ - /* This routine is called by fshelp_fetch_root to fetch more information. - Return an unauthenticated node for the file itself in *UNDERLYING and - *UNDERLYING_TYPE (opened with FLAGS). COOKIE1 is the cookie passed in -diff --git a/libnetfs/dir-lookup.c b/libnetfs/dir-lookup.c -index caeb151..3bcc745 100644 ---- a/libnetfs/dir-lookup.c -+++ b/libnetfs/dir-lookup.c -@@ -207,48 +207,6 @@ netfs_S_dir_lookup (struct protid *dircred, - { - mach_port_t dirport; - -- /* A callback function for short-circuited translators. -- S_ISLNK and S_IFSOCK are handled elsewhere. */ -- error_t short_circuited_callback1 (void *cookie1, void *cookie2, -- uid_t *uid, gid_t *gid, -- char **argz, size_t *argz_len) -- { -- struct node *np = cookie1; -- error_t err; -- -- err = netfs_validate_stat (np, dircred->user); -- if (err) -- return err; -- -- switch (np->nn_translated & S_IFMT) -- { -- case S_IFCHR: -- case S_IFBLK: -- if (asprintf (argz, "%s%c%d%c%d", -- (S_ISCHR (np->nn_translated) -- ? _HURD_CHRDEV : _HURD_BLKDEV), -- 0, major (np->nn_stat.st_rdev), -- 0, minor (np->nn_stat.st_rdev)) < 0) -- return ENOMEM; -- *argz_len = strlen (*argz) + 1; -- *argz_len += strlen (*argz + *argz_len) + 1; -- *argz_len += strlen (*argz + *argz_len) + 1; -- break; -- case S_IFIFO: -- if (asprintf (argz, "%s", _HURD_FIFO) < 0) -- return ENOMEM; -- *argz_len = strlen (*argz) + 1; -- break; -- default: -- return ENOENT; -- } -- -- *uid = np->nn_stat.st_uid; -- *gid = np->nn_stat.st_gid; -- -- return 0; -- } -- - /* Create an unauthenticated port for DNP, and then - unlock it. */ - err = iohelp_create_empty_iouser (&user); -@@ -267,6 +225,12 @@ netfs_S_dir_lookup (struct protid *dircred, - boolean_t register_translator = 0; - if (! err) - { -+ struct fshelp_stat_cookie2 cookie = { -+ .statp = &np->nn_stat, -+ .modep = &np->nn_translated, -+ .next = dircred->po, -+ }; -+ - dirport = ports_get_send_right (newpi); - - /* Check if an active translator is currently running. If -@@ -275,13 +239,14 @@ netfs_S_dir_lookup (struct protid *dircred, - translators. */ - register_translator = np->transbox.active == MACH_PORT_NULL; - -- err = fshelp_fetch_root (&np->transbox, dircred->po, -+ err = fshelp_fetch_root (&np->transbox, -+ &cookie, - dirport, - dircred->user, - lastcomp ? flags : 0, - ((np->nn_translated & S_IPTRANS) - ? _netfs_translator_callback1 -- : short_circuited_callback1), -+ : fshelp_short_circuited_callback1), - _netfs_translator_callback2, - do_retry, retry_name, retry_port); - /* fetch_root copies DIRPORT for success, so we always should -diff --git a/libnetfs/fsys-getroot.c b/libnetfs/fsys-getroot.c -index 2d02120..d919110 100644 ---- a/libnetfs/fsys-getroot.c -+++ b/libnetfs/fsys-getroot.c -@@ -23,6 +23,7 @@ - #include "misc.h" - #include "callbacks.h" - #include <fcntl.h> -+#include <hurd/fshelp.h> - - error_t - netfs_S_fsys_getroot (struct netfs_control *pt, -@@ -67,8 +68,12 @@ netfs_S_fsys_getroot (struct netfs_control *pt, - || fshelp_translated (&netfs_root_node->transbox)) - && !(flags & O_NOTRANS)) - { -+ struct fshelp_stat_cookie2 cookie = { -+ .next = &peropen_context, -+ }; -+ - err = fshelp_fetch_root (&netfs_root_node->transbox, -- &peropen_context, dotdot, cred, flags, -+ &cookie, dotdot, cred, flags, - _netfs_translator_callback1, - _netfs_translator_callback2, - do_retry, retry_name, retry_port); -diff --git a/libnetfs/trans-callback.c b/libnetfs/trans-callback.c -index ed21aa2..99f4dc0 100644 ---- a/libnetfs/trans-callback.c -+++ b/libnetfs/trans-callback.c -@@ -20,6 +20,7 @@ - - #include "priv.h" - #include <fcntl.h> -+#include <hurd/fshelp.h> - - /* Callback function needed for calls to fshelp_fetch_root. See - <hurd/fshelp.h> for the interface description. */ -@@ -57,6 +58,7 @@ _netfs_translator_callback2_fn (void *cookie1, void *cookie2, int flags, - error_t err; - struct protid *cred; - struct node *node = cookie1; -+ struct fshelp_stat_cookie2 *statc = cookie2; - struct iouser *user; - struct peropen *po; - -@@ -65,7 +67,7 @@ _netfs_translator_callback2_fn (void *cookie1, void *cookie2, int flags, - if (err) - return err; - -- po = netfs_make_peropen (node, flags, cookie2); -+ po = netfs_make_peropen (node, flags, statc->next); - if (! po) - { - err = errno; --- -2.1.4 - diff --git a/debian/patches/series b/debian/patches/series index 8807f0df..25049402 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -40,8 +40,3 @@ gpg0001-trans-add-identity-translator.patch gpg0002-trans-add-transparent-GnuPG-translator.patch libdiskfs-fix0001-libdiskfs-improve-error-handling.patch -fs_unification0001-libfshelp-pass-cookie-to-the-callback-function.patch -fs_unification0002-libnetfs-rename-error-to-err.patch -fs_unification0003-libnetfs-rename-diruser-to-dircred.patch -fs_unification0004-libdiskfs-cosmetic-changes.patch -fs_unification0005-YYY-Unify-the-short-circuit-translator-logic.patch |