aboutsummaryrefslogtreecommitdiff
path: root/trans/fakeroot.c
Commit message (Collapse)AuthorAgeFilesLines
...
* trans: improve the error handling in fakeauthJustus Winter2013-12-091-17/+20
| | | | | | | | | Previously the node was not correctly torn down if adding the newly created netnode to the hash table failed. Fix this by rearranging the code, doing the hash table modification first because it is easier to undo. * trans/fakeroot.c (new_node): Fix the error handling.
* trans: fix reference counting bug in fakerootJustus Winter2013-12-091-4/+1
| | | | | | | | | | | | | The function new_node creates virtual nodes using netfs_make_node. Nodes created with netfs_make_node already have a reference count of one. Currently another reference is added in new_node. This prevents the destruction of the node causing bugs like this: % fakeroot-hurd sh -c 'l(){ flock /tmp/$$.lock true; }; l; l' <hangs> * trans/fakeroot.c (new_node): Fix reference count of newly created nodes.
* trans: fix locking in fakeroot's netfs_S_dir_lookupJustus Winter2013-12-091-17/+28
| | | | * trans/fakeroot.c (netfs_S_dir_lookup): Fix locking.
* trans: fix reference counting and destruction of fake nodesJustus Winter2013-12-091-21/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, fakeroot tried to do too much in netfs_node_norefs. This function is meant to deallocate nodes. Fakeroot however also tries to remove the node from the hash table and to prolong the lifetime of the node object by re-referencing it. Removing the object from the hash table is highly problematic, because at this point we already have the node locked. With proper locking in netfs_S_dir_lookup, acquiring the hash table lock while we hold the node locked results in dead-locks, releasing the node lock before acquiring the hash table lock results in a race condition. Prolonging the lifetime of the node by re-acquiring a reference is clearly a hack that surprisingly works to some degree. The nodes transbox, however, is already gone at this point. This code was never actually run because of a reference-counting bug in fakeroot. Fix this by installing our own clean routine in the netfs_protid_class. This function is called without the associated node being locked, allowing us to acquire the locks in the proper order and to keep the hash table locked while the node is being destroyed. * trans/fakeroot.c (netfs_node_norefs): Just free the associated resources. (fakeroot_netfs_release_protid): New function doing cleanly what netfs_node_norefs did before. (netfs_S_dir_lookup): Reuse the fake reference. (main): Install fakeroot_netfs_release_protid as clean routine. fixup_fix_refc_destruction
* trans: return nodes locked when creating fake nodes in fakerootJustus Winter2013-12-091-3/+13
| | | | | | | | * trans/fakeroot.c (new_node): Acquire the nodes lock before releasing the idport_ihash_lock. Return nodes locked. (netfs_S_dir_lookup): Drop lock. (netfs_attempt_mkfile): Likewise. (main): Likewise.
* trans: fix locking issue in fakerootJustus Winter2013-12-091-1/+1
| | | | | * trans/fakeroot.c (netfs_attempt_mkfile): Keep dir locked until the new node is created.
* trans: handle invalid responses to dir_lookup requests in fakerootJustus Winter2013-12-091-2/+9
| | | | | * trans/fakeroot.c (netfs_S_dir_lookup): Handle invalid responses to dir_lookup requests.
* trans: improve the performance of dir_lookup in fakerootJustus Winter2013-12-091-4/+8
| | | | | | | | | | | | | | | Previously any FS_RETRY_NORMAL requests were handed back to the client. Redo the lookup ourself instead. This saves us the burden to create a fake node for the intermediate step, hand it back to the client and handle another request from the client. With this change there is no need to fiddle with the permission bits as it was previously done. * trans/fakeroot.c (netfs_S_dir_lookup): Redo the lookup transparently for the user if FS_RETRY_NORMAL is requested. fixup_improve_perf
* trans: fix the use of the hash table in fakeroot.cJustus Winter2013-12-091-4/+8
| | | | | | | | | | | Previously a pointer to the node was stored in the hash table. This writes the locp pointer into the node object overwriting the next pointer there. Store the pointer to the netnode instead. * trans/fakeroot.c (struct netnode): Add field np. (new_node): Initialize field np. (new_node): Store nn instead of np into the hash table. (netfs_S_dir_lookup): Adjust accordingly.
* trans: make the fakeroot environment more transparentJustus Winter2013-12-041-10/+22
| | | | | | | | | | | | | | | | | Previously fakeroot did not explicitly proxy io_identity requests, so the default implementation from libnetfs handled them. But as the fsys identity port returned was always netfs_fsys_identity, this broke the getcwd logic (assuming /media/scratch is a translator): % cd /media/scratch/foo && fakeroot-hurd pwd /foo Fix this by proxying io_identity requests. Since then no-one is handing out our netfs_fsys_identity port anymore, an optimization in netfs_fsys_identity is made obsolete by this change. * trans/fakeroot.c (netfs_S_dir_lookup): Adjust code accordingly. (netfs_S_io_identity): New function.
* trans: fix transparent reauthentication in fakerootJustus Winter2013-12-041-4/+7
| | | | | | | | | | | | | | | | When looking up files, fakeroot intercepts reauthentication requests and executes io_reauthenticate and auth_user_authenticate transparently for the client. This, however, makes the client incorrectly assume that the lookup is finished (assuming /media/scratch is a translator): % cd /media/scratch && fakeroot-hurd pwd pwd: reading directory `..': Bad file descriptor Make the reauthentication completely transparent to the client by re-doing the lookup ourselves. * trans/fakeroot.c (netfs_S_dir_lookup): Fix transparent reauthentication.
* trans: fix the creation of files in fakerootJustus Winter2013-12-041-0/+4
| | | | | | | | | | | | | | Previously, fakeroot failed to create files in certain circumstances, e. g. assuming /tmp is a tmpfs and /tmp/some_file does not exist: % cd /tmp && fakeroot-hurd /bin/sh -c ':>/tmp/some_file' /bin/sh: 1: cannot create /tmp/some_file: Is a directory Fix this by sanitizing the flags value not to contain O_WRITE if we're not at the last path component. * trans/fakeroot.c (netfs_S_dir_lookup): Strip O_WRITE from flags when looking up all but the last path component.
* trans: improve the netfs_demuxer function in fakeroot.cJustus Winter2013-12-041-10/+16
| | | | | | | | | | Handle multiple request types as recommended by the Mach Server Writer's Guide section 4, subsection "Handling Multiple Request Types". This avoids initializing the reply message in every X_server function. The reply message has already been properly initialized in libports, so there is no need to call mig_reply_setup. * trans/fakeroot.c (netfs_demuxer): Improve the demuxer function.
* trans: remove unused declaration from fakeroot.cJustus Winter2013-12-041-1/+0
| | | | | | | Any messages we do not intercept are forwarded to the underlying file. * trans/fakeroot.c (netfs_demuxer): Remove unused declaration of function netfs_ifsock_server.
* Make sure created netfs nodes have stat validatedSamuel Thibault2013-11-191-1/+5
| | | | | | | Just like it always is in libnetfs' normal netfs_S_dir_lookup. * trans/fakeroot.c (netfs_S_dir_lookup): Call netfs_validate_stat after calling new_node.
* Fix spurious port deallocationSamuel Thibault2013-01-291-0/+2
| | | | | | | Replies are directly sent from client to actual server. * trans/fakeroot.c (netfs_demuxer): Return MIG_NO_REPLY, to notify server loop that no reply should be sent.
* Switch from cthreads to pthreadsRichard Braun2012-11-271-29/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makefiles, headers, types, macros and function calls are renamed where appropriate. Most of this work was done by Barry deFreese and Thomas DiModica. * auth/Makefile: Switch from cthreads to pthreads. * auth/auth.c: Likewise. * boot/Makefile: Likewise. * boot/boot.c: Likewise. * boot/ux.c: Likewise. * console-client/Makefile: Likewise. * console-client/console.c: Likewise. * console-client/driver.c: Likewise. * console-client/driver.h: Likewise. * console-client/generic-speaker.c: Likewise. * console-client/kbd-repeat.c: Likewise. * console-client/ncursesw.c: Likewise. * console-client/pc-kbd.c: Likewise. * console-client/pc-mouse.c: Likewise. * console-client/timer.c: Likewise. * console-client/trans.c: Likewise. * console-client/vga.c: Likewise. * console/Makefile: Likewise. * console/console.c: Likewise. * console/display.c: Likewise. * console/input.c: Likewise. * console/pager.c: Likewise. * defpager/backing.c: Likewise. * exec/Makefile: Likewise. * exec/exec.c: Likewise. * exec/hashexec.c: Likewise. * exec/priv.h: Likewise. * ext2fs/Makefile: Likewise. * ext2fs/balloc.c: Likewise. * ext2fs/dir.c: Likewise. * ext2fs/ext2fs.c: Likewise. * ext2fs/ext2fs.h: Likewise. * ext2fs/ialloc.c: Likewise. * ext2fs/inode.c: Likewise. * ext2fs/msg.c: Likewise. * ext2fs/pager.c: Likewise. * ext2fs/pokel.c: Likewise. * ext2fs/storeinfo.c: Likewise. * ext2fs/truncate.c: Likewise. * fatfs/Makefile: Likewise. * fatfs/dir.c: Likewise. * fatfs/fat.c: Likewise. * fatfs/fatfs.h: Likewise. * fatfs/inode.c: Likewise. * fatfs/main.c: Likewise. * fatfs/pager.c: Likewise. * fatfs/virt-inode.c: Likewise. * ftpfs/Makefile: Likewise. * ftpfs/ccache.c: Likewise. * ftpfs/ccache.h: Likewise. * ftpfs/conn.c: Likewise. * ftpfs/dir.c: Likewise. * ftpfs/fs.c: Likewise. * ftpfs/ftpfs.c: Likewise. * ftpfs/ftpfs.h: Likewise. * ftpfs/ncache.c: Likewise. * ftpfs/netfs.c: Likewise. * ftpfs/node.c: Likewise. * hostmux/Makefile: Likewise. * hostmux/hostmux.h: Likewise. * hostmux/mux.c: Likewise. * hostmux/node.c: Likewise. * hostmux/stubs.c: Likewise. * hurd/shared.h: Likewise. * isofs/Makefile: Likewise. * isofs/inode.c: Likewise. * isofs/lookup.c: Likewise. * isofs/main.c: Likewise. * isofs/pager.c: Likewise. * libcons/Makefile: Likewise. * libcons/cons-switch.c: Likewise. * libcons/cons.h: Likewise. * libcons/dir-changed.c: Likewise. * libcons/file-changed.c: Likewise. * libcons/init-init.c: Likewise. * libcons/vcons-close.c: Likewise. * libcons/vcons-input.c: Likewise. * libcons/vcons-move-mouse.c: Likewise. * libcons/vcons-open.c: Likewise. * libcons/vcons-scrollback.c: Likewise. * libdiskfs/Makefile: Likewise. * libdiskfs/boot-start.c: Likewise. * libdiskfs/dead-name.c: Likewise. * libdiskfs/dir-chg.c: Likewise. * libdiskfs/dir-link.c: Likewise. * libdiskfs/dir-lookup.c: Likewise. * libdiskfs/dir-mkdir.c: Likewise. * libdiskfs/dir-mkfile.c: Likewise. * libdiskfs/dir-readdir.c: Likewise. * libdiskfs/dir-rename.c: Likewise. * libdiskfs/dir-renamed.c: Likewise. * libdiskfs/dir-rmdir.c: Likewise. * libdiskfs/dir-unlink.c: Likewise. * libdiskfs/disk-pager.c: Likewise. * libdiskfs/diskfs-pager.h: Likewise. * libdiskfs/diskfs.h: Likewise. * libdiskfs/file-access.c: Likewise. * libdiskfs/file-chg.c: Likewise. * libdiskfs/file-exec.c: Likewise. * libdiskfs/file-get-fs-opts.c: Likewise. * libdiskfs/file-get-trans.c: Likewise. * libdiskfs/file-get-transcntl.c: Likewise. * libdiskfs/file-getcontrol.c: Likewise. * libdiskfs/file-getfh.c: Likewise. * libdiskfs/file-lock-stat.c: Likewise. * libdiskfs/file-lock.c: Likewise. * libdiskfs/file-reparent.c: Likewise. * libdiskfs/file-set-trans.c: Likewise. * libdiskfs/file-sync.c: Likewise. * libdiskfs/file-syncfs.c: Likewise. * libdiskfs/fsys-getroot.c: Likewise. * libdiskfs/fsys-options.c: Likewise. * libdiskfs/fsys-syncfs.c: Likewise. * libdiskfs/ifsock.c: Likewise. * libdiskfs/init-first.c: Likewise. * libdiskfs/init-init.c: Likewise. * libdiskfs/init-startup.c: Likewise. * libdiskfs/io-duplicate.c: Likewise. * libdiskfs/io-get-conch.c: Likewise. * libdiskfs/io-identity.c: Likewise. * libdiskfs/io-map-cntl.c: Likewise. * libdiskfs/io-map.c: Likewise. * libdiskfs/io-modes-get.c: Likewise. * libdiskfs/io-modes-off.c: Likewise. * libdiskfs/io-modes-on.c: Likewise. * libdiskfs/io-modes-set.c: Likewise. * libdiskfs/io-owner-get.c: Likewise. * libdiskfs/io-owner-mod.c: Likewise. * libdiskfs/io-prenotify.c: Likewise. * libdiskfs/io-read.c: Likewise. * libdiskfs/io-readable.c: Likewise. * libdiskfs/io-reauthenticate.c: Likewise. * libdiskfs/io-rel-conch.c: Likewise. * libdiskfs/io-restrict-auth.c: Likewise. * libdiskfs/io-revoke.c: Likewise. * libdiskfs/io-seek.c: Likewise. * libdiskfs/io-sigio.c: Likewise. * libdiskfs/io-stat.c: Likewise. * libdiskfs/io-write.c: Likewise. * libdiskfs/lookup.c: Likewise. * libdiskfs/name-cache.c: Likewise. * libdiskfs/node-drop.c: Likewise. * libdiskfs/node-make.c: Likewise. * libdiskfs/node-nput.c: Likewise. * libdiskfs/node-nputl.c: Likewise. * libdiskfs/node-nref.c: Likewise. * libdiskfs/node-nrefl.c: Likewise. * libdiskfs/node-nrele.c: Likewise. * libdiskfs/node-nrelel.c: Likewise. * libdiskfs/peropen-rele.c: Likewise. * libdiskfs/priv.h: Likewise. * libdiskfs/shutdown.c: Likewise. * libdiskfs/sync-interval.c: Likewise. * libfshelp/Makefile: Likewise. * libfshelp/fetch-root.c: Likewise. * libfshelp/fshelp.h: Likewise. * libfshelp/get-identity.c: Likewise. * libfshelp/lock-acquire.c: Likewise. * libfshelp/lock-init.c: Likewise. * libfshelp/locks.h: Likewise. * libfshelp/set-active.c: Likewise. * libfshelp/trans.h: Likewise. * libfshelp/transbox-init.c: Likewise. * libiohelp/Makefile: Likewise. * libiohelp/get_conch.c: Likewise. * libiohelp/handle_io_release_conch.c: Likewise. * libiohelp/initialize_conch.c: Likewise. * libiohelp/iohelp.h: Likewise. * libiohelp/verify_user_conch.c: Likewise. * libnetfs/Makefile: Likewise. * libnetfs/dir-lookup.c: Likewise. * libnetfs/dir-mkdir.c: Likewise. * libnetfs/dir-mkfile.c: Likewise. * libnetfs/dir-readdir.c: Likewise. * libnetfs/dir-rmdir.c: Likewise. * libnetfs/dir-unlink.c: Likewise. * libnetfs/drop-node.c: Likewise. * libnetfs/file-chauthor.c: Likewise. * libnetfs/file-check-access.c: Likewise. * libnetfs/file-chflags.c: Likewise. * libnetfs/file-chmod.c: Likewise. * libnetfs/file-chown.c: Likewise. * libnetfs/file-exec.c: Likewise. * libnetfs/file-get-storage-info.c: Likewise. * libnetfs/file-get-translator.c: Likewise. * libnetfs/file-lock-stat.c: Likewise. * libnetfs/file-lock.c: Likewise. * libnetfs/file-reparent.c: Likewise. * libnetfs/file-set-size.c: Likewise. * libnetfs/file-set-translator.c: Likewise. * libnetfs/file-statfs.c: Likewise. * libnetfs/file-sync.c: Likewise. * libnetfs/file-syncfs.c: Likewise. * libnetfs/file-utimes.c: Likewise. * libnetfs/fsys-getroot.c: Likewise. * libnetfs/fsys-set-options.c: Likewise. * libnetfs/init-init.c: Likewise. * libnetfs/io-clear-some-openmodes.c: Likewise. * libnetfs/io-duplicate.c: Likewise. * libnetfs/io-get-openmodes.c: Likewise. * libnetfs/io-get-owner.c: Likewise. * libnetfs/io-identity.c: Likewise. * libnetfs/io-mod-owner.c: Likewise. * libnetfs/io-read.c: Likewise. * libnetfs/io-readable.c: Likewise. * libnetfs/io-reauthenticate.c: Likewise. * libnetfs/io-restrict-auth.c: Likewise. * libnetfs/io-revoke.c: Likewise. * libnetfs/io-seek.c: Likewise. * libnetfs/io-set-all-openmodes.c: Likewise. * libnetfs/io-set-some-openmodes.c: Likewise. * libnetfs/io-stat.c: Likewise. * libnetfs/io-write.c: Likewise. * libnetfs/make-node.c: Likewise. * libnetfs/netfs.h: Likewise. * libnetfs/nput.c: Likewise. * libnetfs/nref.c: Likewise. * libnetfs/nrele.c: Likewise. * libnetfs/release-peropen.c: Likewise. * libnetfs/shutdown.c: Likewise. * libpager/Makefile: Likewise. * libpager/chg-compl.c: Likewise. * libpager/clean.c: Likewise. * libpager/data-request.c: Likewise. * libpager/data-return.c: Likewise. * libpager/data-unlock.c: Likewise. * libpager/inhibit-term.c: Likewise. * libpager/lock-completed.c: Likewise. * libpager/lock-object.c: Likewise. * libpager/mark-error.c: Likewise. * libpager/no-senders.c: Likewise. * libpager/object-init.c: Likewise. * libpager/object-terminate.c: Likewise. * libpager/offer-page.c: Likewise. * libpager/pager-attr.c: Likewise. * libpager/pager-create.c: Likewise. * libpager/pager-shutdown.c: Likewise. * libpager/priv.h: Likewise. * libpager/seqnos.c: Likewise. * libpipe/Makefile: Likewise. * libpipe/pipe.c: Likewise. * libpipe/pipe.h: Likewise. * libports/Makefile: Likewise. * libports/begin-rpc.c: Likewise. * libports/bucket-iterate.c: Likewise. * libports/claim-right.c: Likewise. * libports/class-iterate.c: Likewise. * libports/complete-deallocate.c: Likewise. * libports/count-bucket.c: Likewise. * libports/count-class.c: Likewise. * libports/create-bucket.c: Likewise. * libports/create-internal.c: Likewise. * libports/destroy-right.c: Likewise. * libports/enable-bucket.c: Likewise. * libports/enable-class.c: Likewise. * libports/end-rpc.c: Likewise. * libports/get-right.c: Likewise. * libports/import-port.c: Likewise. * libports/inhibit-all-rpcs.c: Likewise. * libports/inhibit-bucket-rpcs.c: Likewise. * libports/inhibit-class-rpcs.c: Likewise. * libports/inhibit-port-rpcs.c: Likewise. * libports/init.c: Likewise. * libports/interrupt-notified-rpcs.c: Likewise. * libports/interrupt-on-notify.c: Likewise. * libports/interrupt-operation.c: Likewise. * libports/interrupt-rpcs.c: Likewise. * libports/interrupted.c: Likewise. * libports/lookup-port.c: Likewise. * libports/manage-multithread.c: Likewise. * libports/no-senders.c: Likewise. * libports/port-deref-weak.c: Likewise. * libports/port-deref.c: Likewise. * libports/port-ref-weak.c: Likewise. * libports/port-ref.c: Likewise. * libports/ports.h: Likewise. * libports/reallocate-from-external.c: Likewise. * libports/reallocate-port.c: Likewise. * libports/resume-all-rpcs.c: Likewise. * libports/resume-bucket-rpcs.c: Likewise. * libports/resume-class-rpcs.c: Likewise. * libports/resume-port-rpcs.c: Likewise. * libports/stubs.c: Likewise. * libports/transfer-right.c: Likewise. * libstore/Makefile: Likewise. * libstore/gunzip.c: Likewise. * libstore/part.c: Likewise. * libstore/unzipstore.c: Likewise. * libthreads/Makefile: Likewise. * libtreefs/dir-lookup.c: Likewise. * libtreefs/fsys-getroot.c: Likewise. * libtreefs/fsys-hooks.c: Likewise. * libtreefs/fsys.c: Likewise. * libtreefs/trans-help.c: Likewise. * libtreefs/trans-start.c: Likewise. * libtreefs/treefs.h: Likewise. * libtrivfs/cntl-create.c: Likewise. * libtrivfs/dyn-classes.c: Likewise. * libtrivfs/io-reauthenticate.c: Likewise. * libtrivfs/io-restrict-auth.c: Likewise. * libtrivfs/protid-clean.c: Likewise. * libtrivfs/protid-dup.c: Likewise. * libtrivfs/trivfs.h: Likewise. * mach-defpager/Makefile: Likewise. * mach-defpager/default_pager.c: Likewise. * mach-defpager/kalloc.c: Likewise. * mach-defpager/main.c: Likewise. * nfs/Makefile: Likewise. * nfs/cache.c: Likewise. * nfs/main.c: Likewise. * nfs/mount.c: Likewise. * nfs/name-cache.c: Likewise. * nfs/nfs.h: Likewise. * nfs/ops.c: Likewise. * nfs/rpc.c: Likewise. * nfsd/Makefile: Likewise. * nfsd/cache.c: Likewise. * nfsd/loop.c: Likewise. * nfsd/main.c: Likewise. * nfsd/nfsd.h: Likewise. * pfinet/Makefile: Likewise. * pfinet/ethernet.c: Likewise. * pfinet/glue-include/asm/spinlock.h: Likewise. * pfinet/glue-include/linux/interrupt.h: Likewise. * pfinet/glue-include/linux/sched.h: Likewise. * pfinet/glue-include/linux/timer.h: Likewise. * pfinet/glue-include/linux/wait.h: Likewise. * pfinet/iioctl-ops.c: Likewise. * pfinet/io-ops.c: Likewise. * pfinet/kmem_cache.c: Likewise. * pfinet/main.c: Likewise. * pfinet/options.c: Likewise. * pfinet/pfinet-ops.c: Likewise. * pfinet/pfinet.h: Likewise. * pfinet/sched.c: Likewise. * pfinet/socket-ops.c: Likewise. * pfinet/socket.c: Likewise. * pfinet/timer-emul.c: Likewise. * pfinet/tunnel.c: Likewise. * pflocal/Makefile: Likewise. * pflocal/connq.c: Likewise. * pflocal/io.c: Likewise. * pflocal/sock.c: Likewise. * pflocal/sock.h: Likewise. * pflocal/socket.c: Likewise. * pflocal/sserver.c: Likewise. * proc/Makefile: Likewise. * proc/info.c: Likewise. * proc/main.c: Likewise. * proc/mgt.c: Likewise. * proc/msg.c: Likewise. * proc/proc.h: Likewise. * proc/stubs.c: Likewise. * proc/wait.c: Likewise. * storeio/Makefile: Likewise. * storeio/dev.c: Likewise. * storeio/dev.h: Likewise. * storeio/open.c: Likewise. * storeio/open.h: Likewise. * storeio/pager.c: Likewise. * storeio/storeio.c: Likewise. * term/Makefile: Likewise. * term/devio.c: Likewise. * term/hurdio.c: Likewise. * term/main.c: Likewise. * term/munge.c: Likewise. * term/ptyio.c: Likewise. * term/term.h: Likewise. * term/users.c: Likewise. * tmpfs/Makefile: Likewise. * tmpfs/dir.c: Likewise. * tmpfs/node.c: Likewise. * tmpfs/tmpfs.c: Likewise. * tmpfs/tmpfs.h: Likewise. * trans/Makefile: Likewise. * trans/fakeroot.c: Likewise. * trans/fifo.c: Likewise. * trans/hello-mt.c: Likewise. * trans/new-fifo.c: Likewise. * trans/streamio.c: Likewise. * ufs/Makefile: Likewise. * ufs/alloc.c: Likewise. * ufs/dir.c: Likewise. * ufs/hyper.c: Likewise. * ufs/inode.c: Likewise. * ufs/main.c: Likewise. * ufs/pager.c: Likewise. * ufs/pokeloc.c: Likewise. * ufs/sizes.c: Likewise. * ufs/ufs.h: Likewise. * usermux/Makefile: Likewise. * usermux/mux.c: Likewise. * usermux/node.c: Likewise. * usermux/usermux.h: Likewise. * utils/Makefile: Likewise. * utils/fakeauth.c: Likewise. * utils/rpctrace.c: Likewise.
* Update copyright years.Thomas Schwinge2008-07-011-1/+1
|
* Fix typo (bis)Samuel Thibault2008-06-121-1/+1
|
* Fix typo.Samuel Thibault2008-06-121-1/+1
|
* * fakeroot.c (netfs_attempt_utimes): Use a union to avoid an improperSamuel Thibault2008-06-101-7/+11
| | | | cast.
* auth/Marcus Brinkmann2004-03-011-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * auth.c: Include <stddef.h>. (pending_users, pending_server): Change type to struct hurd_ihash, initialize with HURD_IHASH_INITIALIZER. (struct pending): Change type of member LOCP to hurd_ihash_locp_t. (S_auth_user_authenticate): Use hurd_ihash_* functions instead ihash_*. (S_auth_server_authenticate): Likewise. (main): Do not allocate the hash tables. console-client/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * vga-dynafont.c: Include <stddef.h>. (struct mapped_character): Change type of LOCP to hurd_ihash_locp_t. (struct dynafont): Change type of CHARMAP to struct hurd_ihash. (dynafont_new): Use hurd_ihash_init instead of ihash_create. Remove variable ERR. Call hurd_ihash_add instead of ihash_add. (dynafont_free): Call hurd_ihash_destroy, no ihash_free. (dynafont_lookup_internal): Use hurd_ihash_find, not ihash_find. (dynafont_lookup_internal): Call hurd_ihash_locp_remove instead ihash_locp_remove, and hurd_ihash_add instead ihash_add. (dynafont_change_font): Likewise. Clean out LOCP if character is unmapped. ftpfs/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * ftpfs.h: Include <hurd/ihash.h>. (struct ftpfs): Change type of INODE_MAPPINGS to struct hurd_ihash. (struct ftpfs_dir_entry): Change type of INODE_LOCP to hurd_ihash_locp_t. * node.c (ftpfs_create_node): Call hurd_ihash_add, not ihash_add. (netfs_node_norefs): Call hurd_ihash_locp_remove, not ihash_locp_remove. * fs.c: Include <stddef.h>. (ftpfs_create): Call hurd_ihash_init, not hurd_ihash_create. Call hurd_ihash_destroy on error. libihash/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * ihash.c: Rewritten. * ihash.h: Rewritten. * Makefile (SRCS): Remove sizes.c. (LCLHDRS): Remove priv.h. * primes.c, sizes.c, priv.h: Files removed. 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * ports.h (struct port_bucket): Change type of HTABLE to struct hurd_ihash. (struct port_info): Change type of HENTRY to hurd_ihash_locp_t. * lookup-port.c (ports_lookup_port): Use hurd_ihash_find instead ihash_find. * bucket-iterate.c (_ports_bucket_class_iterate): Use HURD_IHASH_ITERATE instead ihash_iterate. * inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Likewise. * inhibit-bucket-rpcs.c (ports_inhibit_bucket_rpcs): Likewise. * create-internal.c (_ports_create_port_internal): Use hurd_ihash_add instead ihash_add. * import-port.c (ports_import_port): Likewise. * reallocate-from-external.c (ports_reallocate_from_external): Likewise. * reallocate-port.c (ports_reallocate_port): Likewise. * transfer-right.c (ports_transfer_right): Likewise. * create-bucket.c: Include <stddef.h>. (ports_create_bucket): Use hurd_ihash_init instead hurd_ihash_create. * class-iterate.c: Do not include <hurd/ihash.h>. * claim-right.c (ports_claim_right): Call hurd_ihash_locp_remove instead ihash_locp_remove. * complete-deallocate.c (_ports_complete_deallocate): Likewise. * destroy-right.c (ports_destroy_right): Likewise. * reallocate-from-external.c (ports_reallocate_from_external): Likewise. * reallocate-port.c (ports_reallocate_port): Likewise. * transfer-right.c (ports_transfer_right): Likewise. libps/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * ps.h (struct ps_context): Change type of members procs, ttys, ttys_by_cttyid and users to struct hurd_ihash. * context.c (ps_context_create): Remove variables err_procs, err_ttys, err_ttys_by_cttyid and err_users. Use hurd_ihash_init instead of ihash_create. Call hurd_ihash_set_cleanup and the hurd_ihash_cleanup_t type instead of ihash_set_cleanup. (ps_context_free): Call hurd_ihash_destroy instead of ihash_free. (lookup): Call hurd_ihash_find instead ihash_find, hurd_ihash_add instead ihash_add. (ps_context_find_proc_stat): Take pointer of hash object. (ps_context_find_tty): Likewise. (ps_context_find_tty_by_cttyid): Likewise. (ps_context_find_user): Likewise. libpthread/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * sysdeps/hurd/pt-key.h (PTHREAD_KEY_MEMBERS): Change type of THREAD_SPECIFICS to hurd_ihash_t. * sysdeps/hurd/pt-setspecific.c (pthread_setspecific): Call hurd_ihash_create instead ihash_create, and hurd_ihash_add instead ihash_add. * sysdeps/hurd/pt-getspecific.c (pthread_getspecific): Call hurd_ihash_find instead of ihash_find. * sysdeps/hurd/pt-destroy-specific.c (__pthread_destroy_specific): Call hurd_ihash_find instead of ihash_find, hurd_ihash_remove instead of ihash_remove, and hurd_ihash_free instead of ihash_free. proc/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * proc.h: Include <hurd/ihash.h>. (struct proc): Change type of members p_pidhashloc and p_taskhashloc to hurd_ihash_locp_t. (struct pgrp): Likewise for pg_hashloc. (struct session): Likewise for s_hashloc. * hash.c: Change type of pghash, pidhash, taskhash and sidhash to struct hurd_ihash and initialize them with HURD_IHASH_INITIALIZER. Include stddef.h. (pid_find): Call hurd_ihash_find instead ihash_find. (pid_find_allow_zombie): Likewise. (task_find): Likewise. (task_find_nocreate): Likewise. (pgrp_find): Likewise. (session_find): Likewise. (add_proc_to_hash): Call hurd_ihash_add instead ihash_add. (add_pgrp_to_hash): Likewise. (add_session_to_hash): Likewise. (remove_pgrp_from_hash): Call hurd_ihash_locp_remove instead ihash_locp_remove, and provide hash table pointer. (remove_proc_from_hash): Likewise. (remove_session_from_hash): Likewise. (prociterate): Use HURD_IHASH_ITERATE instead ihash_iterate. trans/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * fakeroot.c: Include <stddef.h>. (struct netnode): Change type of member idport_locp to hurd_ihash_locp_t. (idport_ihash): Change type to struct hurd_ihash and initialize with HURD_IHASH_INITIALIZER. (new_node): Call hurd_ihash_add instead of ihash_add. (netfs_node_norefs): Call hrd_ihash_locp_remove instead ihash_locp_remove. (netfs_S_dir_lookup): Call hurd_ihash_find instead ihash_find. utils/ 2003-08-17 Marcus Brinkmann <marcus@gnu.org> * rpctrace.c: Include <stddef.h>. (struct traced_info): Change type of LOCP to hurd_ihash_locp_t. (msgid_ihash): Change type to struct hurd_ihash, and initialize with HURD_IHASH_INITIALIZER, don't set cleanup here. (traced_names): Likewise. (main): Call hurd_ihash_set_cleanup for msgid_ihash. Don't create traced_names. (parse_msgid_list): Call hurd_ihash_add instead ihash_add. (new_send_wrapper): Likewise. (msgid_info): Likewise. Call hurd_ihash_find instead ihash_find. (rewrite_right): Likewise. (traced_dropweak): Call hurd_ihash_locp_remove instead ihash_locp_remove.
* 2002-06-09 Roland McGrath <roland@frob.com>Roland McGrath2002-06-091-2/+2
| | | | | * fakeroot.c (new_node): Use ino_t for io_identity argument. (netfs_S_dir_lookup): Likewise.
* 2002-05-23 Roland McGrath <roland@frob.com>Roland McGrath2002-05-241-2/+1
| | | | * fakeroot.c (netfs_report_access): Always report O_RDWR|O_EXEC.
* 2002-05-23 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann2002-05-231-5/+4
| | | | | | | | | * fakeroot.c (check_openmodes): Remove spurious if clause. (netfs_attempt_mksymlink): Don't evaluate stat information to get the length of the name, but use the string length of NAME and store it in the new variable NAMELEN. (netfs_S_dir_lookup): Don't always add O_NOLINK to FLAGS, but add it to the mask instead.
* 2002-05-18 Roland McGrath <roland@frob.com>Roland McGrath2002-05-181-7/+21
| | | | | * fakeroot.c (netfs_S_file_exec): Call check_openmodes and extract a ref to the send right with the node locked.
* 2002-05-18 Roland McGrath <roland@frob.com>Roland McGrath2002-05-181-124/+230
| | | | | | | | | | | | | * fakeroot.c (new_node): Get a reference on NP to return to the caller. (netfs_attempt_mkfile): Unlock before new_node call. (new_node): Take new arg LOCKED, says idport_ihash_lock already held. (netfs_S_dir_lookup, netfs_attempt_mkfile, main): Update callers. * fakeroot.c (fakeroot_auth_port): New variable. (main): Initialize it. (check_openmodes): New static function. (netfs_check_open_permissions): Rewritten using it. (netfs_S_dir_lookup): New function. (netfs_attempt_lookup, netfs_attempt_create_file): Replaced with stubs.
* 2002-05-13 Roland McGrath <roland@frob.com>Roland McGrath2002-05-131-0/+2
| | | | * fakeroot.c (netfs_validate_stat): Set NP->nn_translated.
* 2002-05-13 Roland McGrath <roland@frob.com>Roland McGrath2002-05-131-4/+13
| | | | | * fakeroot.c (netfs_S_file_exec): Don't lock the node (no need). Don't use MACH_MSG_TYPE_MOVE_SEND.
* 2002-05-13 Roland McGrath <roland@frob.com>Roland McGrath2002-05-131-0/+2
| | | | | * fakeroot.c (netfs_attempt_chmod): Handle a MODE argument with no S_IFMT bits set.
* libnetfs/Marcus Brinkmann2002-05-131-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-05-13 Marcus Brinkmann <marcus@gnu.org> * io-version.c: New file. * Makefile (IOSRCS): Add io-version.c. * fsstubs.c (netfs_S_io_server_version): Function removed. * netfs.h (netfs_server_name, netfs_server_version): New external variables to be defined by the user. ftpfs/ 2002-05-13 Marcus Brinkmann <marcus@gnu.org> * ftpfs.c (netfs_server_name, netfs_server_version): New variables. hostmux/ 2002-05-13 Marcus Brinkmann <marcus@gnu.org> * hostmux.c (netfs_server_name, netfs_server_version): New variables. nfs/ 2002-05-13 Marcus Brinkmann <marcus@gnu.org> * main.c: Include <version.h>. (netfs_server_name, netfs_server_version, argp_program_version): New variables. trans/ 2002-05-13 Marcus Brinkmann <marcus@gnu.org> * fakeroot.c (netfs_server_name, netfs_server_version): New variables. usermux/ 2002-05-13 Marcus Brinkmann <marcus@gnu.org> * usermux.c (netfs_server_name, netfs_server_version): New variables.
* 2002-05-13 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann2002-05-131-2/+36
| | | | | | * fakeroot.c (netfs_S_file_exec): New function. (netfs_S_io_prenotify): Fix last change. (netfs_S_io_postnotify): Likewise.
* 2002-05-13 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann2002-05-131-0/+69
| | | | | | | | | | | | | * fakeroot.c (NETFS_S_SIMPLE): New macro. (netfs_S_io_get_conch): New function. (netfs_S_io_release_conch): New function. (netfs_S_io_eofnotify): New function. (netfs_S_io_prenotify): New function. (netfs_S_io_postnotify): New function. (netfs_S_io_readnotify): New function. (netfs_S_io_readsleep): New function. (netfs_S_io_sigio): New function. (netfs_S_io_map_cntl): New function.
* 2002-05-12 Roland McGrath <roland@frob.com>Roland McGrath2002-05-121-3/+10
| | | | | * fakeroot.c (netfs_attempt_lookup): Treat EOPNOTSUPP like EACCES. When all modes fail, try opening the node with zero openmodes.
* 2002-05-12 Roland McGrath <roland@frob.com>Roland McGrath2002-05-121-0/+50
| | | | | * fakeroot.c (netfs_demuxer): New function. Reflect unrecognized messages to the underlying node port.
* 2002-05-11 Roland McGrath <roland@frob.com>Roland McGrath2002-05-111-0/+8
| | | | | * fakeroot.c (main): Stat the root node and fake its st_mode immediately to remove translator bits.
* 2002-05-06 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann2002-05-061-1/+22
| | | | | | | | | * fakeroot.c (netfs_attempt_lookup): Really check for EROFS or EISDIR error from O_RDWR lookup (the last change checked for O_RDWR | O_EXEC looks up, which is also necessary). (netfs_attempt_mkfile): Unlock DIR. (netfs_attempt_create_file): Likewise. (netfs_S_io_map): New function.
* 2002-05-05 Roland McGrath <roland@frob.com>Roland McGrath2002-05-051-1/+2
| | | | | * fakeroot.c (netfs_attempt_lookup): Check for EROFS or EISDIR error from O_RDWR lookup.
* 2002-05-05 Roland McGrath <roland@frob.com>Roland McGrath2002-05-051-7/+24
| | | | | | * fakeroot.c (netfs_attempt_lookup): Check io_identity result for our own fsys identity port; on match, look up the existing node for the port to ourselves.
* 2002-05-05 Roland McGrath <roland@frob.com>Roland McGrath2002-05-051-7/+16
| | | | * fakeroot.c (netfs_attempt_lookup): Unlock DIR before doing RPCs.
* 2002-05-03 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann2002-05-031-0/+1
| | | | | * fakeroot.c (netfs_node_norefs): Unlock node after not dropping it at all.
* 2002-05-03 Roland McGrath <roland@frob.com>Roland McGrath2002-05-031-0/+569
* fakeroot.c: New file.