2016-05-18  Thomas Schwinge  <thomas@codesourcery.com>

	GNU Hurd 0.8
	* configure.ac (AC_INIT): Set version to 0.8.
	* NEWS: Finalize for 0.8.

2016-05-16  Thomas Schwinge  <thomas@codesourcery.com>

	Complete changes to use -L instead of -Wl,-rpath-link
	Changes missing from commit c9c29eb890527fe68900e4a0af7c2df9a9fa5b40.

	* console-client/Makefile (%.so.$(hurd-version)): Use $(lpath) instead of
	$(rpath)
	* libstore/Makefile (libstore_%.so.$(hurd-version)): Likewise.

2016-05-09  Justus Winter  <justus@gnupg.org>

	startup: fix blunder
	Fixes b04364bc.  Thanks to Esa Peuha for spotting this.

	* startup/startup.c (run): Fix blunder.

2016-05-03  Justus Winter  <justus@gnupg.org>

	libihash: enable fast insertions replacing tombstones
	* libihash/ihash.c (hurd_ihash_locp_add): Also replace tombstones.

	libihash: fix corner case
	* libihash/ihash.c (hurd_ihash_locp_find): Set SLOT to NULL if the
	hash table has not been allocated.

2016-05-03  Justus Winter  <justus@gnupg.org>

	Fix privileged operations on trivfs-translated nodes
	Amends d18ea50e.

	* libtrivfs/fsys-getroot.c: When the user is privileged, make a
	verbatim copy of the real node instead of making an auth-restricted
	copy.

2016-05-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix build
	* trans/crash.c: Include <assert.h>.

2016-04-29  Justus Winter  <justus@gnupg.org>

	libihash: rehash if effective load exceeds the threshold
	Previously, if a hash table was not growing anymore but entries were
	regularly replaced, the tombstones would accumulate slowing down
	lookups and insertions.  A possible solution is to rehash the table if
	the effective load exceeds the configured threshold.  The effective
	load also takes tombstones into account.

	* libihash/ihash.c (hurd_ihash_locp_add): Use the effective load.
	(hurd_ihash_add): Likewise.  Use the load to decide whether we want to
	enlarge the table, otherwise we merely rehash.

2016-04-29  Justus Winter  <justus@gnupg.org>

	libihash: keep track of free slots
	* libihash/ihash.c (hurd_ihash_init): Init new field 'nr_free'.
	(add_one): Decrement counter if a free slot is used.
	(hurd_ihash_locp_add): Likewise.
	(hurd_ihash_add): Reset counter on reallocation.
	* libihash/ihash.h (struct hurd_ihash): New field 'nr_free'.
	(hurd_ihash_get_effective_load): New function.

2016-04-29  Justus Winter  <justus@gnupg.org>

	libihash: fix index computation
	Previously, find_index would return a suboptimal slot if a tombstone
	was in the optimal slot.

	* libihash/ihash.c (find_index): Fix index computation.

2016-04-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix root operations on trivfs-translated nodes
	* libtrivfs/fsys-getroot.c: When `uids` contain 0, make a verbatim copy of
	the real node instead of making an auth-restricted copy.

2016-04-28  Justus Winter  <justus@gnupg.org>

	startup: write all messages to stderr
	This avoids the need to flush the buffer and works around a weird
	problem with 'puts' not printing a newline.

	* startup/startup.c: Write all messages to stderr.

2016-04-28  Justus Winter  <justus@gnupg.org>

	startup: use the generated default server implementations
	* startup/Makefile: Set appropriate flags.
	* startup/startup.c: Drop most stub functions.

	startup: add verbose parameter
	* startup/startup.c: Add verbose parameter and inform about progress
	through the bootstrap procedure if it is given.

	startup: implement bits of the fs and io protocols
	* startup/Makefile: Build fs and io server with default
	implementations.
	(mung_msg_S.h): Tune regexp only to match the include guard.
	* startup/startup.c (mig_reply_setup): New function.
	(demuxer): Add new protocols.  Nicer implementation.
	(S_file_check_access): New function.
	(S_io_restrict_auth): Likewise.

	Unify and document the way fsids are handled in trivfs translators
	* doc/hurd.texi: Clarify what happens if 'trivfs_fsid' is zero.
	* login/utmp.c: Leave 'trivfs_fsid' at zero.
	* pfinet/main.c: Likewise.
	* trans/ifsock.c: Likewise.
	* trans/proxy-defpager.c: Likewise.

2016-04-27  Justus Winter  <justus@gnupg.org>

	libshouldbeinlibc: use the new assert in the refcount primitives
	* libshouldbeinlibc/refcount.h: Use 'assert_backtrace'.

2016-04-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: add assert(3) variant that prints backtraces
	* libshouldbeinlibc/Makefile: Add new files
	* libshouldbeinlibc/assert-backtrace.{c,h}: New files.

2016-04-27  Justus Winter  <justus@gnupg.org>

	libpager: add missing include
	* libpager/demuxer.c: Include <assert.h>.

2016-04-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	libdiskfs: Reject LFS seeks and read/writes
	vm_offset_t (used by pager_memcpy) is not 64bit-ready yet. Reject requests
	which go further than this.

	* libdiskfs/io-seek.c (diskfs_S_io_seek): Return EFBIG when requested offset
	is beyond limits of vm_offset_t.
	* libdiskfs/rdwr-internal.c (_diskfs_rdwr_internal): Return EFBIG when
	request goes beyond limits of vm_offset_t.

2016-04-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix supporting >4GiB files in ext2fs
	* ext2fs/inode.c (diskfs_user_read_node): When sizeof(off_t) >= 8, add
	di->i_size_high as high-64bit part to st->st_size. Drop setting
	unused info->i_high_size.
	(write_node): When sizeof(off_t) >= 8, write high-64bit part of st->st_size
	to di->i_size_high.
	* ext2fs/ext2_fs_i.h (ext2_inode_info): Remove i_high_size field.
	* pfinet/linux-src/include/linux/ext2_fs_i.h (ext2_inode_info): Likewise.

2016-04-26  Justus Winter  <justus@gnupg.org>

	libtrivfs: fix notion of privileged user
	Set 'is_root' if the node has been opened by the root user (this was
	the old behavior) or if it has been opened by the user the translator
	is executing under.

	This fixes the irritating bug that an unprivileged user cannot control
	her own trivfs-based translators.  It does not change how privileged
	trivfs translators work.

	* libtrivfs/io-reauthenticate.c (trivfs_S_io_reauthenticate): Use the
	new function to compute 'isroot'.
	* libtrivfs/io-restrict-auth.c (trivfs_S_io_restrict_auth): Likewise.
	* libtrivfs/open.c (trivfs_open): Likewise.
	* libtrivfs/priv.h (_is_privileged): New function.
	* libtrivfs/trivfs.h (struct peropen): Clarify what 'isroot' means.

2016-04-26  Justus Winter  <justus@gnupg.org>

	libtrivfs: fix error handling
	* libtrivfs/times.c (trivfs_set_{a,m}time): Fix error handling.

	libdiskfs: improve error handling
	* libdiskfs/boot-start.c (diskfs_start_bootstrap): Improve error
	handling.

2016-04-24  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Fix access mode of temporary files
	* libnetfs/dir-mkfile.c (netfs_S_dir_mkfile): Keep flags out of
	OPENONLY_STATE_MODES, instead of flags of OPENONLY_STATE_MODES, for the
	peropen's openstat.

2016-04-20  Justus Winter  <justus@gnupg.org>

	libfshelp: pass cookie to the callback function
	Previously, NULL was passed as cookie.  That notably caused some
	'peropen' objects to be created without context.

	Fixes 0bb14d0b.

	* libfshelp/fetch-root.c (fshelp_fetch_root): Pass cookie to the
	callback function.

2016-04-19  Justus Winter  <justus@gnupg.org>

	mach-defpager: fix error handling
	* mach-defpager/default_pager.c (S_default_pager_storage_info): Fix
	error handling.

2016-04-18  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make make install idempotent
	* sutils/Makefile ($(prefix)/dev/MAKEDEV): Add -f to ln command.

2016-04-17  Justus Winter  <justus@gnupg.org>

	utils/settrans: add option to specify the underlying node
	* utils/settrans.c (options): Add '--underlying'.
	(main): Handle new option.
	(open_node): Open the node if given.

	utils/settrans: get an authenticated root node in chroot mode
	* utils/settrans.c (get_credentials): New function.
	(main): Get an authenticated root node for the process we are
	chrooting.

	isofs: make superblock detection more robust
	* isofs/isofs.h (disk_image_len): New variable.
	* isofs/main.c (read_sblock): Avoid out of bounds access.
	* isofs/pager.c (disk_image_len): New variable.
	(create_disk_pager): Initialize 'disk_image_len'.

2016-04-15  Justus Winter  <justus@gnupg.org>

	Update NEWS file

2016-04-04  Flavio Cruz  <flaviocruz@gmail.com>

	Use posix types for mig definitions.
	* hurd/hurd_types.defs: Use posix types.
	* libfshelp/start-translator-long.c: Use uint32_t instead of
	unsigned32_t.

2016-03-24  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Use swapon path as pager partition path
	When /dev/hd* entries are parted-partition storeio, the store name is only
	the disk name, thus not unique.  We should just use the path being used
	instead.

	* sutils/swapon.c (swaponoff): Use `file' instead of `store->name' to
	default_pager_paging_file.
	(main): Drop hardcoded "/dev/".
	* procfs/rootdir.c (rootdir_gc_swaps): Drop hardcoded "/dev/".

2016-03-24  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix swap information numbers
	* procfs/rootdir.c (rootdir_gc_swaps): Fix default_pager_storage_info call
	parameter order.
	* sutils/swapon.c (main): Likewise.

2016-03-21  Flavio Cruz  <flaviocruz@gmail.com>

	netfs: Remove global reference count lock.
	* libnetfs/drop-node.c: Remove use of netfs_node_refcnt_lock.
	* libnetfs/init-init.c: Remove netfs_node_refcnt_lock.
	* libnetfs/make-node.c: Initialize refcounts in refcounts_init.
	* libnetfs/netfs.h: Use refcounts_t for tracking node references. Remove
	netfs_node_refcnt_lock. Add netfs_nref_light, netfs_nrele_light and
	handler netfs_try_dropping_softrefs. Adjust comments.
	* libnetfs/nput.c: Use refcounts_t. Call netfs_try_dropping_softrefs to
	remove any soft reference that the translator might have acquired
	during the lifetime of the node. Implement empty
	netfs_try_dropping_softrefs.
	* libnetfs/nref.c: Implement netfs_nref_light.
	* libnetfs/nrele.c: Use refcounts_t and netfs_try_dropping_softrefs.
	Implement netfs_nrele_light.
	* ftpfs/dir.c: Use netfs_nref without locking the old
	netfs_node_refcnt_lock.
	* ftpfs/node.c: Likewise.
	* usermux/mux.c: Use netfs_nref to increase hard references of the node.
	* hostmux/mux.c: Use netfs_nref to increase hard references of the node.
	* trans/fakeroot.c (new_node): Use a light reference when storing a node in the
	hash table.
	* trans/fakeroot.c (netfs_try_dropping_softrefs): Implement
	netfs_try_dropping_softrefs to remove the node from the hash table.
	* trans/fakeroot.c (netfs_node_norefs): Remove code to remove the node
	from the hash table.
	* trans/fakeroot.c (netfs_S_dir_lookup): Simplify lookup code since we
	don't need to lock netfs_node_refcnt_lock anymore.
	* procfs/netfs.c: Remove use of netfs_node_refcnt_lock.
	* nfs/cache.c: Add mutex to handle exclusive access to nodehash. This
	replaces the use of netfs_node_refcnt_lock.
	* nfs/cache.c (lookup_handle): Use nodehash_ihash_lock when accessing
	nodehash. Use netfs_nref_light to add one soft reference to the node
	just added to nodehash.
	* nfs/cache.c (netfs_node_norefs): Use netfs_nref. Don't use
	netfs_node_refcnt_lock and don't remove the node from nodehash here.
	* nfs/cache.c (netfs_try_dropping_softrefs): Drop the light reference
	when the node has no more hard references.
	* nfs/cache.c (recache_handle): Use nodehash_ihash_lock instead.
	* nfs/ops.c (netds_attempt_unlink): Use refcounts_references.
	* console/console.c (netfs_node_norefs): Use a soft reference to store
	a node in dir_node, cons_node, disp_node, inp_node.
	* console/console.c (netfs_try_dropping_softrefs): When dropping all
	soft references remove node pointer from the fields above.

2016-03-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	pflocal: Add support for access() on pipes
	bash's '<(' helper creates a pipe and gives /dev/fd/63 to the program, and
	gcc would then run access() on it. So we actually need to support at least
	some FS operations on pipes.

	* pflocal/fs.c: New file.
	* pflocal/mig-mutate.h (FILE_INTRAN, FILE_INTRAN_PAYLOAD, FILE_DESTRUCTOR,
	FILE_IMPORTS): New macros.
	* pflocal/sserver.c: Include "fs_S.h".
	(sock_demuxer): Call fs_server_routine.
	* pflocal/Makefile (SRCS): Add fs.c.
	(MIGSTUBS): Add fsServer.o.

2016-03-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix spurious port deallocation
	* libfshelp/fetch-root.c (fshelp_fetch_root): When translator has died, do
	not deallocate its control port twice.

2016-03-18  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	ext2fs: Fix off-by-one
	* ext2fs/pager.c (disk_cache_init): Do not add
	disk_cache_info[disk_cache_blocks] to disk_cache_info_free.

2016-03-16  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add getting swap information from swapon and procfs
	* hurd/default_pager.defs (default_pager_storage_info): New RPC.
	* hurd/default_pager_reply.defs: Skip default_pager_storage_info RPC.
	* hurd/default_pager_types.h: Include <mach/machine/vm_types.h>.
	(vm_size_array_t): New type.
	* mach-defpager/priv.h (part): Add `name' field.
	* mach-defpager/default_pager.c (new_partition): Allocate and fill
	`part->name' field. Free it on error.
	(destroy_paging_partition): Free `part->name' field.
	(S_default_pager_storage_info): New function.
	* procfs/Makefile (SRCS): Add default_pagerUser.c.
	* procfs/rootdir.c: Include "default_pager_U.h".
	(rootdir_gc_swaps): New function.
	(rootdir_entries): Add "swaps" entry.
	* sutils/swapon.c: Include <argz.h>
	(show): New variable.
	(options): Add --show/-S option.
	(def_pager, dev_master): New variables
	(swaponoff): Move getting `def_pager' to...
	(get_def_pager): ... new function.
	(main): Support 'S' option.
	* trans/proxy-defpager.c (S_default_pager_storage_info): New function.

2016-03-15  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Show firmlink mounts to mount points
	* trans/mtab.c (mtab_populate): Always open the underlying node, and pass
	it to mtab_mark_as_seen instead of the translated node.

	Add get_source support to firmlink
	* trans/firmlink.c (trivfs_get_source): New function.

	ext2fs: Fix adding blocks to free blocks cache
	* ext2fs/pager.c (disk_cache_info_free_push): Add prototype.
	(disk_pager_notify_evict): When dropping DC_INCORE flag, if the
	block becomes free (no reference and no DC_DONT_REUSE flags), call
	disk_cache_info_free_push.
	(disk_cache_block_deref): Only call disk_cache_info_free_push if the flags
	of the block do not contain DC_DONT_REUSE flags.

2016-03-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add missing RPC definitions
	* hurd/process_request.defs (proc_make_task_namespace_request): New
	definition.
	* hurd/process_reply.defs (proc_make_task_namespace_reply): Skip definition.

2016-03-07  Justus Winter  <justus@gnupg.org>

	utils/fakeauth: fix invocation of programs from PATH
	* utils/fakeauth.c (main): Replace the right element of the argument
	vector.  This fixes running scripts from PATH using fakeroot.

2016-02-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix parallel build
	* console-client/Makefile (parser.tab.h): Redefine the standard yacc rule to
	make it build the header too, to avoid concurrency between the standard yacc
	rule and the rule that builds the header.
	* sutils/Makefile (OBJS): Append .o suffix to $(progs) instead of .c.

2016-02-28  Esa Peuha  <esa.peuha@gmail.com>

	Fix use-after-free in libps.
	* libps/fmt.c (_fmt_create): Free new_fmt->src before new_fmt
	if reallocating fields fails.

2016-02-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix mustbedir mechanism for symlinks
	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): When following a symlink,
	if mustbedir is true, always append a slash to the symlink target, not only
	when the target is absolute.  Reset mustbedir to 0 before continuing the
	lookup loop.
	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): When following a symlink,
	if mustbedir is true, append a slash to the symlink target. Reset mustbedir
	to 0 before continuing the lookup loop.
	* libtreefs/dir-lookup.c (_treefs_s_dir_lookup): Likewise.

2016-02-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix parallel install
	* sutils/Makefile (install): Do not depend on $(prefix)/dev.
	($(prefix)/dev/MAKEDEV): Depend on $(prefix)/dev²

2016-02-23  Justus Winter  <justus@gnupg.org>

	libports: preserve the complex message flag
	* libports/manage-multithread.c (internal_demuxer): Preserve all
	message flags when we store the objects address as payload in the
	message.
	* libports/manage-one-thread.c (internal_demuxer): Likewise.

2016-02-23  Justus Winter  <justus@gnupg.org>

	procfs: adapt to kernel interface change
	procfs makes use of the debug interface which is subject to change.

	* procfs/rootdir.c (rootdir_gc_slabinfo): The flag
	CACHE_FLAGS_NO_RECLAIM is no longer used.

2016-02-22  Bartlomiej Puget  <larhard@gmail.com>

	fix Xioctl-proto.defs creation
	* hurd/Makefile (%.h): Remove heading spaces.
	(%ioctl-requests.list): Protect asterisk.
	* hurd/gensym.awk: Do not print newline in __asm statement.

2016-02-22  Justus Winter  <justus@gnupg.org>

	utils/mount: start translators with stderr closed
	Apparently some users of 'mount' do not cope with any output being
	generated from the spawned translator.

	* utils/mount.c (do_mount): Start translators with stderr closed.

2016-02-21  Justus Winter  <justus@gnupg.org>

	trans/crash: fix suspending task
	* trans/crash.c (S_crash_dump_task): Fix looking up 'user_proc'.

2016-02-16  Flavio Cruz  <flaviocruz@gmail.com>

	nfs: fix deallocation of struct node.
	* nfs/cache.c: Do not free np->nn since np and np->nn are being
	allocated contiguously.

2016-02-15  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make fakeroot forward send errors instead of crashing
	* trans/fakeroot.c (netfs_demuxer): When forwarding an unknown request fail,
	forward the error instead of crashing.

2016-02-15  Flavio Cruz  <flaviocruz@gmail.com>

	libnetfs: remove unused fields.
	* libnetfs/netfs.h: Remove prevp and next fields from struct node.

	libdiskfs: fix and improve locking in nrefs/nput.
	* libnetfs/node-nput.c: Do not unlock the node since it will be unlocked
	later.
	* libnetfs/node-nrele.c: Do not lock the node twice if not needed.

	nfs: Use libihash for the node cache.
	* nfs/cache.c: Remove old node cache and use libihash. Use a pointer to
	the node handle as the key and the node itself as the value. Use
	netfs_make_node_alloc to allow libihash to set 'slot'.
	* nfs/nfs.c: Pass in a struct handle instead.
	* nfs/nfs.h: Add a hurd_ihash_locp_t field and remove hnext and hprevp.

2016-02-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix function name
	* procfs/main.c (set_default_options): Rename to set_compatibility_options.
	(argp_parser): Update call accordingly.

2016-02-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix hang on reauthentication
	One needs to keep the port being reauthenticated alive until we are sure the
	server has complete authentication.

	* libfshelp/fetch-root.c (fshelp_fetch_root): Deallocate `port' after
	auth_user_authenticate has completed.
	* trans/fakeroot.c (netfs_S_dir_lookup): Likewise with `file'.

2016-02-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make sure to complete auth_server_authenticate
	* boot/boot.c (S_io_reauthenticate): Keep calling auth_server_authenticate
	while it returns EINTR.
	* proc/mgt.c (S_proc_reauthenticate): Likewise.

2016-02-13  Flavio Cruz  <flaviocruz@gmail.com>

	Use libihash to store directory entries in ftpfs.
	* ftpfs/ftpfs.h: Add dir_locp for each directory entry and replace the
	table with a libihash table.
	* ftpfs/dir.c: Modify the code to use libihash. Remove several functions
	such as rehash and insert.

2016-02-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/vmallocate: new utility
	* utils/Makefile (targets): Add 'vmallocate'.
	* utils/vmallocate.c: New file.

2016-02-08  James Clarke  <jrtc27@jrtc27.com>

	Fixed leaks in _netfs_translator_callback2_fn
	* libnetfs/trans-callback.c (_netfs_translator_callback2_fn): Fixed leaking
	iouser and peropen structs on error.

2016-02-07  Flavio Cruz  <flaviocruz@gmail.com>

	Check for a return value in netfs_make_peropen before using it in netfs_make_protid.
	* libnetfs/trans-callback.c: Add check for netfs_make_peropen.

2016-02-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	devnode: fix falling back to the kernel driver
	* devnode/devnode.c (ds_device_open): Do not exit if opening the
	master device fails.
	(parse_opt): Likewise.

	mach-defpager: link dynamically
	* mach-defpager/Makefile (LDFLAGS): Drop.

2016-02-07  Flavio Cruz  <flaviocruz@gmail.com>

	Remove libfshelp/trans.h and libfshelp/locks.h.
	* libfshelp/locks.h: Remove.
	* libfshelp/trans.h: Remove. struct transboot is not used anywhere.
	* libfshelp/fetch-root.c: Adjust includes.
	* libfshelp/lock-acquire.c: Likewise.
	* libfshelp/lock-init.c: Likewise.

	Use refcount_t for peropen reference counting in libnetfs.
	* libnetfs/netfs.h: Use refcount_t.
	* libnetfs/make-peropen.c: Initialize to 1 with refcount_init just like in libdiskfs.
	* libnetfs/make-protid.c: Don't increment the count here. Do it like libdiskfs.
	* libnetfs/io-duplicate.c: Add refcount_ref since netfs_make_protid no longer increments the refcount.
	* libnetfs/io-reauthenticate.c: Likewise.
	* libnetfs/io-restrict-auth.c: Likewise.
	* libnetfs/release-peropen.c: Dereference without locking.

2016-02-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/settrans: improve --chroot functionality
	Add an option '--chroot-chdir' to settrans and make it chdir to this
	directory before executing the target program.  Also, look up the
	executable in PATH.

	With these changes we no longer need to use the shell inside the
	chroot in the convenience scripts, and hence do not require it to be
	installed inside the chroot.

	* utils/fakeroot.sh: Simplify using the new option.
	* utils/remap.sh: Likewise.
	* utils/settrans.c (OPT_CHROOT_CHDIR): New constant.
	(options): New option 'chroot-chdir'.
	(main): Handle new option. Search for target executable in PATH.
	* utils/fakeauth.c (main): Likewise.

2016-02-04  Esa Peuha  <esa.peuha@gmail.com>

	exec: remove duplicate function call
	* exec/main.c (main) Remove second call to trivfs_startup
	from commit a5d384c.

2016-01-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	procfs: Move setting default parameters to a separate function
	* procfs/main.c (set_default_options): New function
	(argp_parser): Call `set_default_options'.

	Fix typo
	* exec/Makefile (targets): Rename to target.

2016-01-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Also build exec.static
	Which can be more convenient than using ld.so to boot the Hurd

	* exec/Makefile (targets): Add exec.static

2016-01-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix gcc signedness warnings
	* pfinet/linux-src/include/linux/skbuff.h (__skb_pull): Return unsigned
	char * instead of char *.

2016-01-13  Flavio Cruz  <flaviocruz@gmail.com>

	Fix O_DIRECTORY lookup on trivial translators
	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): If mustbedir, make sure
	entry is a directory by retrying "/", or starting the translator and
	retrying "/".
	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Likewise.

2016-01-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix pfinet crash
	During rsyslog testsuite, it does happen that threads running
	schedule_timeout get woken up by something else than the timer.  The (local)
	timer needs to be removed in that case.  Let's just always remove it, like
	Linux does.

	* pfinet/glue-include/linux/sched.h (schedule_timeout): Remove local timer
	before returning.

2016-01-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make private variables static
	* pfinet/timer-emul.c (timers, timer_thread): Make variables static.

	pflocal: Do not abort on too small getopt parameter
	* pflocal/socket.c (S_socket_getopt): When *value_len is too small, return
	EINVAL instead of aborting.

2016-01-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add dumb SO_ERROR support to pflocal
	pflocal does not currently have asynchronous operations, so we can make
	SO_ERROR just report 0.

	* pflocal/socket.c (S_socket_getopt): For `level' SOL_SOCKET and `opt'
	SO_ERROR, report 0.

2016-01-02  Flavio Cruz  <flaviocruz@gmail.com>

	allow pfinet to link using -O0
	This fixes a long list of undefined references when compiling with -O0
	by using static instead of extern in header files.

2016-01-01  Flavio Cruz  <flaviocruz@gmail.com>

	fix mach-defpager static linking
	* mach-defpager/Makefile: Allow multiple definitions for mach-defpager.

2015-12-31  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warning in hurd/fstests
	* fstests/fstests.c (main): Only declare 'root' when HURDISH_TESTS is
	defined.

2015-12-31  Flavio Cruz  <flaviocruz@gmail.com>

	Drop OTHERLIBS and use LDLIBS exclusively
	When cross-compiling, OTHERLIBS magically turns -lpthread into the path
	to the host libpthread.so file, resulting in build issues. LDLIBS does
	not suffer from this problem and it seems that is already being used in
	other Makefiles. This patch removes OTHERLIBS entirely from the build
	system.

	* Makeconf: Remove references to OTHERLIBS
	* auth/Makefile: Replace OTHERLIBS with LDLIBS.
	* boot/Makefile: Likewise.
	* console/Makefile: Likewise.
	* exec/Makefile: Likewise.
	* ext2fs/Makefile: Likewise.
	* fatfs/Makefile: Likewise.
	* ftpfs/Makefile: Likewise.
	* hostmux/Makefile: Likewise.
	* isofs/Makefile: Likewise.
	* libhurd-slab/Makefile: Likewise.
	* nfs/Makefile: Likewise.
	* nfsd/Makefile: Likewise.
	* pfinet/Makefile: Likewise.
	* proc/Makefile: Likewise.
	* procfs/Makefile: Likewise.
	* random/Makefile: Likewise.
	* storeio/Makefile: Likewise.
	* term/Makefile: Likewise.
	* tmpfs/Makefile: Likewise.
	* usermux/Makefile: Likewise.

2015-12-31  Flavio Cruz  <flaviocruz@gmail.com>

	Use DEVICE_IMPORTS to include libports/ports.h
	On Thu, Dec 31, 2015 at 04:28:14PM +0100, Justus Winter wrote:
	> Quoting Samuel Thibault (2015-12-31 16:11:30)
	> > Flavio Cruz, on Thu 31 Dec 2015 15:56:31 +0100, wrote:
	> > > This fixes three compiler warnings about ports_payload_get_name.
	> > >
	> > > * devnode/Makefile: Define DEVICE_IMPORTS.
	> > > * term/Makefile: Likewise.
	> > > * trans/Makefile: Likewise.
	> >
	> > Why not adding them to the corresponding mig-mutate.h?
	>
	> Sometimes we don't have a mig-mutate.h, e.g. for most (all?)
	> translators in trans/.  I prefer stuffing that in a .h as well, but I
	> wouldn't be opposed to just applying the patch, as we use both ways of
	> mutating the mig types.

	Agreed. I think only devnode should include it in mig-mutate.h. For
	term, only some stubs are including mig-mutate.h. For trans, there's no
	mig-mutate.h at all.  Here's the modified patch.

2015-12-31  Flavio Cruz  <flaviocruz@gmail.com>

	Define IO_OUTTRAN so that term_on_pty returns a mach_port_t
	* libtrivfs/mig-decls.h: Implement trivfs_convert_to_port.
	* term/mig-mutate.h: Define IO_OUTTRAN.

2015-12-30  Flavio Cruz  <flaviocruz@gmail.com>

	Add missing libraries to fix link errors
	This fixes several linking problems I had in my recent cross-compilation
	of the Hurd. I added missing static libraries and also organized some of
	the targets for more concise rules.

	* console-client/Makefile: Add libiohelp.a and libihash.a.
	* daemons/Makefile: Add libihash.a and libshouldbeinlibc.a.
	* devnode/Makefile: Add iohelp and ihash to HURDLIBS.
	* random/Makefile: Likewise.
	* trans/Makefile: Reorder targets alphabetically and add libiohelp.a and
	libihash.a.
	* utils/Makefile: Add libihash.a.

2015-12-30  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/nfs and hurd/nfsd
	* nfsd/fsys.c (init_filesystems): Use 'm' qualifier instead of 'a' for
	allocating the name in fscanf call.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/utils
	utils: Fix compiler warnings.

	* utils/rpcscan.c (setup_extract_target): Remove name variable.
	* utils/rpcscan.c (setup_extract_target): Fix bad initializer.
	* utils/rpctrace.c (new_send_wrapper, wrap_all_threads, wrap_new_thread,
	wrap_new_task, traced_spawn): Fix format strings.
	* utils/rpctrace.c (trace_and_forward): Cast to unsigned int.
	* utils/rpctrace.c (trace_and_forward): Use memcmp instead of pointer
	dereferencing to compare structures.
	* utils/rpctrace.c (wrap_all_threads): Cast to vm_address_t.
	* utils/rpctrace.c (main): Fix bad initializer.
	* utils/shd.c (run): Initialize save0.
	* utils/vminfo.c: Fix format strings.
	* utils/vmstat.c: Remove PSEP macro and expand the code.
	* utils/w.c (add_utmp_procs): Remove unused pos variable.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/trans
	trans: Fix compiler warnings.

	* trans/mtab.c (mtab_mark_as_seen): Cast idport to hurd_ihash_value_t.
	* trans/streamio.c (dev_open): Cast name to char *.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/startup
	startup: Fix compiler warning.

	* startup/startup.c (do_mach_notify_dead_name): Fix format string.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/random
	random: Fix compiler warnings.

	* random/gnupg-random.c: Use byte instead of char.
	* random/gnupg-rmd.h (rmd160_mixblock): Use byte instead of char.
	* random/gnupg-rmd.c (rmd160_mixblock): Likewise.
	* random/gnupg-rmd.c: Place #ifdef __HURD__ earlier to avoid warnings.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	Include missing header file in hurd/proc
	proc: Add missing header file.

	* proc/mgt: Include missing header file mach/task_notify.h.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/procfs
	procfs: Fix compiler warnings.

	* include/sys/procfs.h: Change uintptr_t to vm_address_t.
	* procfs/process.c: Fix format strings.
	* procfs/rootdir.c: Add missing casts.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/nfs and hurd/nfsd
	nfs: Fix compiler warnings.

	* nfs/ops.c (netfs_get_dirents): Initialize buf.
	* nfsd/nfsd.h: Define cache_handle_array union.
	* nfsd/cache.c: Use new cache_handle_array union.
	* nfds/ops.c: Likewise.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	drop the deprecated malloc/free hooks in hurd/mach-defpager

	fix compiler warnings in hurd/libstore

	fix compiler warnings in hurd/libshouldbeinlibc

	fix compiler warnings in hurd/libnetfs

	fix compiler warnings in hurd/libihash

	fix compiler warnings in hurd/libftpconn

	fix compiler warnings in hurd/isofs
	* isofs/rr.c (rrip_work): Use unsigned char.
	* isofs/rr.h: Use unsigned char instead of char.

	fix compiler warnings in hurd/libdiskfs

	fix compiler warnings in hurd/isofs
	* fatfs/dir.c: Use casts to avoid warnings.
	* fatfs/fat.c: Use unsigned char in fat_{from,to}_epoch.
	* fatfs/fat.h: Change arguments accordingly.
	* fatfs/fat.c (fat_read_sblock): Use size_t instead.
	* fatfs/inode.c (diskfs_cached_lookup_in_dirbuf): Remove err variable.
	* fatfs/inode.c (diskfs_user_read_node): Don't cast constant.
	* fatfs/inode.c (write_node): Check for errors in vm_map.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/console-client
	On Tue, Dec 29, 2015 at 08:43:24PM +0100, Samuel Thibault wrote:
	> Flavio Cruz, on Tue 29 Dec 2015 17:35:00 +0100, wrote:
	> > @@ -663,10 +663,11 @@ update_leds (void)
	> >  	| (led_state.num_lock ? 2 : 0)
	> >  	| (led_state.caps_lock ? 4 : 0);
	> >
	> > -      err = device_write_inband (kbd_dev, 0, -1, (void *) leds, 2, &data_cnt);
	> > +      err = device_write_inband (kbd_dev, 0, -1, (void *) leds, 2,
	> > +                                 (int *) &data_cnt);
	> >        if (!err && data_cnt == 1)
	> >  	err = device_write_inband (kbd_dev, 0, -1, (void *) &leds[1], 1,
	> > -				   &data_cnt);
	> > +				   (int *) &data_cnt);
	> >      }
	> >  }
	> >
	>
	> I'm surprised: if the device_write_inband RPC really wants an int*, why
	> not making data_cnt an int?

	That works better. Thanks.

	console-client: Fix compiler warning.

	* console-client/pc-kbd.c (update_leds): Replace mach_msg_type_number_t with
	int.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/ext2fs
	ext2fs: Fix compiler warnings.

	* ext2fs/balloc.c: Use unsigned char instead of char.
	* ext2fs/bitmap.c Use unsigned char for bitmaps.
	* ext2fs/dir.c: Fix format.
	* ext2fs/ext2fs.h: Use unsigned char for bitmaps.
	* ext2fs/ialloc.c: Use unsigned char for bitmaps. Fix format string in
	ext2_warning.
	* ext2fs/pager.c: Fix format string in ext2_warning and ext2_error.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/exec
	exec: Fix compiler warnings.

	* exec/elfcore.c: Cast arguments to vm_address_t.
	* exec/main.c: Use %lu in asprintf.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/daemons
	daemons: Fix compiler warnings.

	* daemons/lmail.c: Initialize cached to 0.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	fix compiler warnings in hurd/console-client
	console-client: Fix several compiler warnings.

	* console-client/bdf.c: Use size_t instead of int.
	* console-client/driver.c: Remove unused variable errstring.
	* console-client/pc-kbd.c: Cast sc to scancode_x1 before comparing with enum
	values.
	* console-client/vga-dynacolor.h: Use an explicit if in reference counting.
	* console-client/vga-dynafont.c: Use usigned char for bitmaps.
	* console-client/vga-support.c: Use unsigned char instead of char.
	* console-client/vga-support.h: Likewise.
	* console-client/vga.c: Use conchar_attr_equal instead of casting structures to
	integers.
	* hurd/console.h: Add conchar_attr_equal to compare conchar_attr_t structures.

2015-12-29  Flavio Cruz  <flaviocruz@gmail.com>

	boot: Fix boot.c compiler warning.
	* boot/boot.c: Compare header without using pointer dereferencing.

2015-12-01  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: use ihash for the node cache
	Replace the hand-written hash table in the node cache with libihash.
	Libihash is a self-tuning hash table, whereas the previous code used a
	fixed number of buckets.

	* libdiskfs/Makefile (HURDLIBS): Link to `ihash'.
	* libdiskfs/diskfs.h (struct node): Remove bucket list, add slot pointer.
	* libdiskfs/node-cache.c (nodecache): New ihash table replacing the
	old `nodehash'.
	(lookup): Drop function.
	(diskfs_cached_lookup_context): Adapt accordingly.
	(diskfs_cached_ifind): Likewise.
	(diskfs_try_dropping_softrefs): Likewise.
	(diskfs_node_iterate): Likewise.

2015-11-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: keep list of reusable disk cache entries
	This avoids a linear scan through the cache.

	*  ext2fs/ext2fs.h (struct disk_cache_info): New field 'next'.
	* ext2fs/pager.c (disk_cache_hint): Drop.
	(disk_cache_info_free, disk_cache_info_free_lock): New variables.
	(disk_cache_info_free_pop, disk_cache_info_free_push): New functions.
	(disk_cache_init): Adjust slightly.
	(disk_cache_block_ref): Use new functions.
	(disk_cache_block_deref): Likewise.

2015-11-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: disable block cache debugging by default
	* ext2fs/ext2fs.h: Disable block cache debugging by default.
	* ext2fs/pager.c: Likewise.

	ext2fs: improve the block cache
	* ext2fs/pager.c (disk_cache_block_ref): Improve the cache by using
	the new lookup and insertion functions that return and use a location
	pointer.

	libihash: provide a general purpose hash algorithm
	* libdiskfs/name-cache.c: Move the Murmur3 algorithm...
	* libihash/murmur3.c: ... here, and properly attribute the code.
	* libihash/ihash.h (hurd_ihash_hash32): New prototype.
	* libihash/Makefile (SRCS): Add new file.

	libihash: fix item insertion
	* libihash/ihash.c (find_index): Keep track and return the index where
	we could insert the item.
	(add_one): Use 'find_index'.

	libihash: generalize the interface to support non-integer keys
	* libihash/ihash.c (hash, compare): New functions that are used
	throughout libihash to hash and compare keys.
	(hurd_ihash_set_gki): New function.
	* libihash/ihash.h (hurd_ihash_fct_hash_t): New type for hash functions.
	(hurd_ihash_fct_cmp_t): New type for comparison functions.
	(struct hurd_ihash): New fields for hash and comparison functions.
	(HURD_IHASH_INITIALIZER_GKI): New static initializer.
	(hurd_ihash_set_gki): New prototype.

	libihash: fix fast insertion corner case
	* libihash/ihash.c (hurd_ihash_locp_add): Fix insertion if the key
	doesn't match.

	libihash: fix ill-devised locp lookup interface
	* libihash/ihash.c (hurd_ihash_locp_find): Return both the item and the slot.
	* libihash/ihash.h (hurd_ihash_locp_find): Adjust prototype.
	(hurd_ihash_locp_value): Remove function.

2015-11-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Use -L instead of -Wl,-rpath-link
	The latter does not work for libpthread.a which passes -lihash, which would
	find the installed libihash.a instead of the just-compiled one.

	* Makeconf (rpath): Remove, replaced by...
	(lpath): ... new variable.
	(link-executable, $(libname).so.$(hurd-version)): Use $(lpath) instead of
	$(rpath).

2015-11-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add missing menus

	Fix undefined reference
	* doc/hurd.texi (devnode): Do not reference not-yet-existing eth-multiplexer
	node.

	Add devnode documentation
	* doc/hurd.texi (devnode): Add section.

	Add libhurd-slab
	* libhurd-slab: New directory
	* Makefile (lib-subdirs): Add libhurd-slab.

	Add devnode translator
	* devnode: New directory
	* Makefile (prog-subdirs): Add devnode.

2015-11-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: prefer performance degradation over failure
	* libihash/ihash.c (hurd_ihash_add): Add the item even though we are
	above the load factor if resizing failed.

2015-11-06  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: optimize lookup-or-insert operations
	If libihash is used to implement a cache, a insertion is always
	preceeded by a lookup.  hurd_ihash_add has to do the lookup again.

	Provide a new pair of functions, hurd_ihash_locp_add and
	hurd_ihash_locp_find, that can be used in combination to avoid the
	second lookup.

	* libihash/ihash.c (hurd_ihash_locp_add): New function using a
	location pointer...
	(hurd_ihash_locp_find): ... that has been returned by this function.
	* libihash/ihash.h (hurd_ihash_locp_add): New declaration.
	(hurd_ihash_locp_find): Likewise.
	(hurd_ihash_locp_value): New function.

2015-11-06  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: add hurd_ihash_value_valid
	* libihash/ihash.h (hurd_ihash_value_valid): New function.
	* libihash/ihash.c (index_empty): Use hurd_ihash_value_valid.

	random: satisfy arbitrarily-sized reads
	* random/random.c (trivfs_S_io_read): Satisfy arbitrarily-sized reads.

	random: use /servers/startup to register for shutdown notifications
	* random/random.c (arrange_shutdown_notification): Use the new way to
	contact the startup server.

	random: improve error handling
	* random/random.c (arrange_shutdown_notification): Improve error
	handling.
	(main): Display warning if arranging the shutdown notification failed.

	random: fix odd formatting
	* random/random.c (trivfs_append_args): Fix odd formatting.

	Remove unused variables
	* console/pager.c (user_pager_init): Remove unused variables.
	* ext2fs/pager.c (create_disk_pager): Likewise.
	* fatfs/pager.c (create_fat_pager): Likewise.
	* storeio/pager.c (init_dev_paging): Likewise.

2015-11-03  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: remove deprecated static class vectors
	This API has been deprecated in Hurd 0.7.

	* doc/hurd.texi (trivfs_protid_portclasses,
	trivfs_protid_nportclasses, trivfs_cntl_portclasses,
	trivfs_cntl_nportclasses): Remove.
	* libtrivfs/trivfs.h: Likewise.
	* libtrivfs/mig-decls.h: Adapt accordingly.
	* libtrivfs/cntl-classes.c: Remove unused file.
	* libtrivfs/protid-classes.c: Likewise.
	* libtrivfs/Makefile (OTHERSRCS): Drop the two files.

2015-11-03  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pfinet: fix sanity check at translator startup time
	* pfinet/main.c (main): Properly iterate over `pfinet_protid_portclasses'.

2015-10-31  Thomas Schwinge  <thomas@codesourcery.com>

	GNU Hurd 0.7
	* configure.ac (AC_INIT): Set version to 0.7.
	* NEWS: Finalize for 0.7.

2015-10-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pflocal: avoid building the interrupt server
	* pflocal/io.c: Do not needlessly include `interrupt_S.h'.

	hurd: fix type of in-translation function
	* hurd/hurd_types.defs (interrupt_t): Fix type of in-translation
	function.

2015-10-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: improve demuxers
	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.

	* trans/proxy-defpager.c (proxy_defpager_demuxer): Improve the demuxer
	function.
	* trans/streamio.c (demuxer): Likewise.

2015-10-20  Svante Signell  <svante.signell@gmail.com>

	Make fakerooted access() return real access
	Various realworld tests would otherwise think they can write to /, while
	they actually can't.

	* trans/fakeroot.c (netfs_report_access): Call file_check_access instead of
	returning O_RDWR|O_EXEC when faking mode too.

2015-10-12  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make dir_lookup create files with user permissions enabled
	So we will always be able to re-open them.

	* trans/fakeroot.c (netfs_S_dir_lookup): Call real_from_fake_mode() on modes
	before calling the underlying filesystem's dir_lookup.

2015-10-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make netfs_S_io_reauthenticate handle allocation errors
	* libnetfs/io-reauthenticate.c (netfs_S_io_reauthenticate): Loop when
	netfs_make_protid fails with EINTR, return error when it fails otherwise.

2015-10-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Drop duplicate port deallocation
	Follow-up dbfa8a3

	* libnetfs/io-reauthenticate.c (netfs_S_io_reauthenticate): Do not
	deallocate parameter port `rend_port' when an error will be returned.
	* libtrivfs/io-reauthenticate.c (trivfs_S_io_reauthenticate): Do not
	deallocate parameter port `rend_port' when an error will be returned.

2015-10-05  James Clarke  <jrtc27@jrtc27.com>

	Add missing null checks in libshouldbeinlibc
	The getpwnam_r and similar functions only return non-zero on error, but not
	finding the given name/UID/GID does not count as an error. When they return 0,
	the value of the result (*result when looking at the arguments in the man pages)
	still needs to be checked for null.

	* libshouldbeinlibc/idvec-rep.c (lookup_uid): Check result for null.
	(lookup_gid): Likewise.
	* libshouldbeinlibc/idvec-verify.c (verify_passwd): Likewise.
	(verify_id): Likewise.

2015-10-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Update NEWS file

	libdiskfs: fflush stdout when pausing
	* libdiskfs/boot-start.c (diskfs_start_bootstrap): fflush stdout when
	pausing for /hurd/startup.

2015-09-29  Joshua Branson  <bransoj@hotmail.com>

	Minor documentation changes
	* .gitignore: Add generated doc/hurd.aux, doc/hurd.cp, doc/hurd.cps,
	doc/hurd.fn, doc/hurd.ky, doc/hurd.log, doc/hurd.pdf, doc/hurd.pg,
	doc/hurd.sc, doc/hurd.toc, doc/hurd.tp, doc/hurd.vr files.
	* doc/hurd.texi: Fix typo, complete explanation about sharing Mach devices.
	Complete documentation for shutdown. Replace cthreads with POSIX threads.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: deprecate old api
	* libtrivfs/trivfs.h (trivfs_protid_portclasses): Deprecate, and
	schedule for removal in Hurd 0.8.
	(trivfs_protid_nportclasses): Likewise.
	(trivfs_cntl_portclasses): Likewise.
	(trivfs_cntl_nportclasses): Likewise.

	libtrivfs: optimize the object lookup code
	* libtrivfs/mig-decls.h: Remove the specialized cases, they really
	blow up these functions that are supposed to be inlined.  Also, look
	into the dynamically allocated vectors first, because this is the
	preferred way of using libtrivfs since 1997.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/proxy-defpager: 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 helper function `allowed', however, used the
	first item of the previously used static array, which is NULL.  This
	circumvented the typecheck, allowing the default pager protocol to be
	spoken over control ports, likely resulting in a crash.

	* trans/proxy-defpager.c: Convert to dynamic classes and buckets.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/passwd: 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 mild bug.  The classes and buckets given to
	`trivfs_startup' end up in the dynamic vectors too, making the object
	lookup code use the more complicated code path.

	* trans/password.c: Convert to dynamic classes and buckets.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/new-fifo: 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 mild bug.  The classes and buckets given to
	`trivfs_startup' end up in the dynamic vectors too, making the object
	lookup code use the more complicated code path.

	* trans/new-fifo.c: Convert to dynamic classes and buckets.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	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.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/ifsock: 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 mild bug.  The classes and buckets given to
	`trivfs_startup' end up in the dynamic vectors too, making the object
	lookup code use the more complicated code path.

	* trans/ifsock.c: Convert to dynamic classes and buckets.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/crash: 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 mild bug.  The classes and buckets given to
	`trivfs_startup' end up in the dynamic vectors too, making the object
	lookup code use the more complicated code path.

	* trans/crash.c: Convert to dynamic classes and buckets.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pflocal: 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 mild bug.  The classes and buckets given to
	`trivfs_startup' end up in the dynamic vectors too, making the object
	lookup code use the more complicated code path.

	* pflocal/pflocal.c: Convert to dynamic classes and buckets.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pfinet: 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 mild bug.  The classes and buckets given to
	`trivfs_startup' end up in the dynamic vectors too, making the object
	lookup code use the more complicated code path.

	* pfinet/main.c: Convert to dynamic classes and buckets.
	* pfinet/options.c: Likewise.
	* pfinet/pfinet.h: Likewise.
	* pfinet/socket-ops.c: Likewise.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: 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 mild bug.  The classes and buckets given to
	`trivfs_startup' end up in the dynamic vectors too, making the object
	lookup code use the more complicated code path.

	* exec/main.c: Convert to dynamic classes and buckets.

2015-09-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fflush stdout when pausing
	* libdiskfs/boot-start.c (start_execserver): fflush stdout when pausing.

	libdiskfs: improve error handling
	* libdiskfs/boot-start.c (start_execserver): Improve error handling.

2015-09-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: add missing include
	* exec/main.c: Include `argz.h'.

2015-09-22  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: remove unused variables
	* libports/inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Remove unused
	variable `bucket'.
	* libports/inhibit-class-rpcs.c (ports_inhibit_class_rpcs): Remove unused
	variables `pi' and `rpc'.

2015-09-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Define TIME_VALUE_TO_TIMESPEC only when not defined already
	* exec/elfcore.c (TIME_VALUE_TO_TIMESPEC) [TIME_VALUE_TO_TIMESPEC]: Do not
	redefine macro.

2015-09-12  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Turn EADDRNOTAVAIL to more commonly-understood ECONNREFUSED
	Thanks Svante Signell for the investigation.

	* pflocal/socket.c (S_socket_connect, S_socket_send): When addr_get_sock
	returns EADDRNOTAVAIL, translate into ECONNREFUSED.

2015-09-12  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix build warning
	* pflocal/sock.h (sock_bind): Move declaration.

2015-09-12  James Clarke  <jrtc27@jrtc27.com>

	Add support for ANSI.SYS SCP/RCP escape codes
	This adds support for CSI s and u, which are equivalent to ESC 7 and 8,
	saving/restoring the cursor position.

	* console/display.c (handle_esc_bracket): Added support for CSI s and u.

2015-09-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix detection of terminated dgram pflocal server
	* libpipe/pipe.c (_pipe_no_readers): Break pipe for connection-less pipes
	too.

2015-09-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix closure of local server sockets
	Since bound socks always have a ref for their address, they would never get
	freed.  Thanks Svante Signell for the investigation.

	* pflocal/sock.h (sock_deref): When `sock' has one ref left and is bound to
	an address, unbound it, and thus shut it down.

2015-09-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix sock_bind(sock,NULL) support
	* pflocal/sock.c (sock_bind): When addr is NULL, do not take/release its
	mutex. When old_addr is also NULL, return EINVAL. When old_addr is not NULL,
	deref old_addr instead of addr.

2015-09-10  James Clarke  <jrtc27@jrtc27.com>

	Install port-deref-deferred.h header for ports.h
	* libports/Makefile (installhdrs): Add port-deref-deferred.h for ports.h

2015-09-10  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Do not install libtrivfs mig stub headers
	They were not usable anyway.

	* libtrivfs/Makefile (installhdrs): Remove generated mig stub headers.

2015-09-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc/maptime: use memory fences
	* libshouldbeinlibc/maptime.h (maptime_read): Use memory fences.

	pflocal: avoid nested function
	* pflocal/io.c (copy_time): Move function out of `S_io_stat', turning
	it into a static inline function.

2015-09-09  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	umount: Do not report errors on making the device go away
	This fixes umounting bind mounts or other mounts for which the device can
	not be made away.

	* utils/umount.c (do_umount): When the --force option is not passed, ignore
	errors from file_set_translator call on the device file.

2015-09-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Also do not realpath "proc" pseudo-device
	* sutils/fstab.c (fstab_find_device): Do not realpath "proc" pseudo-device.

2015-09-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make procfs accept none or proc as "device"
	This allows "mount none /proc -t proc" to work.

	* procfs/main.c (argp_parser): On ARGP_KEY_ARG, accept and ignore "none" and
	"proc".

2015-09-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix opening a fifo with O_RDWR
	We should not wait for a writer in that case, since that will be ourself.

	* trans/fifo.c (open_hook): Do not wait for a writer when flags contains
	O_WRITE.

2015-09-06  James Clarke  <jrtc27@jrtc27.com>

	Fix race condition in ext2fs when remounting
	On some systems, ext2fs.static would regularly hang at startup, as a
	race condition meant it would process paging requests while remounting.
	To fix this, libpager has been altered to allow inhibiting and resuming
	its worker threads, and ext2fs uses this to inhibit paging while
	remounting.

	* console/pager.c (pager_requests): New variable.
	(user_pager_init): Updated call to pager_start_workers to use new
	pager_requests variable.
	* daemons/runsystem.sh: Removed artificial delay working around the race
	condition.
	* ext2fs/ext2fs.c (diskfs_reload_global_state): Call new
	inhibit_ext2_pager and resume_ext2_pager functions, and leave sblock as
	non-NULL so it will be munmapped.
	* ext2fs/ext2fs.h (inhibit_ext2_pager,resume_ext2_pager): New functions.
	* ext2fs/pager.c (file_pager_requests): New variable.
	(create_disk_pager): Updated call to pager_start_workers to use new
	file_pager_requests variable.
	(inhibit_ext2_pager,resume_ext2_pager): New functions.
	* fatfs/fatfs.h (inhibit_fat_pager,resume_fat_pager): New functions.
	* fatfs/pager.c (file_pager_requests): New variable.
	(create_fat_pager): Updated call to pager_start_workers to use new
	file_pager_requests variable.
	(inhibit_fat_pager,resume_fat_pager): New functions.
	* libdiskfs/disk-pager.c (diskfs_disk_pager_requests): New variable.
	(diskfs_start_disk_pager): Updated call to pager_start_workers to use
	new diskfs_disk_pager_requests variable.
	* libdiskfs/diskfs-pager.h (diskfs_disk_pager_requests): New variable.
	* libpager/demuxer.c (struct pager_requests): Renamed struct requests to
	struct pager_requests. Replaced queue with queue_in and queue_out
	pointers. Added inhibit_wakeup field.
	(pager_demuxer): Updated to use new queue_in/queue_out pointers. Only
	wake up workers if not inhibited.
	(worker_func): Updated to use new queue_in/queue_out pointers. Final
	worker thread to sleep notifies the inhibit_wakeup condition variable.
	(pager_start_workers): Added out parameter for the requests instance.
	Allocate heap space shared by both queues. Initialise new inhibit_wakeup
	condition.
	(pager_inhibit_workers,pager_resume_workers): New functions.
	* libpager/pager.h (struct pager_requests): Public forward definition.
	(pager_start_workers): Added out parameter for the requests instance.
	(pager_inhibit_workers,pager_resume_workers): New functions.
	* libpager/queue.h (queue_empty): New function.
	* storeio/pager.c (pager_requests): New variable.
	(init_dev_paging): Updated call to pager_start_workers to use new
	pager_requests variable.

2015-08-31  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix build against glibc 2.21
	* Makeconf (CPPFLAGS): Remove -D_IO_MTSAFE_IO.
	* libthreads/lockfile.c (_IO_MTSAFE_IO): Define macro.
	(IS_IN): Define macro to 0.

2015-08-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: rename `error' variable
	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Rename `error' to `err'.
	* libdiskfs/file-getcontrol.c (diskfs_S_file_getcontrol): Likewise.
	* libdiskfs/file-syncfs.c (diskfs_S_file_syncfs): Likewise.

	libdiskfs: add missing declarations
	* libdiskfs/diskfs.h (diskfs_node_disknode): Add missing declaration.
	(diskfs_disknode_node): Likewise.

	libdiskfs: fix typo
	* libdiskfs/diskfs.h: Fix typo.

2015-08-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix parent lookup in the name cache
	* libdiskfs/name-cache.c (diskfs_check_lookup_cache): Drop stray negation.

2015-08-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: provide unconditional debug macro
	* ext2fs/ext2fs.h (ext2_debug_): New macro that unconditionally prints
	the given message.
	(ext2_debug): Use the new macro.

	ext2fs: improve ext2fs debugging
	* ext2fs/ext2fs.h (ext2_debug): Print to stderr.
	(printf): Drop declaration.

2015-08-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fake full file access only for faked nodes
	Otherwise some scripts may try to modify system files just because they find
	they seem to be able to.

	* trans/fakeroot.c (netfs_report_access): When FAKE_MODE is not set on
	`np', call file_check_access on the underlying node instead of returning
	O_RDWR|O_EXEC.

2015-08-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make fakeroot return file types from underly fs
	Fakeroot does not support faking them anyway, and they may change on the
	underlying fs, e.g. when creating a local socket.

	* trans/fakeroot.c (netfs_validate_stat): Return S_IFMT part of st_mode as
	provided by underlying filesystem.

2015-08-14  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: clarify why we emulate protected payloads
	The Hurd uses protected payloads to improve the receiver lookup on the
	server side to the point that we no longer do a hash table lookup in
	the dispatch code.

	If the kernel does not support protected payloads, we degrade
	gracefully, do one lookup in libports' dispatching code, and emulate
	the protected payload feature to still save one hash table lookup in
	the intrans function.

	* libports/manage-multithread.c (ports_manage_port_operations_multithread):
	Add comment.
	* libports/manage-one-thread.c (ports_manage_port_operations_one_thread):
	Likewise.

2015-08-14  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pflocal: fix receiver lookup
	* pflocal/mig-decls.h (begin_using_addr_payload): Use
	`ports_lookup_payload'.

2015-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Print which path init tried to execv
	* init/init.c (main): On execv failure, print which path failed.

2015-07-14  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: fix setting the name of early servers
	Previously, the exec server did not set the name of the servers
	started before the proc server.  Instead this was done by the startup
	server, but this was merely a workaround, missing notably the startup
	server itself.

	* exec/exec.c (set_name): New function.
	(do_exec): Move the code setting the name to a new function, and also
	call it if the proc server is not started yet.
	* startup/startup.c (run): Drop hack.

2015-07-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Do not keep mutex locked while waiting for authenticate loop
	* libdiskfs/io-reauthenticate.c (diskfs_S_io_reauthenticate): Release the node
	lock while blocking on the auth server and client.
	* libnetfs/io-reauthenticate.c (netfs_S_io_reauthenticate): Likewise.
	* pfinet/io-ops.c (S_io_reauthenticate): Likewise.

2015-06-30  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpcscan: new utility
	* utils/rpcscan.c: New file.
	* utils/Makefile: Add `rpcscan'.

	utils: split-off the message id parsing
	* utils/rpctrace.c: Move all the code handling the message id files...
	* utils/msgids.c: ... to a new file.
	* utils/msgids.h: And add the relevand declarations.
	* utils/Makefile (SRCS): Add the new file.

2015-06-17  Svante Signell  <svante.signell@gmail.com>

	Cope with scripts which chmod -x directories
	As well as other potential mode changes which are indeed supposed to still
	work as root.

	* trans/fakeroot.c (netfs_attempt_chmod): Always set S_IRUSR and S_IWUSR in
	real_mode, and set S_IXUSR also when this is a directory.

2015-06-05  Esa Peuha  <esa.peuha@gmail.com>

	Fix ps -o %r infinite loop
	* libps/fmt.c (_fmt_create): When nothing at all was recognized, break out
	instead of looping.

2015-06-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: do not print a message on ENOMEM
	* libdiskfs/node-cache.c (diskfs_node_iterate): Do not print a message
	on ENOMEM.

2015-06-05  Diego Nieto Cid  <dnietoc@gmail.com>

	Check AWK usability when XKB is enabled
	* configure.ac: test whether AWK provides strtonum function.

2015-06-05  Diego Nieto Cid  <dnietoc@gmail.com>

	console-client: Fix lower range of binary search
	To prevent infinite recursion range checking was introduced
	as an exit condition adding two extra comparisons on each
	recursive call.

	By fixing the range used by the recursive call over the lower
	half of the array one can avoid penalizing successful lookups
	while still preventing infinite recursion due to `first`
	parameter being greater than `last` parameter.

	* console-client/xkb/kstoucs.c (find_ucs): don't remove middle from the
	lower range. Remove extra comparisons.

2015-06-05  Diego Nieto Cid  <dnietoc@gmail.com>

	console-client: assert precondition
	* console-client/xkb/kstoucs.c (find_ucs): assert precondition.

2015-05-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/vmstat: fix integer overflow
	Previously, the `vmstat' utility would stop displaying the memory
	object hit ratio after some time due to an integer overflow.

	* utils/vmstat.c (get_memobj_hit_ratio): Fix integer overflow.

2015-05-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: fix build with -O0
	* utils/Makefile: Link against `libshouldbeinlibc'.

2015-05-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: fix binary search
	Previously, the binary search through the keysym map was incorrectly
	implemented.  This resulted in infinite loops (thanks to the compilers
	tail call optimization) or crashes (if the stack space was exhausted).

	* console-client/xkb/kstoucs.c (find_ucs): Fix binary search.

2015-05-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: avoid nested function
	* console-client/xkb/kstoucs.c (find_ucs): Previously, this function
	was a nested function for no reason at all.  Turn it into a normal
	function.

	console-client: fix build with -O0
	* console-client/timer.h (fetch_jiffies): Make function `static inline'.

2015-05-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	fakeroot: Fix reopening files after a chmod
	Huge thanks to Svante Signell for having tracked the bug.

	* trans/fakeroot.c (netfs_attempt_chmod): Make the file_chmod call
	additionally include the modes from nn->openmodes.

2015-05-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make comment clearer
	* trans/fakeroot.c (check_openmodes): Make comment clearer about missing new
	openmodes.

2015-05-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make sure to record only RWX open modes
	Thanks Svante Signell for the investigation and proposed patch.

	* trans/fakeroot.c (new_node): Assert that `openmodes' includes only
	O_RDWR|O_EXEC
	(check_openmodes): Likewise with `newmodes'.
	(netfs_S_dir_lookup): Keep only O_RDWR|O_EXEC from `flags' when calling
	new_node.

2015-05-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: fix error handling
	* fatfs/dir.c (diskfs_dirrewrite_hard): Fix error handling.

2015-05-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix renaming of directories
	Previously, file permissions and ownership of the target directory
	were ignored when renaming a directory:

	    % mkdir a b
	    % chmod 555 a
	    % mv b a
	    % ls a
	    b

	* libdiskfs/dir-renamed.c (diskfs_rename_dir): Fix error handling.

2015-05-14  Svante Signell  <svante.signell@gmail.com>

	Fix creating named sockets inside fakeroot-hurd
	* trans/fakeroot.c (netfs_set_translator): New function.

2015-04-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: port to libdiskfs' node cache
	* fatfs/inode.c: Drop all cache-related code.
	(diskfs_user_make_node): New function.
	(diskfs_cached_lookup_in_dirbuf): Reimplement using the `lookup_context'.
	(read_node): Rename to diskfs_user_read_node and adopt accordingly.
	(diskfs_try_dropping_softrefs): Rename to `diskfs_user_try_dropping_softrefs'.
	(diskfs_node_reload): Pass context to `diskfs_user_read_node'.
	(diskfs_alloc_node): Pass `dir' via context to `diskfs_user_read_node'.
	* fatfs/fatfs.h (struct disknode): Drop fields `hnext', `hprevp'.
	(struct lookup_context): New definition.
	(ifind): Drop declaration.
	* fatfs/dir.c (diskfs_lookup_hard): Adjust accordingly.
	* fatfs/main.c (fetch_root): Likewise.

	isofs: port to libdiskfs' node cache
	* isofs/inode.c: Drop all cache-related code.
	(diskfs_user_make_node): New function.
	(calculate_file_start): Check for `record' being null.
	(cache_id): New function.
	(read_node): Rename to diskfs_user_read_node and adopt accordingly.
	(diskfs_try_dropping_softrefs): Rename to diskfs_user_try_dropping_softrefs.
	* isofs/isofs.h (struct lookup_context): New definition.
	(cache_id): New declaration.
	* isofs/lookup.c (diskfs_lookup_hard): Adjust accordingly.
	* isofs/main.c (fetch_root): Likewise.

2015-04-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: implement a node cache
	Previously, all users of libdiskfs implemented a node cache on their
	own.  Move the node cache from ext2fs into libdiskfs.  We preserve the
	previous API by marking all functions that we pull from ext2fs as
	weak, so that users like tmpfs can still implement their own node
	cache.

	* ext2fs/dir.c (diskfs_lookup_hard): Adjust accordingly.
	* ext2fs/ext2fs.c (main): Don't call `inode_init'.
	* ext2fs/ext2fs.h (struct disknode): Drop `hnext', `hprevp'.
	* ext2fs/inode.c: Move the node cache into diskfs.
	(diskfs_user_make_node): New function.
	(diskfs_try_dropping_softrefs): Rename to `diskfs_user_try_dropping_softrefs'.
	(read_node): Rename to `diskfs_user_read_node'.  Also move a chunk of
	code dealing with generations from `diskfs_cached_lookup' here.
	* libdiskfs/Makefile (OTHERSRCS): Add `node-cache.c'.
	* libdiskfs/diskfs.h (struct node): Add `hnext', `hprevp'.
	Amend existing comments, add forward declarations.
	* libdiskfs/node-cache.c: New file.

2015-04-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: use fat nodes
	Use `diskfs_make_node_alloc' to allocate both the node and the
	disknode in a continuous chunk of memory.  This increases locality and
	reduces the pressure on the memory allocator.

	* ext2fs/inode.c: Use `diskfs_node_disknode' to access the disknode.
	(diskfs_cached_lookup): Use `diskfs_make_node_alloc' to allocate the
	node.
	(diskfs_node_norefs): Only free `np'.
	* ext2fs/dir.c: Use `diskfs_node_disknode' to access the disknode.
	* ext2fs/ext2fs.h: Likewise.
	* ext2fs/getblk.c: Likewise.
	* ext2fs/ialloc.c: Likewise.
	* ext2fs/pager.c: Likewise.
	* ext2fs/truncate.c: Likewise.

2015-04-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: declare all inline functions as `extern inline'
	* libdiskfs/diskfs.h (diskfs_node_disknode, diskfs_disknode_node):
	Declare functions as `extern inline' so that we can use them in other
	functions declared as `extern inline'.

	libdiskfs: fix node initialization
	* libdiskfs/node-make.c (init_node): Initialize flag `author_tracks_uid'.

	libdiskfs: drop unused fields from struct node
	* libdiskfs/diskfs.h (struct node): Drop unused fields from struct
	node.

	libdiskfs: make struct node more compact
	* libdiskfs/diskfs.h (struct node): Turn flags into a bit field.

	libdiskfs: lock-less reference counting of nodes
	* libdiskfs/diskfs.h (struct node): Use refcounts_t for reference counting.
	(diskfs_node_refcnt_lock): Remove.
	(diskfs_node_norefs,diskfs_drop_node): Change comments accordingly.
	* libdiskfs/init-init.c: Adjust accordingly.
	* 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.
	* ext2fs/inode.c: Likewise.
	* fatfs/inode.c: Likewise.
	* isofs/inode.c: Likewise.
	* tmpfs/node.c: Likewise.
	* doc/hurd.texi: Likewise.

2015-04-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	tmpfs: use a seperate lock to protect all_nodes
	Previously, tmpfs used diskfs_node_refcnt_lock to serialize access to
	the all_nodes and some other related global state related to memory
	consumption.

	Use a separate lock to protect all_nodes, and atomic operations to
	access the state related to memory consumption. Adjust the reference
	counting accordingly.  Every node in the all_nodes carries a light
	reference.  When we are asked to give up that light reference, we
	reacquire our lock momentarily to check whether someone else
	reacquired a reference through the all_nodes.

	* tmpfs/tmpfs.h (num_files, tmpfs_space_used): Use atomic operations
	for these variables.
	(adjust_used): Use atomic operations.
	(get_used): New convenience function to atomically retrieve
	tmpfs_space_used.
	* tmpfs/node.c (all_nodes_lock): New lock.
	(diskfs_alloc_node): Use a separate lock to protect all_nodes.
	Adjust the reference counting accordingly.
	(diskfs_free_node): Likewise.
	(diskfs_cached_lookup):Likewise.
	(diskfs_node_iterate): Likewise.
	(diskfs_node_norefs): Do not remove the node from all_nodes.  This
	actually looks like a mistake, I do not know why they did that here as
	well as in diskfs_free_node.
	(diskfs_try_dropping_softrefs): Check whether someone reacquired a
	reference, and if so hold on to our light reference.
	(diskfs_grow): Use atomic operations.
	* tmpfs/tmpfs.c (diskfs_set_statfs): Likewise.

2015-04-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	isofs: use a seperate lock to protect node_cache
	Previously, isofs used diskfs_node_refcnt_lock to serialize access to
	the node_cache.

	Use a separate lock to protect node_cache.  Adjust the reference
	counting accordingly.  Every node in the node_cache carries a light
	reference.  When we are asked to give up that light reference, we
	reacquire our lock momentarily to check whether someone else
	reacquired a reference through the node_cache.

	* isofs/inode.c (nodecache_lock): New lock.
	(inode_cache_find): Use a separate lock to protect node_cache.
	Adjust the reference counting accordingly.
	(diskfs_cached_lookup): Likewise.
	(load_inode): Likewise.
	(cache_inode): Update comment accordingly.
	(diskfs_node_iterate): Likewise.
	(diskfs_node_norefs): Move the code removing the node from node_cache...
	(diskfs_try_dropping_softrefs): ... here, where we check whether
	someone reacquired a reference, and if so hold on to our light
	reference.

2015-04-11  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: use a seperate lock to protect nodehash
	Previously, fatfs used diskfs_node_refcnt_lock to serialize access to
	the nodehash.

	Use a separate lock to protect nodehash.  Adjust the reference
	counting accordingly.  Every node in the nodehash carries a light
	reference.  When we are asked to give up that light reference, we
	reacquire our lock momentarily to check whether someone else
	reacquired a reference through the nodehash.

	* fatfs/inode.c (nodecache_lock): New lock.
	(diskfs_cached_lookup): Use a separate lock to protect nodehash.
	Adjust the reference counting accordingly.
	(ifind): Likewise.
	(diskfs_node_iterate): Likewise.
	(diskfs_node_norefs): Move the code removing the node from nodehash...
	(diskfs_try_dropping_softrefs): ... here, where we check whether
	someone reacquired a reference, and if so hold on to our light
	reference.

2015-04-11  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: use a seperate lock to protect nodehash
	Previously, ext2fs used diskfs_node_refcnt_lock to serialize access to
	the nodehash.

	Use a separate lock to protect nodehash.  Adjust the reference
	counting accordingly.  Every node in the nodehash carries a light
	reference.  When we are asked to give up that light reference, we
	reacquire our lock momentarily to check whether someone else
	reacquired a reference through the nodehash.

	* ext2fs/inode.c (nodecache_lock): New lock.
	(diskfs_cached_lookup): Use a separate lock to protect nodehash.
	Adjust the reference counting accordingly.
	(ifind): Likewise.
	(diskfs_node_iterate): Likewise.
	(diskfs_node_norefs): Move the code removing the node from nodehash...
	(diskfs_try_dropping_softrefs): ... here, where we check whether
	someone reacquired a reference, and if so hold on to our light
	reference.

2015-04-10  Thomas Schwinge  <thomas@codesourcery.com>

	GNU Hurd 0.6.
	* configure.ac (AC_INIT): Set version to 0.6.
	* NEWS: Finalize for 0.6.

2015-04-08  Justus Winter  <4winter@informatik.uni-hamburg.de>

	NEWS: mention that the init server has been split
	* NEWS: Mention that the init server has been split into the startup
	server and the init server.

2015-04-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: fix runtime option parsing
	* procfs/main.c (netfs_runtime_argp): Actually use the runtime option
	parser.

	libports: use protected payloads to optimize the object lookup
	* NEWS: Mention protected payloads.
	* libports/Makefile (SRCS): Add `port-deref-deferred.c'.
	* libports/create-internal.c (_ports_create_port_internal): Set the
	protected payload to the objects address.
	* libports/import-port.c (ports_import_port): Likewise.
	* libports/reallocate-from-external.c (ports_reallocate_from_external):
	Likewise.
	* libports/reallocate-port.c (ports_reallocate_port): Likewise.
	* libports/transfer-right.c (ports_transfer_right): Likewise.
	* libports/manage-multithread.c (ports_manage_port_operations_multithread):
	Use the protected payload for the object lookup if provided.  Add
	thread pool management calls.
	* libports/manage-one-thread.c (ports_manage_port_operations_one_thread):
	Likewise.
	* libports/destroy-right.c (ports_destroy_right): Defer the
	dereferencing of outstanding send rights to avoid a port_info
	use-after-free.
	* libports/port-deref-deferred.c: New file.
	* libports/port-deref-deferred.h: Likewise.
	* libports/ports.h (struct port_bucket): New field `threadpool'.
	(ports_lookup_payload): Check `port_right'.

	procfs: fix argument parsing
	* procfs/main.c (argp_parser): Fix argument parsing.

2015-03-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix space style

2015-02-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: avoid acquiring global lock in message dispatch
	* libports/interrupt-operation.c (ports_S_interrupt_operation): Update
	`cancel_threshold' using atomic operations.
	* libports/manage-multithread.c (internal_demuxer): Avoid taking the lock.
	* libports/ports.h (struct port_info): Mention that one needs atomic
	operations to access `cancel_threshold'.

2015-02-14  Justus Winter  <4winter@informatik.uni-hamburg.de>

	TODO: drop obsolete item
	* TODO (libpager): Drop item trying to prevent thread storms.  We
	dealt with that in a much nicer way.  Nowadays we use a fixed number
	of threads in libpager.

2015-02-08  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: add more error handling
	* startup/startup.c (launch_core_servers): Add more error handling.

2015-02-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Explicit the keymap compatibility flags
	Since "default" is not provided any more by xkb

	* console-client/xkb/xkb-data/keymap/hurd: Replace "default"
	xkb_compatibility by
	"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)" for all
	keymaps.

2015-02-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Allow dhcp trafic and configuration
	2007-10-14  Christian Dietrich  <stettberger@dokucode.de>

	* options.c (options): Marked -a, -g -m, -p, -A, -G
	OPTION_ARG_OPTIONAL.
	(parse_interface_copy_device): New function.
	(parse_opt): When selecting another interface with -i
	set the options from e.g. a prior fsysopts call as default
	values. For -a, -g, -p, -g, -A, -G set the optional
	argument as value. When there is no argument, delete the
	value (e.g. unset default gateway). Delete delete default gateways
	only if the set gateway is on an interface modified in this call.
	Add always an route for dhcp packages on all devices. By doing
	this we can send dhcp renew packages.
	(trivfs_append_args): Add --gateway only once.

	2007-10-14  Marco Gerards  <metgerards@student.han.nl>

	        * options.c (parse_opt): Add the route for `0.0.0.0' so broadcasting
	        works.

	* linux-src/net/ipv4/devinet.c (inet_insert_ifa) [_HURD_]: Don't
	fail when the address is `0.0.0.0'.

2015-02-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Remove unimplemented -s option
	* pfinet/options.c (options): Remove 's' case.

2015-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: fix notification port handling
	* utils/rpctrace.c (new_receiver_info): Fix handling of old
	notification port.

2015-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console: fix error and notification port handling
	This fixes a deallocation of an invalid port notably seen on system
	shutdown.

	* console/display.c (free_modreqs): Handle errors of
	`mach_port_request_notification' and check whether the old
	notification port was valid.
	(do_mach_notify_msg_accepted): Likewise.
	(display_notice_filechange): Likewise.

2015-01-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: call `startup_essential_task' earlier
	Previously, the proc server did not call `startup_essential_task'
	until it got the message port of the startup server using
	`proc_setmsgport'.

	Now that we have `/servers/startup', we can do this in main, before we
	start our message service loop.

	A complication arises because the traditional startup server is
	single-threaded.  Handle this by tweaking startup not to bind itself
	to `/servers/startup' before it is ready.

	* proc/main.c (main): Try to lookup `/servers/startup' and send the
	message here, or...
	* proc/msg.c (S_proc_setmsgport): ... fall back to the old way here.
	* proc/proc.h (startup_fallback): New variable.
	* startup/startup.c (main): Move code installing ourself on `/servers/startup'
	(install_as_translator): ... here.
	(launch_core_servers): And use it here, just before we reply to `/hurd/auth'.

2015-01-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	auth: remove implicit assumption about the bootstrap process
	The current code assumes that it can speak the startup protocol over
	its bootstrap port.

	* auth/auth.c (main): Generalize by trying to use `/servers/startup'
	before falling back to the bootstrap port.

2015-01-17  Justus Winter  <4winter@informatik.uni-hamburg.de>

	auth: simplify expression
	* auth/auth.c (S_auth_{user,server}_authenticate): Simplify expression.

	startup: give the tasks we create a name
	* startup/startup.c (run): Name the tasks we start.

	libports: silence pointless error message
	* libports/manage-multithread.c (adjust_priority): Silence pointless
	error message.

	libdiskfs: fix port leak
	* libdiskfs/boot-start.c (get_console): Deallocate `device_master'.

	libfshelp: improve error handling
	* libfshelp/start-translator-long.c (fshelp_start_translator_long):
	Once we have a task, go to `lose_task' so that we do not leave hosed
	tasks around.

2015-01-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	random: fix typo
	* random/gnupg-random.c (read_pool): Fix typo in comment.

2015-01-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Backport Linux changes for proper TCP EOF handling
	Notably when remote eagerly sends a RST: we want to return EOF to the
	application, not EPIPE.

	* pfinet/linux-src/net/ipv4/tcp_output.c (tcp_connect): Set sk->done to 0.
	* pfinet/linux-src/net/ipv4/tcp_input.c (tcp_fin): Set RCV_SHUTDOWN, and
	sk->done to 1.
	* pfinet/linux-src/net/ipv4/tcp.c (tcp_recv_urg): Only return ENOTCONN when
	we never actually connect.  Always return 0 when reception is closed.
	(tcp_recvmsg): When any data is available, ignore errors and EOF.  When no
	data is available, first check for reception being closed, then for errors.

2015-01-03  Stefan Weil  <sw@weilnetz.de>

	procfs: Fix typos in comments (found by codespell)

	libshouldbeinlibc: Fix typo in local variable name

	misc: Fix typos in comments (found by codespell)

	console: Fix typos in comments

	console-client: Fix typos in comments

	aclocal.m4, configure.ac: Fix typos and grammar in comment (found by codespell)

	lib*: Fix typos in comments (found by codespell)

2014-12-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Revert "Make sure to free content dir in procfs"
	This reverts commit 5fe615a4d66f4dea48812ed9e4f250010a8f9298.

2014-12-26  Lancelot SIX  <lancelot@lancleotsix.com>

	Make sure to free content dir in procfs
	In procfs/netfs.c:netfs_get_dirents, make sure to free the memory
	allocated with the "get_contents" callback of nodes.

2014-12-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Avoid ./ components in mtab output
	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Match "." path as being the
	root directory.
	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Likewise.

2014-12-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: make the protected payload changes less intrusive
	The changes to `hurd_types.defs' caused the glibc build to fail.
	Guard the problematic parts with `HURD_SERVER' similar how it is done
	in GNU Mach.

	* Makeconf: Define `HURD_SERVER' when preprocessing the RPC
	definitions for the server side.
	* hurd/hurd_types.defs: Guard problematic parts with `HURD_SERVER'.

2014-12-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix inclusion loop between hurd_types.defs and hurd/signal.h>
	* boot/Makefile (MIGSFLAGS): Add -DHURD_DEFAULT_PAYLOAD_TO_PORT=1.
	* mach-defpager/Makefile (MIGSFLAGS): Likewise.
	* hurd/hurd_types.defs: Do not include <hurd/ports.h>.

2014-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Replace `bcopy' with `memcpy' or `memmove' as appropriate
	* ext2fs/inode.c: Replace `bcopy' with `memcpy' or `memmove' as
	appropriate.
	* ext2fs/pager.c: Likewise.
	* isofs/lookup.c: Likewise.
	* isofs/main.c: Likewise.
	* isofs/rr.c: Likewise.
	* libdiskfs/file-get-trans.c: Likewise.
	* libiohelp/return-buffer.c: Likewise.
	* libpager/pagemap.c: Likewise.
	* libpipe/pq.c: Likewise.
	* libpipe/pq.h: Likewise.
	* libstore/unzipstore.c: Likewise.
	* mach-defpager/default_pager.c: Likewise.
	* pfinet/ethernet.c: Likewise.
	* pfinet/tunnel.c: Likewise.
	* storeio/dev.c: Likewise.

2014-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Replace `bzero' with `memset'
	For reference, this patch was created using the following semantic
	patch, and then manually applying the change in all functions
	containing nested functions, as those are not supported by Coccinelle.

	@@
	expression A, B;
	@@

	- bzero (A, B)
	+ memset (A, 0, B)

	* auth/auth.c: Replace `bzero' with `memset'.
	* boot/boot.c: Likewise.
	* defpager/defpager.c: Likewise.
	* exec/exec.c: Likewise.  Also, drop `safe_bzero' and just use
	`hurd_safe_memset' directly.
	* ext2fs/ext2fs.c: Likewise.
	* ext2fs/getblk.c: Likewise.
	* ext2fs/pager.c: Likewise.
	* fatfs/pager.c: Likewise.
	* ftpfs/dir.c: Likewise.
	* ftpfs/netfs.c: Likewise.
	* isofs/inode.c: Likewise.
	* isofs/pager.c: Likewise.
	* libdiskfs/file-getfh.c: Likewise.
	* libdiskfs/file-statfs.c: Likewise.
	* libfshelp/fetch-root.c: Likewise.
	* libfshelp/start-translator.c: Likewise.
	* libftpconn/create.c: Likewise.
	* libftpconn/open.c: Likewise.
	* libftpconn/unix.c: Likewise.
	* libpipe/pipe.c: Likewise.
	* libps/procstat.c: Likewise.
	* libps/spec.c: Likewise.
	* libshouldbeinlibc/cacheq.c: Likewise.
	* libshouldbeinlibc/idvec.c: Likewise.
	* libshouldbeinlibc/ugids.c: Likewise.
	* libstore/argp.c: Likewise.
	* libstore/enc.c: Likewise.
	* libstore/kids.c: Likewise.
	* libthreads/alpha/thread.c: Likewise.
	* libtreefs/fsys.c: Likewise.
	* libtrivfs/file-statfs.c: Likewise.
	* mach-defpager/default_pager.c: Likewise.
	* pfinet/glue-include/asm/uaccess.h: Likewise.
	* pfinet/io-ops.c: Likewise.
	* pfinet/options.c: Likewise.
	* pfinet/socket.c: Likewise.
	* pfinet/timer-emul.c: Likewise.
	* pflocal/io.c: Likewise.
	* startup/startup.c: Likewise.
	* storeio/storeio.c: Likewise.
	* sutils/fstab.c: Likewise.
	* usermux/usermux.c: Likewise.
	* utils/fakeauth.c: Likewise.
	* utils/frobauth.c: Likewise.
	* utils/login.c: Likewise.
	* utils/x.c: Likewise.

2014-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: tune the size of the inode cache
	The node cache uses a fixed number of buckets giving it a linear
	access complexity, although with a small constant factor.  Paper over
	this issue by increasing the number of buckets.

	* ext2fs/inode.c (INOHSZ): Increase from 512 to 8192 entries.

2014-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: use libports notification functions
	Now that we do not use sequence numbers anymore, we can simply use
	libports notification server functions.

	* libpager/Makefile (SRCS): Drop `no-senders.c', and `notify-stubs.c'.
	(OBJS): Drop `notifyServer.o'.
	* libpager/demuxer.c (pager_demuxer): Use libports server functions.
	* libpager/mig-mutate.h: Drop all notification mutators.
	* libpager/no-senders.c: Remove file.
	* libpager/notify-stubs.c: Likewise.

2014-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: remove the `seqno' parameters
	* libpager/Makefile (MIGSFLAGS): Drop `-DSEQNOS'.
	* libpager/priv.h (struct pager): Drop fields `seqno' and `waitingforseqno'.
	* libpager/chg-compl.c: Adopt accordingly.
	* libpager/data-request.c: Likewise.
	* libpager/data-return.c: Likewise.
	* libpager/data-unlock.c: Likewise.
	* libpager/demuxer.c: Likewise.
	* libpager/lock-completed.c: Likewise.
	* libpager/no-senders.c: Likewise.
	* libpager/notify-stubs.c: Likewise.
	* libpager/object-init.c: Likewise.
	* libpager/object-terminate.c: Likewise.
	* libpager/pager-create.c: Likewise.
	* libpager/stubs.c: Likewise.

2014-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add `proc_make_task_namespace'
	Add a new RPC to the process protocol to create task namespaces.
	These can be used by an unprivileged process to claims the
	responsibility to manage all tasks in this namespace.  Any task
	created in this namespace will automatically be declared a child of
	the root process, and a `mach_notify_new_task' message is sent to a
	given port.  If the root process dies, the proc server will terminate
	all tasks in the namespace.

	* hurd/process.defs (proc_make_task_namespace): New RPC.

2014-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: implement `proc_make_task_namespace'
	* proc/proc.h (struct proc): Add field `p_task_namespace'.
	* proc/mgt.c (S_proc_child): Propagate `p_task_namespace' to child.
	(allocate_proc): Initialize `p_task_namespace'.
	(namespace_terminate): New function.
	(process_has_exited): Reparent children of dead tasks in the namespace
	to the root process.  Terminate all tasks if the root process dies.
	Reap dead tasks.
	(S_mach_notify_new_task): For newly created tasks thats parent is in a
	namespace, call S_proc_child and forward the `mach_notify_new_task'
	message.
	(S_proc_make_task_namespace): New function.

	proc: register for new task notifications
	* proc/Makefile (MIGSTUBS): Add `gnumachServer.o'.
	* proc/main.c (message_demuxer): Handle the `task_notify' protocol.
	(main): Register for new task notificatinos.
	* proc/mgt.c (S_mach_notify_new_task): Add server function.

	Makeconf: handle the task_notify protocol
	* Makeconf (mach_defs_names): Add `task_notify'.

2014-12-10  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	fakeroot: Fix initializing default faked field of nodes
	* trans/fakeroot.c (new_node): Initialize faked field to FAKE_DEFAULT.

2014-12-09  David Michael  <fedora.dm0@gmail.com>

	include: don't install nonexistent refcount.h
	* include/Makefile (installhdrs): Remove refcount.h.

2014-12-09  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix mode of nodes created with mkfile
	Their faked field was not initialized.
	Thanks a lot to Svante Signell for the investigation

	* trans/fakeroot.c (new_node): Initialize faked field of nn to 0.
	(netfs_attempt_mkfile): Call set_default_attributes on newly-allocated node,
	and if the real mode is not the same as the requested mode, fake the mode.

2014-12-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add intranpayload functions to all hurd types
	For each hurd type defined in hurd_types.h, add a intranpayload
	function.  If an X_INTRAN mutation is defined for a type, a
	corresponding X_INTRAN_PAYLOAD has to be defined.  If no X_INTRAN
	mutation is defined, use ports_payload_get_name as intranpayload
	function, turning the payload back into an port name.

	* hurd/hurd_types.defs: Add intranpayload functions.
	* hurd/term.defs: Likewise.
	* hurd/default_pager.defs: Include `hurd_types.defs' for
	`MACH_PAYLOAD_TO_PORT'.

2014-12-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: make `trace_and_forward' payload-aware
	As the protected payloads were retrofitted into the Mach message
	format, the local port type is lost.

	* utils/rpctrace.c (is_notification): New function
	(trace_and_forward): Recover the original local port type.

2014-12-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/symlink: disable default payload to port mapping
	`fsysServer' is only used by the symlink translator which does not use
	libports.  Therefor, it is not necessary to use the default payload to
	port translation function.

	* trans/Makefile (fsys-MIGSFLAGS): Disable the default payload to port
	translation function.

2014-12-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/streamio: make the translator payload-aware
	* trans/Makefile (device_reply-MIGSFLAGS): Define MACH_PAYLOAD_TO_PORT.

	trans/password: add a payload-aware intrans function
	* trans/Makefile (password-MIGSFLAGS): Add mutator.

	trans/ifsock: add a payload-aware intrans function
	* trans/Makefile (ifsock-MIGSFLAGS): Add mutator.

	trans/fakeroot: make the demuxer payload-aware
	* trans/fakeroot.c (netfs_demuxer): Make the demuxer payload-aware.

	term: add a payload-aware intrans function
	* term/mig-mutate.h: Add mutator.

2014-12-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: disable default payload to port mapping
	startup does not use libports. Therefor, it is not necessary to use the
	default payload to port translation function.

	* startup/Makefile (MIGSFLAGS): Disable the default payload to port
	translation function.

2014-12-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: add payload-aware intrans functions
	* proc/mig-decls.h (begin_using_proc_payload): New function.
	(begin_using_exc_payload): Likewise.
	* proc/mig-mutate.h: Add mutators.
	* proc/proc_exc.defs (exception_t): Add payload-aware in-translator
	function.

	pflocal: add payload-aware intrans functions
	* pflocal/mig-mutate.h: Add mutators.
	* pflocal/mig-decls.c (begin_using_sock_user_payload): New function.
	(begin_using_addr_payload): Likewise.

	pfinet: make the demuxers payload-aware
	* pfinet/ethernet.c (ethernet_demuxer): Make the demuxer payload-aware.
	* pfinet/main.c (pfinet_demuxer): Likewise.

	pfinet: add payload-aware intrans functions
	* pfinet/mig-mutate.h: Add mutators.
	* pfinet/mig-decls.h (begin_using_socket_payload): New function.
	(begin_using_sockaddr_payload): Likewise.

	exec: add payload-aware intrans functions
	* exec/execmutations.h: Add mutators.
	* exec/mig-decls.h (begin_using_bootinfo_payload): New function.

	console-client: make the demuxer payload-aware
	* console-client/trans.c (console_demuxer): make the demuxer payload-aware.

	console: add a payload-aware intrans function
	* console/priv.h (begin_using_protid_payload): New function.
	* console/mutations.h: Add mutators.

	auth: add a payload-aware intrans function
	* auth/mig-mutate.h: Add mutator.
	* auth/mig-decls.h (auth_payload_to_handle): New function.

	libcons: add a payload-aware intrans function
	* libcons/mutations.h: Add mutator.
	* libcons/priv.h (begin_using_notify_payload): New function.

	libpager: add a payload-aware intrans function
	* libpager/mig-decls.h (begin_using_pager_payload): New function.
	* libpager/mig-mutate.h: Add mutators.

	libtrivfs: add payload-aware intrans functions
	* libtrivfs/mig-decls.h (trivfs_begin_using_protid_payload): New function.
	(trivfs_begin_using_control_payload): Likewise.
	* libtrivfs/mig-mutate.h: Add mutators.

	libnetfs: add a payload-aware intrans function
	* libnetfs/priv.h (begin_using_protid_payload): New function.
	* libnetfs/mutations.h: Add mutator.

	libdiskfs: add payload-aware intrans functions
	* libdiskfs/diskfs.h (diskfs_begin_using_protid_payload): New function.
	(diskfs_begin_using_control_payload): Likewise.
	(diskfs_begin_using_bootinfo_payload): Likewise.
	* libdiskfs/fsmutations.h: Add mutators.

	libports: add a payload-aware intrans function
	* libports/mig-decls.h (begin_using_port_info_payload): New function.
	* libports/mig-mutate.h: Add mutator.

2014-12-07  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: add `ports_lookup_payload' and `ports_payload_get_name'
	These two functions map payloads to objects and port names. The former
	can be used like `ports_lookup_port' to look up objects, the latter to
	map payloads to port names if the server function expects a
	`mach_port_t'.

	* libports/ports.h: Add function ports_payload_get_name.
	* libports/lookup-payload.c: New file.
	* libports/ports.h (ports_lookup_payload): Add declaration.
	* libports/Makefile (SRCS): Add lookup-payload.c.

2014-12-06  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix coding style

2014-12-01  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: move the reference counting primitives here
	Declare all functions `extern inline' instead of `static inline'.
	This allows us to use them in functions declared as `extern inline'.

	* libshouldbeinlibc/refcount.h: Move here, and declare all functions
	`extern inline'.
	* libshouldbeinlibc/refcount.c: And define the functions here.
	* libshouldbeinlibc/Makefile: Add `refcount.{c,h}'.

2014-11-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Revert "random: fix a receiver lookup"
	This reverts "8927fbd63e29005ddb9b2c2264046089bf669857".

	The change mistakenly adds mutators for the `startup' protocol, but
	the server routine is for the `startup_notify' protocol.

2014-11-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add atomicity support to fshelp_acquire_lock
	This adds support for the __LOCK_ATOMIC flag which requests atomicity of SH->EX
	upgrades and EX->SH downgrades.

	* libfshelp/lock-acquire.c (__LOCK_ATOMIC): New macro
	(fshelp_acquire_lock): When __LOCK_ATOMIC is set, do not release the
	lock early, change the lock hold atomically instead. On upgrade to LOCK_EX,
	prevent new shared locks from being acquired to avoid starvation.

2014-11-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix proc crashes
	* proc/notify.c (do_mach_notify_dead_name): When `pi' is NULL,
	immediately return EOPNOTSUPP.

2014-11-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix fabrication of protid
	* libdiskfs/dir-init.c (diskfs_init_dir): Fix fabrication of protid.

2014-11-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: make the request queue more memory-efficient
	Previously, `pager_demuxer' allocated a chunk of memory for the
	response message.  But if memory gets scarce, the kernel will issue a
	large number of paging requests to free up memory.  In such a
	situation, allocating memory is dangerous.

	Fix this by not allocating space for the response message, rather, use
	a chunk of the workers stack space.  Also, we only handle the `notify'
	and `memory_object' protocol, which both only contain simple routines,
	we only need a `mig_response_header_t'.

	* libpager/demuxer.c (struct request): Remove `inp' and `outp'.
	(request_inp): New function.
	(pager_demuxer): Do not allocate memory for the response.
	(mig_reply_setup): New function.
	(worker_func): Adjust accordingly.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	boot: improve the demuxer
	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.

	* boot/boot.c (mig_reply_setup): Provide local version.
	(request_server): Rename to `boot_demuxer', and improve the dispatch.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	boot: implement pseudo-time device
	* boot/boot.c (pseudo_time): New variable.
	(main): Allocate port `pseudo_time'.
	(ds_device_open): Give out `pseudo_time'.
	(ds_device_map): Emulate Mach-style `Mapped Time'.

	boot: support ds_device_get_status with flavor DEV_GET_RECORDS
	* boot/boot.c (ds_device_get_status): Support flavor DEV_GET_RECORDS.

	boot: drop obsolete device procedures
	* boot/boot.c (ds_xxx_device_set_status): Remove function.
	(ds_xxx_device_get_status): Likewise.
	(ds_xxx_device_set_filter): Likewise.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	boot: remove unused function `boot_script_read_file'
	The unused function `boot_script_read_file' requires access to the
	default pager, which is privileged.

	* boot/boot.c (defpager): Remove now unused variable.
	(boot_script_read_file): Remove unused function.
	(main): Do not acquire port to the default pager.
	* boot/boot_script.h (boot_script_read_file): Remove declaration.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	boot: drop bootstrap compat code
	GNU Mach never sent old-style bootstrap messages.  Drop the unused
	compatibility code.

	* boot/boot.c (request_server): Drop unused code.
	(bootstrap_compat): Drop unused function.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: also open `console' for reading
	* startup/startup.c (main): Also open `console' for reading.

	proc: gracefully handle failure to increase priority
	* proc/main.c (increase_priority): New function.
	(main): Move code increasing the proc servers priority to a new
	function and handle errors gracefully.

	Makeconf: handle the gnumach protocol
	* Makeconf (mach_defs_names): Add `gnumach'.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: bind the startup server to /servers/startup
	Previously, the Hurd (ab)used the fact that the startup server speaks
	all protocols on its message port.  Any server that wished to register
	for shutdown notifications would use proc_getmsgport to get a port to
	the startup server.

	This hardcodes the PID of /hurd/startup, and does not allow one to
	point a server to ones own startup server (e.g. using remap).

	Bind the startup server to /servers/startup instead.  Use this to
	contact the startup server.

	* exec/main.c (S_exec_init): Use /servers/startup.  Fall back to the
	old method so that the system still boots when the node
	/servers/startup is missing.
	* hurd/paths.h (_SERVERS_STARTUP): New macro.
	* libdiskfs/boot-start.c (diskfs_S_fsys_init): Use /servers/startup.
	* libdiskfs/init-startup.c (_diskfs_init_completed): Likewise.
	* pfinet/main.c (arrange_shutdown_notification): Likewise.
	* startup/Makefile (OBJS): Add fsysServer.o.
	* startup/startup.c (demuxer): Handle the fsys protocol.
	(main): Bind to /servers/startup.
	(S_fsys_getroot): Implement fsys_getroot.  Stub out the rest.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: fix the declaration of the *_server functions
	* startup/startup.c (demuxer): Fix the declaration of the server functions.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: be more specific in the shutdown message
	Use the BOOT macro to print either halt or reboot instead of the
	generic shutdown in the event of an system shutdown.

	* startup/startup.c (reboot_system): Use more specific message.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: do not pass signals on to the child
	Formerly /hurd/startup would forward all signals to the child it
	started (e.g. /libexec/runsystem).

	The motivation for doing so is not revealed in the comments, nor it is
	mentioned in the history of the version control system.

	This patch removes the forwarding of signals to the child.

	* startup/startup.c (process_signal): Do not pass signals on to the child.
	* startup/stubs.c: Remove file.
	* startup/Makefile: Remove stubs.c.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	init: add a minimalist init program
	This patch adds a minimalist init program.  It is somewhat lacking in
	features, but is able to bring up a Hurd system with the runsystem and
	rc scripts.  In fact, it roughly does what the former /hurd/init did,
	modulo all the very early bootstrapping stuff and the startup
	protocol.  It is started when all the essential servers are up and
	running, so it can make use of most of the POSIX goodies, making its
	implementation much simpler.

	* Makefile (prog-subdirs): Add init.
	* daemons/runsystem.sh: Generalize runsystem so that it can start any
	init as specified on the kernel command line.  By default, it starts
	/hurd/init.
	* daemons/runsystem.hurd: This is a verbatim copy of runsystem.sh.  It
	is started by /hurd/init.
	* daemons/rc.sh: Do not start /hurd/mach-defpager as it is already
	started in runsystem.sh.
	* daemons/Makefile (SRCS): Add runsystem.hurd.
	* init/Makefile: New file.
	* init/init.c: Likewise.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	startup: rename /hurd/init to /hurd/startup
	This patch series splits /hurd/init into two programs.  As a first
	step, this patch renames /hurd/init to /hurd/startup.  It is called
	startup because it speaks the startup protocol.

	* startup: Rename init to startup.  Adjust accordingly.
	* Makefile (prog-subdirs): Likewise.
	* doc/hurd.texi (Server Bootstrap): Likewise.
	* hurd/paths.h (_HURD_STARTUP): Likewise.
	* libdiskfs/boot-start.c (diskfs_boot_init_program): Likewise.
	* libdiskfs/opts-std-startup.c (startup_options): Likewise.

2014-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: do not hard-code the default argument values
	* procfs/main.c (common_options): If possible, do not hard-code the
	default values.

	Add proc_set_init_task, make runsystem pid 1
	* hurd/process.defs (proc_set_init_task): New procedure.
	* hurd/process_reply.defs (proc_set_init_task): Likewise.
	* hurd/process_request.defs (proc_set_init_task): Likewise.
	* include/pids.h: Add HURD_PID_INIT as 1, adjust others accordingly.
	* init/init.c (start_child): Register the child task.
	* proc/proc.h (init_proc): New variable.
	(create_startup_proc): Rename to create_init_proc.
	* proc/main.c (main): Create placeholder proc object for pid 1.
	* proc/mgt.c: Use init_proc instead of startup_proc, as the former is
	the new root of the process tree.
	(create_startup_proc): Rename to create_init_proc.
	(S_proc_set_init_task): New function.
	* doc/hurd.texi (Server Bootstrap): Update accordingly.
	* procfs/main.c: Do not hard-code kernel pid, use pids.h instead.

	trans/mtab: avoid firmlink loops
	* trans/mtab.c (struct mtab): Add a hash table to keep track of seen
	ports.
	(mtab_mark_as_seen): New function that records the identity port of a
	given node in the hash table and reports whether it has been there
	before.
	(mtab_populate): Use the new function to avoid running in circles.
	(main, open_hook): Initialize hash table.
	(close_hook): Free ports and destroy hash table.

2014-11-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Always canonicalize fstab entries with realpath
	To avoid spurious ./, /, symlinks, etc.

	* sutils/fstab.c (fs_set_mntent): Try to call realpath on mnt_fsname and mnt_dir
	field of `mntent'.
	(fstab_find_mount): Try to call realpath on `name' parameter.
	(fstab_find): Do not try to call realpath.
	(fstab_read): Reset errno to zero before calling getmntent.
	* utils/umount.c (main): Do not warn about missing fstab entries for
	active translators.

2014-11-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix compiler warning
	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Initialize
	register_translator to 0, otherwise it may be used uninitialized in case
	of non-ENOENT errors.

	Fix recording complete path of passive relative translators
	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Prepend current path to
	the relative path before recording the active translator.

	Fix recording complete path of passive relative translators
	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Prepend current path to
	the relative path before recording the active translator.

	Let pty readers always read end of writer output
	* term/ptyio.c (pty_io_read): Do not return EIO when there is no writer
	any more but some output remains in the pipe.

2014-11-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: fix crash while printing messages
	% fakeroot rpctrace install
	[...]
	  63<--66(pid5363)->io_read (-1 8192) = 0 [... rpctrace crashes]
	/bin/fakeauth: Segmentation fault for child 5362
	/bin/settrans: Error 139 for child 5361

	* utils/rpctrace.c (print_data): Fix this by guarding the code
	escaping non-printable characters introduced in 84932431 against
	`data' being NULL.

2014-11-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make procfs appear in /proc/mounts
	d-i needs to be able to check whether /proc is mounted or not.

	* procfs/main.c (netfs_get_source): New function.

2014-11-10  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix mach-defpager's kalloc values
	* mach-defpager/kalloc.c (MINSIZE): Set to sizeof(vm_offset_t) instead
	of hardcoded 4.
	(kalloc_init): Set kalloc_max to MINSIZE << (KLIST_MAX-1) instead of
	hardcoded 16384.
	(kalloc, kfree): Use the cache for the maximum size too.

	Avoid hitting VM_MAX_ADDRESS
	* libpager/pager-memcpy.c (pager_memcpy): Reset address passed to vm_map
	on each loop, to avoid potentially monotonically increasing up to
	VM_MAX_ADDRESS.

2014-11-09  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Deal with odd kernel behavior
	Some versions of gnumach actually take address as a mapping hint, and would fail
	if the hint is bogus.  Make sure to pass 0 for those versions.

	* libstore/memobj.c (memobj_read): Make sure to set *buf to 0 before
	calling vm_map.

2014-11-09  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Deal with odd kernel behavior
	Some versions of gnumach actually take address as a mapping hint, and would fail
	if the hint is bogus.  Make sure to pass 0 for those versions.

	* console/pager.c (user_pager_create): Make sure to set *user to 0 before
	calling vm_map.
	* libdiskfs/disk-pager.c (diskfs_start_disk_pager): Make sure to set *image to 0
	before calling vm_map.
	* libpager/pager-memcpy.c (pager_memcpy): Set window to 0 before calling
	vm_map.
	* tmpfs/node.c (diskfs_get_filemap): Make sure to set np->dn->u.reg.memref to 0
	before calling vm_map.

2014-11-03  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: use a fixed number of threads
	Previously, libpager used an unbounded number of threads to receive
	messages from the pager bucket.  It used sequence barriers to execute
	the requests to order requests to each object.

	The sequence barriers are implemented in seqnos.c.  A server function
	uses _pager_wait_for_seqno to wait for its sequence number and
	_pager_release_seqno to release it, or it uses _pager_update_seqno to
	do both operations in one step.

	These sequence barriers divide each server function in three parts: A,
	B, and C.  A_i happens "before" the sequence barrier i, B_i happens
	"in order", C_i happens "after" the sequence barrier.  This partial
	order < has the following properties:

	* This order is *per object*.  Requests to different objects are not
	  ordered.

	* A_i < B_i,  B_i < C_i (due to the structure of the code)

	* B_i < B_{i+1} (this is due to the sequence barriers)

	* Note that only the B parts are ordered by the sequence numbers, we
	  are free to execute C_i and C_{i+1} in any possible order.  The same
	  argument applies to the A parts.

	The sequence barriers are implemented using a very simple ticket
	algorithm.  Every request, even the invalid ones, is processed by a
	thread, and waits until the ticket count reaches its seqno, does some
	work in-order, then increments the ticket and awakes all threads that
	have piled up up to this moment.  All of them except one will then
	discover that it's not their turn yet and go to sleep again.

	Creating one thread per request has proven to be problematic as
	memory_object requests often arrive in large batches.

	This patch does two things:

	* Use a single thread to receive messages from the port bucket.  All
	  incoming request are put into a queue.

	* Use a fixed-number of threads (though even one is actually enough)
	  to execute the the server functions.  If multiple threads are used,
	  a work-delegation mechanism ensures that the per object order < is
	  preserved.

	For reference, I used the following command to create workloads that
	highlight the problem this patch is addressing:

	% settrans t .../ext2fs --sync=30 /dev/sd2s1
	...
	% /usr/bin/time zsh -c 'for ((i=0; i < 1500; i++)); do
	  dd if=/dev/zero of=t/src/$i bs=4k count=290 2>/dev/null
	  echo -n .
	  if ((i % 100 == 0)) ; then echo -n $i; fi
	done'

	* libpager/queue.h: New file.
	* libpager/demuxer.c: Manage a queue of requests received from the
	port bucket.
	(pager_demuxer): Just decode the server function and enqueue the
	request.
	(worker_func): New function that consumes and executes the requests
	from the queue.
	(service_paging_requests): New function.
	(pager_start_workers): Likewise.
	* libpager/data-request.c: Remove the seqno barriers.
	* libpager/data-return.c: Likewise.
	* libpager/data-unlock.c: Likewise.
	* libpager/chg-compl.c: Likewise.
	* libpager/lock-completed.c: Likewise.
	* libpager/no-senders.c: Likewise.
	* libpager/notify-stubs.c: Likewise.
	* libpager/object-init.c: Likewise.
	* libpager/object-terminate.c: Likewise.
	* libpager/seqnos.c: Remove file.
	* libpager/stubs.c: Likewise.
	* libpager/pager.h (pager_demuxer): Drop declaration.
	(pager_start_workers): New declaration.
	* libpager/priv.h: Remove the _pager_seqno declarations.
	* libpager/Makefile (SRCS): Drop seqnos.c.
	* console/pager.c (user_pager_init): Call pager_start_workers.
	* libdiskfs/disk-pager.c: Likewise.
	* storeio/pager.c: Likewise.
	* ext2fs/pager.c (service_paging_requests): Remove function.
	(create_disk_pager): Start separate file pager using
	`pager_start_workers'.
	* fatfs/pager.c (service_paging_requests): Remove function.
	(create_fat_pager): Start separate file pager using
	`pager_start_workers'.

2014-11-03  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: use protected payloads for object lookups
	* mach-defpager/default_pager.c (pager_port_list_insert): Set
	protected payload.
	(pager_port_list_delete): Clear protected payload.
	* mach-defpager/mig-decls.h (begin_using_default_pager_payload): New
	function.
	* mach-defpager/mig-mutate.h: Add mutator.

2014-11-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix optional definitions in static binaries
	* libcons/extra-version.c (cons_extra_version): Add weak attribute.
	* libcons/vcons-add.c (cons_vcons_add): Likewise.
	* libcons/vcons-remove.c (cons_vcons_remove): Likewise.
	* libdiskfs/extra-version.c (diskfs_extra_version): Likewise.
	* libdiskfs/get-source.c (diskfs_get_source): Likewise.
	* libdiskfs/readonly-changed.c (diskfs_readonly_changed): Likewise.
	* libdiskfs/sync-default.c (diskfs_default_sync_interval): Likewise.
	* libdiskfs/validate-author.c (diskfs_validate_author_change): Likewise.
	* libdiskfs/validate-flags.c (diskfs_validate_flags_change): Likewise.
	* libdiskfs/validate-group.c (diskfs_validate_group_change): Likewise.
	* libdiskfs/validate-mode.c (diskfs_validate_mode_change): Likewise.
	* libdiskfs/validate-owner.c (diskfs_validate_owner_change): Likewise.
	* libdiskfs/validate-rdev.c (diskfs_validate_rdev_change): Likewise.
	* libnetfs/file-get-storage-info-default.c (netfs_file_get_storage_info):
	Likewise.
	* libnetfs/get-source.c (netfs_get_source): Likewise.
	* libnetfs/set-get-trans.c (netfs_set_translator, netfs_get_translator):
	Likewise.
	* libtrivfs/get-source.c (trivfs_get_source): Likewise.

2014-11-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Use a mere weak attribute instead of a weak alias
	We don't need to call the original function, so a weak attribute is
	enough.

	* libports/dead-name.c (ports_dead_name): Remove weak alias.
	(__ports_dead_name): Rename back to ports_dead_name, but add weak attribute.

2014-11-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix dead name notification in static binaries
	When linking statically, the libports definition would come before the
	libdiskfs definition, defeating the purpose of the ports_dead_name
	callback.

	* libports/dead-name.c (ports_dead_name): Rename into __ports_dead_name.
	(ports_dead_name): Add weak alias for __ports_dead_name.

2014-11-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix unlocking translator list
	* libfshelp/translator-list.c (fshelp_set_active_translator): Use common
	out path to unlock translator_ihash_lock before exitting on error.

	Fix actual procinfo_t type
	* exec/elfcore.c (dump_core): Use procinfo_t, which is already a
	pointer, instead of procinfo_t*.

2014-11-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix proc_getprocinfo calls
	The deallocation also needs to be fixed.
	Also, fetch_procinfo already took care of the conversion.

	* exec/elfcore.c (dump_core): Fix procinfoCnt taken from
	proc_getprocinfo.
	* utils/login.c (check_owned): Likewise.
	* libps/procstat.c (merge_procinfo): Remove conversion between bytes and
	int, already handled by fetch_procinfo.

2014-11-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix proc_getprocinfo calls
	The procinfoCnt argument is the number of elements of the procinfo_t array,
	not its size in bytes.

	* exec/elfcore.c (dump_core): Fix procinfoCnt given to proc_getprocinfo.
	* libps/procstat.c (merge_procinfo): Likewise.
	* utils/login.c (check_owned): Likewise.

2014-10-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pfinet: fix path in comment
	* pfinet/main.c: Fix path in comment.

2014-10-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: lock-less reference counting for port_info objects
	* libports/ports.h (struct port_info): Use the new type.
	* libports/lookup-port.c: No need to lock _ports_lock anymore.
	* libports/bucket-iterate.c: Likewise.
	* libports/complete-deallocate.c: Check if someone reacquired a
	reference through a hash table lookup.
	* libports/create-internal.c: Use the new reference counting primitives.
	* libports/get-right.c: Likewise.
	* libports/import-port.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/reallocate-from-external.c: Likewise.
	* libports/transfer-right.c: Likewise.
	* utils/rpctrace.c: Likewise.

2014-10-05  Gabriele Giacone  <1o5g4r8o@gmail.com>

	utils/mount: add mount options to create firmlinks.
	* utils/mount.c (parse_opt): Add -B/--bind/--firmlink/-o bind mount
	  options.  (do_mount): Do not pass bind mount option to settrans, set
	  firmlink fstype.  (main): Likewise.

2014-10-04  Gabriele Giacone  <1o5g4r8o@gmail.com>

	utils/umount: clean up
	According to f2640263468aced5c91ac5fc1f15bb5691f7eb20, passive
	translators are no longer removed.

	* utils/umount.c (do_umount) Remove -p option from verbose message.
	(passive_flags): Remove.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: remove code counting cache misses
	* libdiskfs/lookup.c (cache_misses): Remove.
	(cm_lock): Likewise.
	(diskfs_lookup): Do not count cache misses.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: use a global hash table for the lookups
	Previously, libports used a hash table per port bucket.  This makes
	looking up a port difficult if one does not know the port bucket, as
	one has to iterate over all buckets and do a hash table lookup each.

	Having to iterate over the buckets makes it necessary to keep a list
	of all buckets, which has to be updated and protected by a lock as
	well.

	Also, the current code in _ports_bucket_class_iterate iterates over
	the hash table associated with the bucket given.  When
	ports_class_iterate calls this common function, it obtains a reference
	to the bucket from one of the ports in the given class.  This will not
	work if a class contains ports in different port buckets.  This
	limitation is not documented as far as I can see.  Again, having to
	maintain this list has its cost and requires serialization.

	Use a global hash table for lookups instead.  Keep the per-bucket hash
	tables for efficient iteration over buckets.  Furthermore, serialize
	access to all hash tables using a separate lock.  Remove the linked
	lists of all buckets and all ports in a class.

	* libports/bucket-iterate.c (ports_bucket_iterate): Acquire
	_ports_htable_lock.  Also, generalize ports_bucket_iterate so that it
	takes a pointer to a hash table as first argument.
	(ports_bucket_iterate): Ajust call to former function accordingly.
	* libports/class-iterate.c (ports_class_iterate): Just call the
	generalized _ports_bucket_class_iterate with the global hash table as
	argument.
	* libports/ports.h (struct port_info): Remove the port class links.
	(struct port_bucket): Remove the hash table, and the all buckets link.
	(_ports_all_buckets): Remove declaration.
	(_ports_htable): New global hash table.
	(_ports_htable_lock): Protected by this lock.
	* libports/claim-right.c: Adjust accordingly.
	* libports/complete-deallocate.c: Likewise.
	* libports/create-bucket.c: Likewise.
	* libports/create-class.c: Likewise.
	* libports/create-internal.c: Likewise.
	* libports/destroy-right.c: Likewise.
	* libports/import-port.c: Likewise.
	* libports/lookup-port.c: Likewise.
	* libports/reallocate-from-external.c: Likewise.
	* libports/reallocate-port.c: Likewise.
	* libports/transfer-right.c: Likewise.
	* libports/inhibit-all-rpcs.c: Iterate over the hash table.
	* libports/inhibit-bucket-rpcs.c: Likewise, but filter using bucket.
	* libports/inhibit-class-rpcs.c: Likewise, but filter using class.
	* libports/init.c (_ports_htable): Initialize.
	(_ports_htable_lock): Likewise.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: reorganize rootdir.c
	* procfs/rootdir.c: Move the translator linkage code to the
	appropriate location.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: generalize the translator linkage code
	Generalize the translator linkage code previously introduced for the
	`mounts' node.

	* procfs/rootdir.c (struct procfs_translated_node_ops): New
	specialized node operations structure for translated nodes.
	(rootdir_mounts_make_node): Generalize and rename to
	rootdir_make_translated_node.  Also, pass the entry_hook to
	procfs_make_node so that...
	(rootdir_mounts_get_translator): ... can be generalized to
	rootdir_translated_node_get_translator and read the argz vector from
	the hooked structure.
	(ROOTDIR_DEFINE_TRANSLATED_NODE): New convenience macro to define
	translated nodes.
	(rootdir_entries): Use the new code for the `mounts' node.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: do not test whether /hurd/mtab exists
	Now that procfs is merged into the Hurd repository we can just assume
	that the mtab translator exists.

	* procfs/rootdir.c (rootdir_mounts_exists): Drop function.
	(rootdir_entries): Adjust accordingly.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: implement /proc/filesystems
	* procfs/rootdir.c (rootdir_gc_filesystems): New function.
	(rootdir_entries): Use the new function to implement /proc/filesystems.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: implement /proc/N/maps
	Fixes https://savannah.gnu.org/bugs/?32770 .

	* procfs/process.c (process_file_gc_maps): New function.
	(entries): Use the new function to implement /proc/N/maps.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: redzone page zero before loading anything
	This prevents load_section from mapping any sections to page zero.

	* exec/exec.c (do_exec): Redzone page zero before loading anything.

2014-09-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: add proper argument parsing, add --device-master-port
	If the device master port is given, a boot-time exec server can print
	diagnostic messages earlier.

	* exec/main.c (opt_device_master): New variable.
	(OPT_DEVICE_MASTER_PORT): New macro.
	(options): New set of options.
	(parse_opt): New function.
	(trivfs_append_args): Likewise.
	(argp): Pull the argp definition out of main.
	(trivfs_runtime_argp): Set, so that we respond properly to fsysopts.
	(open_console): Pull the code out of S_exec_init and generalize it.
	(main): Call open_console if a device master port is given.
	(S_exec_init): Call open_console.

2014-09-28  Alexey Kuznetsov  <kuznet@ms2.inr.ac.ru>

	BSD apps want sin_zero cleared in sys_getname.
	Cherry-picked from Linux c1e9dcb37795b08a1f50b8de7b2ad5efcb15728f

	* pfinet/linux-src/net/ipv4/af_inet.c (inet_getname): Clear `sin_zero'
	part of `sin'.

2014-09-24  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Update NEWS file

2014-09-22  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add symbolic name for the mtab translator
	* hurd/paths.h (_HURD_MTAB): New macro.
	* procfs/rootdir.c (rootdir_mounts_get_translator): Use the new macro.
	(rootdir_mounts_exists): Likewise.

2014-09-18  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: fix typo in comment
	* procfs/process.c (process_stat_make_node): Fix typo in comment.

2014-09-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/hello{,-mt}: properly escape contents in trivfs_append_args
	Fixes https://savannah.gnu.org/bugs/?15806 .

	* trans/hello-mt.c (trivfs_append_args): Escape contents.
	* trans/hello.c (trivfs_append_args): Likewise.

2014-09-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: make memory_object parameter polymorphic
	Make the memory_object parameter of default_pager_object_create
	polymorphic.  This fixes https://savannah.gnu.org/bugs/?26751 .

	* hurd/default_pager.defs (default_pager_object_create): Make
	memory_object parameter polymorphic.
	* mach-defpager/default_pager.c (S_default_pager_object_create):
	Adjust accordingly.
	* trans/proxy-defpager.c (S_default_pager_object_create): Likewise.

2014-09-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix /servers/exec lookup
	* libdiskfs/boot-start.c (diskfs_start_bootstrap): Pass retry_name to
	dir_lookup, which is later checked to be the empty string.

2014-08-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	include: detect use-after-free errors using the reference counts
	* include/refcount.h (refcount_init): There must be at least one
	reference at initialization time.
	(refcounts_init): Likewise.
	(refcount_unsafe_ref): New function retaining the previous
	functionality of refcount_ref.  It is occasionally useful to raise the
	reference count again after it dropped to zero.
	(refcounts_unsafe_ref): Likewise.
	(refcounts_unsafe_weak_ref): Likewise.
	(refcount_ref): Detect use-after-free errors.
	(refcounts_ref): Likewise.
	(refcounts_ref_weak): Likewise.
	* libtrivfs/protid-clean.c (trivfs_clean_protid): Use refcount_unsafe_ref.

2014-08-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: fix semantic of file_get_children
	When first introduced as fsys_get_children, it made sense to return
	the list of children using paths relative to the root of the
	filesystem that was queried.  Making the get_children method part of
	the fsys protocol was a mistake that has since been corrected in
	9366d6b2.

	Instead of returning paths relative to the root of the translator,
	return paths relative to the path of the receiving node.

	This fixes a problem with the mtab translator.  Previously, the mtab
	translator invoked on a target that was not the root directory of a
	translator would compute invalid paths, e.g.:

	/hurd/mtab: /any/path/servers/socket/26 No such file or directory

	* hurd/fs.defs (file_get_children): Update comment.
	* libfshelp/translator-list.c (fshelp_get_active_translators): Add
	argument PREFIX.  Filter entries not beginning with PREFIX if
	non-NULL, and omit PREFIX from the returned paths.
	* libfshelp/fshelp.h (fshelp_get_active_translators): Update comment
	accordingly.  Also clarify that both FILTER and PREFIX can be NULL.
	* libdiskfs/file-get-children.c (diskfs_S_file_get_children): Update
	comment, pass prefix to fshelp_get_active_translators.
	* libnetfs/file-get-children.c (netfs_S_file_get_children): Likewise.

2014-08-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: fix comparison between signed and unsigned integer
	* libihash/ihash.h (HURD_IHASH_ITERATE): Fix comparison between signed
	and unsigned integer expressions.

	trans/mtab: use setnullauth to drop privileges
	* trans/mtab.c (main): Use setnullauth to drop privileges.

	libtrivfs: fix typo
	* libtrivfs/protid-clean.c (trivfs_clean_protid): Fix typo.

2014-08-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix reference counting of peropen objects
	Previously, peropen objects were created with a reference count of
	zero.  Therefore, if diskfs_create_protid fails, passing such an
	object to diskfs_release_peropen would lead to a reference count
	underflow.

	* libdiskfs/peropen-make.c (diskfs_peropen_make): Initialize reference
	count to one.
	* libdiskfs/protid-make.c (diskfs_start_protid): And consume this
	reference on success.  Update comment.
	(diskfs_create_protid): Update comment.
	* libdiskfs/diskfs.h: Update comments.
	* libdiskfs/io-duplicate.c (diskfs_S_io_duplicate): Adjust reference
	counting accordingly.
	* libdiskfs/io-reauthenticate.c (diskfs_S_io_reauthenticate): Likewise.
	* libdiskfs/io-restrict-auth.c (diskfs_S_io_restrict_auth): Likewise.
	* doc/hurd.texi (Diskfs Internals): Update accordingly.

2014-08-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix ifsock permission check
	POSIX requires write access to the socket, not read access, to be able
	to connect to it.

	* trans/ifsock.c (S_ifsock_getsockaddr): Test for O_WRITE instead of
	O_READ.

2014-08-25  David Michael  <fedora.dm0@gmail.com>

	sutils: add urandom device target to MAKEDEV
	* sutils/MAKEDEV.sh (urandom): New target.
	(std): Add urandom to the standard devices list.

2014-08-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add missing linefeed
	* libpager/object-terminate.c (_pager_seqnos_memory_object_terminate):
	Add missing linefeed in error message.

2014-08-19  Svante Signell  <svante.signell@gmail.com>

	Make settrans return value returned by chroot command
	* utils/settrans.c (main): In case of chroot_command, get status from waitpid()
	call, and call error() appropriately.

2014-07-17  Marek Benc  <merkur32@gmail.com>

	Make the ncursesw driver of the console client compile properly
	* console-client/Makefile (NCURSESW_SO_SRCS): Move definition to after
	inclusion of Makeconf.

2014-06-30  Richard Braun  <rbraun@sceen.net>

	libpipe: fix spurious calls to pipe_send
	* libpipe/pipe.c (pipe_send): Skip processing if there is nothing to send.

2014-06-28  Richard Braun  <rbraun@sceen.net>

	Revert "libpipe: fix calls to pipe_send with no data"
	This reverts commit 6f856c62613ffc82bf3572a372d2851638c2fb90.

	As the comment right above the change says, "this [sending control
	packets] depends on the fact that we always write a data packet".

2014-06-28  Richard Braun  <rbraun@sceen.net>

	libpipe: fix calls to pipe_send with no data
	* libpipe/pipe.c (pipe_send): Check that there actually is any data to
	send before calling the pipe write operation.

2014-06-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: use correct type for block numbers
	* ext2fs/dir.c (count_dirents): Use block_t for nb.
	(diskfs_get_directs): Likewise for blkno, nblks.

2014-06-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix deadlock
	Previously, libdiskfs would deadlock on contention on renamedirlock
	due to the lock being taken spuriously.

	Found using fsstress from the Linux Test Project.

	* libdiskfs/dir-rename.c (diskfs_S_dir_rename): Remove spurious
	pthread_mutex_lock.

2014-06-22  Pino Toscano  <toscano.pino@tiscali.it>

	libdiskfs: expose the ST_NOATIME flag
	Expose ST_NOATIME as flag (if available in glibc) if diskfs is set in noatime
	mode.

	* libdiskfs/file-statfs.c (diskfs_S_file_statfs): Set ST_NOATIME if
	_DISKFS_NOATIME is set.

2014-06-18  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: add permission check to file_chflags
	Only root is allowed to change the high 16 bits.  The TODO entry says
	otherwise, but that must be a mistake.  For reference, see the glibc
	sources, sysdeps/mach/hurd/bits/stat.h.

	* libdiskfs/file-chflags.c (diskfs_S_file_chflags): Add permission
	check.
	* TODO (libdiskfs): Remove entry.

2014-06-18  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: avoid realloc(3) corner case
	If the size argument is 0, realloc may either return NULL, or return a
	pointer that is only valid for use with free(3).  In either case, the
	memory is freed.  So if realloc would return NULL (it does not on
	GNU), the current code would double free p.

	Found using the Clang Static Analyzer.

	* libports/bucket-iterate.c (_ports_bucket_class_iterate): Avoid
	calling realloc if no ports were matched.

2014-06-18  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: fix error handling
	Found using the Clang Static Analyzer.

	* trans/fakeroot.c (new_node): Do not leak a pointer to freed memory.
	Store NULL at *np instead.  This fixes a node use-after-free in
	netfs_S_dir_lookup.

2014-06-18  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: fix dead initialization in fmt_named_interval
	Found using the Clang Static Analyzer.

	* libshouldbeinlibc/timefmt.c (fmt_named_interval): Fix dead
	initialization.

2014-06-18  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ftpfs: fix error handling in refresh_dir
	Found using the Clang Static Analyzer.

	* ftpfs/dir.c (refresh_dir): Fix error handling.

2014-06-17  David Michael  <fedora.dm0@gmail.com>

	Add mach_debug defs rules
	* Makeconf (mach_debug_defs_names,mach_debug_defs): New variables.
	* Makeconf: Add rule to generate local $(mach_debug_defs) files.
	* procfs/Makefile: Remove vpath for mach_debug defs.

2014-06-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Add the procfs translator to prog-subdirs
	* Makefile (prog-subdirs): Add procfs.

	Merge procfs into the Hurd repository

2014-06-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Prepare the procfs translator to be merged into the Hurd sources
	Move the procfs translator to its own subdirectory 'procfs'.

	This is the last commit to this repository.  Development of the procfs
	translator will continue in the main Hurd repository.

	* procfs/Makefile: Replace the standalone Makefile with the one from
	the Debian packaging repository.

2014-06-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Merge branch 'merge-random'

2014-06-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/settrans: implement settrans --start
	Start the translator specified by the NODE's passive translator record
	and set it as NODE's active translator.  This is the equivalent of
	doing:

	% settrans --active /node $(showtrans /node)

	* utils/settrans.c (argp_option): Add --start.
	(parse_opt): Handle --start.
	(main): Retrieve the passive translator record if --start is given.

2014-06-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: fix receiver lookup in termctty_open_terminal
	* hurd/hurd_types.h (ctty_t): New type definition.
	* hurd/term.defs (ctty_t): New type definition.
	* term/mig-decls.h: New file.
	* term/mig-mutate.h: Add mutators, includes.
	* term/term.h: Add include guards.
	* term/users.c (S_termctty_open_terminal): Fix receiver lookup.
	* boot/boot.c (S_termctty_open_terminal): Likewise.

2014-06-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	term: improve the demuxer
	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.

	* term/main.c (demuxer): Improve the demuxer function.

2014-06-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Add the random translator to prog-subdirs
	* Makefile (prog-subdirs): Add random.

	Merge the random translator into the Hurd repository

2014-06-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Prepare the random translator to be merged into the Hurd sources
	Move the random translator to its own subdirectory 'random'.

	This is the last commit to this repository.  Development of the random
	translator will continue in the main Hurd repository.

2014-06-08  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: fix type of retry_dotdot
	* ext2fs/dir.c (diskfs_lookup_hard): Use ino_t for retry_dotdot.

	ext2fs: fix type of blockaddr
	* ext2fs/dir.c (diskfs_lookup_hard): Use vm_address_t for blockaddr.

	ext2fs: use size_t where appropriate
	* extfs/dir.c: Use size_t where appropriate.

2014-06-06  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: fix compiler warning
	* ext2fs/pager.c (disk_cache_block_ref): block cannot be negative.

	libdiskfs: avoid implicit integer conversion
	* libdiskfs/boot-start.c (diskfs_boot_start): Avoid implicit integer
	conversion.

	libdiskfs: use correct type for disk offsets
	* libdiskfs/diskfs.h (struct peropen): Use off_t for filepointer.

	hurd: fix type of optimal_transfer_size
	* hurd/shared.h (struct shared_io): Use blksize_t for optimal_transfer_size.

	include: use unsigned literal in combination with binary not
	* include/refcount.h (refcounts_promote): Use ~0U.
	(refcounts_demote): Likewise.

2014-05-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: fix memory leak
	* libnetfs/trans-callback.c (_netfs_translator_callback2_fn): Free
	user if creating the protid failed.

2014-05-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	tmpfs: use a thread timeout
	There is no need to keep all the threads around, just the master
	thread.

	* tmpfs/tmpfs (diskfs_thread_function): Use a thread timeout.

2014-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'random' of ssh://git.savannah.gnu.org/srv/git/hurd/incubator into random

	Fix buffer allocation on io_read
	* random.c (trivfs_S_io_read): Catch buffer allocation error, and
	truncate allocation when we return less data than requested.

2014-05-30  Ludovic Courtès  <ludo@gnu.org>

	build: Remove checks for 'getgrouplist' and 'uselocale'.
	GNU libc has had them for a long time.

	* configure.ac: Remove checks for 'getgrouplist' and 'uselocale'.
	* libshouldbeinlibc/idvec-impgids.c (_merge_implied_gids): Remove #ifdef
	  HAVE_GETGROUPLIST and remove #else arm.
	* libthreads/cthreads.c: Remove #ifdef HAVE_USELOCALE, keeping its
	  bodies.

2014-05-30  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Merge branch 'master' of git://git.sv.gnu.org/hurd/hurd

2014-05-30  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libstore: provide function declaration until available upstream
	Until the Hurd specific header is available, provide a local
	declaration of ped_device_new_from_store.

	* libstore/part.c (ped_device_new_from_store): New declaration.

2014-05-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2014-05-29  Ludovic Courtès  <ludo@gnu.org>

	Disable linking when cross-compiling
	* configure.ac: Call AC_NO_EXECUTABLES when cross-compiling.

2014-05-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: use a hash table for the name cache
	Previously, name cache lookup operation completed in O(n) time.  This
	means that making the cache too large would decrease the performance.
	Therefore it was required to tune the size.

	Implement the name cache using a hash table.

	We use buckets of a fixed size.  We approximate the least-frequently
	used cache algorithm by counting the number of lookups using
	saturating arithmetic in the two lowest bits of the pointer to the
	name.  Using this strategy we achieve a constant worst-case lookup and
	insertion time.

	Since we are not bound by the size of the cache anymore, increase its
	size from 200 to 1024.

	* libdiskfs/name-cache.c: Implement the name cache using a hash table.
	(diskfs_enter_lookup_cache): Change accordingly.
	(diskfs_purge_lookup_cache): Likewise.
	(diskfs_check_lookup_cache): Likewise.  Also, hard code a
	cache miss for the parent of the root directory and merge unlocking
	and releasing of node references.

2014-05-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: remove the statistics code from the name cache
	The current name cache lookup operation completes in O(n) time.  This
	means that making the cache too large would decrease the performance.
	Therefore it was required to tune the size, hence the need for
	statistics.

	We will use a data structure with worst case constant lookup times in
	the future, removing the need to fine tune the cache size.

	* libdiskfs/name-cache.c: Remove the statistics code from the name
	cache.

2014-05-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: use netfs_node_netnode instead of np->nn
	When using fat nodes, expressions of the form E->nn can be rewritten
	as netfs_node_netnode (E).  This is much faster as it only involves a
	offset calculation.  For reference, I used the following semantic
	patch to create the patch:

	@@
	expression E;
	@@

	- E->nn
	+ netfs_node_netnode (E)

	* trans/fakeroot.c: Use netfs_node_netnode instead of np->nn.

2014-05-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: use fat nodes to simplify the node cache
	Previously, fakeroot stored netnodes in the hash table.  But we are
	not interested in a cache for netnodes, we need a node cache.  So
	fakeroot kept pointers to the associated node object in each netnode
	object.

	Use fat netfs nodes, which combine node and netnode objects.

	* trans/fakeroot.c (struct netnode): Remove np.
	(idport_ihash): Fix ihash location pointer offset.
	(new_node): Allocate fat nodes, store the node pointer in the hash
	table.
	(netfs_node_norefs): Adjust accordingly.
	(netfs_S_dir_lookup): Likewise.

2014-05-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: add netfs_make_node_alloc to allocate fat nodes
	libnetfs has two kind of nodes, struct node and struct netnode.
	struct node is used to store libnetfs specific data, while struct
	netnode contains user supplied data.  Previously, both objects were
	allocated separatly, and a pointer from the node to the netnode
	provided a mapping from the former to the latter.

	Provide a function netfs_make_node_alloc that allocates both nodes in
	a contiguous region.

	This reduces the memory allocation overhead when creating nodes.  It
	also makes the relation between node and netnode a simple offset
	calculation.  Provide two functions to compute the netnode address
	from the node address and vice-versa.

	Most notably, this makes implementing a cache on top of libnetfs
	easier.  Auxiliary data for the cache can be stored in the
	user-defined netnode, and the fat node can be used as the value.

	* libnetfs/make-node.c (init_node): Move initialization here.
	(netfs_make_node): Use init_node.
	(netfs_make_node_alloc): New function to allocate fat nodes.
	* libnetfs/netfs.h (netfs_make_node_alloc): New declaration.
	(_netfs_sizeof_struct_node): Likewise.
	(netfs_node_netnode): Compute netnode address from node address.
	(netfs_netnode_node): And vice-versa.
	* libnetfs/init-init.c (_netfs_sizeof_struct_node): New variable.

2014-05-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: add diskfs_make_node_alloc to allocate fat nodes
	libdiskfs has two kind of nodes, struct node and struct netnode.
	struct node is used to store libdiskfs specific data, while struct
	netnode contains user supplied data.  Previously, both objects were
	allocated separatly, and a pointer from the node to the netnode
	provided a mapping from the former to the latter.

	Provide a function diskfs_make_node_alloc that allocates both nodes in
	a contiguous region.

	This reduces the memory allocation overhead when creating nodes.  It
	also makes the relation between node and netnode a simple offset
	calculation.  Provide two functions to compute the netnode address
	from the node address and vice-versa.

	Most notably, this makes implementing a cache on top of libdiskfs
	easier.  Auxiliary data for the cache can be stored in the
	user-defined netnode, and the fat node can be used as the value.

	* libdiskfs/node-make.c (init_node): Move initialization here.
	(diskfs_make_node): Use init_node.
	(diskfs_make_node_alloc): New function to allocate fat nodes.
	* libdiskfs/diskfs.h (diskfs_make_node_alloc): New declaration.
	(_diskfs_sizeof_struct_node): Likewise.
	(diskfs_node_disknode): Compute disknode address from node address.
	(diskfs_disknode_node): And vice-versa.
	* libdiskfs/init-init.c (_diskfs_sizeof_struct_node): New variable.

2014-05-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Do not include the terminating zero in /proc/slabinfo
	* rootdir.c (rootdir_gc_slabinfo): Do not zero-terminate the generated
	content.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: lock-less reference counting for trivfs_peropen objects
	* libtrivfs/trivfs.h (struct trivfs_peropen): Use refcount_t for field
	refcnt.
	(struct trivfs_control): Remove unused field lock.
	* libtrivfs/cntl-create.c (trivfs_create_control): Drop the mutex
	initialization.
	* libtrivfs/io-reauthenticate.c (trivfs_S_io_reauthenticate): Adjust
	accordingly.
	* libtrivfs/io-restrict-auth.c (trivfs_S_io_restrict_auth): Likewise.
	* libtrivfs/open.c (trivfs_open): Initialize refcnt.
	* libtrivfs/protid-clean.c (trivfs_clean_protid): Likewise.
	* libtrivfs/protid-dup.c (trivfs_protid_dup): Likewise.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: do not use an integer hash function by default
	Recently libihash was changed to use an integer hash function on the
	keys in an attempt to reduce the rate of collisions (2d898893), which
	has long been assumed to be high.

	Richard Braun was kind enough to run some benchmarks.  He observed:

	"1/ Using an extremely simple microbenchmark [1] that merely inserts
	keys, either random integers or sequential ones to match the way port
	names are managed, it seems that the previous code, despite its
	apparent flaws, did quite well.

	[1] http://darnassus.sceen.net/gitweb/rbraun/ihtest.git

	Using an integer hashing function actually reduces performance on the
	sequential integer test case. It makes sense because, considering a
	set of consecutive integers starting from 0, and a hash table that
	always has more slots than items, a modulo is a perfect hash
	function. Even when taking into account that only names for receive
	rights are normally managed with libihash, i.e. that keys aren't
	actually sequential, they are almost all equally distributed, leading
	to very few collisions.

	Therefore, as a third option, I've removed the hashing function,
	leaving only a fast modulo (an AND) and this variant provided the best
	raw results.

	2/ I've also built hurd packages multiple times and got average build
	times with each variant (previous, new, new without hash function) and
	here are the results I obtained respectively : 52m59s, 52m31s, 52m22s."

	Do not use the integer hash function on the keys by default.

	* libihash/ihash.c (murmur3_mix32): Remove now unused function.
	(find_index): Use the fast division method to derive the index.
	(add_one): Likewise.  Also, update the comment to reflect the current
	hashing method.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix node leak in the name cache
	* libdiskfs/name-cache.c (diskfs_check_lookup_cache): Release node
	reference in a special case of lookup failure.

	trans/mtab: fix initialization
	* trans/mtab.c (main): Fix initialization of mtab in one-shot mode.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: fix diskfs_pager_users
	This fixes a bug introduced in 86122789.

	* ext2fs/pager.c (diskfs_pager_users): We count file_pager_bucket,
	which does not include the disk pagers.  Fix condition accordingly.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: drop unused fields from struct pager
	* libpager/priv.h (struct pager): Drop fields next, pprev.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	term: fix memory leak
	I tested this change for some days and have not experienced any
	problems with it.

	* term/users.c (pi_destroy_hook): Fix memory leak.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Avoid compiler warning about empty bodies
	Make empty bodies of control flow statements more explicit.  Doing so
	will allow us to use stricter compiler settings.  This would have
	cought 4ece292c.

	* console-client/xkb/xkb.c: Make empty bodies more explicit
	* libpipe/pipe.c: Likewise.
	* mach-defpager/default_pager.c: Likewise.
	* pfinet/linux-src/net/ipv4/fib_hash.c: Likewise.
	* pflocal/connq.c: Likewise.
	* pflocal/socket.c: Likewise.

2014-05-26  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix type of dir_cache_id, node_cache_id
	* libdiskfs/name-cache.c (struct lookup_cache): Fix type of
	dir_cache_id, node_cache_id.

	pfinet: add missing include
	*  pfinet/linux-src/include/net/addrconf.h: Include ipv6.h.

	exec: add missing includes
	* exec/exec.c: Include mach/gnumach.h.
	* exec/main.c: Include device/device.h.

	libdiskfs: lock-less reference counting for peropen objects
	* libdiskfs/diskfs.h (struct peropen): Use refcount_t for field refcnt.
	* libdiskfs/peropen-make.c (diskfs_make_peropen): Initialize refcnt.
	* libdiskfs/peropen-rele.c (diskfs_release_peropen): Adjust accordingly.
	* libdiskfs/protid-make.c (diskfs_start_protid): Likewise.  Also, the
	node must no longer be locked, adjust comment accordingly.
	(diskfs_create_protid): Likewise.

2014-05-24  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Implement /proc/slabinfo
	Add a node 'slabinfo' to the root directory that contains information
	about the slab allocator used in GNU Mach.

	The formatting code has been taken from Richard Braun's standalone
	client available here:

	git://darnassus.sceen.net/rbraun/slabinfo.git

	* rootdir.c (rootdir_gc_slabinfo): New function.
	(rootdir_entries): Add node 'slabinfo'.
	* Makefile (OBJS): Add mach_debugUser.o.
	(rootdir.o): Add an explicit dependency on mach_debug_U.h.
	Furthermore, add rules to create both functions.

2014-05-22  Justus Winter  <4winter@informatik.uni-hamburg.de>

	include: install refcount.h
	* include/Makefile (installhdrs): Add refcount.h.

2014-05-22  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: override fshelp_isowner
	As of recently, fakeroot would fail to create symlinks:

	% fakeroot-hurd ln -s foo a
	ln: failed to create symbolic link ‘a’: Operation not permitted

	Fix this by overriding fshelp_isowner.

	Various netfs functions will call fshelp_isowner to check whether USER
	is allowed to do some operation.  As fakeroot is not running within
	the fakeauth'ed environment, USER contains the real user.

	I have no explanation why this ever worked.

	* trans/fakeroot.c (fshelp_isowner): New function.

2014-05-22  Justus Winter  <4winter@informatik.uni-hamburg.de>

	include: add lock-less reference counting primitives
	* include/refcount.h: New file.

	libihash: add hurd_ihash_get_load
	* libihash/ihash.c (hurd_ihash_add): Move the code computing the load
	factor of the hash table...
	* libihash/ihash.h (hurd_ihash_get_load): ... here, together with the
	comment describing the method and the rationale for chosing binary
	percent.

	libihash: fix typo
	* libihash/ihash.c (hurd_ihash_add): Fix typo.

2014-05-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: move translation functions to mig-decls.h
	* proc/hash.c (reqport_find): Move this function...
	* proc/proc.h (process_drop): ... and this...
	* proc/mig-decls.h: ... here and rename them.
	* proc/mig-mutate.h: Update accordingly.

	trans/fakeroot: use C99-style struct initialization
	* trans/fakeroot.c (main): Use C99-style struct initialization to
	initialize argp.  This avoids a warning about missing field
	initializers.

	trans/fakeroot: fix comparison between signed and unsigned
	* trans/fakeroot.c (netfs_attempt_chown): Fix comparison between
	signed and unsigned integer expressions.

2014-05-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: remove spurious semicolon
	A spurious semicolon caused a control flow bug in check_openmodes,
	leading to a port leak.

	* trans/fakeroot.c (check_openmodes): Remove spurious semicolon.

2014-05-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: use fast binary scaling to determine the load
	Expressing the maximum load in binary percent (where 128b% corresponds
	to 100%) allows us to use fast binary scaling to determine if the
	maximum load has been reached without losing precision.

	Furthermore, the previously used expression 'ht->nr_items * 100'
	overflows int at 2^25 (unsigned int at 2^26).  When a hash table
	reached that limit, it would fail to resize and fill up the table.
	This change fixes that.

	* libihash/ihash.c (hurd_ihash_set_max_load): Update the comment.
	(hurd_ihash_add): Use fast binary scaling to determine the current
	load.
	* libihash/ihash.h (struct hurd_ihash): Update comment for max_load.
	(hurd_ihash_set_max_load): Update the comment.

2014-05-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: use linear probing and fast modulo operation
	libihash uses open addressing.  Previously, quadratic probing in both
	directions was used to resolve collisions.  Quadratic probing might
	result in a less efficient use of caches.

	Also, prime numbers of the form 4 * i + 3 were used as array sizes.
	This was used in combination with the integer modulo operation for
	hashing.  It has been known for some time that libihash suffers from
	collisions, so a integer hash function is now applied to the keys to
	derive the index.

	Use linear probing instead.  Also, use powers of two for the array
	sizes, so a bit mask can be used for the modulo operation.

	* libihash/ihash.c (ihash_sizes, ihash_nsizes): Remove.
	(find_index): Use linear probing and fast modulo operation.
	(add_one): Likewise.
	* libihash/ihash.h (HURD_IHASH_MIN_SIZE): New macro.

2014-05-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: use an integer hash function on the keys
	Use an integer hash function to derive the index from the key.  This
	should reduce the number of collisions.

	* libihash/ihash.c (hash_int32): New function.
	(find_index): Use hash_int32 on the key to derive the index.
	(add_one): Likewise.

2014-05-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: fix type of max_load
	Previously, int was used for the field max_load of struct hurd_ihash.
	There is no reason for this as far as I can tell.  Furthermore,
	hurd_ihash_set_max_load takes an unsigned int max_load.

	* libihash/ihash.h (struct hurd_ihash): Use unsigned int for field
	max_load.

2014-05-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: reduce the default maximum load factor to 75%
	The performance of hash tables depend critically on a low number of
	hash collisions.  As the table fills up, the chance of collisions
	necessarily raises.

	Previously, libihash resized the hash table when the load exceeded
	80%.  This seems a bit optimistic (e. g. java.util.Hashtable uses 75%
	as default).

	* libihash/ihash.h (HURD_IHASH_MAX_LOAD_DEFAULT): Set to 75.

2014-05-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: cache the superblock
	Previously, the superblock was mmaped and a pointer stored in sblock
	by map_hypermetadata.  This memory is backed by our disk pager.

	This is rather unfortunate, as this means that whenever we read a
	value from that location, we might generate a request our disk pager.
	This amplifies the so-called thread-storm problem.

	Rather than relying on a mmaped region of memory, just use the data
	loaded by get_hypermetadata.

	* ext2fs/hyper.c (get_hypermetadata): Do not free sblock.
	(mapped_sblock): New variable.
	(map_hypermetadata): Map the superblock to mapped_sblock instead.
	(diskfs_set_hypermetadata): Copy superblock into mapped_superblock.
	* ext2fs/ext2fs.h (get_hypermetadata, map_hypermetadata): Adjust
	comments accordingly.

2014-05-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: use two distinct pager buckets for the disk and file pager
	fatfs has two kinds of pagers.  One for the files, one for the disk.
	Previously, both were in the same port bucket.

	If a request for a file pager arrives, it most likely touches some
	metadata (like the superblock).  This is in turn backed by the disk
	pager, so another request is generated for the disk pager.

	Seperate all pagers clearly by using two port buckets.  This will
	enable us to use a single thread per port bucket in the future.

	* fatfs/pager.c (pager_bucket): Rename to...
	(disk_pager_bucket): ... this to make the change explicit at every
	occurrence.
	(file_pager_bucket): New variable.
	(service_paging_requests): New function.
	(create_fat_pager): Also create the file pager.
	(diskfs_get_filemap): Handout pagers from the file_pager_bucket.
	(diskfs_shutdown_pager): This is only concerned with the file pager.
	Simplify code accordingly.
	(diskfs_sync_everything): Likewise.
	(diskfs_pager_users): Likewise.
	(diskfs_max_user_pager_prot): Likewise.
	(disable_caching): Iterate over both buckets.
	(enable_caching): Likewise.

2014-05-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: unlock _ports_lock on malloc failure
	* libports/bucket-iterate.c (_ports_bucket_class_iterate): Unlock
	_ports_lock on malloc failure.

2014-05-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: use two distinct pager buckets for the disk and file pager
	ext2fs has two kinds of pagers.  One for the files, one for the disk.
	Previously, both were in the same port bucket.

	If a request for a file pager arrives, it most likely touches some
	metadata (like the superblock).  This is in turn backed by the disk
	pager, so another request is generated for the disk pager.

	Seperate all pagers clearly by using two port buckets.  This will
	enable us to use a single thread per port bucket in the future.

	* ext2fs/pager.c (pager_bucket): Rename to...
	(disk_pager_bucket): ... this to make the change explicit at every
	occurrence.
	(file_pager_bucket): New variable.
	(service_paging_requests): New function.
	(create_disk_pager): Also create the file pager.
	(diskfs_get_filemap): Handout pagers from the file_pager_bucket.
	(diskfs_shutdown_pager): This is only concerned with the file pager.
	Simplify code accordingly.
	(diskfs_sync_everything): Likewise.
	(diskfs_pager_users): Likewise.
	(diskfs_max_user_pager_prot): Likewise.
	(disable_caching): Iterate over both buckets.
	(enable_caching): Likewise.

2014-04-30  Justus Winter  <4winter@informatik.uni-hamburg.de>

	tmpfs: improve diskfs_node_iterate
	Currently, diskfs_node_iterate iterates twice over all nodes.  The
	first time only to determine the number of nodes.  Simply count them
	instead.

	* tmpfs/node.c (all_nodes_nr_items): New variable.
	(diskfs_free_node): Decrement all_nodes_nr_items.
	(diskfs_node_norefs): Likewise.
	(diskfs_cached_lookup): Increment all_nodes_nr_items.
	(diskfs_node_iterate): Fix type of sum_nodes, use all_nodes_nr_items.

2014-04-30  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: improve diskfs_node_iterate
	Currently, diskfs_node_iterate iterates twice over all nodes in the
	cache.  The first time only to determine the number of nodes currently
	in the cache.  Simply count them instead.

	* fatfs/inode.c (nodehash_nr_items): New variable.
	(diskfs_cached_lookup): Increment nodehash_nr_items.
	(diskfs_cached_lookup_in_dirbuf): Likewise.
	(diskfs_node_norefs): Decrement nodehash_nr_items.
	(diskfs_node_iterate): Fix the type of num_nodes, use nodehash_nr_items.

2014-04-30  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: improve diskfs_node_iterate
	Currently, diskfs_node_iterate iterates twice over all nodes in the
	cache.  The first time only to determine the number of nodes currently
	in the cache.  Simply count them instead.

	* ext2fs/inode.c (nodehash_nr_items): New variable.
	(diskfs_cached_lookup): Increment nodehash_nr_items.
	(diskfs_node_norefs): Decrement nodehash_nr_items.
	(diskfs_node_iterate): Fix the type of num_nodes, use nodehash_nr_items.

2014-04-30  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: simplify expression
	* fatfs/pager.c (add_pager_max_prot): Simplify expression.

2014-04-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: reduce malloc overhead in _ports_bucket_class_iterate
	_ports_bucket_class_iterate creates a snapshot of the buckets hash
	table.  This is done so that the lock protecting the hash table can be
	released while we iterate over the snapshot.

	Formerly, a linked list was used to store the snapshot.  As the
	maximal number of items is known, using an array is much simpler.

	_ports_bucket_class_iterate implements both ports_bucket_iterate and
	ports_class_iterate.  For this change might make ports_class_iterate
	less efficient memory-wise if the number of ports belonging to the
	class is low with respect to the number of ports in the bucket.  If
	this happens, we allocate too much.  Alleviate this by releasing
	unused memory.

	On the other hand, the array representation is more compact.
	Furthermore a survey of the Hurd code revealed that
	ports_class_iterate is rarely used, while ports_bucket_iterate is used
	more often, most prominently in paging code.

	* libports/bucket-iterate.c (_ports_bucket_class_iterate): Use an
	array instead of a linked list.

2014-04-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: simplify expression
	* ext2fs/pager.c (add_pager_max_prot): Simplify expression.

2014-04-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: fix type of inum
	Previously, inum was of type int, whereas dino_ref expects ino_t.  On
	Hurd/x86 the former is 32 bit wide, the latter 64.  If dino_ref is
	inlined, this does not seem to pose a problem, but if ext2fs is
	compiled with -O0, this most likely results in an invalid memory access.

	* ext2fs/ialloc.c (ext2_alloc_inode): Use type ino_t for inum.

2014-04-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: abbreviate the task name if necessary
	* exec/exec.c (do_exec): If the formatted task name exceeds
	TASK_NAME_SIZE, abbreviate it.

2014-04-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: work around bugs in server termination
	Some servers use ports_manage_port_operations_one_thread to process
	requests and terminate when it returns. Since many of them don't detach
	before shutting down, a client may receive an error if its request
	arrived while the server is shutting down. Prevent those spurious errors
	by forcing ports_manage_port_operations_one_thread not to return.

	This is the same change as 235491231bdd1fd93507c835767503f047e10b91
	introduced for ports_manage_port_operations_multithread.

	* libports/manage-one-thread.c
	(ports_manage_port_operations_one_thread): Force timeout to 0.

2014-04-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: set the default sync interval to 30 seconds
	The default sync interval has been changed in 9e55fdd7 from 30 to 5
	seconds.  This change was not reflected in the documentation.

	At least for current hardware, using 30 seconds instead of just 5
	alleviates the thread-storm problem.  Make 30 seconds the default
	again.

	* libdiskfs/priv.h (DEFAULT_SYNC_INTERVAL): Set to 30 seconds.

2014-04-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add missing receiver lookup fix
	following 7cb7fa6b3a0d02985b4a51f7823bc1cb631d6bfa

	* proc/mgt.c (S_proc_exception_raise): Do not dereference e on returning
	EINVAL, the translation functions does it for us.

2014-04-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Add TODO about fork() making rpctrace emit an error
	* utils/rpctrace.c (rewrite_right): Explain why the unknown send right
	error happens on fork().

2014-04-22  Ludovic Courtès  <ludo@gnu.org>

	build: Remove configure check for libcrypt.
	GNU libc has provided the 'crypt' function in libcrypt for a long time,
	making this check unnecessary.

	* configure.ac: Remove libcrypt check and 'LIBCRYPT' substitution.
	* config.make.in (LIBCRYPT): Remove.
	* trans/Makefile (password-LDLIBS): Change $(LIBCRYPT) to -lcrypt.
	* utils/Makefile (login-LDLIBS, addauth-LDLIBS, setauth-LDLIBS):
	  Likewise.

2014-04-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Include the MIG-generated server header files
	This enables the compiler to check that the server function
	declarations match MIGs expectations.  Fix a few oddities along the
	way.

	* console-client/trans.c: Include MIG-generated server header file(s).
	* console/console.c: Likewise.  Also, fix declarations.
	* console/mutations.h (TIOCTL_IMPORTS): Just use libnetfs/priv.h.
	* console/priv.h: Delete now unused file.
	* ext2fs/storeinfo.c: Include MIG-generated server header file(s).
	* fatfs/inode.c: Likewise.
	* fatfs/main.c: Likewise.  Also, fix declaration.
	* isofs/inode.c: Likewise.
	* libdiskfs/boot-start.c: Likewise.
	* libdiskfs/file-chg.c: Include the correct MIG-generated server header file.
	* libdiskfs/file-chmod.c: Include MIG-generated server header file(s).
	* libdiskfs/file-get-fs-opts.c: Likewise.
	* libdiskfs/init-startup.c: Likewise.
	* libnetfs/file-get-children.c: Likewise.
	* libnetfs/file-getcontrol.c: Include the correct MIG-generated server
	header file.
	* libnetfs/file-set-translator.c: Include MIG-generated server header file(s).
	* libnetfs/fsstubs.c: Likewise.
	* libtrivfs/file-access.c: Likewise.
	* libtrivfs/file-chauthor.c: Likewise.
	* libtrivfs/file-chflags.c: Likewise.
	* libtrivfs/file-chg.c: Likewise.
	* libtrivfs/file-chmod.c: Likewise.
	* libtrivfs/file-chown.c: Likewise.
	* libtrivfs/file-exec.c: Likewise.
	* libtrivfs/file-get-children.c: Likewise.
	* libtrivfs/file-get-fs-options.c: Likewise.
	* libtrivfs/file-get-source.c: Likewise.
	* libtrivfs/file-get-storage-info.c: Likewise.
	* libtrivfs/file-get-trans.c: Likewise.
	* libtrivfs/file-get-transcntl.c: Likewise.
	* libtrivfs/file-getcontrol.c: Likewise.
	* libtrivfs/file-getfh.c: Likewise.
	* libtrivfs/file-getlinknode.c: Likewise.
	* libtrivfs/file-lock.c: Likewise.
	* libtrivfs/file-reparent.c: Likewise.
	* libtrivfs/file-set-size.c: Likewise.
	* libtrivfs/file-set-trans.c: Likewise.
	* libtrivfs/file-statfs.c: Likewise.
	* libtrivfs/file-sync.c: Likewise.
	* libtrivfs/file-syncfs.c: Likewise.
	* libtrivfs/file-utimes.c: Likewise.
	* libtrivfs/fsys-forward.c: Likewise.
	* libtrivfs/fsys-get-options.c: Likewise.
	* libtrivfs/fsys-getroot.c: Likewise.
	* libtrivfs/fsys-goaway.c: Likewise.
	* libtrivfs/fsys-set-options.c: Likewise.
	* libtrivfs/fsys-stubs.c: Likewise.
	* libtrivfs/fsys-syncfs.c: Likewise.
	* libtrivfs/io-async-icky.c: Likewise.
	* libtrivfs/io-async.c: Likewise.
	* libtrivfs/io-duplicate.c: Likewise.
	* libtrivfs/io-identity.c: Likewise.
	* libtrivfs/io-map.c: Likewise.
	* libtrivfs/io-modes-get.c: Likewise.
	* libtrivfs/io-modes-off.c: Likewise.
	* libtrivfs/io-modes-on.c: Likewise.
	* libtrivfs/io-modes-set.c: Likewise.
	* libtrivfs/io-owner-get.c: Likewise.
	* libtrivfs/io-owner-mod.c: Likewise.
	* libtrivfs/io-pathconf.c: Likewise.
	* libtrivfs/io-read.c: Likewise.
	* libtrivfs/io-readable.c: Likewise.
	* libtrivfs/io-reauthenticate.c: Likewise.
	* libtrivfs/io-restrict-auth.c: Likewise.
	* libtrivfs/io-revoke.c: Likewise.
	* libtrivfs/io-seek.c: Likewise.
	* libtrivfs/io-select.c: Likewise.
	* libtrivfs/io-stat.c: Likewise.
	* libtrivfs/io-stubs.c: Likewise.
	* libtrivfs/io-version.c: Likewise.
	* libtrivfs/io-write.c: Likewise.
	* pfinet/tunnel.c: Likewise.
	* storeio/io.c: Likewise.
	* storeio/storeio.c: Likewise.
	* term/users.c: Likewise.
	* tmpfs/node.c: Likewise.
	* trans/fakeroot.c: Likewise.  Also, include all server headers that provide
	the X_server_routine functions...
	(netfs_demuxer): ... that were previously declared here.
	* trans/fifo.c: Include MIG-generated server header file(s).
	* trans/firmlink.c: Likewise.
	* trans/hello-mt.c: Likewise.
	* trans/hello.c: Likewise.
	* trans/magic.c: Likewise.
	* trans/mtab.c: Likewise.
	* trans/new-fifo.c: Likewise.
	* trans/null.c: Likewise.
	* trans/proxy-defpager.c: Likewise.
	* trans/streamio.c: Likewise.
	* libdiskfs/fsmutations.h: Qualify the import with the libraries path.
	Without this change, out-of-tree builds would no longer work.
	* libnetfs/mutations.h: Likewise.
	* libtrivfs/mig-mutate.h: Likewise.

2014-04-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: fix notify_port_t receiver lookups
	This fixes one more occurence of a notify_port_t receiver lookup that
	I overlooked in 5a4926dd52aed56913cbe10592063ff0da753700.

	* libpager/no-senders.c: Include "notify_S.h" so that the compiler can
	spot such mistakes in the future.
	(_pager_do_seqnos_mach_notify_no_senders): Fix receiver lookup.

2014-04-14  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: fix notify_port_t receiver lookups
	* libpager/mig-mutate.h: Add mutators.
	* libpager/notify-stubs.c: Adjust accordingly.

2014-04-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console: fix notify_port_t receiver lookups
	This complements e9687ec4ff525ae4a88314ba4ae97da770bd012f.

	* console/display.c: Fix receiver lookups, adjust function declarations.
	* console/mutations.h: Add NOTIFY mutators.

2014-04-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	boot: remove the ourdevice hack
	Previously, the device definitions were filtered using sed to replace
	the device_t type with mach_port_send_t to make the device argument of
	device_open polymorphic.  Rather than doing that, which makes it
	impossible to use translation functions, the definition of device_open
	has been amended.

	* boot/Makefile: Remove the ourdevice hack.
	* boot/boot.c: Adjust the include accordingly.

2014-04-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: drop DIST_FILES from Makefile
	Since 50bfb9acf98d5f4c0c5948cc28285e990b40b659 git is used to produce
	dist tarballs.

	* console-client/Makefile (DIST_FILES): Do not set obsolete variable.

2014-04-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: fix receiver lookup
	* libports/interrupt-operation.c (ports_S_interrupt_operation): Fix
	receiver lookup.
	* libports/mig-mutate.h: Add mutators.
	* libports/ports.h: Remove superfluous declarations.

	hurd: add a new type interrupt_t for the interrupt protocol
	* hurd/hurd_types.defs (interrupt_t): New type.
	* hurd/hurd_types.h (interrupt_t): Likewise.
	* hurd/interrupt.defs (interrupt_operation): Use the new type.

2014-04-08  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fix a receiver lookup
	* mig-decls.h: New file.
	* mig-mutate.h: Likewise.
	* Makefile (MIGSFLAGS): Use mig-mutate.h.
	* random.c (S_startup_dosync): Fix the receiver lookup.

2014-04-06  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: fix notify_port_t receiver lookups
	* libports/Makefile (MIGSFLAGS): Include mig-mutate.h.
	* libports/mig-decls.h: New file.
	* libports/mig-mutate.h: Likewise.
	* libports/notify-dead-name.c: Fix receiver lookups.
	* libports/notify-no-senders.c: Likewise.
	* libports/notify-msg-accepted.c: Adjust function declaration.
	* libports/notify-port-deleted.c: Likewise.
	* libports/notify-port-destroyed.c: Likewise.
	* libports/notify-send-once.c: Likewise.
	* libports/ports.h: Likewise.
	* proc/Makefile (MIGSFLAGS): Include mig-mutate.h, move PROCESS mutators...
	* proc/mig-mutate.h: ... into a new file, add NOTIFY mutators.
	* proc/notify.c: Fix receiver lookups, adjust function declarations.
	* term/devio.c (ports_do_mach_notify_send_once): Adjust accordingly.

2014-04-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix receiver lookup
	* libdiskfs/Makefile (exec_startup-MIGSFLAGS): New variable.
	* libdiskfs/diskfs.h (struct bootinfo): New struct declaration.
	(diskfs_begin_using_bootinfo_port): New function.
	(diskfs_end_using_bootinfo): Likewise.
	* libdiskfs/fsmutations.h: Add mutators for exec_startup_t.
	* libdiskfs/priv.h (bootinfo_t): New type declaration to appease mig.
	* libdiskfs/boot-start.c (S_exec_startup_get_info): Fix receiver lookup.

	exec: fix receiver lookup
	* exec/Makefile (exec_startup-MIGSFLAGS): New variable.
	* exec/execmutations.h: Add mutators for exec_startup_t.
	* exec/mig-decls.h: New file.
	* exec/priv.h (bootinfo_t): New type declaration to appease mig.
	* exec/exec.c (S_exec_startup_get_info): Fix receiver lookup.

	hurd: add a new type for the exec_startup protocol
	* hurd/hurd_types.defs (exec_startup_t): New type.
	* hurd/hurd_types.h (exec_startup_t): Likewise.
	* hurd/exec_startup.defs: Honor EXEC_STARTUP_IMPORTS.
	(exec_startup_get_info): Use the new type as receiver.

2014-04-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2014-04-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix spurious unlock on error
	Thanks Cyril Roelandt for finding the issue.

	* libdiskfs/dir-renamed.c (diskfs_rename_dir): On diskfs_lookup error,
	set fnp to NULL to avoid unlocking it spuriously.

2014-04-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: fix receiver lookups
	Previously, the receiver lookup was done manually in all the server
	functions.  Use mig translator functions instead.

	* libpager/mig-decls.h: New file.
	* libpager/mig-mutate.h: Likewise.
	* libpager/Makefile (MIGSFLAGS): Include mig-mutate.h.
	* libpager/chg-compl.c: Fix receiver lookups.
	* libpager/data-request.c: Likewise.
	* libpager/data-return.c: Likewise.
	* libpager/data-unlock.c: Likewise.
	* libpager/lock-completed.c: Likewise.
	* libpager/object-init.c: Likewise.
	* libpager/object-terminate.c: Likewise.
	* libpager/stubs.c: Likewise.
	* libpager/seqnos.c (_pager_update_seqno): Move the actual
	functionality...
	(_pager_update_seqno_p): ... into a new function that can be called
	with a pointer to struct pager.
	* libpager/priv.h (_pager_update_seqno_p): New declaration.

2014-03-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Handle fonts with multiple-of-8 bbox width
	* console-client/vga-dynafont.c (dynafont_new): When the bbox width of
	the font is a multiple of 8, set width to 8.  Reject any other value
	than 8 or 9 with EINVAL.

	Fix setting LGE flag
	* console-client/vga-support.c (vga_set_font_width): Fix setting the
	`VGA_ATTR_MODE_LGE' flag.

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2014-03-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Align VGA buffers
	Some "hardware" (such as kvm on linux 3.2) would hang when transferring
	between video memory and unaligned main memory.  This also allows
	better optimized transfers anyway.

	Thanks Petter Reinholdtsen for the report and patient tests.

	* console-client/vga-support.c (vga_state): Force maximum alignment of
	`videomem' and `fontmem' fields.

2014-03-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: replace the magic typecast with a hash table
	Previously, the mach-defpager used a "magic typecast" for object
	lookups.  It renamed the port to the address of the associated object,
	and upon receiving a message it would cast the port name back to a
	pointer.

	While this might seem like an optimization, it actually makes the port
	handling in the kernel less efficient.  Ports with small continuous
	names are stored in an array, while other ports get spilled in a splay
	tree.

	Replace the linked list of default_port_t objects with a hash table.
	Do not rename the ports, rather use the hash table to lookup objects
	associated with ports.

	* mach-defpager/default_pager.c (struct pager_port): Replace queue
	with hash table, remove count, move type declaration to priv.h.
	(pager_port_list_init): Adjust accordingly.
	(pager_port_list_insert): Likewise.
	(pager_port_list_delete): Likewise.
	(destroy_paging_partition): Replace queue_iterate with HURD_IHASH_ITERATE.
	(S_default_pager_objects): Likewise.
	(S_default_pager_object_pages): Likewise.
	(seqnos_memory_object_create): Do not rename the port but store it in
	the hash table.
	(S_default_pager_object_create): Likewise.
	* mach-defpager/priv.h (struct dstruct): Add fast-removal pointer.
	(pnameof): Remove obsolete macro definition.
	(dnameof): Likewise.
	* mach-defpager/mig-decls.h (begin_using_default_pager): Replace the
	magic typecast with a hash table lookup.
	* mach-defpager/Makefile (HURDLIBS): Add ihash.

2014-03-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: fix local includes
	* mach-defpager/default_pager.c: Fix local includes.
	* mach-defpager/main.c: Likewise.
	* mach-defpager/setup.c: Likewise.

2014-03-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: fix receiver lookups
	Previously, the receiver lookup was done manually in all the server
	functions.  Use mig translator functions instead.

	* mach-defpager/mig-decls.h: New file.
	* mach-defpager/mig-mutate.h: Likewise.
	* mach-defpager/Makefile (MIGSFLAGS): Include mig-mutate.h.
	* mach-defpager/mach-defpager.c: Fix receiver lookups, move type
	definitions...
	* mach-defpager/priv.h: ... here, so that they can be used in
	mig-decls.h.

2014-03-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: fix receiver type, honor DEFAULT_PAGER_IMPORTS
	* hurd/default_pager.defs: Honor DEFAULT_PAGER_IMPORTS.
	(default_pager_object_set_size): Fix receiver type.

2014-03-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix string termination
	Found using the Clang Static Analyzer.

	* libdiskfs/fsys-getroot.c (diskfs_S_fsys_getroot): Fix string
	termination.

2014-03-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	isofs: also copy the terminating zero in read_symlink_hook
	* isofs/inode.c (read_symlink_hook): Use memcpy, also copy terminating
	zero.

2014-03-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: fix potential deadlock
	This patch releases the interlock before doing an rpc call, analogous
	to 901c61a1d25e7c8963e51012760a82730eda1910.

	* libpager/pager-attr.c (pager_change_attributes): Release interlock
	before calling memory_object_change_attributes, to let the callbacks
	take it.

2014-03-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: fix comment of pager_change_attributes
	* libpager/pager-attr.c: Fix comment.
	* libpager/pager.h: Likewise.

2014-03-20  Gabriele Giacone  <1o5g4r8o@gmail.com>

	Make bz2 and gz support optional
	* config.make.in (HAVE_LIBBZ2, HAVE_LIBZ): New variables.
	* configure.ac (--without-libbz2, --without-libz): New options.
	* ext2fs/Makefile (OTHERLIBS): Make -lbz2 and -lz optional.
	* fatfs/Makefile (OTHERLIBS): Likewise.
	* isofs/Makefile (OTHERLIBS): Likewise.
	* libstore/Makefile (maybe_part): Remove variable.
	(store-types): Add part, bunzip2 and gunzip support conditionnally.
	(LDLIBS): Make -lbz2 and -lz optional.
	(OBJS): Add GUNZIP_OBJS and BUNZIP2_OBJS optional.

2014-03-16  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix handling of console readlink errors
	* console-client/trans.c (netfs_attempt_lookup): Look for errors returned by
	`readlink' before allocating a node.
	(netfs_attempt_readlink): Look for errors returned by `readlink'.

	Fix vcs_readlink propagating error returned by console_current_id
	* console-client/current-vcs.c (vcs_readlink): Return error returned by
	`console_current_id' as a negative value.

	Fix crash on accessing vcs without a console being active
	* console-client/current-vcs.c (vcs_readlink): Return error as negative
	values.
	(vcs_read): Convert errors returned by vcs_readlink before returning
	them.

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Fix crash on opening /dev/kbd or mouse without any console being active
	* console-client/console.c (console_switch_away): Check for `active_vcons`
	being NULL before saving the currently active console.

2014-03-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: silently ignore requests to page to active partition
	Currently, if mach-defpager is asked to page to an already active
	partition, it ignores this request and returns success.  It does,
	however, print a message about this to stdout.

	This message might indicate to the user that there is some kind of a
	problem with the configuration of the machine, even though the code in
	new_partition clearly does not consider it an error to do such an
	request.

	* mach-defpager/default_pager.c (new_partition): Do not print a
	message if requested to page to an already active partition.

2014-03-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: fix type of size arguments
	* mach-defpager/default_pager.c (new_partition): Fix type of bsize.
	* mach-defpager/file_io.h (page_read_file_direct): Fix type of size argument.
	(page_write_file_direct): Likewise.
	* mach-defpager/setup.c (page_read_file_direct): Likewise.
	(page_write_file_direct): Likewise.

	mach-defpager: fix warnings about uninitialized variables
	* mach-defpager/default_pager.c (S_default_pager_objects): Initialize
	address, size-pairs to 0.
	(S_default_pager_object_pages): Likewise.
	* mach-defpager/kalloc.c (kget_space): Likewise.

2014-03-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: fix warning about uninitialized variable
	Previously, failure to look up the given partition was detected after
	the loop by checking whether the loop ran over all existing
	partitions.  Initialize part to NULL and check for that instead.  This
	retains the behavior, but expresses it in a way the compiler
	understands better.

	* mach-defpager/default_pager.c (destroy_paging_partition): Initialize
	part to NULL and check for it still being NULL after the loop.

2014-03-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: fix error handling in S_default_pager_object_set_size
	Fix a compiler warning about kr being potentially being uninitialized.

	* mach-defpager/default_pager.c (S_default_pager_object_set_size):
	Initialize kr.

2014-03-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: add and use synchronized_printf for dprintf
	* mach-defpager/default_pager.c (synchronized_printf): New function.
	(printf_lock): Move to synchronized_printf.
	(dprintf): Use synchronized_printf.
	(ddprintf): Likewise.

	mach-defpager: fix warnings about unused variables
	* mach-defpager/default_pager.c (pager_alloc): Declare variables only
	when needed.
	(dealloc_direct): Remove unused variables.
	(seqnos_memory_object_terminate): Remove unused variable, adjust
	ddprintfs accordingly.
	(seqnos_memory_object_data_write): Remove unused variable.

2014-03-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: remove comments around form feeds
	Form feed characters (\f) are whitespace and are treated as such by c
	compilers.  There is no need to enclose them in comments.

	* mach-defpager/default_pager.c: Remove comments around form feeds.

2014-03-01  Justus Winter  <4winter@informatik.uni-hamburg.de>

	auth: improve the mig mutator functions
	Previously, the mig mutator function auth_port_to_handle was defined
	in auth.c (fakeauth.c), preventing it from being inlined into the
	mig-generated server functions.  Put it in mig-decls.h instead.
	Rename authmutations.h to mig-mutate.h, auth_mig.h to mig-decls.h.
	This is the naming convention used for pflocal.

	* auth/auth.h: New file.
	* auth/auth_mig.h: Rename to mig-decls.h, add copyright notice, define
	mutator functions.
	* auth/authmutations.h: Rename to mig-mutate.h, restore copyright
	notice, adjust accordingly.
	* auth/auth.c: Include auth.h, remove auth_port_to_handle.
	* utils/fakeauth.c: Likewise.
	* auth/Makefile: Adjust accordingly.
	* utils/Makefile: Likewise.

2014-03-01  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/ifsock: fix receiver lookup
	* trans/Makefile: Add ifsock-MIGSFLAGS.
	* trans/ifsock.c (S_ifsock_getsockaddr): Fix receiver lookup.

2014-02-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	term: fix receiver lookups in the term server functions
	* term/mig-mutate.h: Define TERM_IMPORTS.
	* term/Makefile: Set term-MIGSFLAGS.
	* term/users.c: Fix receiver lookups in the term server functions.

	term: fix receiver lookups in the tioctl server functions
	* term/mig-mutate.h: New file.
	* term/Makefile: Set tioctl-MIGSFLAGS.
	* term/ptyio.c: Fix receiver lookups in the tioctl server functions.
	* term/users.c: Likewise.

2014-02-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pfinet: fix receiver lookups in iioctl-ops.c
	* pfinet/iioctl-ops.c: Fix receiver lookups.
	* pfinet/mig-mutate.h: Add IIOCTL_IMPORTS.
	* pfinet/Makefile: Set iioctl-MIGSFLAGS.

	hurd: add IIOCTL_IMPORTS
	* hurd/iioctl.defs: Add IIOCTL_IMPORTS.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: improve the mig mutator functions
	Previously, the mig mutator functions were in migsupport.c, preventing
	them from being inlined into the mig-generated server functions.  Put
	them in mig-decls.h instead.  Rename mutations.h to mig-mutate.h.
	This is the naming convention used for pflocal.

	* libtrivfs/fsmutations.h: Rename to mig-mutate.h, adopt imports.
	* libtrivfs/Makefile: Adopt accordingly.
	* libtrivfs/migsupport.c: Rename to mig-decls.h.
	* libtrivfs/trivfs.h: Move dynamic classes/buckets declarations to
	mig-decls.h, remove superfluous imports.
	* exec/execmutations.h: Fix import.
	* pfinet/mig-mutate.h: Likewise.
	* trans/Makefile: Likewise.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pfinet: improve the mig mutator functions
	Previously, the mig mutator functions were in misc.c, preventing them
	from being inlined into the mig-generated server functions.  Put them
	in mig-decls.h instead.  Rename mutations.h to mig-mutate.h.  This is
	the naming convention used for pflocal.

	* pfinet/mutations.h: Rename to mig-mutate.h, adopt imports.
	* pfinet/Makefile: Adopt accordingly.
	* pfinet/mig-decls.h: New file.
	* pfinet/misc.c: Move mutator functions to mig-decls.h.
	* pfinet/pfinet.h: Move type declarations to mig-decls.h, remove
	mutator declarations.
	* pfinet/iioctl-ops.c: Include mig-decls.h.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix receiver lookups in fsys server functions
	* libdiskfs/diskfs.h (struct diskfs_control): New declaration.
	(diskfs_begin_using_control_port): New declaration and function.
	(diskfs_end_using_control_port): Likewise.
	* libdiskfs/fsmutations.h: Add translation functions.
	* libdiskfs/priv.h (control_t): New type declaration for mig.
	* libdiskfs/boot-start.c: Fix receiver lookups.
	* libdiskfs/fsys-getfile.c: Likewise.
	* libdiskfs/fsys-getroot.c: Likewise.
	* libdiskfs/fsys-goaway.c: Likewise.
	* libdiskfs/fsys-options.c: Likewise.
	* libdiskfs/fsys-syncfs.c: Likewise.

	libnetfs: fix receiver lookups in fsys server functions
	* mutations.h: Add translation functions.
	* netfs.h (struct netfs_control): New declaration.
	* priv.h: Define translation functions.
	* fsys-get-options.c: Fix receiver lookups.
	* fsys-getroot.c: Likewise.
	* fsys-goaway.c: Likewise.
	* fsys-set-options.c: Likewise.
	* fsys-syncfs.c: Likewise.
	* fsysstubs.c: Likewise.

	New RPCs, fix build

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/mtab: do not map unknown source strings to "none"
	Previously, map_device_to_path mapped unknown device strings to
	"none".  Return a copy of the original source string instead so that
	e.g. nfs mount point points are properly handled.

	* trans/mtab.c (map_device_to_path): Do not map unknown source strings
	to "none".

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	tmpfs: set diskfs_disk_name to "none"
	By default diskfs_disk_name is returned as the source of
	libdiskfs-based translators.  Hurds fstab allows multiple entries with
	the mnt_fsname being "none".

	* tmpfs/tmpfs.c (diskfs_disk_name): Set to "none".

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/mtab: ignore translators that do not implement file_get_source
	Previously, the mtab translator would guess the source of a filesystem
	translator from its last argument.  This made all kinds of
	non-filesystem translators appear in /proc/mounts, causing severe
	problems due to umount --all removing vital passive translator
	records.

	Fix this by ignoring all translators that do not explicitly implement
	file_get_source.

	* trans/mtab.c (mtab_populate): Ignore translators that do not
	implement file_get_source.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	nfs: implement netfs_get_source
	Implement netfs_get_source so that nfs translators show up in
	/proc/mounts.

	* nfs/main.c (netfs_get_source): New function.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: fix the get-children and get-source procedures
	* hurd/fs.defs: Add file_get_children and file_get_source.
	* hurd/fsys.defs: Remove fsys_get_children and fsys_get_source.
	* libdiskfs/fsys-get-children.c: Rename and adapt accordingly.
	* libdiskfs/fsys-get-source.c: Likewise.
	* libnetfs/fsys-get-children.c: Likewise.
	* libnetfs/fsys-get-source.c: Likewise.
	* libtrivfs/fsys-get-children.c: Likewise.
	* libtrivfs/fsys-get-source.c: Likewise.
	* libdiskfs/diskfs.h: Adapt prototype and comment.
	* libnetfs/netfs.h: Likewise.
	* libtrivfs/trivfs.h: Likewise.
	* libdiskfs/get-source.c: Adapt default implementation, provide
	diskfs_disk_name by default.
	* libnetfs/netfs.h: Adapt default implementation.
	* libtrivfs/get-source.c: Likewise.
	* libdiskfs/Makefile: Adapt accordingly.
	* libnetfs/Makefile: Likewise.
	* libtrivfs/Makefile: Likewise.
	* trans/symlink.c: Likewise.
	* trans/mtab.c: Likewise.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: improve the default_pager_demux_object function
	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.

	* mach-defpager/default_pager.c (default_pager_demux_object): Improve
	the demuxer function.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: add function mig_reply_setup
	Currently, mig_reply_setup is not provided by libmachuser or the
	glibc.  Provide it locally.

	* mach-defpager/default_pager.c (mig_reply_setup): New function.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: fix definition of seqnos_memory_object_data_unlock
	* mach-defpager/default_pager.c (seqnos_memory_object_data_unlock):
	Fix function arguments.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libpager: improve the pager_demuxer function
	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.

	* libpager/demuxer.c (pager_demuxer): Improve the demuxer function.

2014-02-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/umount: do not remove passive translator records
	Passive translator records are a Hurd concept.  Therefore, the umount
	compatibility program should not remove them.

	* utils/umount.c (passive_flags): Unset FS_TRANS_SET.
	(doc): Adjust accordingly.

2014-02-25  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix fakeroot and remap parsing corner cases
	Fix case when $PWD contains spaces.
	Pass directly arguments to command, to directly avoid escaping issues.
	Based on suggestion by Ivan Shmakov <oneingray@gmail.com>

	* utils/fakeroot.sh (TARGET): Do not define.
	(sh): Rather pass PWD and commandline as parameters.
	* utils/remap.sh: Likewise.

2014-02-23  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: provide a meaningful name for new tasks
	The name will be used in error messages printed by the kernel.  This
	makes attributing the errors to processes possible.

	* exec/exec.c (do_exec): Set the name of the new task.

2014-02-22  Richard Braun  <rbraun@sceen.net>

	pfinet: set a non-zero ports management timeout
	* pfinet/main.c (main): Call ports_manage_port_operations_multithread
	with non-zero timeouts.

2014-02-22  Richard Braun  <rbraun@sceen.net>

	libports: work around bugs in server termination
	Most servers use ports_manage_port_operations_multithread to process
	requests and terminate when it returns. Since many of them don't detach
	before shutting down, a client may receive an error if its request
	arrived while the server is shutting down. Prevent those spurious errors
	by forcing ports_manage_port_operations_multithread not to return.

	* libports/manage-multithread.c
	(ports_manage_port_operations_multithread): Force global_timeout to 0.

2014-02-19  Ignazio Sgalmuzzo  <ignaker@gmail.com>

	libstore: fixed some pointer-sign related warnings
	libstore/do-bunzip2.c: fixed type modifier, avoiding cast

2014-02-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add missing copyright notice

2014-02-19  Ignazio Sgalmuzzo  <ignaker@gmail.com>

	libstore: replaced gz decompression code with libz
	Note: dropped .zip support

	configure.ac: added check for libz
	ext2fs/Makefile: linked libz
	fatfs/Makefile: linked libz
	isofs/Makefile: linked libz
	libstore/Makefile: linked libz
	libstore/do-gunzip.c: new decompression function using libz calls.
	libstore/gunzip.c: removed no longer needed code replaced by do_gunzip()
	libstore/gzip.h: deleted, no longer needed
	libstore/inflate.c: deleted: no longer needed
	libstore/tailor.h: deleted: no longer needed
	libstore/unzip.c: deleted: no longer needed
	libstore/util.c: removed no longer needed code.

2014-02-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Add missing copyright notice

2014-02-14  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix typo
	* libdiskfs/boot-start.c (diskfs_S_fsys_init): Fix typo.

2014-02-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add --font-width option to force 8/9 pixel font width
	This permits to choose between 720x400 or 640x400 textmode without
	changing the font.

	* console-client/vga-hw.h (VGA_ATTR_MODE_ADDR, VGA_ATTR_MODE_LGE,
	VGA_ATTR_ENABLE_ADDR): New macros.
	* console-client/vga-support.c (vga_state): Add `attr_mode' field.
	(vga_init): Save attribute mode subregister content.  Re-enable the
	screen after that.
	(vga_fini): Restore attribute mode subregister content.  Re-enable the
	screen after that.
	(vga_set_font_width): When the font width is set to 9, enable VGA LGE to
	properly handle box-drawing unicode characters.  Re-nable the screen
	after that.
	(vga_exchange_palette_attributes): Use VGA_ATTR_ENABLE_ADDR macro
	instead of harcoded 0x20.
	* console-client/vga-dynafont.h (dynafont_new): Add `width' parameter.
	* console-client/vga-dynafont.c (dynafont): Add `width' field.
	(dynafont_new): Add `width' parameter, stored in `width' field of `df',
	but using the font bbox as default value.  Use it to decide whether to
	use VGA LGE or not.
	(dynafont_activate): Use `width' field of `df' instead of the font bbox
	to configure the VGA glyph width.
	* console-client/vga.c (vga_display_font_width): New variable.
	(vga_display): New `df_width' field.
	(argp_option): New `font-width' option.
	(parse_opt): Handle `font-width' option.
	(vga_display_init): Copy `vga_display_font_width' to `disp'.
	(vga_display_start): Pass `df_width' to `dynafont_new'.

2014-02-12  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Fix typos

2014-02-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: add bz2 to OTHERLIBS
	* fatfs/Makefile (OTHERLIBS): Add bz2.

	isofs: add bz2 to OTHERLIBS
	* isofs/Makefile (OTHERLIBS): Add bz2.

2014-02-09  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2014-02-09  Ignazio Sgalmuzzo  <ignaker@gmail.com>

	Replaced bz2 decompression code with libbz2
	configure.ac: added check for libbz2
	libstore/Makefile: linked libbz2
	ext2fs/Makefile: linked libbz2
	do-bunzip2.c: rewritten do_bunzip2 using libbz2 calls. Removed no longer needed functions.

2014-02-07  Richard Braun  <rbraun@sceen.net>

	trans/fakeroot: fix cached node retrieval on lookup
	When a client finds a node from the hash table, it could happen that
	another thread is still holding one reference on it before the current
	thread has acquired its own. Simply checking for a non zero refcount isn't
	enough, the new client must atomically acquire its own reference.

	* trans/fakeroot.c (netfs_S_dir_lookup): Find and acquire node reference
	while holding netfs_node_refcnt_lock.

2014-02-06  Richard Braun  <rbraun@sceen.net>

	trans/fakeroot: fix netfs_S_dir_lookup
	* trans/fakeroot.c (netfs_S_dir_lookup): Fix node dereference.

2014-02-05  Richard Braun  <rbraun@sceen.net>

	trans/fakeroot: rework node caching
	Instead of the FAKE_REFERENCE flag, rework node caching so that nodes are
	retained only if their attributes are actually changed. In addition, don't
	remove unreferenced nodes from the hash table at protid release, since
	their reference counter is unstable. Do it on node destruction, once the
	reference counter has reached 0. This means lookups can return nodes not
	referenced (other than by the hash table), a condition for which a check
	is added. By never acquiring a reference on such nodes, their counter is
	guaranteed to remain stable once unreferenced.

	* trans/fakeroot.c (FAKE_REFERENCE): Remove macro.
	(FAKE_DEFAULT): New macro.
	(set_default_attributes): New function.
	(set_faked_attribute): Likewise.
	(netfs_node_norefs): Remove node from hash table, properly taking care
	of all the locks involved.
	(fakeroot_netfs_release_protid): Remove node handling code, merely call
	netfs_release_protid.
	(netfs_S_dir_lookup): Handle unreferenced nodes, call set_default_attributes
	on node creation, remove call to netfs_attempt_chown.
	(netfs_attempt_chown): Call set_faked_attribute instead of accessing faked
	flags directly.
	(netfs_attempt_chauthor): Likewise.
	(netfs_attempt_chmod): Likewise.
	(main): Likewise.

2014-02-05  Richard Braun  <rbraun@sceen.net>

	trans/fakeroot: fix chmod
	Unconditionally relay chmod requests instead of filtering those that
	don't change the executable bit.

	* trans/fakeroot.c (netfs_attempt_chmod): Unconditionally call file_chmod
	with an unaltered mode.

2014-02-05  Richard Braun  <rbraun@sceen.net>

	Revert "trans: fix locking issue in fakeroot"
	This reverts commit 672005782e57e049c7c8f4d6d0b2a80c0df512b4.

	That change is apparently not needed and introduced a deadlock.

	* trans/fakeroot.c (netfs_attempt_mkfile): Unlock directory node before
	creating new node.

2014-02-05  Richard Braun  <rbraun@sceen.net>

	trans/fakeroot: fix right leak
	* trans/fakeroot.c (netfs_S_dir_lookup): Deallocate rights to intermediate
	file systems.

2014-02-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	daemons/getty: always print a newline before the banner
	* daemons/getty.c (load_banner): Drop first newline from default banner.
	(print_banner): Print a newline.

2014-02-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: connect std{in,out,err} to the mach console
	* exec/main.c (S_exec_init): Get the device master port and connect
	std{in,out,err} to the mach console.

2014-01-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	daemons/getty: display /etc/issue if available
	Previously, a banner was hardcoded in Hurds getty.  Load /etc/issue
	instead.  Fall back to a hardcoded version if that fails.  Expand
	common \char sequences.  If no /etc/issue is provided, the old
	behavior is retained.

	* daemons/getty.c (load_banner): New function.
	(print_banner): Expand \char sequences.

2014-01-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix crash on fsysopts when pfinet has no IPv6
	* pfinet/options.c (add_dev_opts): Use a for loop over `idev->addr_list'
	instead of a while loop which assumes that it is not empty.

2014-01-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	pfinet: really deallocate device port
	* pfinet/ethernet.c (ethernet_close): Call mach_port_deallocate on
	device port.

2014-01-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Also re-open Ethernet device on EMIG_SERVER_DIED
	* pfinet/ethernet.c (ethernet_xmit): Also call ethernet_close then
	ethernet_open on EMIG_SERVER_DIED error.

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Make pfinet re-open ethernet device on transmission error
	* pfinet/ethernet.c (ethernet_close): New function.
	(ethernet_xmit): On EMACH_SEND_INVALID_DEST error, call ethernet_close
	and ethernet_open again to re-open ethernet device.

2014-01-26  Richard Braun  <rbraun@sceen.net>

	libnetfs: fix file locking on peropen release
	* libnetfs/release-peropen.c (netfs_release_peropen): Release the lock on
	the underlying node if the peropen status indicates it's not unlocked.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: fix the receiver lookup in S_proc_exception_raise
	* proc/mgt.c (S_proc_exception_raise): Update accordingly.
	* proc/mig-decls.h: New file.
	* proc/proc_exc.defs: Add translation functions.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: include the mig-generated server headers in fakeauth.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* utils/fakeauth.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	auth: include the mig-generated server headers in auth.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* auth/auth.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pflocal: include the mig-generated server headers
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* pflocal/demuxer.c: Include the mig-generated server headers.
	* pflocal/sserver.c: Likewise.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pfinet: include the mig-generated server headers in main.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* pfinet/main.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: include the mig-generated server headers in main.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* proc/main.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: include the mig-generated server headers in main.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* exec/main.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: include the mig-generated server headers in demuxer.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* libtrivfs/demuxer.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: include the mig-generated server headers in demuxer.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* libnetfs/demuxer.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: include the mig-generated server headers in demuxer.c
	GNU MIG recently gained support for emitting x_server_routine
	declarations in the generated server header file.  Using this
	declaration, the x_server_routine functions can be inlined into the
	demuxer function.

	* libdiskfs/demuxer.c: Include the mig-generated server headers.

2014-01-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: fix the receiver lookup in password
	Use translation functions instead of doing the lookup manually.

	* trans/Makefile (password-MIGSFLAGS): Add mutators.
	* trans/password.c (S_password_check_user): Update accordingly.
	(S_password_check_group): Likewise.

2014-01-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Rename variables with the name "error" to "err".
	The canonical name for variables of the type error_t is err.  There
	are, however, places where the variable is called error instead.  This
	is unfortunate, as this shadows the error function.  Rename such
	variables to err.

	For reference, this is accomplished using the following semantic
	patch:

	@@
	expression E;
	@@
	-error_t error = E;
	+error_t err = E;
	<...
	-error
	+err
	...>

	@@
	@@
	-error_t error;
	+error_t err;
	<...
	-error
	+err
	...>

	* libdiskfs/dir-link.c: Rename error to err.
	* libdiskfs/dir-unlink.c: Likewise.
	* libdiskfs/file-get-trans.c: Likewise.
	* libdiskfs/file-get-transcntl.c: Likewise.
	* libdiskfs/file-set-trans.c: Likewise.
	* libdiskfs/fsys-getroot.c: Likewise.
	* libshouldbeinlibc/wire.c: Likewise.

2014-01-16  Richard Braun  <rbraun@sceen.net>

	libps: fix task/thread times fetching
	Introduce PSTAT_TIMES to force the retrieval of both PSTAT_TASK_BASIC
	and PSTAT_THREAD_BASIC. Task basic info contain the user and system
	times of terminated threads which the code wrongly assumes is always
	present along with process info.

	* libps/procstat.c (add_preconditions): Set both PSTAT_TASK_BASIC and
	PSTAT_THREAD_BASIC as preconditions for PSTAT_TIMES.
	(summarize_thread_basic_info): Add terminated threads times only if
	task basic info are available.
	(set_procinfo_flags): Provide summarize_thread_basic_info with flags of
	available info.
	(proc_stat_set_flags): Set PSTAT_TIMES as available if it was needed and
	any of PSTAT_TASK_BASIC or PSTAT_THREAD_BASIC could be fetched.
	* libps/ps.h (PSTAT_TIMES): New macro.
	* libps/spec.c (ps_get_usr_time): Indicate the getter needs PSTAT_TIMES
	instead of PSTAT_THREAD_BASIC.
	(ps_sys_time_getter): Likewise.
	(ps_tot_time_getter): Likewise.

2014-01-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: register passive translator startups
	Detect passive translator startup and add the resulting active
	translator to the list of active translators.

	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Detect and register
	  passive translator startup.

2014-01-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: register passive translator startups
	Detect passive translator startup and add the resulting active
	translator to the list of active translators.

	Note that newpi is properly deallocated in the function epilogue.

	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Detect and register
	  passive translator startup.

2014-01-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libfshelp: fix the api of fshelp_set_active_translator
	To detect if an active translator goes away, we need to register for
	dead name notifications. Those notifications have to be sent to a port
	known to the ports library, as the ports library handles the dead name
	notifications. The most straight forward way is to use the port to the
	underlying node for that. To that end, a reference to the port_info
	struct is handed in and kept in the list of active translators.

	This commit also moves the registration of dead name notifications to
	libfshelp.

	* libfshelp/fshelp.h (fshelp_set_active_translator): Add port_info argument.
	* libfshelp/translator-list.c (struct translator): Add port_info pointer.
	(translator_ihash_cleanup): Dereference port_info object.
	(fshelp_set_active_translator): Register dead name notifications.
	* libdiskfs/file-set-trans.c (diskfs_S_file_set_translator): Update
	  accordingly.
	* libnetfs/file-set-translator.c (netfs_S_file_set_translator): Likewise.

2014-01-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/mtab: do not include non-filesystem translators by default
	Traditionally, /proc/mounts includes only filesystem mount points.
	Previously though, the mtab translator included any kind of
	translator, like all /hurd/storeio translators.  This causes problems
	with umount --all as this would remove the passive translator records
	from nodes in /dev.

	Fix this by only listing filesystem-like translators by default.
	Filesystem-like translators are identified by their response to
	dir_readdir messages sent to their root node.

	* trans/mtab.c (all_translators): New variable.
	(options): Add flag to preserve the old behavior.
	(parse_opt): Handle the new flag.
	(is_filesystem_translator): New function.
	(mtab_populate): Skip non-filesystem translators by default.

2014-01-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/mtab: make the translator multithreaded
	* trans/mtab.c (main): Use ports_manage_port_operations_multithread.

	trans/mtab: properly lock mtab objects
	* trans/mtab.c (struct mtab): Add lock.
	(open_hook): Initialize lock.
	(close_hook): Destroy lock.
	(trivfs_S_io_read): Lock mtab object, adjust error handling accordingly.
	(trivfs_S_io_seek): Likewise.
	(trivfs_S_io_readable): Likewise.

2014-01-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/mtab: remove the loop detection logic
	Previously the mtab detector tried to detect whether it talks to
	itself by comparing the control port of the translator it currently
	visits with its own. This was done to prevent deadlocks. However, this
	did not detect non-trivial loops, i.e. two mtab translators would
	still dead-lock each other.

	Now that it is safe to actually file_name_lookup the root node of a
	mtab translator without triggering the generation of content, this
	logic can just be omitted.

	* trans/mtab.c (mtab_populate): Remove the loop detection logic.

2014-01-12  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/mtab: populate mtab objects on demand
	Previously the mtab content was generated in the open hook. Delay this
	until the data is needed. A follow up patch will take advantage of
	this to both simplify the logic in mtab_populate and make it more
	robust at the same time.

	* trans/mtab.c (open_hook): Do not eagerly populate the mtab.
	(trivfs_S_io_read): Populate the mtab struct on demand.
	(trivfs_S_io_seek): Likewise.
	(trivfs_S_io_readable): Likewise.

2013-12-30  Richard Braun  <rbraun@sceen.net>

	libps: fix process user and system times
	Include the run time of terminated threads in the user and system times
	of processes.

2013-12-28  Richard Braun  <rbraun@sceen.net>

	libports: remove the threadvars stack size hack
	Setting the stack size should now correctly be supported by libpthread.

	* libports/manage-multithread.c (__pthread_stack_default_size): Remove
	global variable.

2013-12-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: shutdown the translator if the last client is gone
	Previously, fakeroot would not exit if a process outlived the original
	process started by settrans.  This caused bugs like this:

	% fakeroot-hurd /bin/sh -c 'sleep 1&' 2>&1 | tee
	<hangs>

	Fix this by exiting if the last client of fakeroot goes away.

	If noone has a right to any control or protid port, noone can ever
	reacquire any such right. So it is safe to shutdown the fakeroot
	translator in that case.

	* trans/fakeroot.c (fakeroot_netfs_release_protid): Shutdown the
	translator if the last protid object is destroyed and no control port
	is around either.

2013-12-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: fix output so that replies can be attributed to requests
	Currently, it is impossible to properly attribute response messages to
	requests.  Even though rpctrace is single-threaded, its tracee may
	not.  Or there might be more than one tracee.  In any such case it is
	not guaranteed that the reply message we just processed is for the
	request we just printed.  Fix this by printing ellipsis with the port
	name, so that reply messages can be properly attributed:

	task129(pid3312)->mach_port_allocate (3) ...134
	task129(pid3312)->mach_port_deallocate (pn{  1}) ...160
	134... = 0 pn{ 30}
	160... = 0

	* utils/rpctrace.c (last_reply_port): New variable.
	(print_ellipsis): New function.
	(print_request_header): Optionally print ellipsis and update
	last_reply_port.
	(print_reply_header): Likewise.

2013-12-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: escape non-printable characters in strings
	* utils/rpctrace.c (escape_sequences): New char array mapping
	characters to their escape sequence.
	(print_data): Escape non-printable characters when printing strings.

2013-12-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: handle MACH_MSG_TYPE_PORT_SEND rights in trace_and_forward
	This allows one to rpctrace processes doing select(2).

	* utils/rpctrace.c (trace_and_forward): Handle MACH_MSG_TYPE_PORT_SEND
	rights.

2013-12-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: generalize tracing code
	Currently, rpctrace dies if a tracee uses select(2) because it asserts
	that reply_type is a MACH_MSG_TYPE_PORT_SEND_ONCE right.  Generalize
	the code surrounding the failing assertion.

	* utils/rpctrace.c (trace_and_forward): Generalize code by switching
	over reply_type.

2013-12-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/rpctrace: generalize code in rewrite_right
	* utils/rpctrace.c (rewrite_right): Generalize the code so we can use
	rewrite_right to rewrite MACH_MSG_TYPE_PORT_SEND rights for non-rpc ports.

2013-12-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/mount: fix autodetection of fat file systems
	mount uses libblkid (if available) to detect the file system type when
	using mount -t auto.  libblkid calls fat file systems "vfat", our fat
	translator is called "fatfs".  Fix this discrepancy in mount.

	* utils/mount.c (do_mount): Fix autodetection of fat file systems.

2013-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: remove dead code
	* trans/fakeroot.c (netfs_S_dir_lookup): Remove dead code.

	trans/fakeroot: remove dead code
	* trans/fakeroot.c (netfs_S_dir_lookup): Remove dead code.

	trans/fakeroot: drop else
	* trans/fakeroot.c (netfs_S_dir_lookup): Drop else.

2013-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/fakeroot: fix ownership of newly created files
	Previously, files created in the fakeroot environment were created
	with the uid and gid of the user running fakeroot:

	% fakeroot-hurd /bin/sh -c 'touch /tmp/$$; stat --format=%u:%g /tmp/$$'
	1000:1000

	* trans/fakeroot.c (netfs_S_dir_lookup): Fix ownership of newly
	created files.

2013-12-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils/settrans: fix the teardown of chrooted environments
	Previously, settrans --chroot would just exec the target.  Create a
	new process for that purpose.  Wait for its completion, then ask the
	translator (nicely by default) to go away.  If it refuses with EBUSY,
	it might be because some process has daemonized inside the chrooted
	environment.

	This fixes the following bug when settrans is used with fakeroot:

	% fakeroot-hurd /bin/true 2>&1 | tee
	<hangs>

	Here, fakeroot-hurd execs settrans with --chroot, settrans execs
	/hurd/fakeauth which will eventually exec the target /bin/true.  When
	true terminates, it will close its stdout and stderr.  But
	/hurd/fakeroot's stderr is also connected to tee's stdin, preventing
	tee from exiting.

	* utils/settrans.c (main): Fix the teardown of chrooted environments.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: remove spurious pthread_spin_unlocks
	* console-client/trans.c (netfs_attempt_mkfile): Remove spurious
	  pthread_spin_unlock.
	(netfs_node_norefs): Likewise.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: unlock nodes with faked attributes in fakeroot
	When a node has faked attributes, we cannot drop our node.
	Reinitialize the lock box as if the node was dropped.  This fixes the
	following bug:

	% fakeroot-hurd /bin/sh -c 'touch /tmp/$$.lock
	                            chown 0 /tmp/$$.lock
	                            l(){ flock /tmp/$$.lock true; }; l; l'
	<hangs>

	* trans/fakeroot.c (fake_node_dropweak): Unlock the node if the last
	  real reference is dropped but we keep a fake one.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: improve the error handling in fakeauth
	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.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: fix reference counting bug in fakeroot
	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.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: fix locking in fakeroot's netfs_S_dir_lookup
	* trans/fakeroot.c (netfs_S_dir_lookup): Fix locking.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: fix reference counting and destruction of fake nodes
	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

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: return nodes locked when creating fake nodes in fakeroot
	* 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 fakeroot
	* trans/fakeroot.c (netfs_attempt_mkfile): Keep dir locked until the
	  new node is created.

	trans: handle invalid responses to dir_lookup requests in fakeroot
	* trans/fakeroot.c (netfs_S_dir_lookup): Handle invalid responses to
	  dir_lookup requests.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: improve the performance of dir_lookup in fakeroot
	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

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: fix the use of the hash table in fakeroot.c
	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.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: remove dead code
	* libihash/ihash.c (hurd_ihash_add): Remove dead code.

2013-12-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libfshelp: use a hash table in get-identity.c
	Currently fshelp_get_identity uses ports_class_iterate to de-duplicate
	the identity ports. Use a hash table instead.

	* libfshelp/get-identity.c (struct idspec): Remove field fileno.
	(struct idspec): Add field id_hashloc.
	(id_clean): New function.
	(id_initialize): Use id_clean as cleanup function for idclass.
	(fshelp_get_identity): Use a hash table to de-duplicate the identity
	ports.

2013-12-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: make the fakeroot environment more transparent
	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.

2013-12-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: fix transparent reauthentication in fakeroot
	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.

2013-12-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: fix the creation of files in fakeroot
	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.

2013-12-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: improve the netfs_demuxer function in fakeroot.c
	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.

2013-12-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: remove unused declaration from fakeroot.c
	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.

2013-12-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: improve the auth_demuxer function in fakeauth.c
	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.

	* utils/fakeauth.c (auth_demuxer): Improve the demuxer function.

2013-12-04  Justus Winter  <4winter@informatik.uni-hamburg.de>

	auth: improve the auth_demuxer function
	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.

	* auth/auth.c (auth_demuxer): Improve the demuxer function.

2013-12-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pflocal: improve the demuxer functions
	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.

	* pflocal/pflocal.c (pf_demuxer): Improve the demuxer function.
	* pflocal/sserver.c (sock_demuxer): Likewise.

2013-12-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	pfinet: improve the pfinet_demuxer function
	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.

	* pfinet/main.c (pfinet_demuxer): Improve the demuxer function.

2013-12-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: improve the message_demuxer function
	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.

	* proc/main.c (message_demuxer): Improve the demuxer function.

2013-12-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: improve the exec_demuxer function
	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.

	Furthermore, move the exec_startup_server_routine to the end of the
	chain, as the startup related functions are only needed at system
	bootstrap time.

	* exec/main.c (exec_demuxer): Improve the demuxer function.

2013-12-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: improve the trivfs_demuxer function
	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.

	* libtriv/demuxer.c (trivfs_demuxer): Improve the demuxer function.

2013-12-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: improve the netfs_demuxer function
	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.

	* libnetfs/demuxer.c (netfs_demuxer): Improve the demuxer function.

2013-12-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: improve the diskfs_demuxer function
	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.

	Furthermore, move diskfs_exec_startup_server_routine to the end of the
	chain, as the startup related functions are only needed at system
	bootstrap time in the root filesystem.

	* libdiskfs/demuxer.c (diskfs_demuxer): Improve the demuxer function.

2013-11-30  Richard Braun  <rbraun@sceen.net>

	libports: another right leak fix
	* libports/manage-multithread.c (adjust_priority): Deallocate host
	right before returning.

2013-11-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libfshelp: improve error handling in fshelp_start_translator_long
	Properly deallocate all ports and terminate the started translator if
	an error occurs.

	* libfshelp/start-translator-long.c (fshelp_start_translator_long):
	  Improve error handling.

2013-11-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: store the device master port in _hurd_device_master
	* proc/host.c (S_proc_getprivports): Adapt accordingly.
	* proc/main.c (main): Store the device master port in _hurd_device_master.
	* proc/proc.h (master_device_port): Remove unused variable.

2013-11-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: store the privileged host port in _hurd_host_priv
	Store the privileged host port in _hurd_host_priv like it is done in
	the root filesystem. This fixes the thread priority adjustment in the
	proc server. Prior to this fix, a warning message "unable to adjust
	libports thread priority" sometimes appeared early in the boot
	process.

	* proc/host.c (S_proc_getprivports): Adapt accordingly.
	(S_proc_register_version): Likewise.
	* proc/mgt.c (add_tasks): Likewise.
	* proc/msg.c (tickle_init): Likewise.
	* proc/main.c (main): Store the privileged host port in _hurd_host_priv.
	* proc/proc.h: Remove unused variable master_host_port.

	fixup_store_priv_port

2013-11-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: improve error reporting in adjust_priority
	By using error instead of perror, the warning can be proprely
	attributed to the process.

	* libports/manage-multithread.c (adjust_priority): Use error instead
	  of perror to print the warning.

2013-11-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: improve error reporting in diskfs_start_disk_pager
	* libdiskfs/disk-pager.c (diskfs_start_disk_pager): Improve error reporting.

	libports: improve error handling in ports_transfer_right
	* libports/transfer-right.c (ports_transfer_right): Improve error handling.

	libports: improve error handling in ports_reallocate_from_external
	* libports/reallocate-from-external.c (ports_reallocate_from_external):
	  Improve error handling.

	libports: improve error handling in ports_reallocate_port
	* libports/reallocate-port.c (ports_reallocate_port): Improve error
	  handling.

	proc: update comments
	* proc/main.c (main): Update comment. The proc server is no longer PID 0.
	* proc/proc.h: Likewise.

	init: fix port leak
	* init/init.c (S_startup_essential_task): Fix port leak.

2013-11-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: fix minor port leak in maptime_map
	Deallocate the device port after creating the mapping. The mapping is
	independent of the device port.

	* libshouldbeinlibc/maptime.c (maptime_map): Deallocate device port.

2013-11-26  Richard Braun  <rbraun@sceen.net>

	libports: fix right leaks when adjusting priorities
	* libports/manage-multithread.c (adjust_priority): Deallocate processor set
	rights before returning.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: fix error handling in maptime_map
	Found using the Clang Static Analyzer.

	* libshouldbeinlibc/maptime.c (maptime_map): Fix error handling.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: drop all register qualifiers
	* mach-defpager/default_pager.c: Drop register qualifiers.
	* mach-defpager/kalloc.c: Likewise.
	* mach-defpager/queue.h: Likewise.
	* mach-defpager/wiring.c: Likewise.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	usermux: actually use the computed flags value in netfs_attempt_utimes
	If either atime or mtime is NULL, the respective time should be set to
	the current time.

	Found using the Clang Static Analyzer.

	* usermux/node.c (netfs_attempt_utimes): Use flags in call to
	  fshelp_touch.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	nfsd: fix error handling in op_remove
	Found using the Clang Static Analyzer.

	* nfsd/ops.c (op_remove): Fix error handling.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: fix error handling in diskfs_get_directs
	Found using the Clang Static Analyzer.

	* fatfs/dir.c (diskfs_get_directs): Fix error handling.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	fatfs: fix error handling in diskfs_lookup_hard
	Found using the Clang Static Analyzer.

	* fatfs/dir.c (diskfs_lookup_hard): Fix error handling.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libps: fix the length computation in fprint_frac_value
	Found using the Clang Static Analyzer.

	* libps/spec.c (fprint_frac_value): Fix computation of value_len.

2013-11-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: fix dead initialization
	Found using the Clang Static Analyzer.

	* utils/frobauth.c (posix_parse_opt): Fix dead initialization.
	(no_ugids_parse_opt): Likewise.

2013-11-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2013-11-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make sure created netfs nodes have stat validated
	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.

2013-11-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: implement lockless management of threads
	ports_manage_port_operations_multithread uses two values, totalthreads
	and nreqthreads, to manage the threads it creates.  Previously a lock
	was used to synchronize the access to them. Use atomic operations
	instead.

	* libports/manage-multithread.c (ports_manage_port_operations_multithread):
	  Use atomic operations instead of a lock to synchronize the access to
	  totalthreads and nreqthreads.

2013-11-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Clean up the included header files
	* libihash/ihash.c: Clean up the included header files.
	* libshouldbeinlibc/cacheq.c: Likewise.
	* libshouldbeinlibc/canon-host.c: Likewise.
	* libshouldbeinlibc/fsysops.c: Likewise.
	* libshouldbeinlibc/idvec-auth.c: Likewise.
	* libshouldbeinlibc/idvec.c: Likewise.
	* libshouldbeinlibc/idvec.h: Likewise.
	* libshouldbeinlibc/localhost.c: Likewise.
	* libshouldbeinlibc/maptime.c: Likewise.
	* libshouldbeinlibc/nullauth.c: Likewise.
	* libshouldbeinlibc/portxlate.c: Likewise.
	* libshouldbeinlibc/shared-dom.c: Likewise.
	* libshouldbeinlibc/ugids-argp.c: Likewise.
	* libshouldbeinlibc/ugids-auth.c: Likewise.
	* libshouldbeinlibc/ugids-imply.c: Likewise.
	* libshouldbeinlibc/ugids-merge.c: Likewise.
	* libshouldbeinlibc/ugids-subtract.c: Likewise.
	* libshouldbeinlibc/ugids-verify-auth.c: Likewise.
	* libshouldbeinlibc/ugids-verify.c: Likewise.
	* libshouldbeinlibc/ugids.c: Likewise.
	* libshouldbeinlibc/ugids.h: Likewise.
	* libshouldbeinlibc/wire.c: Likewise.

2013-11-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: do not remove -Wall from CFLAGS
	Bother, said Pooh.

	* Makefile: Do not remove -Wall from CFLAGS.

2013-11-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: fix the page offsets returned by pager_pages
	Previously the increment was outside the loop body, turning it into a
	dead increment.

	Move the increment into the loop body as it is done in the true branch
	above. This fixes the offsets recorded in the default_pager_page_t
	objects.

	Found using the Clang Static Analyzer.

	* mach-defpager/default_pager.c (pager_pages): Fix returned page offsets.

2013-11-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: fix dead assignment
	Found using the Clang Static Analyzer.

	* libshouldbeinlibc/timefmt.c (fmt_past_time): Fix dead assignment,
	  normalize adjacent white space.

2013-11-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	ext2fs: fix error handling
	Found using the Clang Static Analyzer.

	* ext2fs/dir.c (diskfs_lookup_hard): Fix error handling.

2013-11-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix error handling
	Found using the Clang Static Analyzer.

	* libdiskfs/dir-renamed.c (diskfs_rename_dir): Fix error handling.

2013-11-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: remove dead assignment
	Found using the Clang Static Analyzer.

	* libdiskfs/io-write.c (diskfs_S_io_write): Remove dead assignment.

2013-11-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: implement portinfo --search
	Implement the --search switch of portinfo. The feature was suggested
	in the source code and partly implemented. portinfo --search locates
	the target ports (or all ports) in any other process and prints the
	port mapping and information about the port in the remote process.

	* utils/Makefile: Link portinfo against libps.
	* utils/portinfo.c (options): Enable --search option.
	(search_for_port): New function.
	(search_for_ports): Likewise.
	(main): Call search_for_port{,s} as appropiate.

2013-11-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: fix reference counting in port_name_xlator_create
	Both task ports are deallocated in the destructor, so they must be
	referenced in the constructor.

	* libshouldbeinlibc/portxlate.c (port_name_xlator_create): Fix
	  reference counting.

2013-11-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: include errno.h
	* mach-defpager/default_pager.c: Include errno.h.

2013-11-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: turn count_up and store_pid into normal functions
	Previously count_up and store_pid were defined inside
	S_proc_getallpids. Move them out of that function and declare them
	static.

	* proc/mgt.c: Turn count_up and store_pid into normal functions.

2013-11-10  Justus Winter  <4winter@informatik.uni-hamburg.de>

	term: fix error handling in hurdio_mdmctl
	hurdio_mdmctl allows one to set and clear bits from the modem control
	bit vector. However, plausible code paths exist that leave oldbits
	uninitialized. Fix this by returning an error instead if retrieving
	the oldbits failed and the bit set or clear operation was selected.

	Found using the Clang Static Analyzer.

	* term/hurdio.c (hurdio_mdmctl): Fix error handling.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: remove unused variables
	Found using the Clang Static Analyzer.

	* mach-defpager/default_pager.c (seqnos_memory_object_terminate):
	  Remove unused variables request_refs and name_refs.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: turn dealloc_direct into a normal function
	* mach-defpager/default_pager.c (dealloc_direct): Move function
	  definition outside of pager_truncate.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	auth: fix use of uninitialized variable err
	Previously a plausible execution path existed so the value of err was
	undefined at the end of the function, making the function return
	arbitrary error values. Fix this by initializing it to 0.

	Found using the Clang Static Analyzer.

	* auth/auth.c (S_auth_server_authenticate): Initialize err to 0.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	init: fix memory leak
	Found using the Clang Static Analyzer.

	* init/init.c (process_signal): Fix memory leak.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: fix error handling in S_proc_exception_raise
	Found using the Clang Static Analyzer.

	* proc/mgt.c (S_proc_exception_raise): Fix error propagation.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: fix a use-after-free error
	If we have to create a new process group, we have to do this before
	leaving the current one. The current process group is deallocated if
	the process is the last process in that group. Likewise, if the
	current group was the last group in the current groups session, the
	session is deallocated.

	Found using the Clang Static Analyzer.

	* proc/pgrp.c (S_proc_setpgrp): Fix use-after-free error.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: fix the declaraton of genpid
	* proc/proc.h (genpid): Fix declaration.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: remove declaration of nested functions from proc.h
	Remove the declaration of count_up and strore_pid from proc.h. The
	functions are defined as nested functions in S_proc_getallpids, there
	is no need to declare them. Furthermore, the declaration does not
	match the definition.

	* proc/proc.h: Remove declaration of count_up and strore_pid.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: implement settrans --pid-file
	This switch makes settrans write the pid file of the active translator
	it starts to a file. This makes the pid easily retrievable for test
	suites.

	* utils/settrans.c (options): Add --pid-file.
	(main): Add variable pid_file.
	(parse_opt): Handle --pid-file switch.
	(open_node): Write pid file.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: fix the thread counts in case the thread creation fails
	Previously the number of total threads and the number of unused
	threads was wrong if at one point the creation of a thread failed. Fix
	this by decrementing both counters that were previously optimistically
	incremented. Adjust the comment accordingly.

	* libports/manage-multithread.c (ports_manage_port_operations_multithread):
	  Fix the thread counts in case the thread creation fails.

2013-11-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Normalize whitespace at the end of each file to '\n'
	Some files were not normalized. In console/motd.UTF8 the additional
	newline is intentional. Empty files were excluded as well.

2013-11-06  Richard Braun  <rbraun@sceen.net>

	pfinet: fix emission on the loopback device
	Unlike other devices, sending packets on the loopback device causes the
	netif_rx() function to be called from the net_bh worker thread. Since
	the thread is already running, it can't wake itself up when calling
	mark_bh(). Use a new variable to indicate when net_bh work is pending.

	* glue-include/linux/interrupt.h (net_bh_raised): Declare new global
	variable.
	(mark_bh): Set net_bh_raised to 1 before waking up net_bh worker thread.
	* loopback.c (loopback_xmit): Add comment giving details about locking.
	* sched.c (net_bh_raised): Define new global variable.
	(net_bh_worker): Wait for net_bh_raised to become true and reset it
	before processing net_bh work.

2013-11-01  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libports: fix error handling in _ports_create_port_internal
	Previously any err value set before reaching lose: was overwritten and
	thus not properly propagated.

	Found using the Clang Static Analyzer.

	* libports/create-internal.c (_ports_create_port_internal): Fix error
	  handling.

2013-11-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix use after free
	Reported by Justus Winter

	* libtrivfs/protid-clean.c (trivfs_clean_protid): New variable `cntl` factorizes
	access to `cred->po->cntl`, and fixes use after free of cred->po.

2013-11-01  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: fix error handling in maptime_map
	Found using the Clang Static Analyzer.

	* libshouldbeinlibc/maptime.c (maptime_map): Fix error handling.

2013-11-01  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: Remove the remaining BFD related bits
	* exec/Makefile: Remove commented out lines related to BFD.
	* exec/hostarch.c: Remove all BFD related code.
	* exec/main.c: Likewise.

2013-10-31  Justus Winter  <4winter@informatik.uni-hamburg.de>

	configure.ac: properly escape the test for X11/keysymdef.h
	* configure.ac: Properly escape the test for X11/keysymdef.h using
	  AC_LANG_SOURCE.

2013-10-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make boot script accept more fsck values
	* daemons/rc.sh: Accept fsck returning 5 and 9 too.

2013-10-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add xenl to hurd.ti
	* console/hurd.ti (xenl): Add capability.

2013-10-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make CUD more usual
	Whether CUD scrolls the screen or not is implementation-dependant.
	Applications are not supposed to assume one way or the other, but they
	sometimes do, and most implementations do scroll, so let's stick to common
	practice.

	* console/display.c (handle_esc_bracket): On CUD/VPR, scroll the screen
	instead of capping the cursor position.

2013-10-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make boot script reboot when fsck told so
	* daemons/rc.sh: When fsck returned 2 or 3, reboot the system.

2013-10-18  Richard Braun  <rbraun@sceen.net>

	pflocal: fix message flags on receive
	* pflocal/socket.c (S_socket_recv): Set the memory pointed by out_flags
	to 0 instead of the pointer.

2013-10-18  Richard Braun  <rbraun@sceen.net>

	pflocal: fix port leak when receiving port rights
	The socket_send and socket_recv routines can be used to transmit port
	rights along data. Unfortunately, pflocal retains a copy of these rights
	in the socket_recv RPC. These lingering references would in turn lead to
	other leaks in servers waiting for a no-sender notification to clean
	their resources. Since these copied rights aren't used at all by the
	server, it is safe to simply move them to the recipient instead.

	* pflocal/socket.c (S_socket_recv): Transmit port rights using
	MACH_MSG_TYPE_MOVE_SEND transfer type instead of MACH_MSG_TYPE_COPY_SEND.

2013-10-18  Richard Braun  <rbraun@sceen.net>

	libdiskfs: fix removal of socket nodes
	When the file system supports ifsock shortcuts, a socket node can obtain
	a right on a socket address. This reference is only lost if the address
	is destroyed, through a dead-name notification. On the other hand,
	pflocal keeps the address around until all references are dropped. This
	leads to a situation where socket nodes, addresses, and their associated
	sockets are leaked. To remedy the situation, make addresses get a light
	reference on socket nodes, and properly deallocate it when the node is
	destroyed, which will in turn make pflocal correctly remove the matching
	address and socket.

	* libdiskfs/ifsock.c (diskfs_S_ifsock_getsockaddr): Add a light reference
	instead of a hard one.
	* libdiskfs/node-nput.c (diskfs_nput): Deallocate right to socket address
	when cleaning light references.

2013-10-18  Richard Braun  <rbraun@sceen.net>

	pflocal: fix destruction of explicitely bound sockets
	Sockets must have a weak reference on the address they're bound to so
	that addr_unbind is properly called before addr_clean. For sockets that
	are automatically bound, this weak reference is created in ensure_addr.
	Do the same in sock_bind.

	* pflocal/sock.c (sock_bind): Handle weak reference on addr.

2013-10-14  Richard Braun  <rbraun@sceen.net>

	term: fix read on a closed PTY
	* term/ptyio.c (pty_io_read): Return EIO if the terminal has been closed.

2013-10-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: replace function epilogue with console_exit
	* console-client/console.c (main): Replace epilogue with console_exit.

	console-client: minor stylistic fix
	* console-client/console.c (main): Minor stylistic fix.

2013-10-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: fix error handling
	Fix the error handling in console_move_mouse. This also appeases the
	compiler.

	* console-client/console.c (console_move_mouse): Fix error handing.

2013-10-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: entitle console_exit with the noreturn attribute
	* console-client/input.h (console_exit): Add noreturn attribute.

2013-10-13  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: remove the pid file on clean exits
	Remove the pid file if the console client exits either cleanly using
	console_exit or because of an error during daemonization.

	* console-client/console.c (console_exit): Remove the pid file.
	(daemon_error): Likewise.

2013-10-08  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libfshelp: properly free active translator entries
	Previously the dynamically allocated field name leaks. Fix this by
	properly freeing the objects of type struct translator.

	* libfshelp/translator-list.c (translator_ihash_cleanup): Fix memory leak.

2013-10-08  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: rename a global variable
	Rename the global variable "path" to "target_path" to make it more
	unambiguous.

	* trans/mtab.c: Rename global variable "path".

2013-10-08  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Revert "tmpfs: drop privileges in the tmpfs translator"
	This reverts commit 7075bc11289355478659cd1610632a9299734afc.

	Dropping the unix privileges of the tmpfs translator causes problems
	with the passive translator startup. The function fshelp_fetch_root
	creates an auth handle containing the processes original UID and
	GID. But if the privileges were dropped before, this operation fails
	with EPERM.

	This commit also broke mkfifo(3), possibly for similar or related
	reasons.

	* tmpfs/tmpfs.c (main): Do not drop all privileges.

2013-10-08  Richard Braun  <rbraun@sceen.net>

	Fix memory leak in exec
	* exec/hashexec.c (check_hashbang): Unmap command arguments.

2013-10-05  Richard Braun  <rbraun@sceen.net>

	Fix mtab translator leak
	The node structure for the `mounts' entry is created and destroyed on
	each access, despite the fact a translator is activated on it. Fix the
	issue by caching it.

	* rootdir.c (rootdir_mounts_node): New variable.
	(rootdir_mounts_node_lock): Likewise.
	(rootdir_mounts_make_node): New function.
	(rootdir_translator_make_node): Remove function.
	(rootdir_entries): Replace `rootdir_translator_make_node' with
	`rootdir_mounts_make_node'.

2013-10-04  Richard Braun  <rbraun@sceen.net>

	Fix memory leak in libnetfs
	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Properly jump to the
	single exit point if fshelp_fetch_root fails.

2013-10-02  Richard Braun  <rbraun@sceen.net>

	Check for negative sizes in file_set_size
	* libdiskfs/file-set-size.c (diskfs_S_file_set_size): Return EINVAL if
	size is negative.
	* libnetfs/file-set-size.c (netfs_S_file_set_size): Likewise.
	* libtreefs/s-file.c (treefs_S_file_set_size): Likewise.
	* storeio/io.c (trivfs_S_file_set_size): Likewise.
	* term/users.c (trivfs_S_file_set_size): Likewise.
	* trans/null.c (trivfs_S_file_set_size): Likewise.
	* trans/streamio.c (trivfs_S_file_set_size): Likewise.

2013-09-28  Richard Braun  <rbraun@sceen.net>

	Fix memory leak in libdiskfs
	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Properly jump to the
	single exit point if fshelp_fetch_root fails.

2013-09-27  Thomas Schwinge  <thomas@codesourcery.com>

	GNU Hurd 0.5.
	* configure.ac (AC_INIT): Set version to 0.5.
	(AC_REVISION): Remove.
	* NEWS: Finalize changes for 0.5.
	* INSTALL: Update.
	* INSTALL-cross: Likewise.
	* README.CVS: Delete, but move some content...
	* README: ... here.  Update.

	Decouple the Hurd version from the package version.
	* config.make.in (package-version): New variable.
	(hurd-version): Set to 0.3.
	* Makeconf (%: %.sh): Use package-version instead of hurd-version.
	* Makefile (stamp-version): Likewise.
	* doc/Makefile (stamp-version): Likewise.

	Generate ChangeLog files for distributions.
	* gitlog-to-changelog: New file; import from gnulib's
	9fc81090f6c5590bd1b0e0fa5087577a2ee43a3e:build-aux/gitlog-to-changelog.
	* Makefile (ChangeLog.tar, gen-ChangeLog): New targets.
	($(dist-version).tar): Depend on and use the former.
	(clean-misc): Clean up the generated files.

2013-09-27  Thomas Schwinge  <thomas@codesourcery.com>

	UFS is no more.
	* ChangeLog: Don't refer to bsdfsck/ChangeLog, ufs/ChangeLog,
	ufs-fsck/ChangeLog, ufs-utils/ChangeLog.

	Fixup for commit 84cf9c0f312637b670cc87224ff7e7c4da659e36.

2013-09-27  Thomas Schwinge  <thomas@codesourcery.com>

	* ChangeLog: Don't refer to serverboot/ChangeLog; it is no more.
	Fixup for commit a8744157214a302d84c8959b1ae99abe3ae2d7d2.

2013-09-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Update mailing lists
	* README: Update mailing lists.

2013-09-24  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Drop dead links
	* doc/hurd.texi (BSD Unix FS): Remove link to dropped section.

	Fix missing renames
	* pflocal/sock.c (sock_connect, sock_shutdown): Rename SOCK_CONNECTED to
	PFLOCAL_SOCK_CONNECTED.

	Add --without-daemon option to configure
	* configure.ac (--without-daemon): Add option to disable libdaemon pkgconfig
	test.

2013-09-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix spurious port deallocation
	* utils/storeinfo.c (parse_opt): Do not deallocate `file` port, `store_free`
	does it already.

2013-09-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	include: make /hurd/proc PID 3
	Using PID 0 is problematic for various reasons. Make /hurd/proc run as
	PID 3 instead.

	* include/pids.h: Make /hurd/proc PID 3.

2013-09-21  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: do not hand out PID 0
	Using PID 0 causes various problems. This makes genpid skip PID 0.

	* proc/mgt.c (genpid): Start PIDs at 1.

2013-09-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix sscanf format for c99
	* utils/rpctrace.c (parse_msgid_list): Use %ms instead of %as in sscanf
	format.

	Fix gcc warning
	* console-client/pc-mouse.c (input_loop): Return NULL.

	Fix gcc warning
	* console-client/xkb/kstoucs.c (find_ucs): Return 0 by default.

	Fix gcc warning
	* console-client/pc-kbd.c (gnumach_v1_input_next) [XKB_SUPPORT]: Do not
	define `up` and `sc` variables.

2013-09-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Rename SOCK_* into PFLOCAL_SOCK_*
	To avoid conflicting with glibc's SOCK_*

	* pflocal/io.c, pflocal/sock.c, pflocal/sock.h, pflocal/socket.c: Rename
	SOCK_CONNECTED into PFLOCAL_SOCK_CONNECTED,
	SOCK_NONBLOCK into PFLOCAL_SOCK_NONBLOCK,
	SOCK_SHUTDOWN_READ into PFLOCAL_SOCK_SHUTDOWN_READ,
	SOCK_SHUTDOWN_WRITE into PFLOCAL_SOCK_SHUTDOWN_WRITE.

2013-09-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix gcc warning
	* pflocal/io.c (copy_time): Make `to_nsec` parameter a long * instead of an
	unsigned long *.

	Properly return error
	* isofs/pager.c (pager_read_page): Return error returned by `store_read`, if
	any.

	Fix gcc warning
	* isofs/lookup.c (dirscanblock): Cast entry->name into const char * before
	passing to isonamematch.

	Fix gcc warning
	* isofs/inode.c (read_disknode): Cast dr->date into char* before calling
	`isodate_915`.

	Fix test for block compression
	* ext2fs/dir.c (dirscanblock): Test ds->stat against LOOKING and COMPRESS,
	instead of ds->type.

	Fix gcc warning
	* ext2fs/dir.c (dirscanblock): Test ds->type against LOOKUP instead of
	LOOKING.  They happened to have the same value.

	Fix setting modem control lines
	* term/hurdio.c (hurdio_mdmctl): Pass `newbits` intead of `oldbits` to
	`tioctl_tiocmods`.

	Fix gcc warning
	* term/users.c (trivfs_S_io_read): Add parentheses to make expression
	evaluation priority clear.

	Fix S_tioctl_tiocsetd returning errors
	* term/users.c (S_tioctl_tiocsetd): Properly return `err`.

	Fix test for term open mode
	* term/users.c (S_term_open_ctty): Properly test for `openmodes` containing
	at least O_READ or O_WRITE.

	Fix gcc warning
	* exec/hostarch.c (elf_machine_matches_host): Cast `&hostinfo` into
	host_info_t instead of natural_t *.

	Fix gcc warning
	* libfshelp/fshelp.h (fshelp_set_options): Make `argp` pointer const.
	* libfshelp/set-options.c (fshelp_set_options): Likewise.
	* doc/hurd.texi (fshelp_set_options): Likewise.

	Fix gcc warning
	* libpipe/pipe.c: Include <stdlib.h>

	Fix ENOMEM handling in *_make_peropen
	* libdiskfs/peropen-make.c (diskfs_make_peropen): Move `strdup` before port
	reference modifications, to fix abortion.
	* libnetfs/make-peropen.c (netfs_make_peropen): Check for `malloc` failure.
	Move `strdup` before port reference modifications, to fix abortion.

	Fix gcc warning:
	* libps/write.c (noise_write): Make `t` parameter a char * instead of
	unsigned char *.

	Fix gcc warning
	* libtrivfs/io-restrict-auth.c (listmember): Use uid_t type instead of int.
	(trivfs_S_io_restrict_auth): Make `i` variable an unsigned int, like the `num`
	field it is compared with

2013-09-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add _reply suffix to the routines in fsys_reply.defs
	* hurd/fsys_reply.defs: Add _reply suffix.

	hurd: add _reply suffix to the routines in process_reply.defs
	* hurd/process_reply.defs: Add _reply suffix.

2013-09-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	sutils: set up /dev/null using /bin/nullpriv in MAKEDEV.sh
	This patch makes MAKEDEV.sh use the /bin/nullpriv wrapper so that the
	storeio translator serving /dev/zero is started without any unix
	privileges.

	* sutils/MAKEDEV.sh (mkdev): Use /bin/nullpriv for /dev/zero.

2013-09-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	daemons: make sure / is writable before setting up pflocal
	runsystem.sh checks whether /servers/socket/1 exists and creates it
	using settrans -c if it does not. But at this point in the boot the
	root filesystem is normally not writable. This patch fixes this.

	* daemons/runsystem.sh: Make sure / is writable before attempting to
	  set up pflocal.

2013-09-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix cursor size
	The VGA card might have a bogus cursor end value, so better always write a
	value in there.

	* console-client/vga-dynafont.c (dynafont_set_cursor): Always pass height -
	1 as end parameter for vga_set_cursor_size.

2013-09-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Remove UFS support
	It has been unused/untested/unmaintained for a decade now, and its
	4-clause BSD licence poses problem.

	* configure.ac (default_static): Remove ufs.
	* Makefile (prog-subdirs): Remove ufs, ufs-fsck and ufs-utils.
	* NEWS, TODO: doc/hurd.texi, doc/navigating: Remove UFS notes.
	* ufs: Remove directory
	* ufs-fsck: Remove directory
	* ufs-utils: Remove directory
	* bsdfsck: Remove directory

2013-09-16  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Add match-options to utils sources
	* utils/Makefile (SRCS): Add match-options.c

2013-09-16  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Use fsys_get_children from libc
	* trans/Makefile (OBJS): Remove fsysUser.o.

	Add missing include
	* libfshelp/translator-list.c: Include <libgen.h> to get `dirname' prototype.

2013-09-16  Richard Braun  <rbraun@sceen.net>

	Large store support for ext2fs
	This is a revised version of the large store patch for ext2fs, written
	by Ognyan Kulev. It provides support for stores larger than 2 GiB.

	* ext2fs/balloc.c: Use the new disk_cache_block_ref and disk_cache_block_deref
	functions to access blocks from the disk cache.
	* ext2fs/ext2fs.c (main): Update initialization call to pokel_init, and
	call map_hypermetadata instead of get_hypermetadata.
	* ext2fs/ext2fs.h: Include <hurd/store.h> and <hurd/ihash.h>.
	(DISK_CACHE_BLOCKS): New macro.
	(DC_INCORE): Likewise.
	(DC_UNTOUCHED): Likewise.
	(DC_FIXED): Likewise.
	(DC_DONT_REUSE): Likewise.
	(DC_NO_BLOCK): Likewise.
	(DISK_CACHE_LAST_READ_XOR) [!NDEBUG]: Likewise.
	(struct disk_cache_info): New structure.
	(disk_cache): New external variable.
	(disk_cache_size): Likewise.
	(disk_cache_blocks): Likewise.
	(disk_cache_bptr): Likewise.
	(disk_cache_info): Likewise.
	(disk_cache_lock): Likewise.
	(disk_cache_reassociation): Likewise.
	(disk_cache_block_ref): New declaration.
	(disk_cache_block_ref_ptr): Likewise.
	(disk_cache_block_deref): Likewise.
	(disk_cache_block_is_ref): Likewise.
	(map_hypermetadata): Likewise.
	(trunc_block): Cast to off_t.
	(round_block): Likewise.
	(boffs): Likewise.
	(bptr_index): New macro.
	(boffs_ptr): Rewrite as an inline function to make it look up a block from
	the disk cache.
	(bptr_offs): Likewise.
	(dino): Remove function, replaced with ...
	(dino_ref): ... this one, which adds a reference to the inode block.
	(dino_deref): New inline function.
	(record_global_poke): Make sure block is referenced.
	(record_indir_poke): Likewise.
	(sync_global_ptr): Remove block reference, and adjust call to
	pager_sync_some.
	(sync_global): Add debug call to print wait parameter.
	* ext2fs/getblk.c: Use the new disk_cache_block_ref and disk_cache_block_deref
	functions to access blocks from the disk cache.
	* ext2fs/hyper.c (get_hypermetadata): Read the superblock from the store
	now that it's not directly mapped in memory. Move the initialization of
	zeroblock here from ...
	(map_hypermetadata): ... here. Also, set the superblock pointer.
	(diskfs_set_hypermetadata): Add a reference to the superblock.
	(diskfs_readonly_changed): Update call to mprotect.
	* ext2fs/ialloc.c: Use the new disk_cache_block_ref, disk_cache_block_ref_ptr
	and disk_cache_block_deref functions to access blocks from the disk cache.
	* ext2fs/inode.c: Update calls that used the disk image to use the disk cache,
	and use the new reference handling functions where appropriate.
	* ext2fs/pager.c: Include <unistd.h> and "../libpager/priv.h".
	(disk_image): Remove global variable.
	(disk_pager_read_page): Update cache information.
	(disk_pager_write_page): Likewise.
	(disk_pager_notify_evict): New function.
	(pager_notify_evict): Call disk_pager_notify_evict appropriately.
	(disk_cache): New global variable.
	(disk_cache_size): Likewise.
	(disk_cache_blocks): Likewise.
	(disk_cache_bptr): Likewise.
	(disk_cache_info): Likewise.
	(disk_cache_hint): Likewise.
	(disk_cache_lock): Likewise.
	(disk_cache_reassociation): Likewise.
	(disk_cache_init): New function.
	(disk_cache_return_unused): Likewise.
	(disk_cache_block_ref): Likewise.
	(disk_cache_block_ref_ptr): Likewise.
	(disk_cache_block_deref): Likewise.
	(disk_cache_block_is_ref): Likewise.
	(create_disk_pager): Update initialization of the disk pager.
	* ext2fs/pokel.c (pokel_add): Drop block references with disk_cache_block_deref.
	(_pokel_exec): Likewise.
	* ext2fs/truncate.c (trunc_indirect): Use the new disk_cache_block_ref and
	disk_cache_block_deref functions to access blocks from the disk cache.

2013-09-16  Richard Braun  <rbraun@sceen.net>

	Handle notification on page eviction
	If requested by the user, make libpager call pager_notify_evict when a page
	is flushed out by the kernel. Based on work by Ognyan Kulev.

	* console/pager.c (pager_notify_evict): New function.
	(user_pager_create): Update call to pager_create.
	* ext2fs/pager.c: (pager_notify_evict): New function.
	(create_disk_pager): Update call to diskfs_start_disk_pager.
	(diskfs_get_filemap): Update call to pager_create.
	* fatfs/pager.c: (pager_notify_evict): New function.
	(create_fat_pager): Update call to diskfs_start_disk_pager.
	(diskfs_get_filemap): Update call to pager_create.
	* isofs/pager.c: (pager_notify_evict): New function.
	(create_disk_pager): Update call to diskfs_start_disk_pager.
	(diskfs_get_filemap): Update call to pager_create.
	* libdiskfs/disk-pager.c (diskfs_start_disk_pager): Update definition and call
	to pager_create.
	* libdiskfs/diskfs-pager.h (diskfs_start_disk_pager): Update declaration.
	* libpager/data-request.c (_pager_seqnos_memory_object_data_request): Take
	pager's `notify_on_evict' member into account when calling
	memory_object_data_supply.
	* libpager/data-return.c (_pager_do_write_request): Handle user notification
	on page flush.
	* libpager/pager-create.c (pager_create): Update definition and set pager's
	`notify_on_evict' member.
	* libpager/pager.h (pager_create): Update declaration.
	(pager_notify_evict): New declaration.
	* libpager/priv.h (struct pager): New `notify_on_evict' member.
	* storeio/pager.c: (pager_notify_evict): New function.
	(dev_get_memory_object): Update call to pager_create.
	* tmpfs/pager-stubs.c (pager_notify_evict): New function.
	* ufs/pager.c (pager_notify_evict): New function.
	(create_disk_pager): Update call to diskfs_start_disk_pager.
	(diskfs_get_filemap): Update call to pager_create.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: remove support for transparently ungziping executables
	Remove support for transparently ungziping executables from the exec
	server. The code in question makes the exec server unnecessarily
	complex and since the exec server is an essential process, crashing it
	makes /hurd/init crash the whole system.

	Since the gzip code is not thread-safe, all access to it is
	serialized, so there is a trivial way for one user to delay another
	users gzipped executables for some unspecified time.

	This can be accomplished by padding any program with easily compressed
	data, zipping it and executing it. Using such a program as an passive
	translator and then triggering its execution by the filesystem
	translator also stalls any requests to that filesystem (observed using
	the libdiskfs-based ext2fs).

	Since compressed executables cannot be mapped into the memory, they
	have to be uncompressed into allocated memory first. This is slower
	and any user with access to the exec server can make it allocate
	arbitrary amounts of memory. If the Hurd had proper memory accounting,
	this would probably be a way around it.

	So the compression support in exec seemingly creates various issues
	for little value, at least with the abundance of nonvolatile memory
	available today.

	* exec/Makefile: Remove gzip related files.
	* exec/exec.c: Remove anything #ifdef GZIPped.
	* exec/unzip.c: Move to libstore.
	* exec/crypt.h: Likewise.
	* exec/gzip.h: Likewise.
	* exec/inflate.c: Likewise.
	* exec/tailor.h: Likewise.
	* exec/util.c: Likewise.
	* libstore/Makefile: Remove the vpath magic for looking up the zip
	  stuff.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: remove support for transparently unbzip2ing executables
	Remove support for transparently unbzip2ing executables from the exec
	server. The code in question makes the exec server unnecessarily
	complex and since the exec server is an essential process, crashing it
	makes /hurd/init crash the whole system.

	Since the bzip2 code is not thread-safe, all access to it is
	serialized, so there is a trivial way for one user to delay another
	users bzip2ed executables for some unspecified time.

	This can be accomplished by padding any program with easily compressed
	data, zipping it and executing it. Using such a program as an passive
	translator and then triggering its execution by the filesystem
	translator also stalls any requests to that filesystem (observed using
	the libdiskfs-based ext2fs).

	Since compressed executables cannot be mapped into the memory, they
	have to be uncompressed into allocated memory first. This is slower
	and any user with access to the exec server can make it allocate
	arbitrary amounts of memory. If the Hurd had proper memory accounting,
	this would probably be a way around it.

	So the compression support in exec seemingly creates various issues
	for little value, at least with the abundance of nonvolatile memory
	available today.

	* exec/Makefile: Remove bzip2 related files.
	* exec/exec.c: Remove anything #ifdef BZIP2ed.
	* exec/do-bunzip2.c: Move to libstore.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Serve mounts node with a passive translator record
	Make mounts a node with a passive translator record so that the mtab
	translator is started on access if it is available.

	* rootdir.c (MTAB_TRANSLATOR): New macro.
	(rootdir_mounts_get_translator): New function.
	(rootdir_mounts_exists): New function.
	(rootdir_translator_make_node): Likewise.
	(rootdir_entries): Add "mounts" node.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: add mtab translator
	The mtab translator provides an mtab file that is dynamically created
	on demand. It is populated with information about active translators
	bound below the given path that is accumulated by traversing the
	translator tree. It can also be invoked as normal program that prints
	the requested information to stdout.

	* trans/mtab.c: New file.
	* trans/Makefile: Build mtab.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add fsys_get_source
	Return information about the source of the receiving filesystem.
	If the concept of a source is applicable, SOURCE should refer to
	the source of the receiving translator and should be a description
	considered appropriate in the context of the translator.  For
	example for the case of block device based filesystems, SOURCE
	should be the file name of the underlying block device.

	* hurd/fsys.defs: Add fsys_get_source.
	* hurd/fsys_reply.defs: Add fsys_get_source.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/symlink.c: add fsys_get_source
	Create a server function returning EOPNOTSUPP.

	* trans/symlink.c (S_fsys_get_source): New function.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: add fsys_get_source
	* libtrivfs/Makefile: Add fsys-get-source.c and get-source.c
	* libtrivfs/trivfs.h: Add trivfs_get_source.
	* libtrivfs/fsys-get-source.c: New file.
	* libtrivfs/get-source.c: Likewise.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: add fsys_get_source
	Add a user overridable function netfs_get_source with a default
	implementation returning EOPNOTSUPP. Add a server function for
	fsys-get-source.

	* libnetfs/Makefile: Add fsys-get-source.c and get-source.c
	* libnetfs/netfs.h: Add netfs_get_source.
	* libnetfs/fsys-get-source.c: New file.
	* libnetfs/get-source.c: Likewise.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: add fsys_get_source
	Add a user overridable function diskfs_get_source with a default
	implementation returning EOPNOTSUPP. Add a server function for
	fsys-get-source.

	* libdiskfs/Makefile: Add fsys-get-source.c and get-source.c
	* libdiskfs/diskfs.h: Add diskfs_get_source.
	* libdiskfs/fsys-get-source.c: New file.
	* libdiskfs/get-source.c: Likewise.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add fsys_get_children
	fsys_get_children returns any active translators bound to nodes of the
	receiving filesystem as an argz vector containing file names relative
	to the root of the receiving translator.

	* hurd/fsys.defs: Add fsys_get_children.
	* hurd/fsys_reply.defs: Add fsys_get_children.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans/symlink.c: add fsys_get_children
	Create a server function returning EOPNOTSUPP.

	* trans/symlink.c (S_fsys_get_children): New function.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: add fsys_get_children
	Create a server function returning EOPNOTSUPP.

	* libtrivfs/fsys-get-children.c: New file.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: add fsys_get_children
	Keep track of active translators and handle fsys_get_children
	requests.

	* libnetfs/Makefile (FSYSSRCS): Add fsys-get-children.c.
	* libnetfs/dead-name.c (ports_dead_name): Remove dead translators.
	* libnetfs/file-set-translator.c (netfs_S_file_set_translator): Register
	  active translators.
	* libnetfs/fsys-get-children.c: New file.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: add fsys_get_children
	Keep track of active translators and handle fsys_get_children
	requests.

	* libdiskfs/Makefile (FSYSSRCS): Add fsys-get-children.c.
	* libdiskfs/dead-name.c (ports_dead_name): Remove dead translators.
	* libdiskfs/file-set-trans.c (diskfs_S_file_set_translator): Register
	  active translators.
	* libdiskfs/fsys-get-children.c: New file.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libfshelp: add translator-list.c
	Add functions that maintain a list of active translators.

	* libfshelp/translator-list.c: New file.
	* libfshelp/fshelp.h: Add function declarations.
	* libfshelp/Makefile: Add translator-list.c, link against libihash.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: track file name in struct peropen
	Track the relative path used to obtain a file handle in the
	struct peropen.

	* libnetfs/netfs.h (struct peropen): New field path.
	* libnetfs/make-peropen.c (netfs_make_peropen): Initialize path.
	* libnetfs/release-peropen.c (netfs_release_peropen): Free path.
	* libnetfs/fsys-getroot.c (netfs_S_fsys_getroot): Initialize path.
	* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Preserve the path.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: track file name in struct peropen
	Track the relative path used to obtain a file handle in the
	struct peropen.

	* libdiskfs/diskfs.h (struct peropen): New field path.
	* libdiskfs/peropen-make.c (diskfs_make_peropen): Initialize path.
	* libdiskfs/peropen-rele.c (diskfs_release_peropen): Free path.
	* libdiskfs/fsys-getroot.c (diskfs_S_fsys_getroot): Initialize path.
	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Preserve the path.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libihash: add HURD_IHASH_ITERATE_ITEMS macro
	Add a macro HURD_IHASH_ITERATE_ITEMS that iterates over all elements
	in the hash table making both the key and the value available.

	* libihash/ihash.h (HURD_IHASH_ITERATE_ITEMS): New macro.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: Remove unused declaration of zombie_list
	* proc/proc.h (zombie_list): Remove declaration.

	proc: remove unused file exc-reply.defs
	* proc/exc-reply.defs: Delete file.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Make start_code and end_code available in /proc/*/stat
	This makes killall5 actually kill any processes not marked as
	important.

	* process.c (process_file_gc_stat): Fix {start,end}_code.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: keep track of the range where executable segments are mapped
	Keep track of the range where executable segments are mapped into
	memory and hand that information over to the proc server.

	* exec/priv.h (struct execdata): Add {start,end}_code.
	* exec/exec.c (prepare): Initialize {start,end}_code.
	(load_section): Update {start,end}_code.
	(do_exec): Use proc_set_code to hand {start,end}_code to the proc server.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add proc_{get,set}_code
	Add routines to set and query the processes start_code and end_code
	locations. Any executable segments loaded from the ELF binary are in
	this range.

	* hurd/process.defs: Add proc_{get,set}_code.
	* hurd/process_reply.defs: Add proc_{get,set}_code.
	* hurd/process_request.defs: Add proc_{get,set}_code_request.

2013-09-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: keep track of {start,end}_code
	Any executable segments loaded from the ELF binary are in this range.

	* proc/proc.h (struct proc): Add {start,end}_code.
	* proc/mgt.h (S_proc_set_code): New function.
	* proc/mgt.h (S_proc_get_code): New function.

2013-09-10  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix variable names
	* utils/Makefile (mount-LDLIBS): Define to libblkid_LIBS instead of
	libblkid-LIBS
	(mount-CPPFLAGS): Likewise.

2013-09-09  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mount: handle -t auto
	Use libblkid to detect the filesystem type if "auto" is given as
	type. Remove the translator localization from main, this is also done
	in do_mount and any errors are propagated properly. This way "auto" is
	handled correctly if given on the command line or used as filesystem
	type in the fstab.

	* configure.ac: Add check for libblkid.
	* config.make.in: Make libblkid specific values available.
	* utils/Makefile: Use libblkid specific values.
	* utils/mount.c (DEFAULT_FSTYPE): Use "auto" as default type.
	(do_mount): Detect type using libblkid.
	(main): Drop translator localization.

2013-08-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix build
	* utils/umount.c: Do not include useless <blkid/blkid.h>.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	trans: register symlink translators as important
	Register any symlink translators running as root as important
	processes at the proc server.

	* trans/symlink.c (main): Mark us as important.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mach-defpager: register mach-defpager translators as important
	Register any mach-defpager translators running as root as
	important processes at the proc server.

	* mach-defpager/main.c (main): Mark us as important.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libtrivfs: register libtrivfs-based translators as important
	Register libtrivfs-based translators running as root as important
	processes at the proc server.

	* libtrivfs/startup.c (trivfs_startup): Mark us as important.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: register libnetfs-based translators as important
	Register libnetfs-based translators running as root as important
	processes at the proc server.

	* libnetfs/init-startup.c (netfs_startup): Mark us as important.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: register libdiskfs-based translators as important
	Register libdiskfs-based translators running as root as important
	processes at the proc server.

	* libdiskfs/init-startup.c (_diskfs_init_completed): Mark us as important.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	init: Mark all of inits children and init itself as important
	This is based on a fragment of Guillem Jovers patch presented here:

	http://lists.gnu.org/archive/html/bug-hurd/2006-02/msg00081.html

	It has been refreshed, updated and the copyright year is adjusted
	properly. It has been complemented with the necessary features to
	address the issues the original patch set out to address, namely
	that killall5 freezes the proc translator before it tries to walk
	over /proc/*/stat to decide which process to kill. Prior to this
	patch (and the one marking the procfs server as important
	process), killall5 would deadlock trying to walk over the proc
	file system.

	Ironically it would not have killed any process later on even if
	it had the chance, since two values obtained from /proc/*/stat
	are currently hardcoded to zero in our procfs. Patches addressing
	the problem as a whole are prepared and will be sent as a follow
	up.

	* init/init.c (launch_core_servers): Mark init, auth, proc and fs
	  servers as important.
	(start_child): Mark the real init as important.
	(S_startup_important_task): Mark exec server as important.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add proc_mark_important
	This is based on a fragment of Guillem Jovers patch presented here:

	http://lists.gnu.org/archive/html/bug-hurd/2006-02/msg00081.html

	It has been refreshed, updated and the copyright year is adjusted
	properly. It has been complemented with the necessary features to
	address the issues the original patch set out to address, namely
	that killall5 freezes the proc translator before it tries to walk
	over /proc/*/stat to decide which process to kill. Prior to this
	patch (and the one marking the procfs server as important
	process), killall5 would deadlock trying to walk over the proc
	file system.

	Ironically it would not have killed any process later on even if
	it had the chance, since two values obtained from /proc/*/stat
	are currently hardcoded to zero in our procfs. Patches addressing
	the problem as a whole are prepared and will be sent as a follow
	up.

	* hurd/process.defs (proc_mark_important): New routine definitions.
	* hurd/process_reply.defs (proc_mark_important_request): Likewise.
	* hurd/process_request.defs (proc_mark_important_request): Likewise.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: add proc_mark_important server code
	This is based on a fragment of Guillem Jovers patch presented here:

	http://lists.gnu.org/archive/html/bug-hurd/2006-02/msg00081.html

	It has been refreshed, updated and the copyright year is adjusted
	properly. It has been complemented with the necessary features to
	address the issues the original patch set out to address, namely
	that killall5 freezes the proc translator before it tries to walk
	over /proc/*/stat to decide which process to kill. Prior to this
	patch (and the one marking the procfs server as important
	process), killall5 would deadlock trying to walk over the proc
	file system.

	Ironically it would not have killed any process later on even if
	it had the chance, since two values obtained from /proc/*/stat
	are currently hardcoded to zero in our procfs. Patches addressing
	the problem as a whole are prepared and will be sent as a follow
	up.

	* proc/proc.h (struct proc): Add p_important field.
	* proc/pgrp.c (S_proc_getpgrppids): Exclude important system processes.
	(S_proc_mark_important): New function.
	* proc/mgt.c (create_startup_proc): Mark init as important.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	proc: make the function check_owner available
	Make the function check_owner available for use in other files.

	* proc/info.c (check_owner): Drop attributes static and inline.
	* proc/proc.h (check_owner): Add prototype.

2013-08-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Reserve RPC ID for proc_set_init_task
	* hurd/process.defs: Reserve RPC ID for proc_set_init_task.
	* hurd/process_reply.defs: Likewise.
	* hurd/process_request.defs: Likewise.

	Merge branch 'master-merge'

	Merge branch 'master-merge2' into master-merge

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	umount: add a umount utility
	This adds a umount utility that implements most of the functions that
	the Linux umount utility provides, especially that subset that is used
	by the Debian package initscripts.

	* utils/umount.c: New file.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: handle dead-name notifications
	Handle dead-name notifications the same way libdiskfs does. In fact,
	dead-name.c is a verbatim copy with trivial modifications. It clears
	np->sockaddr if the dead name notification was for that port.

	* libnetfs/dead-name.c: New file.
	* libnetfs/Makefile (OTHERSRCS): Add dead-name.c.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: implement file_get_translator_cntl
	This is a trivially adapted version of libdiskfs/file-get-transcntl.c.

	* libnetfs/file-get-transcntl.c: New file.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	daemons: fix setsid(2) in console-run
	Only run setsid(2) if the process is not already the group leader.

	* daemons/console-run.c (open_console): Fix setsid(2).

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	hurd: add missing routines in process_reply.defs
	Add the appropriate simpleroutine or skip directives to
	hurd/process_reply.defs matching the ones in hurd/process.defs.

	* hurd/process_reply.defs: Add missing routine declarations.

2013-08-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: remove the BFD code
	This commit removes the parts of the exec server that were once using
	the Binary File Descriptor library.

	As I understand it, the BFD code stopped working because it uses stdio
	streams and the glue code for that has never been ported to libio. The
	code has been #ifdefed out ever since. It may or may not work in its
	current state, so it is removed. If someone is interested, it can
	always be recovered from the version control system.

	* exec/exec.c: Remove all BFD related code.
	* exec/priv.h: Likewise.
	* TODO: Remove the corresponding item.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	exec: Remove #ifdef 0-out code for user specified exec servers.
	This code was meant to allow the user to specify alternative exec
	servers using an environment variable. The Hurd uses the file system
	as namespace for server lookups, so the proper way to use one's own
	exec server seems to be the remap translator.

	* exec/exec.c (S_exec_exec): Remove unused code.

2013-08-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Do not build gzip/bzip2 support
	* exec/Makefile (SRCS): Remove gzip and bzip2 sources.
	(OBJS): Remove gzip and bzip2 objects.

	Disable transparent gzip/bzip2 decompression
	* exec/Makefile (CPPFLAGS): Do not define GZIP and BZIP2 macros.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: add nullauth utility
	nullauth drops all authentication credentials and runs the given
	program. This is also useful to drop privileges on behalf of
	translators that do not need any credentials in some circumstances,
	e.g.

	  % settrans -ap /hurd/nullauth -- /hurd/storeio -Tzero

	makes storeio run without any credentials.

	* utils/nullauth.c: New file.
	* utils/Makefile: Build nullauth.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	tmpfs: drop privileges in the tmpfs translator
	* tmpfs/tmpfs.c (main): Drop privileges.

	trans: drop privileges in the null translator
	* trans/null.c (main): Drop privileges.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libshouldbeinlibc: Add nullauth.{c,h}
	setnullauth () obtains an empty authentication handle and uses it for
	further authentication purposes.  This effectively drops all Unix
	privileges.

	* libshouldbeinlibc/nullauth.c: New file.
	* libshouldbeinlibc/nullauth.h: Likewise.
	* libshouldbeinlibc/Makefile: Add nullauth.{c,h}.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	console-client: add daemonizing support
	This patch adds daemonizing support using libdaemon.

	* console-client/console.c (daemonize): New variable.
	(options): Add --daemonize argument.
	(parse_opt): Handle --daemonize argument.
	(daemon_error): New error(3) like macro.
	(main): Daemonize.
	* console-client/Makefile: Use libdaemon specific build flags.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Add configure checks for libdaemon
	* configure.ac: Add check for libdaemon.
	* config.make.in: Make the libdaemon specific variables available.

	Define and use symbolic names for important processes
	* include/pids.h: New file.
	* init/init.c (frob_kernel_process): Use symbolic name for kernel process.
	* exec/exec.c (S_exec_init): Use symbolic name for startup process.
	* libdiskfs/boot-start.c (diskfs_S_fsys_init): Likewise.
	* libdiskfs/init-startup.c (_diskfs_init_completed): Likewise.
	* pfinet/main.c (arrange_shutdown_notification): Likewise.
	* proc/mgt.c (create_startup_proc): Likewise.
	* proc/main.c (main): Use symbolic name for proc process.

2013-08-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Optimize translator string copy
	* libnetfs/file-get-translator.c (netfs_S_file_get_translator): Call memcpy
	instead of memmove.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: properly respond to file_get_translator requests
	Properly respond to file_get_translator requests for nodes with a
	passive translator record.

	* libnetfs/file-get-translator.c (netfs_S_file_get_translator): Handle
	  passive translator records.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	umount: add a umount utility
	This adds a umount utility that implements most of the functions that
	the Linux umount utility provides, especially that subset that is used
	by the Debian package initscripts.

	* utils/umount.c: New file.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	sutils: fix the semantic of -t, --types in fstab.c
	The mount utility on both Linux and FreeBSD allows one to either
	specify a whitelist or a blacklist of filesystem types to consider for
	--all. Prefixing the list with "no" indicates that the list is a
	blacklist. Furthermore, Linux' mount utility ignores a "no" prefix on
	any entry in the given list.

	Previously the Hurd variant first applied whitelist containing all
	positive values given and then filtered the resulting list using all
	negative values. But this makes little sense because each entry only
	has one value for the filesystem type (mnt_type) and all values are
	mutually exclusive.

	This patch adjusts the fstab handling code so that our mount utility
	behaves like the Linux mount utility. This code is used by both mount
	and fsck. The same argumentation applies to fsck as well.

	Like implemented in Linux mount, any "no" prefix is ignored to retain
	compatibility with the old behavior.

	* sutils/fstab.c (fstab_argp_create): Fix semantic of --types.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	sutils: allow multiple entries for the device "none"
	Previously it was not possible to add two mount entries with the same
	device information to an fstab structure. This is easily fixed by
	breaking the assumption, that there is only one possible mount entry
	for the "none" device as used by many purely virtual file systems.

	* utils/fstab.c (fstab_find_device): Return NULL if name is "none".

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mount: ignore mounted filesystems if --all is given
	Linux' mount utility ignores mounted filesystems if mount --all is
	invoked. This patch makes our mount do the same.

	utils/mount.c (main): Ignore mounted filesystems if --all is given.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mount: implement -O, --test-opts
	--test-opts in combination with --all mounts only those filesystems
	with options matching the given set of options.

	Note that the semantic of the inverting "no" prefix differs from
	--types: While --types=nonfs,ufs means neither nfs nor ufs,
	--test-opts=nofoo,bar means not foo, but bar.

	* utils/match-options.h: New file.
	* utils/match-options.c: Likewise.
	(test_opts): New variable.
	(test_opts_len): Likewise.
	(match_options): New function.
	* utils/mount.c (parse_opt): Handle -O, --test-opts.
	(main): Use match_options as filter.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mount: add -f and --fake arguments
	Add -f and --fake arguments. This makes our mount more compatible with
	Linux mount.

	* utils/mount.c (argp_opts): Add -f and --fake.
	(do_mount): Fake the translator startup if --fake is given.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mount: fix mount -oremount with one parameter
	This fixes mount -oremount when just given the mountpoint, e. g.:

	 % mount -oremount,ro /tmp

	* util/mount.c (main): Add a one-argument form for remount.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	mount: add -n and --no-mtab arguments
	Add -n and --no-mtab arguments. As we do not write an mtab file, this
	is a trivial patch that just ignores this argument to be more
	compatible with Linux mount.

	* utils/mount.c (argp_opts): Add -n and --no-mtab.
	(parse_opt): Do nothing on 'n'.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: provide a more meaningful response to fsys_get_options
	Implement our own netfs_append_args function that provides the
	appropriate command line flags if the current values differ from the
	default values.

	* procfs/main.c (netfs_append_args): New function.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: define macros for the default argument values
	Define a macro for the default value of each command line
	parameter. This allows one to generate a minimal response to
	fsys_get_options requests.

	* procfs/main.c: New macro definitions for default values.

2013-08-28  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: handle the --update parameter
	Split the argument handling into a common part and one for
	fsys_update_options. Handle the --update parameter; for procfs this is
	a no-op.

	* procfs/main.c (common_options): New variable.
	(runtime_argp_parser): Handle --update.
	(startup_argp): New variable.
	(netfs_runtime_argp_): New variable.

2013-08-27  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Fix argument parsing
	The switch statement was missing the default case returning
	ARGP_ERR_UNKNOWN. This patch adds that.

	* main.c (argp_parser): Add default case.

2013-08-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: escape arguments in remap.sh
	remap.sh uses /bin/sh to first change the working directory and then
	execute the given program in the remap context. But the arguments
	given on the command line were not properly escaped:

	% '/bin/sh' '-c' 'echo $0'
	/bin/sh
	% remap '/bin/sh' '-c' 'echo $0'
	<empty line>
	% remap-fixed '/bin/sh' '-c' 'echo $0'
	/bin/sh

	* utils/remap.sh: Escape arguments handed to /bin/sh so that they are
	  not evaluated prematurely.

2013-08-25  Justus Winter  <4winter@informatik.uni-hamburg.de>

	utils: escape arguments in fakeroot.sh
	fakeroot.sh uses /bin/sh to first change the working directory and
	then execute the given program in the fakeroot context. But the
	arguments given on the command line were not properly escaped:

	% '/bin/sh' '-c' 'echo $0'
	/bin/sh
	% fakeroot-tcp '/bin/sh' '-c' 'echo $0'
	/bin/sh
	% fakeroot-hurd '/bin/sh' '-c' 'echo $0'
	<empty line>
	% fakeroot-hurd-fixed '/bin/sh' '-c' 'echo $0'
	/bin/sh

	* utils/fakeroot.sh: Escape arguments handed to /bin/sh so that they
	  are not evaluated prematurely.

2013-08-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix polling pfinet tun for write
	* pfinet/tunnel.c (io_select_common): Also handle `SELECT_WRITE' case.

2013-08-16  David Michael  <fedora.dm0@gmail.com>

	config.make: Use more configure settings when building xkb-data
	* config.make.in (datarootdir,LEX,YACC): New variables.
	* configure.ac (XKB_BASE): Drop extraneous "/share" from path.
	* configure.ac: Reset pkg-config status between tests.

2013-07-22  Justus Winter  <4winter@informatik.uni-hamburg.de>

	rootdir.c: Fix declaration of rootdir_fakeself_exists.
	* rootdir.c (rootdir_fakeself_exists): Use the correct arguments for
	  this kind of function.

	rootdir.c: Fix compiler warning
	* rootdir.c (rootdir_gc_meminfo): Use unsigned long constant.

	Makefile: add -lpthread
	* Makefile (LIBS): Link with libpthread.

2013-07-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix profile link
	* Makefile [PROFILE] (LIBS): Replace -lthreads with -lpthread

2013-07-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Add the necessary infrastructure to serve passive translators
	* netfs.c (netfs_get_translator): New function.
	* procfs.c (procfs_get_translator): Likewise.
	* procfs.h (struct procfs_node_ops): New field get_translator.
	(procfs_get_translator): New function declaration.

2013-07-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Fix default file ownership
	Formerly all nodes were created so that they were owned by root:root
	by default. This causes problems if the procfs translator is running
	as unprivileged user and serves passive translator records, because
	the file ownership is being used as credentials for starting
	translators. This obviously fails if the procfs translator is not root
	but is trying to acquire credentials including uid/gid 0.

	Fix this by using the uid/gid of the procfs translator by default.

	procfs.c (procfs_make_node): Fix default node ownership.

2013-07-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Fix procfs_node_chmod
	Formerly only the mode_t bits cut out by S_IFMT were preserved, but
	this does not include S_IPTRANS. Fix this by preserving everything but
	the permission bits.

	* procfs.c (procfs_node_chmod): Fix bitmask.

2013-07-20  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: Ignore arguments for compatibility with Linux' procfs.
	Ignore the --nodev, --noexec and --nosuid arguments.

	* procfs/main.c (argp_parser): Ignore some arguments for compatibility.

2013-07-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	pfinet: Fix call to kfree_s
	kfree_s expects a pointer and a size argument. Currently the
	sizeof(cache) is used as size argument, this is certainly not what was
	intented.

	For reference, this code was present in Linux up to version 2.3.14 and
	was replaced in 2.3.15.

	Found using coccinelle and
	https://raw.github.com/coccinelle/coccinellery/master/sz/sz.cocci.

	* pfinet/linux-src/net/ipv4/ipmr.c (ipmr_cache_delete): Fix kfree_s call.

2013-07-19  Justus Winter  <4winter@informatik.uni-hamburg.de>

	Fix error handling macro E
	Previously the macro argument err was expanded and thus potentially
	evaluated multiple times. This is fine for simple values or pure
	functions, but not for say iohelp_create_iouser. Fix this by
	evaluating the macro argument only once.

2013-07-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libnetfs: fix consistency check
	passive is not a zero terminated string but a char * combined with a
	length. If passivelen == 0, passive may very well be not NULL, and
	dereferencing that pointer might not be safe. At the very least the
	consistency check is wrong. Fix that by checking passivelen instead of
	passive.

	* libnetfs/file-set-trans.c (netfs_S_file_set_translator): Fix sanity check.

2013-07-15  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libdiskfs: fix consistency check
	passive is not a zero terminated string but a char * combined with a
	length. If passivelen == 0, passive may very well be not NULL, and
	dereferencing that pointer might not be safe. At the very least the
	consistency check is wrong. Fix that by checking passivelen instead of
	passive.

	* libdiskfs/file-set-trans.c (diskfs_S_file_set_translator): Fix sanity check.

2013-07-07  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix directory rename in firmlinked directory
	checkpath browses directories up to look against renaming a directory into
	itself. It used to assume being able to stop at the root of the filesystem.  But
	some per-opens have a shadow_root, where recursion has to stop too.

	This means checkpath does not check up to the root any more. This is fine, since
	we already prevent cross-shadow-root renames very early in dir-rename.c, we
	do not need to check outside of this shadow root.

	* libdiskfs/dir-renamed.c (checkpath): Also stop at the per-open shadow_root.

2013-07-06  Justus Winter  <4winter@informatik.uni-hamburg.de>

	swapon: add -v, --verbose argument
	This patch adds a --verbose argument to swapon and swapoff to make it
	more compatible with the corresponding Linux' utilities. Note that our
	swapon is verbose by default and has a --quiet argument to make it
	quiet, so a --verbose argument on it's own does nothing at all.

	* sutils/swapon.c (main): Handle -v argument.

2013-07-05  Justus Winter  <4winter@informatik.uni-hamburg.de>

	libfshelp: add missing import
	Add missing import of alloca.h.

	* libfshelp/set-options.c: Add missing import.

2013-07-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2013-07-02  Justus Winter  <4winter@informatik.uni-hamburg.de>

	sutils: fix a compiler warning
	Fix a compiler warning by dropping the const qualifier. It is not
	appropriate to qualify pointers to dynamically allocated memory as
	const.

	* sutils/fstab.c (real_name): Drop const qualifier.

2013-07-01  Pino Toscano  <toscano.pino@tiscali.it>

	swapon: add -e/--ifexists option
	Add the same command line option as in util-linux' swapon to not
	consider an error if the device/file of a swap entry in fstab does not
	exist (and not when activating a device specified as argument to
	`swapon').

	* sutils/swapon.c (ifexists): New variable.
	(options): Add the 'e' option.
	(parse_opt) <'e'>: Handle case.
	(swaponoff): New argument skipnotexisting.
	Return 0 if open_store fails with ENOENT and SKIPNOTEXISTING is on.
	(main): Adapt swaponoff calls with 0 as parameter for command line
	arguments, and IFEXISTS for swap entries from fstab.

2013-06-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: enable fsys_set_options
	Make procfs translators handle fsys_set_options requests by pointing
	netfs_runtime_argp to our argp struct.

	* procfs/main.c (netfs_runtime_argp): New variable.

2013-06-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	procfs: keep old config values if the parsing fails
	Previously if strtol failed the previous configuration value would get
	overwritten. Prevent this by storing the result in a temporary
	variable and update the configuration if the argument was parsed
	correctly and passed the sanity checks.

	* procfs/main.c (argp_parser): Keep old configuration in case a
	malformed value is encountered.

2013-06-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	procfs: fix the error handling in argp_parser
	Do not exit using error (1, ..) but gracefully handle the error using
	argp_error. Also fix a typo ("the a user") while touching these lines.

	* procfs/main.c (argp_parser): Proper error handling.
	(argp_parser): Fix typo.

2013-06-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	tmpfs: fix parsing of fsys_set_options requests
	Formerly setting the options using fsys_set_options did not work
	because runtime_argp.options was set to 0. This fixes "remounting" of
	tmpfs translators.

	* tmpfs/tmpfs.c (runtime_argp): Use options as option list.

2013-06-29  Justus Winter  <4winter@informatik.uni-hamburg.de>

	sutils: fix file_name_lookup_carefully
	file_name_lookup_carefully is like file_name_lookup but tries hard to
	avoid starting any passive translators while doing the lookup. The
	callback contains code to get a new handle to the root if it
	encounters a translator, but this code was not being executed if the
	node had no record of an passive translator, just an active one.

	Fix the callback by dropping the test for a passive translator. AIUI
	the current check for a passive translator makes no sense, as the code
	is supposed to fail on encountering a passive translator.

	This fixes lookups inside translators that have no passive
	translator. For example if /run is a tmpfs started only as active
	translator, touch /run/lock && mount tmpfs -t tmpfs /run/lock -o
	size=5M would fail.

	* sutils/clookup.c (lookup): Drop the test for an passive translator.

2013-06-02  Miguel Figueiredo  <elmig@debianpt.org>

	Remove unused variable
	* utils/x.c (main): Remove unused variable.

	Remove unused variable
	* mach-defpager/default-pager.c : Remove unused variable.

2013-06-01  Miguel Figueiredo  <elmig@debianpt.org>

	Remove unsused variables
	* libthreads/cprocs.c : Remove unsused variables.

	Add missing break
	* libcons/vcons-move-mouse.c (cons_vcons_move_mouse): Add missing break.

	Fix invalid memory access
	* init/init.c (start_child): Don't free `arg' before it is used.

	Remove unused variable
	* exec/exec.c (check_section): Remove unused variable.

	Fix descriptor leak
	* console-client/xkb/compose.c (read_composefile): Always fclose `fc'.

2013-06-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2013-06-01  Miguel Figueiredo  <elmig@debianpt.org>

	Remove unused variable
	* console-client/trans.c (console_setup_node): Remove unused variable.

2013-05-31  Richard Braun  <rbraun@sceen.net>

	Reset task priority when spawning a passive translator
	Server threads spawned by libports attempt to adjust their priority and
	succeed when the server is privileged. This priority is currently
	inherited by child tasks, which could be passive translators owned by
	unprivileged users. Reset the priority of the task used for translator
	instantiation.

	* libfshelp/start-translator-long.c (fshelp_start_translator_long): Set
	new task priority to 25 (BASEPRI_USER).

2013-05-30  Miguel Figueiredo  <elmig@debianpt.org>

	Remove unused variables
	* mach-defpager/kalloc.c (kalloc_init): remove unused variables

2013-05-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Do not compute debugging information by default
	* mach-defpager/kalloc.c (DEBUG): Do not define macro.

2013-05-22  Richard Braun  <rbraun@sceen.net>

	Fix some errors in the texinfo documentation
	* doc/gpl.texinfo: Replace @unnumbered with @node and @section commands.
	* doc/hurd.texi: Fix call to @setchapternewpage, remove the @node and
	@section commands that are now in gpl.texinfo, and remove an erroneous
	occurrence of 'attributes' before a command.

2013-05-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Revert "utils/vmstat: Use gnumach.defs from gnumach"
	This reverts commit 202339d49461ce6dcffd3a5b3690537daea5ef38.

2013-05-05  David Michael  <fedora.dm0@gmail.com>

	utils/vmstat: Use gnumach.defs from gnumach
	The gnumach installation provides the include file mach/gnumach.defs
	instead of mach/gnumach.h.  This runs the defs file through MIG and
	builds the result for vmstat.

	* utils/vmstat.c: Replace <mach/gnumach.h> with "gnumach_U.h".
	* utils/Makefile (vmstat): Add rule to depend on gnumach_U.o.
	* Makeconf (mach_defs_names): Add gnumach.

2013-05-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	SYMLOOP_MAX may be undefined under some build flags
	* libdiskfs/boot-start.c (diskfs_start_bootstrap): Use value returned by
	sysconf (_SC_SYMLOOP_MAX) instead of SYMLOOP_MAX.

2013-05-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Fix console hang on unknown key press
	* console-client/xkb/kstoucs.c (find_ucs): Remove middle value from
	recursive call range.

2013-04-06  Richard Braun  <rbraun@sceen.net>

	pfinet: fix timeout evaluation
	* pfinet/timer-emul.c (timer_function): Fix comparison between expire time
	and jiffies.

2013-03-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix tunnel and dummy interfaces
	* pfinet/linux-src/include/linux/netdevice.h (netdevice): Add `change_flags'
	field.
	* pfinet/ethernet.c (ethernet_change_flags): Make function static.
	(setup_ethernet_device): Set `change_flags' field of `dev' to
	ethernet_change_flags.
	* pfinet/linux-src/net/core/dev.c (dev_change_flags): Call `change_flags'
	field of `dev' if non-nul, instead of calling ethernet_change_flags.
	* pfinet/pfinet.h (ethernet_change_flags): Remove function prototype.

	Fix remap invocation
	* utils/remap.sh (REMAPPED): Default to empty.
	(while): Break as soon as there are no arguments any more. Do not break on
	mapping parameters

2013-03-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Update nasty/nice priority limit
	* libps/procstat.c (thread_state): Update nasty/nice limit to 25 instead of
	12.

	Fix libpthread conversion
	* pfinet/io-ops.c (io_select_common): Call pthread_mutex_unlock instead of
	__mutex_unlock.

2013-03-02  Pino Toscano  <toscano.pino@tiscali.it>

	Remove old hack for the "stat" permissions
	7550343b09a94dc1c659ad74dc75b3b77e7ab0bc added a better way to set the permissions of that file,
	so this old hack is not needed anymore.

	* process.c (process_lookup_pid): Do not change the mode of ENTRIES[2].hook.

2013-03-01  Pino Toscano  <toscano.pino@tiscali.it>

	rpctrace: implement -E
	Add a -E option to rpctrace, much like its strace's equivalent, to add/change/unset environment variables among the ones inherited by the process.

	Implements the savannah task #9331.

	* utils/rpctrace.c: Include <envz.h>.
	(options): Add the 'E' option.
	(parse_opt) <'E'>: Handle case.  Create ENVZ from ENVP, and change it according
	to ARG.
	(main): Create CMD_ENVP from ENVZ if not null, or assign ENVP to it.
	Pass CMD_ENVP to traced_spawn.

2013-02-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2013-02-28  Richard Braun  <rbraun@sceen.net>

	Add io_select_timeout to the io interface
	This change fixes a problem that can occur with non-blocking (and also
	blocking for very short times) select/poll calls. The problem occurs because
	the timeout is implemented at the client side. For a non-blocking call, this
	means that (depending on the code path taken in the C library) the client
	could get a timeout without a full RPC round-trip to the server. Moving the
	implementation of the timeout to the servers guarantees a full round-trip,
	and correct results for non-blocking calls.

	The modifications in this change depend on the availability of the recently
	added pthread_hurd_cond_timedwait_np function in libpthread.

	* boot/boot.c (io_select_common): New static function.
	(S_io_select): Use io_select_common.
	(S_io_select_timeout): New function which makes use of io_select_common.
	* console-client/kbd-repeat.c (repeater_select): Add a timeout parameter.
	* console-client/pc-mouse.c (repeater_select): Likewise.
	* console-client/trans.c (io_select_common): New static function.
	(netfs_S_io_select): Use io_select_common.
	(netfs_S_io_select_timeout): New function which makes use of io_select_common.
	* console-client/trans.h (struct consnode): Add a timeout parameter.
	* hurd/io.defs (io_select_timeout): New MIG routine.
	* hurd/io_reply.defs (io_select_timeout_reply): New MIG simpleroutine.
	* hurd/io_request.defs (io_select_timeout_request): Likewise.
	* libdiskfs/io-select.c (diskfs_S_io_select_timeout): New function.
	* libnetfs/io-select.c (netfs_S_io_select_timeout): Likewise.
	* libpipe/pipe.c (pipe_pair_select): Add a timeout parameter.
	* libpipe/pipe.h (pipe_select_readable): Likewise.
	(pipe_select_writable): Likewise.
	(pipe_pair_select): Likewise.
	* libpipe/pq.h: Include <hurd/hurd_types.h>.
	* libtrivfs/io-select.c (trivfs_S_io_select_timeout): New function.
	* pfinet/glue-include/linux/sched.h: Include <errno.h>.
	(interruptible_sleep_on): Function removed, replaced with ...
	(interruptible_sleep_on_timeout): New function.
	(schedule): Update to use interruptible_sleep_on_timeout.
	(schedule_timeout): Likewise.
	* pfinet/io-ops.c (io_select_common): New static function.
	(S_io_select): Use io_select_common.
	(S_io_select_timeout): New function which makes use of io_select_common.
	* pfinet/tunnel.c (io_select_common): New static function.
	(trivfs_S_io_select): Use io_select_common.
	(trivfs_S_io_select_timeout): New function which makes use of io_select_common.
	* pflocal/connq.c (connq_listen): Replace noblock with a timeout parameter.
	* pflocal/connq.h: Include <hurd/hurd_types.h>.
	(connq_listen): Update declaration to replace noblock with a timeout parameter.
	* pflocal/io.c (io_select_common): New static function.
	(S_io_select): Use io_select_common.
	(S_io_select_timeout): New function which makes use of io_select_common.
	* pflocal/socket.c (S_socket_accept): Update call to connq_listen to match new
	declaration.
	* storeio/io.c (trivfs_S_io_select_timeout): New function.
	* term/ptyio.c (pty_io_select): Add a timeout parameter.
	* term/term.h (pty_io_select): Likewise.
	* term/users.c (io_select_common): New static function.
	(trivfs_S_io_select): Use io_select_common.
	(trivfs_S_io_select_timeout): New function which makes use of io_select_common.
	* trans/fifo.c (io_select_common): New static function.
	(trivfs_S_io_select): Use io_select_common.
	(trivfs_S_io_select_timeout): New function which makes use of io_select_common.
	* trans/firmlink.c (trivfs_S_io_select_timeout): New function.
	* trans/new-fifo.c (io_select_common): New static function.
	(trivfs_S_io_select): Use io_select_common.
	(trivfs_S_io_select_timeout): New function which makes use of io_select_common.
	* trans/null.c (trivfs_S_io_select_timeout): New function.
	* trans/streamio.c (io_select_common): New static function.
	(trivfs_S_io_select): Use io_select_common.
	(trivfs_S_io_select_timeout): New function which makes use of io_select_common.

2013-02-28  Richard Braun  <rbraun@sceen.net>

	Add the timespec_t Hurd type
	This type matches the standard struct timespec, and allows passing time
	values with nanosecond precision in RPCs.

	* hurd/hurd_types.defs (timespec_t): New MIG type.
	* hurd/hurd_types.h: Include <time.h>.
	(timespec_t): New C type, aliasing struct timespec.

2013-02-27  Pino Toscano  <toscano.pino@tiscali.it>

	hello-mt: fix pthread porting issue
	Properly use pthread_mutex_destroy as equivalent for cthreads' mutex_clear, instead of pthread_mutex_init.
	Issue kindly reported by Nick Lloyd, thanks!

	* trans/hello-mt.c (close_hook): Call pthread_mutex_destroy instead of
	pthread_mutex_init.

2013-02-26  Pino Toscano  <toscano.pino@tiscali.it>

	Replace configure.in with configure.ac
	* INSTALL: Replace configure.in with configure.ac
	* Makefile ($(top_srcdir)/configure): Likewise.

2013-02-26  Pino Toscano  <toscano.pino@tiscali.it>

	Update config.guess and config.sub
	Fetch newer versions of them from their upstream repository.

	* config.guess: Update from upstream config.git repository.
	* config.sub: Likewise.

2013-02-26  Pino Toscano  <toscano.pino@tiscali.it>

	Rename configure.in to configure.ac
	Newer autoconf versions will not support the "configure.in" naming anymore, only "configure.ac".

	* configure.in: Move file...
	* configure.ac: ... here.

2013-02-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Add remap translator
	* trans/remap.c: New file.
	* trans/Makefile (targets): Add remap.
	(SRCS): Add remap.c.
	(remap): Add rule.
	* utils/remap.sh: New script.
	* utils/Makefile (targets): Add remap.
	(special-targets): Add remap.
	(SRCS): Add remap.sh.
	* NEWS: Advertise new translator

2013-02-25  Pino Toscano  <toscano.pino@tiscali.it>

	Include <stdlib.h> or <mach.h> where needed
	cthreads.h includes both <stdlib.h> and <mach.h>, while pthreads.h does not;
	with the switch to pthreads, their lack causes prototype compilation warnings
	for malloc/calloc/free/abort, and mach_task_self/mach_reply_port/etc in few places.

	* console-client/vga-support.c: Include <stdlib.h>.
	* libiohelp/iouser-dup.c: Likewise.
	* libiohelp/iouser-free.c: Likewise.
	* libiohelp/iouser-reauth.c: Likewise.
	* libiohelp/return-buffer.c: Likewise.
	* libiohelp/shared.c: Likewise.
	* pflocal/connq.c: Likewise.
	* nfsd/cache.c: Include <mach.h>.

2013-02-24  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Always set flags on ethernet interface
	* pfinet/linux-src/net/core/dev.c (dev_change_flags): Call
	ethernet_change_flags.
	* pfinet/iioctl-ops.c (S_iioctl_siocsifflags): Do not call
	ethernet_change_flags after calling dev_change_flags.

	Fix IPv6 by receiving all multicast
	* pfinet/ethernet.c (setup_ethernet_device): Add IFF_ALLMULTI to dev->flags.

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Enable IPv6 packets between netdde and pfinet
	* pfinet/ethernet.c (bpf_ether_filter): Make rules more readable. Add rule
	to enable IPv6 frames.

2013-02-15  Richard Braun  <rbraun@sceen.net>

	Sync the io_request, io_reply and io interfaces
	* hurd/io_reply.defs (io_server_version_reply): New MIG simpleroutine.
	(io_pathconf_reply): Likewise.
	(io_identity_reply): Likewise.
	(io_revoke_reply): Likewise.
	* hurd/io_request.defs (io_select_request): Fix declaration.
	(io_pathconf_request): New MIG simpleroutine.
	(io_identity_request): Likewise.
	(io_revoke_request): Likewise.

2013-02-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix registers recording in core dump
	* exec/elfcore.c (fetch_thread_regset): Fix field shifting order to avoid
	losing register content.

2013-02-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Permit to use a tunnel not in /dev
	* pfinet/main.c (find_device): Use basename of NAME for the comparison
	against "tun" and "dummy".
	* pfinet/tunnel.c (setup_tunnel_device): Only prepend "/dev/" to tun name if
	the parameter is not a path.

2013-01-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix spurious port deallocation
	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.

2013-01-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Do not warn about not raising priority of non-root translators
	* libports/manage-multithread.c (adjust_priority): Do not warn when raising the
	priority returns EPERM.

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2013-01-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add canonicalize option to hostmux
	Taking the canonical name makes very little sense nowadays with a lot of
	services behind the same IP but virtual hostnames.

	* hostmux/hostmux.h (hostmux): Add canonicalize field.
	* hostmux/hostmux.c (options, parse_opt): Add -C/--canonicalize option.
	* hostmux/mux.c (lookup_host): Only call getaddrinfo if canonicalize is
	true, pass NULL as HE to lookup_addrinfo otherwise.
	(lookup_addrinfo): When !HE, use name given by user.

2013-01-14  Richard Braun  <rbraun@sceen.net>

	Report VM cache statistics
	* utils/vmstat.c: Include <mach/gnumach.h> and <mach/vm_cache_statistics.h>.
	(vm_state): New `cache_stats` member.
	(vm_state_refresh): Call vm_cache_statistics.
	(_F): Adjust offset.
	(fields): Add entries for new statistics and adjust member names.

2013-01-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Pass pfinet errors to io_select callers
	This will be needed to properly support poll in glibc.

	* pfinet/glue-include/linux/poll.h (POLLERR): Define to 0x1000.
	* pfinet/io-ops.c (S_io_select): Look for POLLERR condition. On such
	condition, return EIO.

2013-01-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Use SOL_* values from libc
	* pfinet/glue-include/linux/socket.h (SOL_IP, SOL_IPV6, SOL_ICMPV6): Define
	only if not defined by libc already.

2013-01-13  David Höppner  <0xffea@gmail.com>

	Add TASK_EVENTS_INFO support to libps
	* libps/procstat.c (merge_procinfo): Also copy taskevents.
	* libps/procstat.c (set_procinfo_flags): Set pointer to task_events_info.
	* tasks: Remove TASK_EVENTS_INFO item.

2013-01-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	[IPV6]: Add IPV6_V6ONLY socket option support.
	Cherry-picked from Linux 524354b4d086a4f013343d727eaccb7b4c39eb25

	* pfinet/glue-include/linux/ipv6.h: Include linux/config.h>
	(__ipv6_only_sock, ipv6_only_sock): New macros
	* pfinet/linux-src/include/linux/ipv6.h: Likewise.
	* pfinet/linux-src/include/linux/in6.h (IPV6_V6ONLY): New macro.
	* pfinet/linux-src/include/linux/sysctl.h (NET_IPV6_BINDV6ONLY): New macro.
	* pfinet/linux-src/include/net/ipv6.h (sysctl_ipv6_bindv6only): Declare
	variable.
	* pfinet/linux-src/include/net/sock.h (ipv6_pinfo): Add ipv6only field.
	* pfinet/linux-src/net/ipv4/tcp_ipv4.c: Include linux/ipv6.h.
	(tcp_v4_get_port, tcp_v4_lookup_listener): Test for ipv6_only_sock.
	* pfinet/linux-src/net/ipv4/udp.c: Include linux/ipv6.h.
	(udp_v4_get_port, udp_v4_lookup_longway, udp_v4_mcast_next): Test for
	ipv6_only_sock.
	* pfinet/linux-src/net/ipv6/af_inet6.c (sysctl_ipv6_bindv6only): New
	variable.
	(inet6_create): Initialize ipv6only field to sysctl_ipv6_bindv6only.
	* pfinet/linux-src/net/ipv6/ipv6_sockglue.c (ipv6_setsockopt): Test for
	ipv6_only_sock.
	(ipv6_setsockopt, ipv6_getsockopt): Support IPV6_V6ONLY case.
	* pfinet/linux-src/net/ipv6/tcp_ipv6.c (ipv6_rcv_saddr_equal): New inline
	function.
	(tcp_v6_get_port): Replace old tests with ipv6_rcv_saddr_equal.
	(tcp_v6_connect): Test for __ipv6_only_sock.
	* pfinet/linux-src/net/ipv6/udp_ipv6.c (udv6_rcv_saddr_equal): New inline
	function.
	(udp_v6_get_port): Replace old tests with udv6_rcv_saddr_equal.
	(udpv6_connect, udpv6_sendmsg): Test for __ipv6_only_sock.

2013-01-12  Richard Braun  <rbraun@sceen.net>

	Report VM cache size in meminfo
	* rootdir.c: Include <mach/gnumach.h> and <mach/vm_cache_statistics.h>.
	(rootdir_gc_meminfo): Call vm_cache_statistics and return the VM cache size.

2012-12-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Optimise dir-lookup's second-lock
	This should avoid some lock contention.

	* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Before releasing &np->lock
	to get &dnp->lock safely, try to lock &dnp->lock directly.
	* libtreefs/dir-lookup.c (_treefs_s_dir_lookup): Likewise.

2012-12-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix comment style
	* console-client/kbd-repeat.c (kbd_repeat_key): Fix comment style.

2012-12-17  Cyril Roelandt  <tipecaml@gmail.com>

	Fix double call to pthread_mutex_unlock in diskfs_S_ifsock_getsockaddr.
	* libdiskfs/ifsock.c (diskfs_S_ifsock_getsockaddr): remove a redundant call to
	pthread_mutex_unlock.

	Fix double call to pthread_mutex_unlock in S_socket_connect.
	* pflocal/socker.c (S_socket_connect): fix redundant call to
	pthread_mutex_unlock. There is no need to hold sock->lock to call
	connq_connect_cancel, and sock->lock must be taken when leaving the if/else
	blocks.

	Fix double call to pthread_mutex_unlock in repeat_event().
	* console-client/pc-mouse.c (repeat_event): remove a redundant call to
	pthread_mutex_unlock.

	Fix double call to pthread_mutex_unlock in kbd_repeat_key().
	* console-client/kbd-repeat.c (kbd_repeat_key): remove a redundant call to
	pthread_mutex_unlock.

	Fix double call to pthread_mutex_unlock in console_move_mouse().
	* console-client/console.c (console_move_mouse): remove a redundant call to
	pthread_mutex_unlock().

2012-12-17  Cyril Roelandt  <tipecaml@gmail.com>

	Do not expand format name in posix format option
	This fixes hang of

	ps -o user

	* utils/ps.c (parse_opt): When POSIX_FMT is set, do not lookup format name
	from OUTPUT_FMTS.

2012-12-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make io_select return errors
	instead of returning 0 and make clients have to actually read the error.
	This makes implementing "poll" much easier.

	Based on Svante Signell's patch.

	* pflocal/io.c (S_io_select): Return error returned by pipe_wait_readable or
	pipe_wait_writable.
	* trans/fifo.c (trivfs_S_io_select): Return error returned by
	pipe_wait_readable or pipe_wait_writable. Return EBADF on bogus access mode.
	* trans/new-fifo.c (trivfs_S_io_select): Likewise.

2012-12-07  Richard Braun  <rbraun@sceen.net>

	pfinet: increase local port range
	* pfinet/linux-src/net/ipv4/tcp_ipv4.c (sysctl_local_port_range): Set port
	range to 32768-61000.

2012-12-06  Pino Toscano  <toscano.pino@tiscali.it>

	Simple implementation of statfs
	Initial implementation of statfs reply, just returning the filesystem type and its id.

	* netfs.c: Include <sys/statvfs.h> and <unistd.h>.
	(netfs_attempt_statfs): Implement.

2012-11-27  Richard Braun  <rbraun@sceen.net>

	Move random to pthreads
	Makefiles, headers, types, macros and function calls are renamed where
	appropriate.

	* random.c: Switch from cthreads to pthreads.
	* Makefile: Likewise.

2012-11-27  Richard Braun  <rbraun@sceen.net>

	Move procfs to pthreads

2012-11-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Complete switch from cthreads to pthreads
	* console/input.c: Switch comment from cthreads to pthreads.
	* libnetfs/file-get-fs-options.c: Likewise
	* libnetfs/fsys-get-options.c: Likewise
	* libnetfs/fsys-set-options.c: Likewise
	* libnetfs/shutdown.c: Likewise
	* libpager/lock-object.c: Likewise
	* nfsd/cache.c: Set back replycachelock as static variable.
	* term/hurdio.c: Use pthread_hurd_cond_wait_np instead of pthread_cond_wait.

2012-11-27  Richard Braun  <rbraun@sceen.net>

	Switch from cthreads to pthreads
	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.

2012-11-24  Richard Braun  <rbraun@sceen.net>

	Remove condition implications
	There is no equivalent for these functions in libpthread. Instead of
	adding them as non standard extensions, rework their use.

	* console-client/kbd-repeat.c (kbd_repeat_key): Wake threads waiting on
	select_alert.
	(kbd_setrepeater): Remove call to condition_implies.
	console-client/pc-mouse.c (repeat_event): Wake threads waiting on
	select_alert.
	(setrepeater):  Remove call to condition_implies.
	* libpipe/pipe.c (pipe_create): Initialize the `pending_selects' member.
	(pipe_add_select_cond): New function.
	(pipe_remove_select_cond): Likewise.
	(pipe_select_cond_broadcast): Likewise.
	(_pipe_no_readers): Wake threads waiting on a pending select.
	(_pipe_no_writers): Likewise.
	(pipe_send): Likewise.
	(pipe_recv): Likewise.
	(pipe_pair_select): Replace condition implications by installing a pending
	select on the pair of pipes.
	* libpipe/pipe.h (struct pipe_select_cond): New type.
	(struct pipe): New member `pending_selects'.
	* pfinet/tunnel.c (tunnel_xmit): Wake threads waiting on tdev->select_alert.
	(setup_tunnel_device): Remove call to condition_implies.
	* term/devio.c (device_write_reply_inband): Wake threads waiting on
	select_alert.
	* term/hurdio.c (hurdio_writer_loop): Likewise.
	* term/main.c (main): Remove calls to condition_implies.
	* term/ptyio.c (ptyio_init): Remove calls to condition_implies, initialize
	pty_select_alert.
	(wake_reader): Wake threads waiting on pty_select_wakeup.
	* term/term.h (pty_select_alert): New variable.
	(clear_queue): Wake threads waiting on select_alert and, if acting on the
	input queue, pty_select_alert, unless it's NULL.
	(dequeue_quote): Likewise.
	(enqueue_internal): Likewise.
	(queue_erase): Likewise.
	* trans/streamio.c (clear_buffer): Wake threads waiting on select_alert.
	(buffer_read): Likewise.
	(buffer_write): Likewise.
	(device_read_reply_inband): Likewise.
	(device_write_reply_inband): Likewise.
	(main): Remove calls to condition_implies.

2012-11-24  Richard Braun  <rbraun@sceen.net>

	Move starvation-reduction computation into adjust_priority
	* libports/manage-multithread.c (ports_manage_port_operations_multithread):
	Move starvation-reduction computation and thread_switch() call into...
	(adjust_priority): ... here, passing TOTALTHREADS as a parameter.

2012-11-24  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2012-11-24  Richard Braun  <rbraun@sceen.net>

	Reduce contention on thread creation in libports
	* libports/manage-multithread.c (ports_manage_port_operations_multithread):
	Don't drop the lock when determining if a new thread must be created.

2012-10-22  Cyril Roelandt  <tipecaml@gmail.com>

	libps: Fix typo in the documentation of _proc_stat_create.
	* libps/ps.h: Refer to ps_context_find_proc_stat instead of pc_context_find_proc_stat.

2012-10-19  Cyril Roelandt  <tipecaml@gmail.com>

	Fix procfs link
	Makefile (LIBS): Add -lfshelp

2012-10-04  Pino Toscano  <toscano.pino@tiscali.it>

	Revert "libdiskfs: handle _PC_2_SYMLINKS in pathconf"
	It turned out it is the wrong approach.

	This reverts commit b6768b326c2e80f5c2326ab46459644d417c6e98.

2012-09-30  Pino Toscano  <toscano.pino@tiscali.it>

	tmpfs: add --size
	Add the possibility to specify the size with the --size parameter;
	this makes tmpfs more usable in fstab or Linuxish mount invocations,
	since the size in such cases is a mount -o option, which gets translated
	to a --foo translator argument.
	The old way (specifying the size as the first argument) is left there;
	although, if --size is passed then the first argument must be "tmpfs",
	as it is what is passed by fstab/mount.

	* tmpfs/tmpfs.c (OPT_SIZE): New macro.
	(options): Add the "size" option.
	(parse_opt): Use -1 to indicate when SIZE is not yet set.
	<OPT_SIZE>: Handle case.
	<ARGP_KEY_NO_ARGS>: Error out only when SIZE is not set.
	<ARGP_KEY_ARGS>: Error out when SIZE is set and the argument is not "tmpfs".

2012-09-30  Pino Toscano  <toscano.pino@tiscali.it>

	tmpfs: extract size string parsing in an own function
	* tmpfs/tmpfs.c (parse_opt_size): New function, broken out of ...
	(parse_opt): ... here.  Call it.

2012-09-30  Pino Toscano  <toscano.pino@tiscali.it>

	libdiskfs: handle _PC_2_SYMLINKS in pathconf
	Advertize the possibility to handle symlinks depending on
	DISKFS_SHORTCUT_SYMLINK.

	* libdiskfs/io-pathconf.c (diskfs_S_io_pathconf): Handle
	_PC_2_SYMLINKS too.

2012-09-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add more keymaps
	* console-client/xkb/xkb-data/keymap/hurd: Add keymaps used by the Debian
	installer.

2012-09-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Automatically setup local sockets if not already done so.
	Needed early for shell pipelines.

	* daemons/runsystem.sh: See whether pflocal is setup already, and do so if
	not (install case)

2012-09-23  Jeremie Koenig  <jk@jk.fr.eu.org>

	Add options for user-space parted stores
	Add option -p to MAKEDEV to use user-space parted stores for partition
	devices.

	* sutils/MAKEDEV.sh: Add -p option to use "part" store type.

2012-09-23  Jeremie Koenig  <jk@jk.fr.eu.org>

	Add options -k and -K to MAKEDEV.sh
	to chose not to overwrite existing entries.

	* MAKEDEV.sh: Handle -k by passing it to settrans. Handle -K by checking for
	existing translator.

2012-09-23  Richard Braun  <rbraun@sceen.net>

	Reduce starvation among libports threads
	* libports/manage-multithread.c: Include <mach/thread_info.h> and
	<mach/thread_switch.h>
	(THREAD_PRI): New macro.
	(adjust_priority): New function.
	(ports_manage_port_operations_multithread): Set higher priority to
	privileged translators's threads. Reduce priority of newly-created threads,
	to give originators a chance to finish what they were doing.

2012-09-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix pager deadlock
	http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00127.html

	* libpager/lock-object.c (_pager_lock_object): Release interlock before
	calling memory_object_lock_request, to let the callbacks take it.

2012-09-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Check that runsystem script exists before trying it.
	* init/init.c (launch_something): Check with file_name_lookup that runsystem
	script exists before calling start_child.
	* daemons/console-run.c (main): Check with file_name_lookup that runsystem
	script exists before opening a console for it.

	Set diskfs stores as readonly on shutdown before enabling RPCs again.
	* libdiskfs/init-startup.c (diskfs_S_startup_dosync): Set diskfs as
	read-only on shutdown.

2012-09-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix spurious destroy during RPC to self with rendez-vous
	In that case we have two receive right references, which we should consume
	one per one, instead of destroying them all at once (and thus fail on second
	destroy)

	http://lists.gnu.org/archive/html/bug-hurd/2011-03/msg00045.html

	* libfshelp/fetch-root.c (fshelp_fetch_root): Unreference rendez-vous port
	receive right instead of destroying the port.
	* libshouldbeinlibc/exec-reauth.c (exec_reauth): Likewise.

2012-09-22  Alfred M. Szmidt  <ams@gnu.org>

	Install .msgids files to datadir.
	* Makefile (MSGIDS): New variable.
	(all, install-msgids, $(datadir)/msgids): New targets.
	(install): Specify install-header and install-msgids as
	prerequisites.

2012-09-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Avoid waiting for disk I/O completion
	This improves performance quite a bit, and is not less safe.

	* ext2fs/dir.c (diskfs_direnter_hard, diskfs_dirremove_hard,
	diskfs_dirrewrite_hard): Pass diskfs_synchronous instead of 1 as wait
	parameter to diskfs_file_update.
	* ext2fs/truncate.c (diskfs_truncate): Likewise.
	* libdiskfs/dir-init.c (diskfs_init_dir): Likewise.
	* libdiskfs/dir-link.c (diskfs_S_dir_link): Likewise.
	* libdiskfs/dir-rename.c (diskfs_S_dir_rename): Likewise.
	* libdiskfs/dir-renamed.c (diskfs_rename_dir): Likewise.
	* libdiskfs/file-set-trans.c (diskfs_S_file_set_translator): Likewise.
	* libdiskfs/node-create.c (diskfs_create_node): Likewise.
	* libdiskfs/node-drop.c (diskfs_drop_node): Likewise.

2012-09-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/procfs into jkoenig/master

2012-09-11  Pino Toscano  <toscano.pino@tiscali.it>

	PID stat/status: show only the first word
	If a process changed its title to a multiword string, show only the first word
	of it.

	* process.c (args_filename_length): New function.
	(process_file_gc_stat): Use args_filename_length.
	(process_file_gc_status): Likewise.

2012-08-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Use ext2fs instead of ufs in hurd.boot
	* hurd.boot: Use /hurd/ext2fs instead of /hurd/ufs.

2012-07-26  Neal H. Walfield  <neal@walfield.org>

	pflocal: Handle non-blocking connect with no pending acceptors.
	* pflocal/connq.h (struct connq_request): Remove forward.
	(connq_listen): Wait for a request to be queued not until there is
	a connection attempt.  Remove REQ parameter.  Update callers.
	(connq_request_complete): Remove declaration.
	(connq_connect): Wait for a slot to queue a request not until
	there is an acceptor.  Remove SOCK parameter.  Update callers.
	(connq_connect_complete): New declaration.
	(connq_connect_cancel): New declaration.
	* pflocal/connq.c (struct connq): Remove fields noqueue, queue, length,
	head and tail.  Add fields head, tail, count, max, connectors and
	num_connectors.  That is, replace the circular buffer with a
	singly linked list.
	(qnext): Remove function.
	(struct connq_request): Remove field signal, lock, completed and
	err.  Add field next.
	(connq_request_init): Rewrite according to new semantics.
	(connq_request_enqueue): New function.
	(connq_request_dequeue): New function.
	(connq_create): Update according to new semantics.
	(connq_destroy): Likewise.
	(connq_listen): Rewrite to not block until there is a connector
	but until there is a request in the queue.
	(connq_request_complete): Remove function.
	(connq_connect): Rewrite to not block until there is an acceptor
	but until there is space for a request.
	(connq_connect_complete): New function.
	(connq_connect_cancel): New function.
	(connq_compress): Remove dead code.
	(connq_set_length): Rewrite.
	* pflocal/socket.c (S_socket_connect): Create the server socket here...
	(S_socket_accept): ... not here.

2012-07-12  Thomas Schwinge  <thomas@codesourcery.com>

	Merge jkoenig/master into master.
	This branch supersedes the previous one.

2012-07-10  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix default XKB_BASE directory
	* configure.in (XKB_BASE): Default to $datadir/share/X11/xkb.

	Fix out-of-tree build
	* console-client/Makefile (xkb/kstoucs_map.c): Make xkb directory in build
	tree.
	(CPPFLAGS): Add -I$(CURDIR)/xkb

2012-07-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Always enable stack red zone
	* libthreads/stack.c (setup_stack): Always enable disabling access to end of
	stack.  Add support for stacks growing up.

2012-07-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2012-07-04  Richard Braun  <rbraun@sceen.net>

	Fix stack corruption in ext2fs server
	* ext2fs/inode.c (diskfs_node_iterate): allocate the temporary node
	table from the heap instead of the stack.

2012-07-02  Carl Fredrik Hammar  <hammy.lite@gmail.com>

	Check for rendezvous port death in auth server
	* auth/auth.c (S_auth_user_authenticate, S_auth_server_authenticate):
	Return EINVAL if rendezvous port dies during transaction.

2012-07-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Use path to x11 locales from x11.pc instead of our prefix
	* configure.in (X11_PREFIX): Define from x11.pc's prefix variable.
	* console-client/xkb/compose.c (get_compile_file_for_locale): Use
	X11_PREFIX "/share" instead of DATADIR.

2012-07-01  Carl Fredrik Hammar  <hammy.lite@gmail.com>

	Check for null ports in auth server
	* auth/auth.c (S_auth_user_authenticate, S_auth_server_authenticate):
	Fail with EINVAL if RENDEZVOUS is MACH_PORT_NULL.

2012-07-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	TODO: make xkb use rules

	Import pkg.m4

	Fix kstoucs generation dependency
	* console-client/Makefile: Make kstoucs.o and kstoucs_pic.o depend on
	kstoucs_map.c, not kstoucs_map.c

	Merge branch 'master' into xkb
	Conflicts:
	console-client/Makefile

2012-07-01  Da Zheng  <zhengda1936@gmail.com>

	Rework rpctrace into handling multitask programs
	* rpctrace.c (UNKNOWN_NAME): New variable.
	(task_info): New structure.
	(traced_task): Removed.
	(task_ihash): New variable.
	(unknown_task): Likewise.
	(add_task): New function.
	(remove_task): Likewise.
	(traced_info): Modified.
	(receiver_info): New structure.
	(sender_info): Likewise.
	(send_once_info): Likewise.
	(TRACED_INFO): New macro.
	(SEND_INFO): Likewise.
	(SEND_ONCE_INFO): Likewise.
	(req_info): New structure.
	(req_head): New variable.
	(add_request): New function.
	(remove_request): Likewise.
	(freelist): Different type.
	(notify_pi): New variable.
	(receive_right_list): Likewise.
	(dummy_wrapper): Likewise.
	(traced_names): Different initial value.
	(other_class): New variable.
	(print_request_header): Different parameter.
	(print_reply_header): Likewise.
	(new_receiver_info): New function.
	(destroy_receiver_info): Likewise.
	(new_send_wrapper): Redefined.
	(new_send_once_wrapper): Modified.
	(unlink_sender_info): New function.
	(traced_dropweak): Removed.
	(traced_clean): New function.
	(seen_receive_right): Likewise.
	(discover_receive_right): Likewise.
	(get_send_wrapper): Likewise.
	(rewrite_right): Redefined.
	(print_contents): Don't treat mach_port_insert_right specially.
	(wrap_all_threads): Use new structuress.
	(wrap_new_thread): Likewise.
	(wrap_new_task): New function.
	(trace_and_forward): Redefined.
	(expected_reply_port): Removed.
	(print_request_header): Use new structures.
	(print_reply_header): Likewise.
	(unfinished_line): Removed.
	(traced_spawn): Use new structures.
	(main): Initialize some global variables.

2012-07-01  Da Zheng  <zhengda1936@gmail.com>

	Make rpctrace handle terminate/suspend signals correctly
	Fixes bug #3939

	* rpctrace.c (traced_task): Relocate.
	(wrap_all_threads): New function.
	(wrap_new_thread): Likewise.
	(trace_and_forward): Wrap all thread ports.

2012-07-01  Bob Ham  <u9rah@dcs.shef.ac.uk>

	Address gcc warnings
	* exec-reauth.c (exec_reauth): Change type of temp var i to
	unsigned int to address gcc warning.
	* idvec-impgids.c (idvec_merge_implied_gids) Change type of
	temp var i to unsigned int to address gcc warning.
	* idvec-impgids.c (idvec_merge_implied_gids): Change type of
	temp var i to unsigned int to address gcc warning.
	* idvec-rep.c (idvec_rep): Change type of temp var i to unsigned
	int to address gcc warning.
	* idvec-verify (idvec_verify): Change type of temp var i to
	unsigned int to address gcc warning.
	* idvec.c (idvec_merge_ids, idvec_remove): Change type of temp
	var i to unsigned int to address gcc warning.
	* portxlate.c (port_name_xlator_create, port_name_xlator_free):
	Change type of temp var i to unsigned int to address gcc warning.
	* timefmt.c (fmt_seconds): Cast width to int in test to modify
	frac_places to address gcc warning.
	* (ugids_verify_make_auth): Change type of temp var i to unsigned
	int to address gcc warning.

	Address gcc warnings
	* iouser-restrict.c (listmember): Change type of query into uid_t to address gcc
	warning.
	(iohelp_restrict_iouser): Change type of temp var i to unsigned int to address
	gcc warning.

2012-07-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' into xkb
	Conflicts:
	config.make.in
	configure.in

2012-07-01  Bob Ham  <u9rah@dcs.shef.ac.uk>

	Address gcc warning
	* ihash.c (ihash_add): Change type of i to unsigned int to address gcc
	warning.

2012-06-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix operation priority
	* balloc.c (ext2_new_block): Fix operation priority.

	Add header inclusion guards
	* console/priv.h [!_CONSOLE_PRIV_H]: Define _CONSOLE_PRIV_H.
	* libnetfs/priv.h [!_LIBNETFS_PRIV_H]: Define _LIBNETFS_PRIV_H.
	* libpager/priv.h [!_LIBPAGER_PRIV_H]: Define _LIBPAGER_PRIV_H.

2012-05-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix bit shift validity
	* ext2fs/balloc.c (ext2_new_block): When J & 31 is 31, replace 32bit right
	shift with 0;

	Fix find_next_zero_bit when no bit is available
	* ext2fs/bitmap.c (find_next_zero_bit): Check whether TMP has a bit set before
	calling ffz.

2012-05-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add /dev/netdde and /dev/eth* targets
	* sutils/MAKEDEV.sh (netdde, eth*): Add targets.

2012-05-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix link(directory,whatever) POSIX compliancy
	* libdiskfs/dir-link.c (diskfs_S_dir_link): When source node is a directory,
	fail with EPERM instead of EISDIR.

2012-04-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add MSG_PEEK support to pflocal
	* libpipe/pq.h (packet_peek): Declare new function.
	* libpipe/pq.c (packet_read): Move code to new `packet_fetch' function, call it
	with `remove' set to 1.
	(packet_fetch): New function with code from `packet_read', but do not remove
	data if `remove' is 0.
	(packet_peek): New function, calls `packet_fetch' with `remove' set to 0.
	* libpipe/dgram.c (dgram_read): When MSG_PEEK is in *flags, do not dequeue
	and only peek data.
	* libpipe/seqpack.c (seqpack_read): Likewise.
	* libpipe/stream.c (stream_read): Likewise.
	* pflocal/socket.c (S_socket_recv): Pass MSG_PEEK flag to libpipe.

2012-04-10  Ludovic Courtès  <ludo@gnu.org>

	dist: Remove redundant "./" for top-level $(DISTFILES)
	* Makeconf (dist.tar): When $(dir) is ".", avoid adding "./" to the
	  resulting file name.

	dist: Set the owner/group of $(DISTFILES) to UID/GID 0.
	* Makeconf (dist.tar): Invoke `tar' with `--owner=0 --group=0'.

	Add `doc/version.texi' to the distribution.
	* doc/Makefile (targets): Add `version.texi'.

2012-04-08  Thomas Schwinge  <thomas@codesourcery.com>

	Replace fragile manual »make dist« system with one based on »git archive«.
	* Makeconf (lndist): Remove target.
	(dist-hook, dist.tar): New targets.
	* Makefile (dist): Rewrite this target's as well as accompanying rules.
	(%-lndist, cp-linked-files, $(lf-inst)): Remove targets.
	(%.bz2, %.gz, %/dist-hook): New targets.
	(DISTFILES): Set.
	* doc/Makefile (DISTFILES): Set.
	* doc/Makefile (lndist, lndist-info-targets): Remove targets.
	* include/Makefile (lndist): Remove target.
	* libthreads/Makefile (lndist, lndist-i386-files, lndist-map-file): Remove
	targets.
	* pfinet/Makefile (lndist, lndist-linux-src-net-core-files)
	(lndist-linux-src-net-ethernet-files, lndist-linux-src-net-ipv4-files)
	(lndist-linux-src-net-ipv6-files, lndist-linux-src-asm-files)
	(lndist-linux-src-include-linux-files, lndist-linux-src-include-net-files)
	(lndist-linux-src-include-asm-files, lndist-glue-include-linux-files)
	(lndist-glue-include-asm-files): Remove targets.
	* auth/Makefile (LCLHDRS): Don't set.
	* boot/Makefile (LCLHDRS, DIST_FILES): Likewise.
	* bsdfsck/Makefile (LCLHDRS): Likewise.
	* config/Makefile (DIST_FILES): Likewise.
	* console-client/Makefile (LCLHDRS): Likewise.
	* console/Makefile (LCLHDRS, DIST_FILES): Likewise.
	* doc/Makefile (DIST_FILES): Likewise.
	* exec/Makefile (LCLHDRS, DIST_FILES): Likewise.
	* ext2fs/Makefile (LCLHDRS): Likewise.
	* fatfs/Makefile (LCLHDRS): Likewise.
	* ftpfs/Makefile (LCLHDRS): Likewise.
	* hostmux/Makefile (LCLHDRS): Likewise.
	* hurd/Makefile (DIST_FILES): Likewise.
	* include/Makefile (LCLHDRS): Likewise.
	* isofs/Makefile (LCLHDRS, DIST_FILES): Likewise.
	* libcons/Makefile (LCLHDRS): Likewise.
	* libdirmgt/Makefile (LCLHDRS): Likewise.
	* libdiskfs/Makefile (LCLHDRS): Likewise.
	* libfshelp/Makefile (LCLHDRS): Likewise.
	* libftpconn/Makefile (LCLHDRS): Likewise.
	* libihash/Makefile (LCLHDRS): Likewise.
	* libiohelp/Makefile (LCLHDRS): Likewise.
	* libnetfs/Makefile (LCLHDRS): Likewise.
	* libpager/Makefile (LCLHDRS): Likewise.
	* libpipe/Makefile (LCLHDRS): Likewise.
	* libports/Makefile (LCLHDRS): Likewise.
	* libps/Makefile (LCLHDRS): Likewise.
	* libshouldbeinlibc/Makefile (LCLHDRS): Likewise.
	* libstore/Makefile (LCLHDRS, DIST_FILES): Likewise.
	* libthreads/Makefile (LCLHDRS): Likewise.
	* libtreefs/Makefile (LCLHDRS): Likewise.
	* libtrivfs/Makefile (LCLHDRS): Likewise.
	* mach-defpager/Makefile (LCLHDRS): Likewise.
	* nfs/Makefile (LCLHDRS): Likewise.
	* nfsd/Makefile (LCLHDRS): Likewise.
	* pfinet/Makefile (LCLHDRS): Likewise.
	* pflocal/Makefile (LCLHDRS): Likewise.
	* proc/Makefile (LCLHDRS, DIST_FILES): Likewise.
	* release/Makefile (DIST_FILES): Likewise.
	* storeio/Makefile (LCLHDRS): Likewise.
	* sutils/Makefile (LCLHDRS): Likewise.
	* term/Makefile (LCLHDRS, DIST_FILES): Likewise.
	* tmpfs/Makefile (LCLHDRS): Likewise.
	* ufs-fsck/Makefile (LCLHDRS): Likewise.
	* ufs/Makefile (LCLHDRS): Likewise.
	* usermux/Makefile (LCLHDRS): Likewise.
	* utils/Makefile (LCLHDRS): Likewise.

	Remove generated files.
	* configure: Remove file.
	* .gitignore: Update.
	* doc/version.texi: Remove file.
	* doc/.gitignore: Update.

	Rules for build system targets.
	* Makefile (configure, config.status, config.make): New targets.

	* Makefile (clean): Recurse into all subdirs.

2012-04-08  Thomas Schwinge  <thomas@codesourcery.com>

	Automatically regenerate files that depend on $(hurd-version).
	Follow-up to 05f5cc229323a61799388fbb52da84ca8cb502c9 (»configure: Use modern
	`AC_INIT' invocation.«).

	* Makeconf (%: %.sh): Depend on config.make.
	* Makefile (version.h): Use a stamp file.
	(stamp-version): Depend on config.make.
	* doc/Makefile (stamp-version): Likewise.
	* Makeconf (make-deps): Take additional target-specific dependencies, $*-DEPS.
	* console-client/Makefile (driver-DEPS): Depend on config.make.
	* libstore/Makefile (module-DEPS): Likewise.

2012-04-08  Thomas Schwinge  <thomas@codesourcery.com>

	Remove hurd/install-headers.
	* hurd/configure: Remove file.
	* hurd/configure.ac: Likewise.
	* hurd/install-headers.in: Likewise.

2012-04-08  Thomas Schwinge  <thomas@codesourcery.com>

	Avoid recreating the include/* files needlessly.
	* Makeconf ($(INSTALLED_LOCAL_HEADERS)): Just depend on the Makefile.

	The include/ hierarchy does not depend on anything but the local Makefile;
	especially it does not depend on how the package has been configured, which is
	what config.make records.

2012-04-08  Thomas Schwinge  <thomas@codesourcery.com>

	* Makeconf: Add copyright/licensing header.

	.gitignore: New file.

2012-04-08  Maksym Planeta  <mcsim.planeta@gmail.com>

	Update '..' link for directory when moving it.
	* tmpfs/dir.c (struct dirstat): New field.
	(diskfs_lookup_hard): Record whether type is SPEC_DOTDOT in dotdot field of
	ds.
	(diskfs_dirrewrite_hard): If ds->dotdot is true, set dp->dn->u.dir.dotdot
	insteead of (ds->prevp)->dn.

	Allocate pager's map on demand.
	* mach-defpager/default_pager.c (pager_get_direct_map): New function.
	(pager_alloc): Initialize map field to NULL.
	(pager_allocated, pager_pages, pager_extend, pager_write_offset): Use
	pager_get_direct_map to access to pager's map.

	Delete fragile hack.
	* mach-defpager/default_pager.c (pager_truncate): Do not optimize by using
	partial kfree.

	Fix bugs in truncation of memory map.
	* mach-defpager/default_pager.c (pager_truncate): Use new_size instead of
	old_size in memcpy.

	Prevent repeated freeing of pager's map
	* mach-defpager/default_pager.c (pager_truncate): Do not set old_size to
	PAGEMAP_ENTRIES, to avoid freeing again just below.

	Add appropriate checks to take into account that pager's memory map could be sparse.
	* mach-defpager/default_pager.c (pager_truncate, pager_read_offset,
	pager_release_offset, pager_dealloc, pager_realloc): Add checks for map
	field being NULL.
	(pager_dealloc): Set map pointer to zero.

	Set size of object, when it is created.
	* mach-defpager/default_pager.c (S_default_pager_object_create): Set pager
	limit to the given size.

	Add support for objects that are not bounded to page size.
	* mach-defpager/default_pager.c (struct dpager): Add new field.
	(seqnos_memory_object_data_write): If pager is not bounded to page size, than
	round it up.
	(seqnos_memory_object_lock_completed): Function is not in use anymore.
	(S_default_pager_object_set_size): Proceed object with any size correctly.

	Add support for empty memory objects.
	* mach-defpager/default_pager.c (pager_extend): When old_size is 0, use 1 to
	compute power of two above it.
	(pager_truncate): Do not avoid new_size being 0.

	Add support for new pageout interface for defpager.
	* mach-defpager/default_pager.c: (seqnos_memory_object_init,
	seqnos_memory_object_data_request): Use new interface.
	(seqnos_memory_object_data_return): Proceed request correctly.

	Update debugging macros definitions and remove debugging macros when it becomes hard to read the code.
	* mach-defpager/default_pager.c (dprintf, ddprintf): Change macros to make them
	more easy to use.
	(pager_port_lock, pager_port_unlock, seqnos_memory_object_data_write,
	pager_write_offset): Remove debugging messages (that are not shown at the
	moment) when it becomes hard to read the code.

2012-04-08  Michael Banck  <mbanck@debian.org>

	Set console default encoding to UTF-8
	* console.c (DEFAULT_ENCODING): Set to UTF-8.

2012-04-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2012-04-08  Ludovic Courtès  <ludo@gnu.org>

	console-run: Create and settrans /dev/console when not already done.
	This patch makes sure /libexec/console-run creates and installs
	/dev/console on the first run without considering it a failure if it
	didn't exist already.

	* daemons/console-run.c (TERMINAL_FIRST_TRY): Change node to
	  `/dev/console'.
	  (TERMINAL_SECOND_TRY): Change node to `/tmp/console'.
	  (open_console): Clear FALLBACK when TRY == 1 and the
	  `file_set_translator' call suceeded.

2012-04-07  Thomas Schwinge  <thomas@schwinge.name>

	Merge tag 'hurd-release-0-2' into releases
	Reconstructed from the hurd-release-0-2 CVS tag.

	Merge tag 'release-0-0' into releases
	Reconstructed from the release-0-0 CVS tag.

	Revert "MAKEDEV now lives in /sbin, so get it from there."
	This reverts commit 5361e64713eb4a4eac58f6a41e2dae5ff72bca25.

	Revert "The real version is release/SETUP"
	This reverts commit c40e79fc85df4399c45c83c3b4ddd20c13e5f6ce.

	Revert "Initial checkin."
	This reverts commit 5f847427cf40ec910614bb676031cd600f731775.

2012-04-07  Miles Bader  <miles@gnu.org>

	. (cherry picked from commit b719aa377034997390f8edd528468fb51dad80d9)

2012-04-02  Maksym Planeta  <mcsim.planeta@gmail.com>

	Update comments.
	* mach-defpager/default_pager.c (seqnos_memory_object_data_return): Add comment.

	Prevent auto-terminating of tmpfs due to idle.
	* tmpfs/tmpfs.c (diskfs_thread_function): New function.
	(main): Manually detach diskfs demuxer.

	Correct handling of object size.
	* tmpfs/node.c (diskfs_truncate): Pass the original (non-rounded) size to
	default_pager_object_set_size.
	(diskfs_grow): Likewise.
	(diskfs_get_filemap): Do not set object size, as
	default_pager_object_create already sets it.

2012-03-27  Maksym Planeta  <mcsim.planeta@gmail.com>

	Fix hard links accounting in tmpfs.
	* tmpfs/dir.c (diskfs_init_dir, diskfs_clear_directory): Fix hard link
	accounting in tmpfs for directories.

2012-03-26  Maksym Planeta  <mcsim.planeta@gmail.com>

	Correct function calling.
	* mach-defpager/default_pager.c (S_default_pager_object_set_size,
	seqnos_memory_object_lock_completed): Correct calling of function
	pager_port_unlock.

	Add lock in pager_truncate.
	* mach-defpager/default_pager.c (pager_truncate): Add mutex lock.

	Correct available space check.
	*tmpfs/node.c (diskfs_grow): Parameter size denotes new size, not delta.
	So available space check should take that into account.

2012-03-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2012-03-26  Maksym Planeta  <mcsim.planeta@gmail.com>

	Remove warnings during compilation.
	* mach-defpager/kalloc.c: Added missing prototypes, headers, types.
	* mach-defpager/wiring.c: Likewise.
	* mach-defpager/default_pager.c: Likewise.
	* mach-defpager/main.c: Likewise.
	* mach-defpager/setup.c: Likewise.
	(S_default_pager_paging_storage): Fix wrong calling of kfree.

	* mach-defpager/kalloc.h: New file with prototypes from kalloc.c.
	* mach-defpager/default_pager.h: New file with prototypes
	from default_pager.c.
	* mach-defpager/Makefile (LCLHDRS): Add new header files.

2012-03-25  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix extern inline use
	* ext2fs/Makefile (SRCS): Add xinl.c
	* libtreefs/Makefile (OTHERSRCS): Likewise.
	* term/Makefile (SRCS): Likewise.
	* ufs/Makefile (SRCS): Likewise.

	* hostmux/hostmux-xinl.c: Define HOSTMUX_DEFINE_EI instead of HOSTMUX_EI.
	* libdiskfs/extern-inline.c: Define DISKFS_DEFINE_EXTERN_INLINE instead of
	DISKFS_EXTERN_INLINE.
	* libftpconn/xinl.c: Define FTP_CONN_DEFINE_EI instead of FTP_CONN_EI.
	* libpipe/pipe-funcs.c: Define PIPE_DEFINE_EI instead of PIPE_EI.
	* libpipe/pq-funcs.c: Define PQ_DEFINE_EI instead of PQ_EI.
	* libshouldbeinlibc/idvec-funcs.c: Define IDVEC_DEFINE_EI instead of
	IDVEC_EI.
	* libshouldbeinlibc/maptime-funcs.c: Define MAPTIME_DEFINE_EI instead of
	MAPTIME_EI.
	* libshouldbeinlibc/ugids-xinl.c: Define UGIDS_DEFINE_EI instead of
	UGIDS_EI.
	* libstore/xinl.c: Define STORE_DEFINE_EI instead of STORE_EI.
	* libthreads/rwlock.c: Define RWLOCK_DEFINE_EI instead of RWLOCK_EI.
	* ext2fs/xinl.c: New file, define EXT2FS_DEFINE_EI and include "ext2fs.h"
	* libtreefs/xinl.c: New file, define TREEFS_DEFINE_EI and include "treefs.h"
	and "mig-decls.h".
	* term/xinl.c: New file, define TERM_DEFINE_EI and include "term.h".
	* ufs/xinl.c: New file, define UFS_DEFINE_EI and include "ufs.h"

	* ext2fs/ext2fs.h: Include <features.h>, define EXT2FS_EI to __extern_inline
	instead of "extern inline", define it to empty when EXT2FS_DEFINE_EI is
	defined. Always declare extern inline prototypes, and define extern inlines
	content only if __USE_EXTERN_INLINES or EXT2FS_DEFINE_EI is defined.
	* libdiskfs/diskfs.h: Likewise with DISKFS_EXTERN_INLINE and
	DISKFS_DEFINE_EXTERN_INLINE.
	* libftpconn/ftpconn.h: Likewise with FTP_CONN_EI and FTP_CONN_DEFINE_EI.
	* libftpconn/priv.h: Likewise.
	* libpipe/pipe.h: Likewise with PIPE_EI and PIPE_DEFINE_EI.
	* libpipe/pq.h: Likewise with PQ_EI and PQ_DEFINE_EI.
	* libshouldbeinlibc/idvec.h: Likewise with IDVEC_EI and IDVEC_DEFINE_EI.
	* libshouldbeinlibc/maptime.h: Likewise with MAPTIME_EI and
	MAPTIME_DEFINE_EI.
	* libshouldbeinlibc/ugids.h: Likewise with UGIDS_EI and UGIDS_DEFINE_EI.
	* libstore/store.h: Likewise with STORE_EI and STORE_DEFINE_EI.
	* libthreads/rwlock.h: Likewise with RWLOCK_EI and RWLOCK_DEFINE_EI.
	* term/term.h: Likewise with TERM_EI and TERM_DEFINE_EI.
	* ufs/ufs.h: Likewise with UFS_EI and UFS_DEFINE_EI.
	* libtreefs/treefs.h: Include <features.h>, define TREE_FS_EI to
	__extern_inline, or to empty when TREEFS_DEFINE_EI is defined. Use TREEFS_EI
	instead of "extern inline".
	* libtreefs/mig-decls.h: Use TREEFS_EI instead of "extern inline".

2012-02-21  Ludovic Courtès  <ludo@gnu.org>

	Add `console/motd.UTF8' to the distribution.
	* console/Makefile (DIST_FILES): Add `motd.UTF8'.

2012-02-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix pfinet device_open errno reporting
	* pfinet/ethernet.c (ethernet_open): Use value saved in `file_errno', not
	`errno'.

	Make pfinet use BPF filter when using a devnode
	* pfinet/ethernet.c (bpf_ether_filter, bpf_ether_filter_len): New variables.
	(ethernet_open): Use bpf_ether_filter and bpf_ether_filter_len for
	device_set_filter call in the devnode case.

	More helpful messages

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Fix pfinet compilation
	* pfinet/ethernet.c (_HACK_ERRNO_H): Define to avoid inclusion of
	glue-include/linux/errno.h which undefines errno.
	Include <fcntl.h>.

	Make pfinet try both a filepath and kernel device
	pfinet/ethernet.c (ethernet_open): Try to file_name_lookup() the device as
	filepath before opening the Mach device.

2012-01-31  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Use TERM=mach-gnu-color instead of mach-color
	mach-gnu-color was added to upstream ncurses as the GNU variant of the Mach
	kernel console.

	* config/ttys (console): Set type to mach-gnu-color.

2012-01-14  Pino Toscano  <toscano.pino@tiscali.it>

	PID stat/status: show only the file name of processes
	The Linux /proc fs shows only the file name of processes in the
	`stat' and `status' files of every process directory, so adapt also
	procfs to show process file names.

	Add a new `args_filename` function, much similar to GNU's `basename'
	but returning the original string also when the resulting file name
	is an empty string.

	* process.c (args_filename): New function.
	(process_file_gc_stat): Wrap the `proc_stat_args' result with
	`args_filename'.
	(process_file_gc_status): Likewise.

2011-12-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Upgrade pager-memcpy parameters
	* libpager/pager-memcpy.c (VMCOPY_BETTER_THAN_MEMCPY): Increase to 8 pages.
	(VMCOPY_WINDOW_DEFAULT_SIZE, MEMCPY_WINDOW_DEFAULT_SIZE): Increase to 32 pages.

2011-12-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Do not inherit all ext2fs flags
	* ext2fs/ext2_fs.h (EXT2_FL_INHERITED, EXT2_REG_FLMASK, EXT2_OTHER_FLMASK):
	New macros.
	(ext2_mask_flags): New inline function.
	* ext2fs/ialloc.c (diskfs_alloc_node): Use EXT2_FL_INHERITED and call
	ext2_mask_flags.

2011-12-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Revert "Do not use msgport information"
	This reverts commit d9fc76bd4e8c9a459fad7152135b738496318415, as it breaks
	/proc/pid/stat

	Do not use msgport information
	* process.c (process_lookup_pid): Set PSTAT_NO_MSGPORT flag.
	* rootdir.c (get_boottime, get_idletime, rootdir_gc_cmdline): Set
	PSTAT_NO_MSGPORT flag.

	Fix 0-length reads from tty
	* term/users.c (trivfs_S_io_read): Immediately return 0 also when `amount' is 0.

2011-12-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix e2os script posixness
	* sutils/e2os.sh (sbget, sbset): Use POSIX syntax for functions.

2011-12-06  Pino Toscano  <toscano.pino@tiscali.it>

	Fix error values on socket creation
	On socket creation, return the correct errno values, EPROTOTYPE and
	EPROTONOSUPPORT, for invalid socket types and protocols.

	* pfinet/socket-ops.c (S_socket_create): Correctly return EPROTOTYPE and
	EPROTONOSUPPORT.
	* pflocal/pf.c (S_socket_create): Correctly return EPROTOTYPE.

2011-12-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix proc fault
	* proc/info.c (get_vector): Set `scanned' relatively to `readaddr' instead
	of to `data'.

2011-11-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix select on pfinet tunnel and streamio
	* pfinet/tunnel.c (trivfs_S_io_select): Do not return EINVAL on SELECT_URG.
	* trans/streamio.c (trivfs_S_io_select): Likewise.

2011-11-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Partially revert fa5e833a
	libpipe/pipe.c (pipe_recv): Even if `source' is NULL and packet source exists,
	do not dereference it, as pq_dequeue already does it.

	Fix two-way transmission for socketpair(SOCK_DGRAM)
	* pflocal/socket.c (S_socket_connect2): For connection-less sockets, also
	connect `user2' to `user1'.

	Fix source address reference accounting
	* libpipe/pipe.c (pipe_recv): If `source' is NULL but packet source exists,
	dereference it.
	* pflocal/io.c (S_io_write): Only dereference the source on errors.

	Fix pflocal.static link
	* pflocal/Makefile (HURDLIBS): Add iohelp

2011-11-24  Thomas Schwinge  <thomas@schwinge.name>

	Merge remote-tracking branch 'darnassus/master'

	* configure: Regenerate.

	Further port sequence number cleanup.
	* libpager/priv.h (struct pager): Make seqno member of type mach_port_seqno_t.
	Change all users.
	* libpager/seqnos.c (_pager_stubs_update_seqno): Rename to _pager_update_seqno.
	Change all users.
	* libpager/demuxer.c (pager_demuxer): Make use of _pager_update_seqno.
	* libpager/notify-stubs.c: Remove unused attribute where no longer appropriate.

2011-11-24  Sergio Lopez  <koro@sinrega.org>

	Don't forget to update port sequence numbers in stub functions.
	* seqnos.c (_pager_stubs_update_seqno): New function.
	* priv.h (_pager_stubs_update_seqno): New function.

	* notify-stubs.c (_pager_do_seqnos_mach_notify_port_deleted):
	Call _pager_stubs_update_seqno to properly update seqno.
	(_pager_do_seqnos_mach_notify_msg_accepted): Likewise.
	(_pager_do_seqnos_mach_notify_port_destroyed): Likewise.
	(_pager_do_seqnos_mach_notify_send_once): Likewise.
	(_pager_do_seqnos_mach_notify_dead_name): Likewise.
	* stubs.c (_pager_seqnos_memory_object_copy): Likewise.
	(_pager_seqnos_memory_object_data_write): Likewise.
	(_pager_seqnos_memory_object_supply_completed): Likewise.

2011-11-20  Ludovic Courtès  <ludo@gnu.org>

	configure: Use modern `AC_INIT' invocation.
	* Makeconf (hurd-version): Move to...
	* config.make.in (hurd-version): ... here.  Set to @PACKAGE_VERSION@.

	* configure.in: Change `AC_INIT' invocation to specify the package name,
	  version number, and bug report address.

2011-11-20  Ben Asselstine  <benasselstine@gmail.com>

	Fix symlink support in tmpfs
	* node.c (create_symlink_hook): Set NP->dn_stat.st_size to the length of TARGET.
	(create_symlink_hook): Set NP->dn->type to DT_LNK.
	(diskfs_truncate): Do NP->allocsize check after symlink check.

2011-11-20  Sergio Lopez  <sergio.lopez@sinrega.org>

	Just destroy port rights in default_pager
	* mach-defpager/default_pager.c (seqnos_memory_object_terminate): Simply call
	`mach_port_destroy' instead of managing rights through `mach_port_mod_refs'.

2011-11-20  Maksym Planeta  <mcsim.planeta@gmail.com>

	Fix defpager into using the correct control port
	The reply_port is only the correct control port when RPCs are from the kernel,
	not from e.g. tmpfs, such as default_pager_object_set_size calls.

	* mach-defpager/default_pager.c (seqnos_memory_object_terminate,
	S_default_pager_object_set_size): Make default pager use its own memory object
	control ports for external objects, remove reply_to parameter.
	* trans/proxy-defpager.c (S_default_pager_object_set_size): Remove reply_to
	parameter.
	* hurd/default_pager.defs (default_pager_object_set_size): Remove unused
	parameter.

2011-11-20  Maksym Planeta  <mcsim.planeta@gmail.com>

	Work with memory object only after vm_map has been performed
	* tmpfs/node.c (diskfs_get_filemap): Work with memory object only after
	vm_map has been performed.

2011-11-15  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Add comments

2011-11-15  Diego Nieto Cid  <dnietoc@gmail.com>

	Keep at least one request handler thread.
	* libports/manage-multithread.c: Startover when no other thread is
	listenening for requests.

2011-11-07  Ludovic Courtès  <ludo@gnu.org>

	Allow /hurd/init to be a symlink.
	* libdiskfs/boot-start.c (diskfs_start_bootstrap): Retry `dir_lookup'
	  calls for INITNAME until either SYMLOOP_MAX is reached or the lookup
	  process completes.

2011-11-05  Thomas Schwinge  <thomas@schwinge.name>

	* configure: Regenerate.

2011-11-05  Ludovic Courtès  <ludo@gnu.org>

	mach-defpager: Declare `__malloc_initialize_hook' as volatile.
	* mach-defpager/kalloc.c (__MALLOC_HOOK_VOLATILE): New macro.

2011-11-05  Ludovic Courtès  <ludo@gnu.org>

	Disable NFS translator and daemon compilation when Sun RPC is lacking.
	* Makefile (prog-subdirs): Make `nfs' and `nfsd' conditional on
	  $(HAVE_SUN_RPC) = yes.
	* config.make.in (HAVE_SUN_RPC): New variable.
	* configure.in: Check for <rpc/types.h> and `clnt_create'.

	* README.CVS: Document dependency on a Sun RPC implementation.

2011-10-20  Thomas Schwinge  <thomas@schwinge.name>

	Populate a [build]/lib directory with links to all shared libraries.
	* Makeconf (libs): Add dependency to create these links.

	Merge branch 'tls/libthreads'
	Conflicts:
	libthreads/ChangeLog

2011-10-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	TLS support for libthreads.
	* libthreads/cprocs.c (cproc_create): Call into glibc to allocate static TLS
	block.
	* libthreads/cthread_internals.h (tcbhead_t): New structure; as in glibc.
	(cproc_setup): Take TCB parameter.
	(_dl_allocate_tls): Declare; from glibc.
	* libthreads/alpha/thread.c (cproc_setup): Compile-time warning for missing TLS
	support.
	* libthreads/i386/thread.c (cproc_setup): Imlement TLS support.

2011-10-19  Thomas Schwinge  <thomas@schwinge.name>

	Fix building of nfs.static.
	* nfs/Makefile (HURDLIBS): Add ihash (for ports).
	* nfs/ops.c (netfs_set_translator): Don't define.  It is the EOPNOTSUPP stub
	that is already being defined in libnetfs/set-get-trans.c.

2011-10-19  Pino Toscano  <toscano.pino@tiscali.it>

	libnetfs: handle _PC_PATH_MAX in pathconf
	Explicitly return -1 also for _PC_PATH_MAX to indicate there is no
	limit for it, otherwise EINVAL is returned for it.

	* libnetfs/io-pathconf.c (netfs_S_io_pathconf): Handle _PC_PATH_MAX
	too.

2011-10-19  Pino Toscano  <toscano.pino@tiscali.it>

	libdiskfs: handle _PC_PATH_MAX in pathconf
	Explicitly return -1 also for _PC_PATH_MAX to indicate there is no
	limit for it, otherwise EINVAL is returned for it.

	* libdiskfs/io-pathconf.c (diskfs_S_io_pathconf): Handle _PC_PATH_MAX
	too.

2011-10-19  Pino Toscano  <toscano.pino@tiscali.it>

	Add missing format strings for error, printk, problem
	Some calls to `error', `printk', and `problem' lacked a format
	string, leading to build failure when compiling with stricter CFLAGS.

	* nfs/mount.c (mount_root): Add format string for `error' calls which
	lacked it.
	* pfinet/main.c (pfinet_bind): Likewise.
	* term/main.c (main): Likewise.
	* utils/shd.c (run): Likewise.
	* utils/storeinfo.c (main): Likewise.

	* pfinet/linux-src/include/net/tcp.h (tcp_clear_xmit_timer): Add
	format string for `printk' call which lacked it.
	(tcp_timer_is_set): Likewise.

	* ufs-fsck/utilities.c (punt): Add format string for `problem' call
	which lacked it.

2011-10-03  Sergio López  <slpml@sinrega.org>

	Sync pager before clearing MAY_CACHE flag
	Clearing MAY_CACHE flag on a pager initiates a memory object
	termination if this one is not referenced anymore. If the object has a
	significant number of dirty pages (i.e. a file recently created was
	unlinked before diskfs periodical sync) this operation generates a lot
	of stress on the translator. This is one of the most common sources
	for thread storms.

	Sync'ing the pager before clearing that flag ensures that there aren't
	dirty pages in the object before its termination.

	* ext2fs/pager.c (drop_pager_softrefs): Sync pager before clearing
	MAY_CACHE flag.

2011-08-22  Diego Nieto Cid  <dnietoc@gmail.com>

	Fix 'make dist' in doc.
	* doc/Makefile (DIST_FILES): Remove target files.
	(lndist): Depend on lndist-info-targets
	(lndist-info-targets): New target. Distribute target files.

	* include/Makefile (lndist): copy files from $(srcdir).

2011-08-22  Olaf Buddenhagen  <antrik@users.sourceforge.net>

	Be less aggressive about switching to bigger units
	* utils/vmstat.c (print_val): Switch size unit at 10000 instead of 1024.

2011-08-20  Jonathan Neuschäfer  <j.neuschaefer@gmx.net>

	fix common misspellings
	 * Fix spelling with codespell[1] and manually review it.

	[1] http://git.profusion.mobi/cgit.cgi/lucas/codespell/

2011-08-20  Jonathan Neuschäfer  <j.neuschaefer@gmx.net>

	pfinet/linux-src: fix a memory leak
	 * pfinet/linux-src/net/ipv4/ip_options.c (ip_options_get): calculate
	   the size of opt only once, free opt before returning -EFAULT.

2011-08-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix localhost() after memory failure
	* libshouldbeinlibc/localhost.c (localhost): Free and reset buf when
	reallocation failed.

2011-08-20  Jonathan Neuschäfer  <j.neuschaefer@gmx.net>

	fix a realloc-related memory leak in localhost()
	 * libshouldbeinlibc/localhost.c (localhost): assign the return value
	   of realloc to a temporary variable to avoid losing the old value of
	   buf in the case of realloc failing.

2011-08-18  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Import version from Kilobug

2011-08-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix spurious port deallocation
	* proc/mgt.c (S_proc_exception_raise): On proc_exception_raise forwarding
	error, return MIG_NO_REPLY instead of 0, since the reply port may have been
	consumed, and the task is being terminated anyway.

2011-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix restoring from Xorg
	* console-client/vga.c (vga_display_restore_status): Use VGA_GFX_MISC_B8TOBF
	instead of VGA_GFX_MISC_A0TOAF.

	Let GNU Mach messages appear under Hurd console
	* console-client/vga-dynafont.c (dynafont_new): Force ASCII glyphs as being
	always trivially mapped.
	* console-client/vga-hw.h (VGA_VIDEO_MEM_BASE_ADDR): Set macro to 0x0b8000.
	* console-client/vga-support.c [!OSKIT_MACH]: Do not include
	<device/device.h> and <hurd.h>, remove VIDMMAP_BEGIN, VIDMMAP_SIZE and
	VIDMMAP_KDOFS macros.
	(vga_init): Remove code which maps video memory from the kd device. Use
	VGA_GFX_MISC_B8TOBF instead of VGA_GFX_MISC_A0TOAF or VGA_GFX_MISC_A0TOBF.

	Fix typo
	* console-client/vga-dynafont.c (dynafont_lookup_internal): Fix typo.

2011-07-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix one of the auth protocol races
	See http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00010.html

	* auth/auth.c (pending): Duplicate structure into...
	(pending_user, pending_server): ... new structure.
	(pending_users): Use pending_user structure.
	(pending_servers): Use pending_server structure.
	(S_auth_user_authenticate): Rework loops to wait for the server to have
	finished with sending uids.
	(S_auth_server_authenticate): Rework loops to notify the user when uids are
	sent.

2011-07-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add Marcus' console ttys.
	* config/ttys: Add tty[1-6].

2011-06-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Set default umask to 022
	* daemons/runsystem.sh: Call umask 022.

2011-05-16  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix crash on fstab-existing mount
	Fix crash when invoking mount with a pair of parameters which already exists
	in fstab

	* sutils/fstab.c (fstab_add_mntent): Do not free `mounted_fs' when it is the
	same as `fs'.

2011-05-16  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	fstab_find: also try to call realpath()
	For symlinks and non-absolute paths.

	* sutils/fstab.c (fstab_find): Also call `fstab_find_device' and
	`fstab_find_mount' on path returned by `realpath'.

2011-05-06  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix port leak
	* libtrivfs/file-reparent.c (trivfs_S_file_reparent): Deallocate `parent'
	port when the trivfs_S_io_duplicate() call succeeds.

2011-04-17  Diego Nieto Cid  <dnietoc@gmail.com>

	Print KeySymToUcs4 calls.

2011-04-17  Diego Nieto Cid  <dnietoc@gmail.com>

	Find the absolute path to <X11/keysymdef.h>
	Specifying the header file relative to $(includeir) won't work because
	it is defined in terms of prefix variable which is redefined during
	installation to the destination directory.

	And the dependency check will fail during 'make install' because the
	header might not be in the destination tree.

	* config.make.in (X11_KEYSYMDEF_H, SED): New variables.
	* configure.in: Check for sed. Find X11/keysymdef.h absolute location
	using the preprocessor and save it in X11_KEYSYMDEF_H variable.
	* console-client/Makefile (kstoucs_map.c): Use X11_KEYSYMDEF_H to
	depend on the header file.

2011-04-17  Diego Nieto Cid  <dnietoc@gmail.com>

	Use locale's compose file by default.
	* console-client/Makefile [HAVE_X11=yes](compose-CFLAGS): Define DATADIR.
	* console-client/pc-kbd.c (pc_kbd_init): Load compose file
	unconditionally.
	* console-client/xkb/compose.c: Include fcntl.h, unistd.h and locale.h
	(struct map_entry, enum callback_result, map_callback): New types.
	(map_iterate): New function.
	(struct matcher_context): New type.
	(match_left_set_right, match_right_set_left): New functions.
	(get_compose_file_for_locale): Likewise.
	(read_composefile): Use get_compose_file_for_locale result when
	argument composefn is NULL.

	Disable XKB when either lex or yacc is missing.

	Avoid redefinition of NoSymbol.
	* console-client/xkb/xkb.c: Remove macro NoSymbol.
	* console-client/xkb/compose.c: Likewise.

	Delete xkb/HACKING file.

	Cleanup.

	Deallocate memory on errors.
	* console-client/xkb/parser.y(parse_xkbconfig): Free cwd.

	Remove default keymap.
	* console-client/xkb/default.xkb: Removed file.
	* console-client/xkb/makeconf.sh: Likewise.
	* console-client/xkb/xkbdefaults.c: Likewise.
	* console-client/xkb/parser.y(parse_xkbconfig): Don't use harcoded
	defaults, return error when no keymap file is given.

	Delete Compose file.

	Add missing dependency.

	Reimplement KeySymToUcs4.
	* console-client/Makefile (DIST_FILES): Add xkb/kstoucs_map.sh.
	(kstoucs_map.c): New target.
	* console-client/xkb/kstoucs.c: Reimplement KeySymToUcs4.
	* console-client/xkb/kstoucs_map.sh: New file.

2011-04-10  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

	Fix magic link with gold
	* trans/Makefile (magic): Link against libiohelp.

2011-04-08  Diego Nieto Cid  <dnietoc@gmail.com>

	Depend on X11 for string to keysym mappings.
	* config.make.in (HAVE_X11,X11_CFLAGS,X11_LIBS,XKB_BASE): New variables.
	* configure.in: Check for x11 module.
	* console-client/Makefile (PC_KBD_SO_SRCS): Move XKB sources...
	* console-client/Makefile (XKB_SRCS): ... here. New variable.
	* console-client/Makefile (SRCS): Add $(XKB_SRCS).
	* console-client/Makefile (LCLHDRS): Add xkb/xkb.h.
	* console-client/Makefile (XKB_DATA_DIR): Removed variable.
	* console-client/Makefile (pc_kbd.so.$(hurd-version)): Use patsubst.
	Depend on XKB objects when HAVE_X11 = yes.
	* console-client/Makefile (install): Depend on XKB datafiles when
	HAVE_X11 = yes.
	* console-client/Makefile (pc-kbd-CFLAGS): Set variable when
	HAVE_X11 = yes
	* console-client/Makefile ($(XKB_DATA_DIR),$(XKB_DATA_DIR)/%): Replaced
	by...
	* console-client/Makefile[HAVE_X11=yes]($(XKB_BASE),$(XKB_BASE)/%): ...
	this targets.
	* console-client/Makefile[HAVE_X11=yes](pc_kbd-LDLIBS): New variable.
	* console-client/xkb/keysymdef.h: Removed file.
	* console-client/xkb/ks_tables.h: Likewise.
	* console-client/xkb/symname.c: Likewise.
	* console-client/xkb/xkb.c: Include <X11/keysymdef.h>.
	* console-client/xkb/compose.c: Likewise.
	* console-client/xkb/xkb.h: Remove XStringToKeysym prototype.
	Include <X11/Xlib.h>.

	Update xkb/README.
	* console-client/xkb/README: Refer to this artifact as "module"
	instead of "input driver".
	Key repeater is now implemented by pc-kbd.
	Update the module's installation and usage procedures.

	Use first section when there's no default.
	* console-client/xkb/parser.y (skip_to_firstsection): New function.
	(include_section): Call skip_to_firstsection when
	skip_to_defaultsection fails.

	* console-client/xkb/parser.y (include_section): Free filename.

	* console-client/xkb/parser.y (include_section): Remove superflous strdup.

2011-04-08  Arne Babenhauserheide  <bab@draketo.de>

	Added an example for selecting the keymap.
	* console-client/xkb/README: Keymap selection example.

2011-04-08  Diego Nieto Cid  <dnietoc@gmail.com>

	Symbols 0..9 stand for their ascii character.
	* console-client/xkb/parser.y(symbolname): Shift by '0' numbers [0..9].

	Add support for hexadecimal symbols.
	* console-client/xkb/parser.y(symbolname): Match and return hex value.

	Update foreign files.
	* console-client/xkb/keysymdef.h: Replaced file.
	* console-client/xkb/ks_tables.h: Likewise.
	* console-client/xkb/kstoucs.c: Likewise.
	* console-client/xkb/symname.c: Likewise.
	* console-client/xkb/HACKING: New file, added foreign files information.

	Document new options.
	* console-client/xkb/README: Updated.

	* console-client/xkb/xkb.c (iskeypad): Access up to 'width' symbols.

	'vmods' is an alias for 'virtual_modifiers'.

	Fix handling of error conditions.
	* console-client/xkb/parser.y (key_set_action): Test actions variable.
	(key_set_keysym): Test keysyms instead of keys.

	Fix memory errors.
	* console-client/xkb/parser.y (key_set_keysym): Consider symbol's size
	when reallocing.
	(key_set_action): Consider (xkb_action_t *)'s size when reallocing.
	                  Start clearing levels from 'width' and up to 'level'.

2011-04-08  Alexander Preisinger  <alexander.preisinger@gmail.com>

	Add neo support
	* console-client/xkb/xkb-data/keymap/hurd: New keymap neo.

	README update

2011-04-08  Diego Nieto Cid  <dnietoc@gmail.com>

	Enable hurd extensions in every layout.

	Remove obsolete variable declaration.

	Use vfprintf in debug_printf and write to stderr.

	Add debugging messages.
	* console-client/xkb/lex.l(include_file): Log file changes.
	* console-client/xkb/parser.y(key_set_keysym): Log symbol associations.
	(include_section): Log section being read.
	(symbolssect,keycodesect,key_new): Log current key.
	* console-client/xkb/xkbdata.c(keyname_add): Log keyname, keycode and hash.
	(set_rmod_keycode): Log modifier, keyname and keycode.

	Emit warnings on undeclared virtual modifiers.

	Report inexistent section.
	* console-client/xkb/parser.y (include_section): Declare scanner_get_current_location and
	scanner_get_current_file prototypes.
	New local variables current_location, current_file and err.
	Report error and exit when a section cannot be processed successfully.

	Add function to read the state of the scanner.
	* console-client/xkb/lex.l (scanner_get_current_location): New function.
	(scanner_get_current_file): Likewise.

	Check for end of file.
	* console-client/xkb/parser.y [!YY_NULL]: Define YY_NULL, the end of
	file token.
	* console-client/xkb/parser.y (skip_to_sectionname): If the end of file
	is reached while skipping symbols return an error.
	Return 0 on success.
	* console-client/xkb/parser.y (skip_to_defaultsection): Likewise.

	Propagate error on unexpected end of files.
	* console-client/xkb/lex.l (close_include): Return an error code on
	failure.
	(yywrap): Indicate termination when close_include fails.

	Give the file name and line number where an unexpected end of file was found.

	Warn when too many virtual modifier are defined.

	Avoid hashing garbage for short keynames.

	Rule vmod returns an int with the vmod's bit on.
	This allows to combine virtual modifiers safely.

	Recreate xkb/keymap/hurd from xkeyboard-config-1.8's xfree86 keymap.
	modified:   xkb/keymap/hurd
	    * Don't include inexistant symbol file: pc104.
	    * en_US was replaced by pc(pc105).
	    * Append us layout by default as pc(pc105) no longer describes
	      a full keyboard.

	Update key type assigment routine.

	Skip to main file's default section when needed.

	Lexer support for keycodes with +/- symbols and arbitrary level numbers.

	debian patch: 04_cleanups.patch

	debian patch: 03_hurd_keymap.patch

	Install XKB data files.
	* console-client/Makefile (XKB_DATA_DIR, XKB_DATA_FILES): New variables.
	(DIST_FILES): Use XKB_DATA_FILES to list data files.
	(pc-kbd-CFLAGS): Use XKB_DATA_DIR variable.
	(intall): Add XKB data files to it's dependencies.
	($(XKB_DATA_DIR), $(XKB_DATA_DIR)/%): New targets.

	Translate scancodes using XKB.
	* console-client/Makefile (pc-kbd-CFLAGS): New variable.
	(PC_KBD_SO_SRCS): Add sources from xkb directory.
	(LCLHDRS): Add includes from xkb directory.
	(lex.c, parser.tab.h): New targets.
	(VPATH): New variable.
	(CPPFLAGS): Add xkb directory to include search path.
	(LFLAGS, YFLAGS): New variables.
	(DIST_FILES): New variable.
	* console-client/pc-kbd.c [XKB_SUPPORT]: Include xkb/xkb.h.
	(cd): Removed static qualifier.
	[XKB_SUPPORT] (ctrlaltbs): New variable.
	[XKB_SUPPORT] (xkb_repeat_delay, xkb_repeat_interval): Likewise.
	(gnumach_v1_input_next) [XKB_SUPPORT]: Skip conversion to set 2.
	[XKB_SUPPORT] (read_keycode): New function.
	[XKB_SUPPORT] (input_loop): Pass keycode to xkb_input_key.
	(struct arguments): New type.
	(options) [XKB_SUPPORT]: New options xkbdir, keymapfile, keymap
	compose, ctrlaltbs, no-ctrlaltbs, repeat-delay and repeat-interval.
	(parse_opt) [XKB_SUPPORT]: Handle new options.
	(pc_kbd_init) [XKB_SUPPORT]: Initialize XKB and load layout.
	(pc_kbd_start) [XKB_SUPPORT]: Initialize xkb timers.

2011-04-05  Diego Nieto Cid  <dnietoc@gmail.com>

	Add missing semicolons bison was inserting.
	* console-client/xkb/parser.y: Add semicolons where needed.

	Add type to $$ in mid-rules.
	(see http://www.mail-archive.com/help-bison@gnu.org/msg02159.html )

	debian patch: 06_gcc-4.1_fix.patch

	Use external encoding converter.
	* console-client/xkb/xkb.c (cd): Change storage class to extern.

	Export function to load the keaboard layout.
	* console-client/xkb/xkb.c (xkb_load_layout): New function.
	* console-client/xkb/xkb.h (xkb_load_layout): Export prototype.

	Remove keyboard driver from XKB implementation.
	* console-client/xkb/xkb.c (kbd_dev): Deleted variable.
	(gnumach_v1_compat, repeater_node,cnode, arguments): Likewise.
	(options, ctrlaltbs, argp, xkb_ops, driver_xkb_ops): Likewise.
	(gnumach_v1_input_next, read_scancode): Deleted functions.
	(input_loop, xkb_start, xkb_init, parse_opt): Likewise.
	(xkb_start, xkb_fini, xkb_set_scroll_lock_status): Likewise.

2011-04-04  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix pfinet build from make dist-generated tarball
	* pfinet/Makefile (ARCHS): New variable.
	(LINUXSRCS): Move arch files to...
	(ARCHSRCS): here.
	(LINUXHDRS): Update.
	(LINUXNETHDRS): New variable.
	(ARCHHDRS): New variable.
	(FROBBEDLINUXHEADERS): Update.
	(ASMHEADERS): Update.
	(lndist-linux-inet-files, lndist-linux-files, lndist-asm-files): Remove
	targets.
	(lndist-linux-src-net-core-files, lndist-linux-src-net-ethernet-files,
	lndist-linux-src-net-ipv4-files, lndist-linux-src-net-ipv6-files,
	lndist-linux-src-asm-files, lndist-linux-src-include-asm-files,
	lndist-linux-src-include-linux-files, lndist-linux-src-include-net-files,
	lndist-glue-include-linux-files, lndist-glue-include-asm-files): New
	targets.
	(linux-src, linux-src/arch, linux-src/arch/%/lib, linux-src/include,
	linux-src/include/%, linux-src/net, linux-src/net/core,
	linux-src/net/ethernet, linux-src/net/ipv4, linux-src/net/ipv6,
	glue-include, glue-include/asm, glue-include/linux): New hurd-snap
	directory build targets.
	(lndist): Update target dependencies.

2011-04-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Remove reference to inexistent fatfs/EXTENSIONS
	* fatfs/Makefile (DIST_FILES): Remove.

	Ship only the root ChangeLog
	* Makeconf (distfiles): Remove ChangeLog.
	* Makefile (DIST_FILES): Add ChangeLog.

2011-04-03  Ludovic Courtès  <ludo@gnu.org>

	Remove `serverboot'; fix "make dist" in `mach-defpager'.
	* serverboot/default_pager.c, serverboot/kalloc.c, serverboot/queue.h,
	  serverboot/wiring.c, serverboot/wiring.h: Move to `mach-defpager/'.

	* serverboot/Makefile, serverboot/assert.h, serverboot/bootstrap.c,
	  serverboot/bunzip2.c, serverboot/def_pager_setup.c, serverboot/defs.h,
	  serverboot/dir.h, serverboot/disk_inode.h,
	  serverboot/disk_inode_ffs.h, serverboot/elf-load.c, serverboot/exec.c,
	  serverboot/ext2_file_io.c, serverboot/ffs_compat.c,
	  serverboot/ffs_compat.h, serverboot/ffs_file_io.c,
	  serverboot/file_io.c, serverboot/file_io.h, serverboot/fs.h,
	  serverboot/gets.c, serverboot/gunzip.c, serverboot/load.c,
	  serverboot/mach-exec.h, serverboot/minix_ffs_compat.c,
	  serverboot/minix_ffs_compat.h, serverboot/minix_file_io.c,
	  serverboot/minix_fs.h, serverboot/minix_super.h, serverboot/panic.c,
	  serverboot/strfcns.c: Remove.

	* mach-defpager/Makefile (LCLHDRS): New variable.
	  (vpath): Remove.
	  (CPPFLAGS): Remove `-I$(srcdir)/../serverboot'.

	* mach-defpager/setup.c (page_aligned): Make public.

2011-03-17  Marco Gerards  <metgerards@student.han.nl>

	Add XKB parser and implementation.
	* console-client/xkb/Compose: New file.
	* console-client/xkb/MISSING-FEATURES: Likewise.
	* console-client/xkb/README: Likewise.
	* console-client/xkb/TODO: Likewise.
	* console-client/xkb/compose.c: Likewise.
	* console-client/xkb/default.xkb: Likewise.
	* console-client/xkb/keysymdef.h: Likewise.
	* console-client/xkb/ks_tables.h: Likewise.
	* console-client/xkb/kstoucs.c: Likewise.
	* console-client/xkb/lex.l: Likewise.
	* console-client/xkb/makeconf.sh: Likewise.
	* console-client/xkb/parser.y: Likewise.
	* console-client/xkb/symname.c: Likewise.
	* console-client/xkb/xkb-data/keymap/hurd: Likewise.
	* console-client/xkb/xkb-data/symbols/hurd: Likewise.
	* console-client/xkb/xkb-data/types/hurd: Likewise.
	* console-client/xkb/xkb.c: Likewise.
	* console-client/xkb/xkb.h: Likewise.
	* console-client/xkb/xkbdata.c: Likewise.
	* console-client/xkb/xkbdefaults.c: Likewise.
	* console-client/xkb/xkbtimer.c: Likewise.

2011-03-06  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix auto-margin support
	* console/display.c (display_output_one): Allow user->cursor.col to become equal
	to width, add linefeed on next character insertion in such case.

	Use macro instead of hardcoded value
	* console/display.c (user_create): Use CONS_VERSION_MAJ_SHIFT macro instead
	of hardcoded value 16.

2011-03-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Deallocate thread ports on error
	* proc/info.c (S_proc_getprocinfo): Deallocate ports obtained from
	task_threads() call when an allocation error will be returned.

	Drop duplicate port deallocation
	* libdiskfs/io-reauthenticate.c (diskfs_S_io_reauthenticate): Do not
	deallocate parameter port `rend_port' whan an error will be returned.

	Fix duplicate port deallocation
	* libdiskfs/fsys-getroot.c (diskfs_S_fsys_getroot): Do not deallocate
	`dotdot' parameter port when an error will be returned.

	Drop duplicate assignment
	* libdiskfs/dir-renamed.c (checkpath): Drop duplicate np = target
	assignment.

2011-02-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add Buffers and Cached to /proc/meminfo
	* rootdir.c (rootdir_gc_meminfo): Add Buffers and Cached, set to 0.

	Fix S_pfinet_siocgifconf given -1 as amount
	* hurd/pfinet.defs (pfinet_siocgifconf): Document that -1 is used for "all
	interfaces".
	* pfinet/pfinet-ops.c (S_pfinet_siocgifconf): Compare amount with
	`(vm_size_t) -1' instead of '< 0' (which can never happen).

2011-02-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Reference TRANSLATOR in `-a' help message.
	* utils/settrans.c (options): Reference TRANSLATOR in `-a' help message.

2011-02-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Rephrase settrans' --help
	* utils/settrans.c (options): Rephrase -a and -p help to be more precise.

2011-02-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add comment about finish being called several times

2011-02-12  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Document that -p is the default option in settrans --help
	* utils/settrans.c (options): Document that -p is the default option for
	settrans.

2011-01-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add -s option to rpctrace
	* utils/rpctrace.c (strsize): New variable, defaults to 80.
	(options): Add 's' option.
	(main): Store 's' option value into `strsize'.
	(print_data): Limit the amount of printed characters to strsize.

2011-01-16  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix child lookups relative to new homedir
	* utils/login.c (main): Update `ports[INIT_PORT_CWDIR]' as soon as new cwd
	is determined according to HOME, since child lookups need to be relative to
	new homedir (e.g. for .hushlogin).

	Fix comment typo
	* utils/login.c (main): Fix comment typo.

2011-01-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Strictly adhere to the VGA register convention
	Not writing a value to the "enable display" register works for tested cards, but
	Linux writes a 0, and you can never know what manufacturers think.

	* console-client/vga-support.c (vga_exchange_palette_attributes): Write a
	0 value to the "enable display" register.

2010-12-25  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix NULL dereference
	* pfinet/linux-src/net/ipv6/ip6_fib.c (fib6_locate): Do not dereference fn
	when it is NULL.

	Remove bogus parenthesis
	* login/utmp.c (return_data): Remove bogus parenthesis.

	Fix NULL dereference
	* libps/spec.c (ps_emit_user_name): Do not dereference pw when it is NULL,
	dereference u instead.

	Fix NULL dereference
	* ftpfs/ftpfs.c (parse_startup_opt): Do not derefence sep when it is NULL.

2010-11-20  Diego Nieto Cid  <dnietoc@gmail.com>

	Avoid accessing invalid memory.
	* console/console.c (vcons_lookup): Unlock using cons instead of vcons->cons.

2010-11-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2010-11-20  Diego Nieto Cid  <dnietoc@gmail.com>

	Properly release console lock.
	The console lock was released only when there were no allocation errors
	leaving it locked in the event mmap failed.

	This patch moves the mutex_unlock call to a point in the flow of control
	where it is consistent with the lock acquisition.

	* console/console.c(netfs_get_dirents): Relocate mutex_unlock call to common
	return path.

2010-10-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix connect(AF_UNSPEC)
	Fixes sshd startup on inet6-enabled systems.

	* pfinet/socket-ops.c (S_socket_create_address): Accept creating
	AF_UNSPEC addresses too.
	* pfinet/linux-src/net/ipv6/udp_ipv6.c (udpv6_connect): When address
	family is AF_UNSPEC, call udp_connect() and clear daddr, saddr, and
	rcv_saddr.

2010-10-29  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix ipv6 pfinet build
	* pfinet/linux-src/net/ipv6/raw_ipv6.c (rawv6_init_sk): Replace
	yet-undefined raw6_sk with proper translation.

2010-10-29  Alexey Kuznetsov  <kuznet@ms2.inr.ac.ru>

	ipv6 raw fixes
	- RFC2292 bis compliance: enable checksumming of ICMPv6 raw
	sockets by default, reject odd offsets
	- calculate checksum correctly when user forgets to
	uninitialize checksum word

	* net/ipv6/raw_ipv6.c (rawv6_frag_cksum): Fix offset check. Compensate for any
	user-provided checksum.
	(rawv6_setsockopt): Reject odd checkum offsets with EINVAL.
	(rawv6_init_sk): Enable kernel-computed checksum by default for
	IPPROTO_ICMPV6 sockets.

2010-10-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix _ports_lock usage
	* libports/create-internal.c (_ports_create_port_internal): Add label after
	mutex_unlock(_ports_lock), use it where appropriate.

2010-10-18  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add \n to boot error message
	* boot/boot.c (main): Print \n after printing boot_script_error_string().

2010-10-11  Pino Toscano  <toscano.pino@tiscali.it>

	Fix return value on `getname' errors.
	This fixes the errno return value for getpeername() calls on not connected
	sockets: the return value of the `getname' call comes from the Linux code, so it
	is a negative value, in case of error.

	* pfinet/misc.c (make_sockaddr_port): Turn negative error values returned by
	`getname' calls into positive values before returning it.

2010-09-20  Zheng Da  <zhengda1936@gmail.com>

	Add device virtualisation support to boot
	* boot/boot.c: Add '-f' option.
	(dev_map): New structure.
	(dev_map_head): New variable.
	(add_dev_map): New function.
	(lookup_dev): New function.
	(parse_opt): Handle the '-f' option: call 'add_dev_map'.
	(ds_device_open): Try to call 'lookup_dev', and open the device from the
	device file if it succeeds.

2010-09-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add support for setting actual device flags
	* pfinet/ethernet.c (ethernet_change_flags): New function.
	* pfinet/pfinet.h (ethernet_change_flags): New declaration.
	* pfinet/iioctl-ops.c (S_iioctl_siocsifflags): Also call
	`ethernet_change_flags' after calling `dev_change_flags'.

2010-09-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge remote branch 'origin/master-zhengda'
	Conflicts:
	utils/rpctrace.c

2010-09-19  Manuel Menal  <mmenal@hurdfr.org>

	Fix port transmission over pflocal
	* pflocal/socket.c (S_socket_recv): Return transmitted port to caller
	thanks to MACH_MSG_TYPE_COPY_SEND instead of MACH_MSG_TYPE_MAKE_SEND
	(since this is a send right here).

2010-09-18  antrik  <antrik@users.sf.net>

	Obtain number of ports in proc and libps
	Add (and implement) a proc RPC to obtain the number of Mach ports used
	by the target task.

	Add infrastructure in libps to read this information.

	* hurd/process.defs (proc_getnports): New RPC.
	* hurd/process_request.defs (proc_getnports_request): New RPC.
	* libps/procstat.c (proc_stat_set_flags): Call proc_getnports RPC if
	needed.
	* libps/ps.h (proc_stat): New `num_ports' field.
	(PSTAT_NUM_PORTS): New macro.
	(proc_stat_num_ports): New macro.
	* libps/spec.c (ps_get_num_ports): New function.
	(ps_num_ports_getter): New variable.
	(specs): New entry for `ps_num_ports_getter'.
	* proc/info.c (S_proc_getnports): New function.

2010-09-18  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix net_bh_wakeup use
	* pfinet/sched.c (net_bh_worker): Use the net_bh_lock mutex instead of
	the global_lock mutex for the net_bh_wakeup condition variable.

2010-09-14  Jeremie Koenig  <jk@jk.fr.eu.org>

	Use 2 instead of 42 as the parent inode number
	* procfs.c (procfs_make_ino): Use 2 rather than 42 as a temporary hack,
	  since 2 is the root's inode with ext2fs.

	Use the user-provided kernel PID for uptime
	* rootdir.c (get_boottime, get_idletime): replace KERNEL_PID with the
	  opt_kernel_pid command-line option.
	* main.c (argp): Document the change.

	Add copyright notices
	* dircat.c, dircat.h, main.c, main.h, netfs.c, process.c, process.h,
	  procfs.c, procfs.h, procfs_dir.c, procfs_dir.h, proclist.c,
	  proclist.h, rootdir.c, rootdir.h: Add copyright notices.

2010-09-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Protect exec from memory faults
	* exec/exec.c (load_section): Call i`hurd_safe_copyin' instead of `memcpy'.
	Handle error case.
	(check_gzip): Likewise.
	(check_bzip2): Likewise.

	Fix compressed binaries execution
	* exec/exec.c (check_gzip.zipread): Add `n' to `zipread_pos' to fix infinite loop.
	(check_bzip2.zipread): Likewise.
	(check_gzip): Set `file_data' and `file_size' fields after calling `finish'
	instead of before.
	(check_bzip2): Likewise.

	Fix in-memory mapping
	* exec/exec.c (map): When e->file_data is not NULL, return it plus
	`posn'.
	(prepare_in_memory): Call prepare_stream to clear stream positions.

2010-09-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Enable debugging in mutex_try_lock too
	* libthreads/cthreads.h (mutex_try_lock): Call WAIT_SET_DEBUG when
	spin_try_lock succeeds.

2010-09-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	WAIT_DEBUG: permit to get function names instead of threads
	From the idea of Sergio Lopez.

	* libthreads/cthreads.h [WAIT_FUNC_DEBUG] (mutex): Replace struct
	cthread *holder field with const char *fname.
	(WAIT_CLEAR_DEBUG, WAIT_SET_DEBUG): New macros which clear and set fname
	or holder according to WAIT_FUNC_DEBUG and WAIT_DEBUG being defined.
	(mutex_init, mutex_unlock): Call WAIT_CLEAR_DEBUG in all cases instead of
	setting the `holder' field according to WAIT_DEBUG being defined
	(mutex_lock): Call WAIT_SET_DEBUG in all cases instead of setting the `holder'
	field according to WAIT_DEBUG being defined.

2010-08-31  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Document incoherency for storage of task_events_info
	It doesn't produce any bug ATM just because GNU Mach does not support it.

	* libps/ps.h (struct proc_stat): Document that task_events_info is currently
	actually fetched into proc_info.

2010-08-31  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make proc not claim it was able to fetch PI_FETCH_TASKEVENTS
	    * proc/info.c (S_proc_getprocinfo): Clear PI_FETCH_TASKEVENTS from
	    `flags' when task_info.

2010-08-30  Jeremie Koenig  <jk@jk.fr.eu.org>

	Update the to-do list.
	* TODO: Add more entries.

	Add some comments in rootdir.c
	* rootdir.c: Add page breaks to separate sections and add header
	  comments for them.

	Add swap information to the top-level stat file
	* rootdir.c (rootdir_gc_meminfo): Add swap information.
	* TODO: Update.

	Add a PROFILE mode
	* Makefile: Change FOOFLAGS defaults to appropriate values when
	  $(PROFILE) is defined.
	* rootdir.c: Add an "exit" file, which causes exit to be called
	  when looked up, so that profiling data can be written to disk.

	Fix leak in error case
	* process.c (process_lookup_pid): Fix leak in error case.

2010-08-30  Jeremie Koenig  <jk@jk.fr.eu.org>

	Refresh nodes when they're read from the start.
	This is necessary for top, for instance, which keeps some files open and
	re-reads them regularly. As an extra bonus we can drop the refresh hack.

	* procfs.c, procfs.h: Remove the refresh hack.
	  (procfs_refresh): New function, invalidates the cached contents.
	* netfs.c (netfs_attempt_read, netfs_get_dirents): Call
	  procfs_refresh when the read is from offset 0.
	* proclist.c (proclist_make_node): Remove the refresh hack.
	* dircat.c (dircat_make_node): Likewise.
	  (dircat_get_contents): Use procfs_refresh to avoid keeping old data
	  from the component nodes.

2010-08-30  Jeremie Koenig  <jk@jk.fr.eu.org>

	Make sure the clock never runs backwards.
	* process.c, rootdir.c: When converting timeval structures
	  into seconds or jiffies, make sure that floating point rounding errors
	  don't make the clock the result jump backwards on second boundaries.

	Fix the global idle time
	* rootdir.c: Replace INIT_PID by KERNEL_PID, for boot time and
	  idle time purposes.  (get_idletime): New function, queries the
	  kernel's idle thread.  (rootdir_gc_uptime, rootdir_gc_stat): Use the
	  new function and provide the real idle time.

	Cleanup pass on process.c
	* process.c: Reorder some of the code.  Improve comments.
	  Jiffies and clock tick are the same thing, right?  Replace the stat
	  mode and cleanup hacks by more straightforward solutions.

	Revamp procfs_dir
	* procfs_dir.c, procfs_dir.h: Revamp the interface to make
	  the more complicated use cases somewhat less hackish.
	* process.c: Update, specify a default make_node function.
	* rootdir.c: Likewise; make this optional "self" link use case
	  somewhat less hackish.

	Improve the interface for dircat_make_node
	* dircat.c, dircat.h (dircat_make_node): Use an explicit
	  array size for DIRS, fail with ENOMEM is any of them is NULL, and
	  release the reference on the non-NULL nodes on any error.
	* main.c (root_make_node): Use the new interface.

	Detect asprintf's ENOMEM in procfs.c rather than everywhere
	* procfs.h: Make CONTENTS_LEN an ssize_t rather than a size_t,
	  and document the change.
	* procfs.c (procfs_get_contents): Initialize CONTENTS_LEN to a
	  negative value, and fail with ENOMEM if it's still negative after the
	  callback returns.  (everywhere): Update to ssize_t.
	* dircat.c, netfs.c, process.c,
	  procfs_dir.c, proclist.c, rootdir.c: Update to
	  ssize_t and the new GET_CONTENTS semantics.

	Make contents a char* to avoid typecasts all over the place
	* procfs.h (procfs_cleanup_contents_with_free,
	  procfs_cleanup_contents_with_vm_deallocate, procfs_get_contents,
	  struct procfs_ops): Change CONTENTS from a void pointer to a char one.
	* dircat.c, netfs.c, process.c, procfs.c,
	  procfs_dir.c, proclist.c, rootdir.c: Update.

	Remove the unused procfs_file module
	* procfs_file.c, procfs_file.h: Remove.
	* Makefile: Remove procfs_file.

	Fix the handling of processes without an owner
	* main.c (argp_parser): New option --anonymous-owner.
	* main.h: Publish it.
	* process.c (process_lookup_pid): Use it to set the file owner
	  uid of non-owned processes.

	Use a global ps_context
	* proclist.c, proclist.h (proclist_create_node): Use a
	  ps_context passed by the caller; errors are no longer possible, rename
	  to proclist_make_node and change the signature accordingly.
	* rootdir.c, rootdir.h (rootdir_create_node): Likewise.
	* main.c (main): Create the ps_context here and pass it to
	  root_make_node.  (root_make_node): Pass it to proclist_make_node and
	  rootdir_make_node.

	Add a TODO-list
	* TODO: New file.

	netfs_server_loop never returns
	* main.c: Don't call netfs_server_loop repeatedly; it should
	  never return.

	Handle errors in main
	* main.c (main): Handle errors from argp_parse and
	  root_make_node.

	Add a --compatible option
	* main.c (argp_parser): Add --compatible, which sets the options
	  required for compatibility with the procps tools.

	Add a status file to process directories
	* process.c: Add a status file.

	Add statm to process directories
	* process.c: Add the statm file.

	Add a global cmdline file
	* main.c (argp_parser, main): Add the --kernel-pid option.
	* main.h: Publish it.
	* rootdir.c (rootdir_gc_cmdline): New function.

	Add meminfo and vmstat
	* rootdir.c: Add a (non-empty) meminfo and a vmstat file.

	Add a fake-self option to control the self symlink
	* main.c (argp_parse, main): Add the --fake-self option.
	* main.h: Publish it.
	* rootdir.c (rootdir_gc_fakeself, rootdir_entries,
	  rootdir_create_node): Use it.

	Add --stat-mode to override the perms for [pid]/stat
	* main.c (argp_parser, main): Add the --stat-mode option.
	* process.c (process_lookup_pid): Use it.

	Add --clk-tck to set the clock unit
	* main.c (argp_parser, main): Add and parse the --clk-tck option.
	* main.h: Publish opt_clk_tck.
	* process.c (sc_tc): Use the user-provided clock frequency.
	* rootdir.c (rootdir_gc_stat): Likewise.

	Play nice with the procps old_Hertz_hack
	* rootdir.c (rootdir_gc_uptime, rootdir_gc_stat): assume a
	  completely idle rather than completely busy system, so that the idle
	  seconds can be meaningfully divided by the idle jiffies by procps.

	Add an empty meminfo root file
	* rootdir.c: Add "meminfo", empty for now.

	Add a fake "self" symlink
	* rootdir.c: Add a fake "self" symlink which always points to
	  init.

	Add loadavg
	* rootdir.c: Add the root file "loadavg".

	New root files: version, uptime, stat
	* rootdir.c, rootdir.h: New files.
	* main.c: Use rootdir_create_node.
	* Makefile: Add the rootdir module.

	Set a restrictive mode on some sensitive files
	* process.c (process_file_make_node, entries): Set the environ
	  and stat files as readable only by the owner of the process.

	Encapsulate access to node->nn_stat
	* procfs.c, procfs.h (procfs_node_chown,
	  procfs_node_chmod, procfs_node_chtype): New functions, encapsulate
	  access to some nn_stat fields.
	* process.c (process_lookup_pid): Use procfs_node_chown instead
	  of direct access.

	Implement symlinks
	* netfs.c (netfs_validate_stat): For symlinks, fetch the contents
	  and propagate their length into the nn_stat.st_size field.
	  (netfs_attempt_readlink): Implement using procfs_get_contents.

	Use libps and enhance [pid]/stat
	* Makefile: Add libps to the $(LIBS).
	* proclist.c, proclist.h: Embed the proc server port in a
	  ps_context structure. (proclist_make_node): Change to prototype to
	  allow for the possibility of error.  Rename to proclist_create_node to
	  reflect the change and non-triviality.
	* process.c, process.h: Revamp.  Use a full-blown procstat
	  structure instead of just the procinfo fetched from the process
	  server.  Use the additional data to complement [pid]/stat.
	  (process_lookup_pid): Get a ps_context structure instead of a port to
	  the process server.
	* main.c (root_make_node): Convert to the new interface for
	  proclist_create_node.

	Handle the ref counter spinlock on cleanup
	* netfs.c (netfs_node_norefs): Handle the reference counters
	  spinlock so as to avoid deadlocking on reentry.

	Invent path-based inode numbers
	* procfs.h, procfs.c (procfs_make_ino): New function,
	  invents an inode number by hashing the parent's and the name of an
	  entry.  (procfs_lookup): Use it to assign an inode number to child
	  nodes at lookup time.
	* main.c (root_make_node): Assign an arbitrary inode number to
	  the root directory.

	Implement lookup for . and ..
	* procfs.c (procfs_lookup): Keep track of the parent directory,
	  implement the lookup of the dot-directories.  (procfs_cleanup):
	  Release the reference to the parent node, if applicable.
	* procfs.h: Add a comment about the parent reference.
	* netfs.c (netfs_attempt_lookup): Lock the looked up node after
	  the directory has been unlocked, in case they are the same.

	Add the dot entries to directories
	* procfs_dir.c (procfs_dir_get_contents): Prepend the . and ..
	  entries to the ones from the given table.

	Add a basic [pid]/stat file
	* process.c: Add a basic stat file.

	Set the owner of process directories.
	* process.c (process_make_node): Use the owner_uid from the
	  procinfo structure to set the owner of the created directory.

	Fuse the proclist into the root node
	* dircat.c, dircat.h: New files, merge directories.
	* Makefile: Add the dircat module.
	* main.c: Use dircat to merge the proclist into the root
	  directory, instead of having it as a stand-alone one.
	* procfs.h, procfs.c: Add a "refresh hack" to have the
	  contents of the root directory recreated on each request.
	* proclist.c (proclist_make_node): Enable the hack in question.

	Fetch process information and reject the non-existing ones
	* process.c, process.h (process_make_node): Make static,
	  include a procinfo structure into the node information.
	  (process_lookup_pid): New function, replaces process_make_node as the
	  outer interface, returns an error for non-existing processes.
	* proclist.c (proclist_lookup): Convert to the new interface.

	Add real process nodes
	* process.c, process.h: New files, implement a process
	  directory with cmdline and environ files.
	* Makefile: Add the process module.
	* proclist.c: Replace stub pid files with the real thing.

	More cleanup possibilities
	* procfs.c, procfs.h: Extend the signature of the
	  cleanup_contents callback in the procfs_node_ops structure to include
	  the hook and contents_len.  (cleanup_contents_with_free,
	  cleanup_contents_with_vm_deallocate): New functions, can be used as
	  a cleanup_contents callback for simple cases.
	* procfs_dir.c, procfs_dir.h (procfs_dir_make_node):
	  Update, add a cleanup callback, make sure the cleanup callback is
	  invoked if there is an error.
	* proclist.c (proclist_make_node), main.c (main): Update to match
	  the new interfaces.

	Fix the failure semantics of procfs_make_node
	* procfs.c (procfs_make_node): Invoke the cleanup callback on
	  failure, so that callers don't have to.
	* procfs.h: Document the change.
	* procfs_dir.c (procfs_dir_make_node), procfs_file.c
	  (procfs_file_make_node), proclist.c (proclist_make_node):
	  Update to reflect the change.

	Add the list of processes as a directory
	* proclist.h, proclist.c: New files.
	* main.c: Add a proclist directory based on them.
	* Makefile: Include the proclist module.

	Implement simple directories
	* procfs_dir.h: New file; declare the procfs_dir_make_node
	  function, based on the procfs_dir_entry structure.
	* procfs_dir.c: New file; implement simple directories.
	* Makefile: Add the procfs_dir module.
	* main.c: Use it.

	Add a helper module for simple regular files
	* procfs_file.h: New file, declares procfs_file_make_node.
	* procfs_file.c: New file, implements procfs_file_make_node.
	* main.c: Use them.
	* Makefile: Add the procfs_file module.

	Basic infrastructure
	* procfs.h: New file; basic interfaces for procfs nodes.
	* procfs.c: New file; implement the basic infrastructure.
	* netfs.c: New file; bridge libnetfs and the procfs interfaces.
	* main.c: New file; mostly a "Hello, World!" for now.
	* Makefile: New file; standalone for now.

2010-08-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Regenerate

2010-08-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Revert "Fix tmpfs assertion"
	As discussed up to
	http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00021.html
	this reverts commit 97c5690abeaa88767acf2ffbb55552e8278052c8 and removes the
	corresponding assertion. This is related to commit
	2f7f90ce15cce79ef83a8d273e3a27b5b527c7d7
	which changes how much st_size is increased.

	* tmpfs/tmpfs.h (tmpfs_dirent): Remove `padding' field.
	* tmpfs/dir.c (diskfs_get_directs): Remove assertion on the position of the
	`name' field of struct tmpfs_dirent compared to the position of the `d_name'
	field of struct dirent.

2010-08-27  Carl Fredrik Hammar  <hammy.lite@gmail.com>

	Fix malloc size in tmpfs
	* tmpfs/dir.c (diskfs_direnter_hard): Fix malloc size.

2010-08-27  Da Zheng  <zhengda1936@gmail.com>

	Fix a gcc warning.
	* utils/rpctrace.c (print_contents): Put the if statement in braces.

2010-08-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix comment on when Mach would try to clear tmpfs data
	* tmpfs/node.c (diskfs_get_filemap): Fix comment according to second
	patch from Sergio Lopez.

2010-08-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Keep a reference on objects to preserve their content.
	Modify tmpfs to keep a reference (by mapping it into its
	own space) to each memory object created by the user, so they don't get
	inmediately terminated at the end of the current operation.

	* tmpfs/tmpfs.h (struct disknode): Add `memref' field.
	* tmpfs/node.c (diskfs_get_filemap): vm_map() the first page of the
	newly-allocated object, store in `memref' field.
	(diskfs_free_node) vm_deallocate the page pointed by `memref' field.

2010-08-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix default_pager default_pager_object_set_size parameters
	As suggested by Sergio Lopez.

	* serverboot/default_pager.c (S_default_pager_object_set_size): Exchange
	`seqno' and `reply_to' parameters.

2010-08-27  Sergio Lopez  <sergio.lopez@sinrega.org>

	make unblocked reads from external objects return a zeroed page.
	* serverboot/default_pager.c (struct dstruct): Add boolean_t external field.
	(default_pager_add): Set ds->external to TRUE or FALSE depending whether the
	object is external.
	(default_read): Add external parameter.  If no_block(block) returns 1, if
	external is TRUE, zero fill the page and return PAGER_SUCCESS instead of
	PAGER_ABSENT.
	(seqnos_memory_object_data_request): Pass ds->external as additional
	parameter to default_read.

	Fix missing mutex unlock.
	* serverboot/default_pager.c (pager_read_offset): Properly unlock the mutex
	before returning NO_BLOCK.

2010-08-26  Jeremie Koenig  <jk@jk.fr.eu.org>

	libps (proc_stat_set_flags): Fix pointer signedness warning
	* libps/procstat.c (proc_stat_set_flags): Cast &ps->umask into (int*)
	before calling ps_msg_get_init_int.

2010-08-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd

2010-08-26  Jeremie Koenig  <jk@jk.fr.eu.org>

	libps (fetch_procinfo): Fix non-set flag PSTAT_TASK_EVENTS
	The fetch_procinfo function failed to set the PSTAT_TASK_EVENTS when
	those has been retreived. It should be noted that GNU Mach does not
	support the TASK_EVENTS_INFO flavor, so this is of minor importance.

	The new code also checks that all the requested proc server flags
	related to a given proc_stat flags have been returned before setting the
	proc_stat flag in question.

	* libps/procstat.c (fetch_procinfo): Add map array containing `ps_flags_t' and
	`procinfo' flags.  Use it in a loop to check for flags in `need' and `have' and
	set them in `pi_flags'.  Likewise to check for flags in `pi_flags' and set them
	in `have'.

2010-08-26  Jeremie Koenig  <jk@jk.fr.eu.org>

	libps (_proc_stat_free): Fix memory leak
	The thread_waits field was never freed; this change adds the code to do
	so if the corresponding flag is set.

	Users are also warned of the consequences, namely, that they should not
	free process proc_stats before all their associated thread ones are
	gone, since the latter may reference the former's thread_waits field.
	However, with the normal interface (ie.  ps_context_free), all
	proc_stats are freed at once, so this is not an issue.

	* libps/procstat.c (_proc_stat_free): Free ps->thread_waits if
	PSTAT_THREAD_WAITS flag is set.
	* libps/ps.h (_proc_stat_free): Document that thread proc_stats must be
	freed before process proc_stat can be.

2010-08-26  Jeremie Koenig  <jk@jk.fr.eu.org>

	libps: Fix deadly typo
	PSTAT_PROCINFO is a set of flags, some of which can be obtained in
	alternative ways. In this case, _proc_stat_free will try to deallocate
	an uninitialised field. PSTAT_PROC_INFO is the flag we want.

	* libps/procstat.c (_proc_stat_free): Use PSTAT_PROC_INFO instead of
	PSTAT_PROCINFO.

2010-08-18  Jeremie Koenig  <jk@jk.fr.eu.org>

	Implement /proc/mounts as a symlink to /etc/mtab
	* procfs_nonpid_files.c (procfs_create_mounts): New function.
	* procfs_dir.c (procfs_fill_root_dir): Call procfs_create_mounts.

	Set an appropriate st_mode on symlinks.
	* procfs_pid_files.c (update_pid_entries): When symlink_target is not NULL, set
	st_size to the symlink length and st_mode to S_IFLNK | 0777.

	update_pid_entries(): fix awkwardly indented uninitialized memory leak
	* procfs_pid_files.c (update_pid_entries): Replace dynamic allocation of
	`stat' with automatic allocation. Memset `stat' to 0.

2010-08-18  Jeremie Koenig  <jk@jk.fr.eu.org>

	Fix the build system to handle part stores
	Part stores are used for debian-installer, and they're considered more
	elegant than kernel partition devices. This patch makes sure they're
	included in the build unless the user disables them explicitely.

	* Makeconf: add $(PARTED_LIBS) to static binaries which use libstore_part.a.
	* configure.in: look for libparted again (see also 7c7a04eb).
	* libstore/Makefile (store-types): include the 'part' store type when
	  appropriate, remove the previous attempt.

2010-08-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Partially revert 8451b436 to fix halt/reboot
	init/init.c (S_msg_sig_post_untraced): Ignore result of
	msg_sig_post_untraced_reply.
	(S_msg_sig_post): Likewise.

2010-08-01  Olaf Buddenhagen  <antrik@users.sf.net>

	pfinet: check return value of mmap() in S_io_read() and S_socket_recv()
	* pfinet/io-ops.c (S_io_read): Check return value.
	* pfinet/socket-ops.c (S_socket_recv): Likewise.

2010-08-01  Ludovic Courtès  <ludo@gnu.org>

	Fix "make dist" in `sutils'.
	* sutils/Makefile (SRCS): Add `clookup.c', `fstab.c', and `update.c'.

	Fix "make dist" in `libthreads'.
	* libthreads/Makefile (lndist, lndist-map-file): New targets.  Link
	  `libthreads.map' to the distribution directory.

	Fix "make dist" in `libcons'.
	* libcons/Makefile (LCLHDRS): Add `$(installhdrs)'.

	Fix "make dist" in `include'.
	* include/Makefile (lndist): New target.  Copy `Makefile' and
	  `$(installhdrs)' to the distribution directory.

	Fix "make dist" in `exec'.
	* exec/Makefile (SRCS): Refer to `$(gzip-sources)' and
	  `$(bzip2-sources)' instead of listing files individually.
	  (gzip-sources, bzip2-sources): New variable.
	  (gzip-objects, bzip2-objects): Derive from the above variables.

	Fix "make dist" in `daemons'.
	* daemons/Makefile (SRCS): Add `runsystem.sh'.

2010-08-01  Ludovic Courtès  <ludo@gnu.org>

	Fix "make dist" in `console-client'.
	This patch updates the list of headers to be included in the
	distribution, and makes it so that `kdioctlServer.c' isn't built and
	distributed by "make dist".

	* console-client/Makefile (PC_KBD_SO_SRCS): Remove `kdioctlServer.c'.
	  (LCLHDRS): Remove `vga.h', add `vga-support.h' and `trans.h'.
	  (OBJS): Add `kdioctlServer.o'.
	  (pc_kbd.so.$(hurd-version)): Add dependency on `kdioctlServer_pic.o'.

2010-08-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix copyrights

2010-08-01  Jeremie Koenig  <jk@jk.fr.eu.org>

	Add wide character support to the Hurd console
	* hurd/console.h (CONS_WCHAR_MASK, CONS_WCHAR_CONTINUED): New macros.
	* console/console.c: Include <locale.h>
	(main): Call setlocale.
	* console/display.c (display_output_one): Call wcwidth() to know the
	width of the character to be displayed. Iterate over this with to insert
	characters with the additional CONS_WCHAR_CONTINUED flag. Update
	screen_shift_right and display_record_filechange calls accordingly.
	* console-client/vga-dynafont.c (WCHAR_BOLD, WCHAR_ITALIC, WCHAR_MASK):
	Change macro values.
	(dynafont_new): Use glyph->bbox.{width,height} instead of
	df->font->bbox.{width,height}.
	(dynafont_change_font): Likewise.
	(dynafont_lookup_internal): Likewise.
	Mask out CONS_WCHAR_CONTINUED before calling bdf_find_glyph, but test it
	for the second position of a double-width glyph.
	(dynafont_activate): Enable 9-bit width only when font width is not
	dividable by 8.

2010-08-01  Thomas Schwinge  <thomas@schwinge.name>

	Switch to the new ChangeLog style.
	* ChangeLog: Wipe out content, and add instructions about how to get it back.

2010-08-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Simplify error exit path
	* libpager/data-request.c (_pager_seqnos_memory_object_data_request):
	Use allow_release_out label instead of re-doing unlocks by hand.

2010-08-01  Jeremie Koenig  <jk@jk.fr.eu.org>

	Fix swap on large devices
	DEV_GET_SIZE values overflow with large devices, rather use
	DEV_GET_RECORDS.

	* mach-defpager/setup.c (S_default_pager_paging_storage): Use DEV_GET_RECORDS
	instead of DEV_GET_SIZE.

2010-08-01  Jeremie Koenig  <jk@jk.fr.eu.org>

	Implement file_replarent in libtrivfs
	* libtrivfs/file-reparent.c (trivfs_S_file_reparent): Call
	trivfs_S_io_duplicate.

2010-08-01  Jeremie Koenig  <jk@jk.fr.eu.org>

	Fix libdiskfs bootstrap race condition
	exec_exec() probably triggers a call to file_exec(), so the exec server
	port needs to be cached earlier.

	* libdiskfs/boot-start.c: Move caching the exec server port to just
	after initializing it.

2010-08-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	2010-05-31  Samuel Thibault  <samuel.thibault@ens-lyon.org>
	        * procfs_nonpid_files.c (procfs_read_nonpid_meminfo): Print swap sizes
	        using %llu.

	2008-12-12  Samuel Thibault  <samuel.thibault@ens-lyon.org>
	* procfs_nonpid_files.c (procfs_read_nonpid_meminfo): Divide by
	1024 value returned by get_swap_size and get_swap_free to get
	kilobytes.

2010-08-01  Madhusudan.C.S  <madhusudancs@gmail.com>

	2008-09-02  Madhusudan.C.S  <madhusudancs@gmail.com>
	* netfs.c: (netfs_get_dirents): Add call to
	procfs_dir_entries_remove().

	2008-08-30  Madhusudan.C.S  <madhusudancs@gmail.com>
	*  procfs_dir.c: (procfs_dir_create): Assign newly created directory to
	its pointer in netnode.
	(procfs_dir_remove): Removed function.
	(free_entry): New function.
	(ordered_unlink): Likewise.
	(delete): Likewise.
	(sweep): Likewise.
	(procfs_dir_entries_remove): Likewise.
	(is_in_pid_list): Removed call to make_dir_invalid ().
	(procfs_fill_root_dir): struct stat *stat ->  struct stat stat.
	Add Read and Execute permissions to all in stat.st_mode.
	Set stat.st_nlink to 1.
	Set stat.st_size to 0.
	Add struct proc_stat *ps definition.
	Set struct proc_stat data from _proc_stat_create () function and
	set stat.st_uid and stat.st_gid from the data in that structure.
	* procfs_pid_files.c: (update_pid_entries): Add Read permissions
	to all in stat->st_mode.

	2008-08-29  Madhusudan.C.S  <madhusudancs@gmail.com>
	* AUTHORS: File removed.
	* COPYING: Likewise.
	* README: Likewise.

	2008-08-29  Madhusudan.C.S  <madhusudancs@gmail.com>
	* ChangeLog: Revised.

	2008-08-29  Madhusudan.C.S <madhusudancs@gmail.com>
	        * Makefile: (Copyright): 1997, 2000 -> 2008
	        (CC): Removed.
	        (CFLAGS): Removed.
	        (INCLUDES): Removed.
	        (all): Removed.
	        ($(target)): Removed.
	        (%.o): Removed.
	        (HURDLIBS): -lnetfs -> netfs,
	        -lfshelp -> fshelp,
	        -liohelp -> iohelp, -lthreads -> threads,
	        -lports -> ports, -lihash -> ihash,
	        -lps -> ps,
	        -lshouldbeinlibc -> shouldbeinlibc.
	        (include): Add include ../Makeconf

	2008-08-18  Madhusudan.C.S <madhusudancs@gmail.com>
	        * procfs_nonpid_files.c:
	        (procfs_write_nonpid_stat): Changed to
	        procfs_read_nonpid_stat.
	        (procfs_write_nonpid_meminfo): Changed to
	        procfs_read_nonpid_meminfo.
	        (procfs_write_nonpid_loadavg): Changed to
	        procfs_read_nonpid_loadavg.
	        (procfs_write_nonpid_uptime): Changed to
	        procfs_read_nonpid_uptime.
	        (procfs_write_nonpid_version):Changed to
	        procfs_read_nonpid_version.
	        * procfs_pid_files.c:
	        (procfs_write_stat_file): Changed to
	        procfs_read_stat_file.
	        Changed the comment correspondingly from
	        Write to Read.
	        (procfs_write_cmdline_file ): Changed to
	        procfs_read_cmdline_file.
	        Changed the comment correspondingly from
	        Write to Read.
	        (procfs_write_status_file): Changed to
	        procfs_read_status_file.
	        Changed the comment correspondingly from
	        Write to Read.
	        (procfs_write_statm_file): Changed to
	        procfs_read_statm_file.
	        Changed the comment correspondingly from
	        Write to Read.
	        (procfs_write_files_contents): Changed to
	        procfs_read_files_contents.
	        Changed the comment correspondingly from
	        Write to Read.
	        Changed the call to procfs_write_nonpid_stat
	        to procfs_read_nonpid_stat.
	        Changed the call to procfs_write_stat_file
	        to procfs_read_stat_file.
	        Changed the call to procfs_write_cmdline_file
	        to procfs_read_cmdline_file.
	        Changed the call to procfs_write_status_file
	        to procfs_read_status_file.
	        Changed the call to procfs_write_statm_file
	        to procfs_read_statm_file.
	        Changed the call to procfs_write_nonpid_meminfo
	        to procfs_read_nonpid_meminfo.
	        Changed the call to procfs_write_nonpid_loadavg
	        to procfs_read_nonpid_loadavg.
	        Changed the call to procfs_write_nonpid_uptime
	        to procfs_read_nonpid_uptime.
	        Changed the call to procfs_write_nonpid_version
	        to procfs_read_nonpid_version.
	        netfs.c: (netfs_attempt_read): Changed
	        the call from procfs_write_files_contents
	        to procfs_read_files_contents.

	2008-08-18  Madhusudan.C.S <madhusudancs@gmail.com>
	        * README: Initial Documentation.

	2008-08-18  Madhusudan.C.S <madhusudancs@gmail.com>
	        * procfs_nonpid_files.c: (get_uptime):
	        Changed the parameter type from double to
	        struct timeval.
	        Changed the parameter name from uptime_secs
	        to uptime.
	        Removed uptime variable.
	        Changed timersub to use the passed pointer
	        instead of the local variable.
	        Removed the calculation of uptime_secs.
	        (get_total_times): Changed the parameters
	        type from double to struct timeval.
	        Changed the parameters name from
	        total_user_time_secs to total_user_time
	        and total_system_time_secs to
	        total_system_time.
	        New variables total_user_time_tmp,
	        total_system_time_tmp and tmpval of type
	        struct timeval.
	        Call timerclear to clear the tmp variables.
	        Remove calculation of times in seconds and
	        do the same on struct timeval variables
	        throughout using the timeradd macro.
	        Assign values of temporary local variables
	        to the pointers passed as parameters.
	        (procfs_write_nonpid_stat): Replaced
	        variables that hold time in seconds with
	        struct timeval type variables and jiffy_t
	        type variables.
	        Argument to get_uptime changed from
	        uptime_secs to uptime.
	        Arguments to get_total_times changed from
	        total_user_time_secs to total_user_time and
	        total_system_time_secs to total_system_time.
	        Replace arithematic time subtraction with
	        timersub macro.
	        Convert all the times in struct timeval type
	        variables to jiffy_t type.
	        Changed the type casting for the asprintf
	        arguments to be compatible with jiffy_t type.
	        (procfs_write_nonpid_uptime): Replaced
	        variables that hold time in seconds with
	        struct timeval type variables.
	        Argument to get_uptime changed from
	        uptime_secs to uptime.
	        Arguments to get_total_times changed from
	        total_user_time_secs to total_user_time and
	        total_system_time_secs to total_system_time.
	        Replace arithematic time subtraction with
	        timersub macro.
	        Convert all the times in struct timeval type
	        variables to seconds.

	2008-08-18  Madhusudan.C.S <madhusudancs@gmail.com>
	        * procfs_nonpid_files.c:
	        (procfs_write_nonpid_version): New function.
	        * procfs_pid_files.c:
	        (procfs_write_files_contents): Add a check
	        to find if the read is requested for the
	        version file and corresponding a call to it.

	2008-08-14  Madhusudan.C.S <madhusudancs@gmail.com>
	        * procfs.h: (jiffy_t): New typedef.
	        * procfs_pid.h: "procfs.h" is included.
	        (struct procfs_pid_files): Changed all the
	        occurrences of time_t to jiffy_t.
	        * procfs_pid_files.c: Removed "procfs.h".
	        (adjust_jiffy_time): Changed return type
	        from time_t to jiffy_t.
	        Changed the type of jiffy_time variable
	        from time_t to jiffy_t.
	        (get_live_threads_time): Changed the type
	        of utime and stime from time_t to jiffy_t.
	        (get_stat_data): Changed the type of utime
	        and stime from time_t to jiffy_t.

	2008-08-18  Madhusudan.C.S <madhusudancs@gmail.com>
	* procfs/ChangeLog: ChangeLog: Revised.

	2008-08-14  Madhusudan.C.S <madhusudancs@gmail.com>
	* ChangeLog: New file added to procfs
	* AUTHORS: New file added to procfs
	* COPYING: New file added to procfs
	* README: New file added to procfs
	* Makefile: New file added to procfs
	* bootstrap.c: New file added to procfs
	* netfs.c: New file added to procfs
	* node.c: New file added to procfs
	* procfs.c: New file added to procfs
	* procfs.h: New file added to procfs
	* procfs_dir.c: New file added to procfs
	* procfs_nonpid_files.c: New file added to procfs
	* procfs_pid.h: New file added to procfs
	* procfs_pid_files.c: New file added to procfs

2010-07-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix -g/-m console vga driver options
	* console-client/vga.c (parse_opt): Reverse -g and -m option effect to
	match documentation.

2010-07-17  Emilio Pozuelo Monfort  <pochu27@gmail.com>

	Implement getsockopt (fd, SOL_SOCKET, SO_TYPE)
	* pflocal/socket.c (S_socket_getopt): Add SO_TYPE support.
	(S_socket_setopt): Fix return value.

2010-06-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Revert "Call device_close on store closure"
	This reverts commit 1bb5a381a2e2f345beb1ca8d019b6174b13bb125.

	storeio can actually pass the device port to other processes, through
	file_get_storage_info for instance, these may then want to use it, even after
	storeio has closed its port.

2010-06-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix memory leak on receive error
	* pfinet/io-ops.c (S_io_read): On error, free data array if it was
	allocated.

	Fix memory leak on schedule_timeout
	* pfinet/glue-include/linux/sched.h (schedule_timeout): Make the
	automatically-allocated wait_queue pointer static instead of dynamic (and lost).

2010-06-25  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Call device_close on store closure
	* libstore/device.c (dclose): Call device_close before deallocating the device
	port.

2010-06-23  Jeremie Koenig  <jk@jk.fr.eu.org>

	Ignore the "defaults" mount option
	* utils/mount.c (do_mount): Ignore the "defaults" option.

2010-06-18  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Build part only when parted support is enabled
	* libstore/Makefile (store-types): Remove part.
	  [HAVE_PARTED] (store-types): Add part.
	  [HAVE_PARTED] (libstore.so-LDLIBS): Add -lparted.

	Fix parted support
	* libstore/Makefile (store-types): Add part.
	* libstore/part.c: Do not include <parted/device_gnu.h>
	  (PED_SECTOR_SIZE): Define to PED_SECTOR_SIZE_DEFAULT if undefined.
	  (store_part_create): Do not check value returned by ped_disk_destroy.

2010-05-26  Carl Fredrik Hammar  <hammy.lite@gmail.com>

	Fix --version in scripts
	* Makeconf (%): Don't depend on removed files.  Remove excess backslashes.

2010-03-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix allowing termination on some error path
	        * libpager/data-request.c (_pager_seqnos_memory_object_data_request):
	        when _pager_pagemap_resize returns an error, instead of goto
	        release_out, goto new label allow_release_out thats calls
	        _pager_allow_termination before proceeding with release_out.

2010-02-07  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix ext2fs mount with sparse store
	2010-02-06  Carl Fredrik Hammar  <hammy.lite@gmail.com>

	* ext2fs/storeinfo.c (diskfs_S_file_get_storage_info):
	        Return EOPNOTSUPP instead of store if file contains holes.

2010-02-07  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix ps segfault when given empty format string
	2010-02-02  Carl Fredrik Hammar  <hammy.lite@gmail.com>

	* utils/ps.c (main): Move format parsing to parse_opt() and pass
	state to parse_enum().

2010-01-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix tmpfs assertion
	* tmpfs/tmpfs.h (tmpfs_dirent): Add padding field to push the
	name field after its position in struct dirent.

	Make MAKEDEV bash-free
	* sutils/MAKEDEV.sh (cmd, st, lose, mkdev): Remove function, add
	().
	(mkdev): Use ${I#???} instead of ${I:3}.

2009-12-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix duplicate port deallocation on error
	* proc/info.c (S_proc_register_version): Do not deallocate port
	`credential' when err != 0.

2009-12-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix exec shell check for really small files
	* exec/hashexec.c (check_hashbang): Set `e->error' to 0 before
	calling map(). On error, check `e->error' instead of `errno', and
	default `e->error' to ENOEXEC.

2009-12-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix duplicate port deallocation
	* proc/notify.c (do_mach_notify_dead_name): Do not call
	mach_port_deallocate on `deadport' on failure.

2009-12-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix duplicate oldtask port deallocation
	* exec/exec.c (do_exec): Do not deallocate oldtask when
	newtask != oldtask before the `out:' label since it is done
	again after it.

	Fix spurious newport deallocation
	* auth/auth.c (S_auth_server_authenticate): On MIG stub failure,
	deallocate the reply port by hand instead of letting the main
	message loop do it, since the latter would deallocate newport
	too, which we passed to the user.

2009-12-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix spurious authenticate EINTR
	        * auth/auth.c (S_auth_user_authenticate): Do not return
	        EINTR if user is not pending any more, i.e. server actually
	        already answered.
	        (S_auth_server_authenticate): Do not return EINTR if server is
	        not pending any more, i.e. user actually already answered.

	Fix port leak when directly calling MIG stubs
	* auth/auth.c (S_auth_server_authenticate): Check result of
	auth_server_authenticate_reply stub.
	* init/init.c (S_msg_sig_post_untraced): Check result of
	msg_sig_post_untraced_reply
	(S_msg_sig_post): Check result of msg_sig_post_reply.

2009-12-13  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix setgid behavior
	        * libfshelp/exec-reauth.c (fshelp_exec_reauth): Set gid in eff_gids and
	        avail_gids instead of in eff_uids, and avail_uids.

2009-11-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix ps -o command and such hang
	* libps/fmt.c (_fmt_create): Put NUL terminator only when there is room
	for it.  When there is not it is there already anyway.

2009-10-25  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix current_vcs driver load
	* console-client/current-vcs.c (vcs_repeat_init): Rename function into...
	(current_vcs_init): ... this.
	(vcs_repeat_start): Rename function into...
	(current_vcs_start): ... this.
	(vcs_repeat_fini): Rename function into...
	(current_vcs_fini): ... this.

2009-10-13  Thomas Schwinge  <tschwinge@gnu.org>

	Merge branch 'master-rpctrace'

2009-10-12  Zheng Da  <zhengda1936@gmail.com>

	Fix bug #20612: rpctrace: heisenbug. * utils/rpctrace.c (print_contents): Check the number of elements in the port array.

2009-10-12  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Make rename("something", "something/.") not hang
	* libdiskfs/dir-rename.c: Include <string.h>
	(diskfs_S_dir_rename): If source or destination ends with "." or
	"..", return EINVAL as required by POSIX.

2009-09-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Use #!/bin/bash instead of #!/bin/sh
	The script makes big use of bashisms.

2009-09-26  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Add memory clobbers to assembly snippets
	* pfinet/linux-src/include/asm-i386/checksum.h (ip_fast_csum):
	Add memory clobber to assembly snippet.
	(csum_ipv6_magic): Likewise.

2009-09-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fix assignment from incompatible pointer type
	* pfinet/linux-src/net/ipv4/tcp_ipv4.c (tcp_v4_connect): xchg
	&rt->u.dst instead of just rt with sk->dst_cache.

2009-08-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	Fixes long-standing random hang of exec.
	* exec.c (finish): Set FILE_DATA and MAP_BUFFER members of E to NULL
	after freeing them.

	Fix root access to non-regular files
	* libfshelp/perms-access.c (fshelp_access): Only check the x
	permission for root on regular files.

2009-07-31  Zheng Da  <zhengda1936@gmail.com>

	fix a bug #20612
	* rpctrace.c (print_contents): Check the number of elements in the port array.

2009-07-27  Thomas Schwinge  <tschwinge@gnu.org>

	libpthread is now a stand-alone library and kept in a separate repository.
	* Makefile (lib-subdirs): Remove libpthread.

2009-07-11  Thomas Schwinge  <tschwinge@gnu.org>

	Switch to the new ChangeLog style.
	* ChangeLog: Wipe out content, and add instructions about how to get it back.
	* auth/ChangeLog: Remove file.
	* benchmarks/ChangeLog: Likewise.
	* boot/ChangeLog: Likewise.
	* bsdfsck/ChangeLog: Likewise.
	* config/ChangeLog: Likewise.
	* console-client/ChangeLog: Likewise.
	* console/ChangeLog: Likewise.
	* daemons/ChangeLog: Likewise.
	* defpager/ChangeLog: Likewise.
	* doc/ChangeLog: Likewise.
	* exec/ChangeLog: Likewise.
	* ext2fs/ChangeLog: Likewise.
	* fatfs/ChangeLog: Likewise.
	* fstests/ChangeLog: Likewise.
	* ftpfs/ChangeLog: Likewise.
	* hostmux/ChangeLog: Likewise.
	* hurd/ChangeLog: Likewise.
	* include/ChangeLog: Likewise.
	* init/ChangeLog: Likewise.
	* isofs/ChangeLog: Likewise.
	* libcons/ChangeLog: Likewise.
	* libdirmgt/ChangeLog: Likewise.
	* libdiskfs/ChangeLog: Likewise.
	* libfshelp/ChangeLog: Likewise.
	* libftpconn/ChangeLog: Likewise.
	* libhurdbugaddr/ChangeLog: Likewise.
	* libihash/ChangeLog: Likewise.
	* libiohelp/ChangeLog: Likewise.
	* libnetfs/ChangeLog: Likewise.
	* libpager/ChangeLog: Likewise.
	* libpipe/ChangeLog: Likewise.
	* libports/ChangeLog: Likewise.
	* libps/ChangeLog: Likewise.
	* libshouldbeinlibc/ChangeLog: Likewise.
	* libstore/ChangeLog: Likewise.
	* libthreads/ChangeLog: Likewise.
	* libtrivfs/ChangeLog: Likewise.
	* login/ChangeLog: Likewise.
	* mach-defpager/ChangeLog: Likewise.
	* nfs/ChangeLog: Likewise.
	* nfsd/ChangeLog: Likewise.
	* pfinet/ChangeLog: Likewise.
	* pflocal/ChangeLog: Likewise.
	* proc/ChangeLog: Likewise.
	* release/ChangeLog: Likewise.
	* serverboot/ChangeLog: Likewise.
	* storeio/ChangeLog: Likewise.
	* sutils/ChangeLog: Likewise.
	* term/ChangeLog: Likewise.
	* tmpfs/ChangeLog: Likewise.
	* trans/ChangeLog: Likewise.
	* ufs-fsck/ChangeLog: Likewise.
	* ufs-utils/ChangeLog: Likewise.
	* ufs/ChangeLog: Likewise.
	* usermux/ChangeLog: Likewise.
	* utils/ChangeLog: Likewise.

2008-12-08  Thomas Schwinge  <tschwinge@gnu.org>

	* Makeconf (local-installhdrsubdir): Always put files below `include/'.

2008-11-17  Thomas Schwinge  <tschwinge@gnu.org>

	* configure.in: Unconditionally use the provided `install-sh'.  Make
	use of its `-C' option.
	* configure: Regenerate.

	* install-sh: Update to the GNU Automake 1.10.1 one.

2007-11-13  Thomas Schwinge  <tschwinge@gnu.org>

	* configure: Regenerate.

2007-11-07  Thomas Schwinge  <tschwinge@gnu.org>

	* config.make.in (gnu89-inline-CFLAGS): New variable.
	* Makeconf (CFLAGS): Evaluate that one instead of hard-coding.
	Suggested by Olaf Buddenhagen,
	<http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00006.html>
	* configure.in (libc_cv_gnu89_inline): Fill depending on a compile-time
	test, as per glibc HEAD, 2007-11-07.

2007-10-07  Thomas Schwinge  <tschwinge@gnu.org>

	* Makeconf (CFLAGS): Add ``-fgnu89-inline''.

2007-09-30  Thomas Schwinge  <tschwinge@gnu.org>

	* INSTALL-cross: Refer to the wiki.

2007-06-14  Thomas Schwinge  <tschwinge@gnu.org>

	* Makeconf (CFLAGS): Allow for appending target-specific flags.

2007-04-07  Thomas Schwinge  <tschwinge@gnu.org>

	* INSTALL-cross: Link to the `cross-gnu' script.

2006-12-03  Thomas Schwinge  <tschwinge@gnu.org>

	[bug #17121 --- ``GNU Hurd debian dir'']
	* debian/ChangeLog: Remove file.
	* Makefile (other-subdirs): Remove `debian'.

2006-07-24  Thomas Schwinge  <tschwinge@gnu.org>

	[bug #17127]
	* Makeconf (clean): Don't remove `*.*_d' files.
	(%.sdefsi): Add `%.sdefs.d' to the target list.  Create these files by
	specifying `-MD' as a flag for CPP and mangle the output as needed.
	Include these `*.sdefs.d' files instead of `*.migs_d' and `*.migsh_d'
	files.
	(%.udefsi): Likewise for `%.udefs.d' / `*.migu_d' and `*.miguh_d'.
	(%.migs_d, %.migu_d, %.migsh_d, %.miguh_d): Remove targets.

2006-03-21  Leonardo Lopes Pereira  <leonardolopespereira@gmail.com>

	[patch #4984]
	* Makeconf (mach_defs_names): Remove `mach_norma' and `norma_task'.

2006-01-26  Thomas Schwinge  <tschwinge@gnu.org>

	* config.guess: Updated from the canonical source.
	* config.sub: Likewise.

2005-04-07  Alfred M. Szmidt  <ams@gnu.org>

	* configure.in: Error out if MiG couldn't be found.
	* configure: Regenerated.

2004-09-29  Alfred M. Szmidt  <ams@kemisten.nu>

	* config.make.in (datadir): New variable.

2004-09-10  Roland McGrath  <roland@frob.com>

	* Makefile (lib-subdirs): Remove bogon in last checkin.

2004-09-09  Roland McGrath  <roland@frob.com>

	* Makefile (prog-subdirs): Remove serverboot.

2004-03-14  Marcus Brinkmann  <marcus@gnu.org>

	* README.CVS: New file.

2004-01-26  Jeff Bailey  <jbailey@nisa.net>

	* config.make.in (hurddir): Use ${exec_prefix} instead of
	$(exec_prefix)
	(bootdir): Likewise
	(libdir): Get definition from autoconf
	(bindir): Likewise
	(sbindir): Likewise
	(includedir): Likewise
	(libexecdir): Likewise
	(infodir): Likewise
	(sysconfdir): Likewise
	(localstatedir): Likewise
	(sharedstatedir): Likewise

2003-11-05  Jeff Bailey  <jbailey@nisa.net>

	* config.sub: Update.
	* config.guess: Update.

2003-10-09  Alfred M. Szmidt  <ams@kemisten.nu>

        * Makeconf (TAGS): Add a space between the function `strip' and
	its argument.

2003-02-15  Roland McGrath  <roland@frob.com>

	* configure: New generated file, now in the repository.

2002-10-23  Jeff Bailey  <jbailey@gnu.org>

	Update for Autoconf 2.54.
        * configure.in: Replace AC_FD_CC with AS_MESSAGE_LOG_FD.
        (AC_PREREQ): Require Autoconf 2.54.
        (AC_INIT): Update to no arguments syntax.  Call AC_CONFIG_SRCDIR.
        (AC_OUTPUT): Update to no arguments syntax.  Call AC_CONFIG_FILES.
        (AC_CHECK_TOOL, hurd_PROG_CC): Replace with ...
        (AC_PROG_CC): ... this.
        * aclocal.m4: Replace AC_FD_CC with AS_MESSAGE_LOG_FD.
        (hurd_PROG_CC, hurd_PROG_CC_WORKS): Removed.

2002-12-03  Marcus Brinkmann  <marcus@gnu.org>

	* Makefile (prog-subdirs): Add fatfs.

2002-10-12  Neal H. Walfield  <neal@cs.uml.edu>

	* Makefile (lib-subdirs): Add libpthread.

2002-09-17  Marcus Brinkmann  <marcus@gnu.org>

	* Makeconf (CPPFLAGS): Move -std=gnu99 option to ...
	(CFLAGS): ... here.

	* Makefile (prog-subdirs): Add console-client.

2002-09-05  Roland McGrath  <roland@frob.com>

	* Makeconf (CPPFLAGS): Add -std=gnu99 option.

2002-08-26  Roland McGrath  <roland@frob.com>

	* configure.in: Check for uselocale function.

2002-08-22  Marcus Brinkmann  <marcus@gnu.org>

	* aclocal.m4 (hurd_LIB_NCURSESW): New test, modified from GNU
	inetutils 1.4.0.
	* configure.in: Use hurd_LIB_NCURSESW.
	* config.make.in (LIBNCURSESW): New variable, substituted by
	configure.
	(NCURSESW_INCLUDE): Likewise.
	* Makefile (lib-subdirs): Add libcons.
	(prog-subdirs): Add console.

2002-06-14  Roland McGrath  <roland@frob.com>

	* Makeconf (cleantarg): Add $(libname).so.$(hurd-version).

	* Makeconf ($(patsubst %.o,%.d,$(filter %.o,$(OBJS)))): Give these dep
	files a dependency on $(INSTALLED_LOCAL_HEADERS).

2002-06-13  Roland McGrath  <roland@frob.com>

	* Makeconf (%_S.h %Server.c): Prepend $(mig-sheader-prefix)
	to stub header file name.
	(INSTALLED_LOCAL_HEADERS): Put them in the build directory,
	not the source.  Make files with #include rather than symlinks.
	(../$(dir)/%: %): New dummy pattern rule.
	(INCLUDES): New variable broken out of CPPFLAGS.  Add -I$(..)include.
	Include ..-relative dirs only if [$(dir) != .].
	(CPPFLAGS): Use that.

2002-06-11  Roland McGrath  <roland@frob.com>

	* Makeconf (CPPFLAGS): Add -D_FILE_OFFSET_BITS=64.
	(hurd-version): Update to 0.3 so as to change sonames.

2002-05-16  Roland McGrath  <roland@frob.com>

	* configure.in (asm_syntax): Add patterns for all the flavors we have
	pfinet/linux-src/include/asm-* directories for: arm, m68k, mips,
	sparc, sparc64.

2002-05-13  Marcus Brinkmann  <marcus@gnu.org>

	* version.h.in (STANDARD_HURD_VERSION): Remove EXTRA argument,
	because cpp 3.0 is not removing any token before ##args that is
	not a single comma, in order to be more C99 compliant.
	(_SHV_SEP): Removed.
	(STANDARD_HURD_VERSION_EXTRA): New macro that does the job of the
	old macro with an extra argument.

2002-04-27  Roland McGrath  <roland@frob.com>

	* configure.in: Match $host_cpu of powerpc*, not just powerpc.
	Match $host_cpu of alpha* to set asm_syntax=alpha.

2002-03-21  Roland McGrath  <roland@frob.com>

	* Makeconf ($(libname).so.$(hurd-version)): Reorder link arguments so
	that .map files come after the -( ... -) group.

2002-03-15  Roland McGrath  <roland@frob.com>

	* configure.in: Remove the checks for libparted.
	Instead, check just for a static -lstore_part library and do
	that only if no --enable-boot-store-types option was given.

	* configure.in (boot_store_types): Add remap to the default list.

2002-03-11  Roland McGrath  <roland@frob.com>

	* Makeconf ($(libname).so.$(hurd-version)):
	Include $($(libname).so-LDLIBS) and $(LDLIBS) in the link.

	* configure.in (--enable-boot-store-types): Grok this arg.
	* config.make.in (boot-store-types): New variable, set by it.
	* Makeconf [$(dir) != libstore]
	($(boot-store-types:%=../libstore/libstore_%.a)): Make these targets
	depend on ../libstore/libstore.so.

2002-02-10  Marcus Brinkmann  <marcus@gnu.org>

	* INSTALL: Change install-hdrs to install-headers.  Reported by
	Vicente Hernando Ara <bizenton@terra.es>.

2002-01-05  Roland McGrath  <roland@frob.com>

	* aclocal.m4 (hurd_MIG_RETCODE): New macro.
	* configure.in: Broken out of here, now use that.

2002-01-01  Roland McGrath  <roland@frob.com>

	* configure.in: If mig supports `retcode', define HAVE_MIG_RETCODE.

2001-12-31  Roland McGrath  <roland@frob.com>

	* configure.in: Check mig for `retcode' keyword support.
	If not there, add -DRetCode=NoLong.

2001-11-15  Neal H Walfield  <neal@cs.uml.edu>

	* Makeconf (TAGS) [configured]: Create tags for MiG generated files.
        * Makefile (TAGS): Generate dependencies respecting broken
        code markers, i.e. based on $(working-prog-subdirs) and not
        $(prog-subdirs).

2001-12-22  Roland McGrath  <roland@frob.com>

	* configure.in (asm_syntax): Grok "powerpc" value for $host_cpu.
	Default asm_syntax to $host_cpu if not a known type.
	Complain about unsupported CPU iff libthreads/$asm_syntax/cthreads.h
	is missing; make that complaint a warning rather than fatal error.

	* Makeconf (MIGCOMFLAGS): New variable, set -subrprefix __ here.
	(%_S.h %Server.c rule, %_U.h %User.c rule): Pass that to $(MIGCOM).

2001-11-24  Roland McGrath  <roland@frob.com>

	* config.make.in (bootdir): New variable, set to $(exec_prefix)/boot.
	(installationdirlist): Add $(bootdir) to the list.
	From Alfred M. Szmidt <ams@kemisten.nu>.

2001-11-15  Roland McGrath  <roland@frob.com>

	* Makeconf: Typo fix in last change.

2001-11-14  Roland McGrath  <roland@frob.com>

	* Makeconf: Include config.make only if it exists.
	(configured): Set this if we included config.make.
	[! configured]: Set no_deps=t.

2001-10-12  Marcus Brinkmann  <marcus@gnu.org>

	* configure.in: If parted/parted.h is found, define
	HAVE_PARTED_PARTED_H explicitely.

2001-08-25  Roland McGrath  <roland@frob.com>

	* configure.in: Add a check for Parted's libraries.
	(PARTED_LIBS): New variable, substitute it.

2001-08-24  Roland McGrath  <roland@frob.com>

	* config.make.in (PARTED_LIBS): New variable, substituted by configure.

	* Makeconf ($(libname).so.$(hurd-version)): Replace $($@-LDFLAGS)
	with $($(libname).so-LDFLAGS).

2001-08-23  Roland McGrath  <roland@frob.com>

	* Makeconf (CPPFLAGS); Add -D_IO_MTSAFE_IO.

2001-08-20  Roland McGrath  <roland@frob.com>

	* hurd.boot: Change --bootflags to --multiboot-command-line.

2001-06-24  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Add check for getgrouplist.

2001-06-15  Roland McGrath  <roland@frob.com>

	* Makeconf (CPPFLAGS, CFLAGS): Append to these before we include the
	config.make file.

2001-03-11  Roland McGrath  <roland@frob.com>

	* Makeconf (%_S.h %Server.c): Split out an intermediate rule for the
	cpp stage ...
	(%.sdefsi: %.defs): ... into this rule.
	(%_U.h %User.c): Likewise split ...
	(%.udefsi: %.defs): ... into this rule.
	(clean): Remove *.[su]defsi too.

2000-12-28  Roland McGrath  <roland@frob.com>

	* Makeconf (mach_defs_names): Remove default_pager (replaced by our
	own in hurd) and default_pager_helper (never used).

2001-02-02  Roland McGrath  <roland@frob.com>

	* Makefile (prog-subdirs): Add tmpfs.

2000-05-20  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Add check for libio.  Only enable versioning if we
	found libio.

2000-03-27  Roland McGrath  <roland@baalperazim.frob.com>

	* configure.in (VERSIONING): New check for ld --version-script.
	* config.make.in (VERSIONING): New variable, set by configure.

1999-12-14  Roland McGrath  <roland@baalperazim.frob.com>

	* mkbootfs: Removed directory and all files.
	They have long been obsolete.

1999-11-18  Roland McGrath  <roland@baalperazim.frob.com>

	* mach-defpager: New directory.  See its ChangeLog.
	Makefile (prog-subdirs): Add mach-defpager.

1999-10-03  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf [$(makemode) = misc]: If no installationdir and no targets,
	set makemode-instdir so it's not empty, to avoid expanding `$(dir)'.

1999-10-01  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf [Decode makemode page]: Clean up variable usage in each
	cases, as follows:
	(installationdir): Don't test and set this directly.
	(makemode-instdir): New variable, set instead for each makemode.
	(linktarg): Don't this for each program-linking makemode.
	(targets): Make sure this is always set, i.e. = $(target) in singular
	modes.
	[$(makemode) != library] (progtarg): New variable.
	[$(makemode) != library] (linktarg): Set from $(progtarg), including
	.static versions.
	(installationdir): Test and default once, using $(makemode-instdir).
	[linking and dep rules]: Use $(linktarg) and $(progtarg) as
	appropriate instead of $(targets) or $(target).

1999-09-19  Roland McGrath  <roland@baalperazim.frob.com>

	* configure.in (enable_static_progs): Move sed translation of commas
	to spaces out of case stmt, so it applies to default too.

1999-09-18  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf [$(makemode) != misc]: Use this to protect linking rules,
	so we don't define any rule for $(targets) if $(makemode) is misc.

	* Makefile: Revert last change; it is definitely wrong, and there is
	no verified bug that needs to be fixed at all.

1999-09-17  Thomas Bushnell, BSG  <tb@mit.edu>

	* Makeconf [Installation section]: Last change (9 Sep 1999) broke
	this.  Separate more clearly the library and non-library install
	rules.

	* Makefile ($(prog-subdirs) $(lib-subdirs), %-lndist, %-clean,
	%-relink, %-objs, %-install, %-install-headers, %-TAGS, %.d): Pass
	-e to sub-make, so that explicit prefix= args (etc.) get passed
	down correctly.

1999-09-09  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf (link-executable): New variable, partial linking
	commands for executables.
	($(target)): Use it.  Move .o's before -Wl,-(, just cause.
	($(addsuffix .static,$(target))): New static pattern rule,
	use `$(link-executable) -static' and static hurd libs.
	[$(doinst) = one]: Give deps to $(target).static too.
	{"Decode makemode" page}: Set linktarg instead of cleantarg for each
	makemode that sets only one.
	[$(makemode) != library]: Append $(linktarg:=.static) to linktarg.
	[$(cleantarg) empty]: Set cleantarg to $(linktarg).
	[Installation section] (targets): Set to $(target) if empty.
	(installable): New variable, union of $(linktarg) and $(targets).
	Remove conditionals on $(doinst), leaving only multi-target version.
	Use $(installable) rather than $(targets) to compute list of
	targets for static pattern rule that does the install.
	(install-targets): New variable, $(targets) plus subset of $(linktarg)
	matching $(build-static:=.static).
	(all): Depend on $(install-targets) rather than $(targets).
	(install): Likewise for computed list of targets in $(installationdir).
	* config.make.in (build-static): New variable.
	* configure.in: Support --enable-static-progs=LIST.

1999-09-12  Thomas Bushnell, BSG  <tb@mit.edu>

	* libmom: Remove directory and contents.
	* Makefile (lib-subdirs): Remove `libmom'.

1999-09-08  Thomas Bushnell, BSG  <tb@mit.edu>

	* Makeconf (cleantarg): Add `$(libname)_pic.a'.
	[$(makemode) = library] (targets): Likewise.
	($(libname)_pic.a): New rule.
	($(libdir)/$(libname)_pic.a): Extended from the previous _p.a and
	.a rules.
	Submitted by Marcus Brinkmann (Marcus.Brinkmann@ruhr-uni-bochum.de).

1999-06-19  Roland McGrath  <roland@baalperazim.frob.com>

	* Makefile (DIST_FILES): Add move-if-change.

1999-06-17  Roland McGrath  <roland@baalperazim.frob.com>

	* move-if-change: New file, canonical GNU script.

1999-03-23  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf [$(makemode) = library]
	(linktarg): Append .$(hurd-version).
	(cleantarg): Add $(linktarg) here.

1999-03-17  Gordon Matzigkeit  <gord@trick.fig.org>

	* Makefile (other-subdirs): Add the debian directory.

1999-02-16  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf (install): Fix typo in Thomas's last change.
	($(libdir)/$(libname).so): Depend on ....so.$(hurd-version).

	* Makeconf ($(libname).so): Make it a symlink to
	$(libname).so.$(hurd-version).
	($(libname).so.$(hurd-version)): New target, renamed from
	$(libname).so; link the actual shared object with this name.

Tue Feb 16 02:31:06 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* Makeconf ($(libname).so): Include $(hurd-version) as part of the
 	soname.
	($(libdir)/$(libname).so.$(hurd-version)): New rule.
	($(libdir)/$(libname).so): Only create a symlink to the
	version-numbered name.
	(install) [makemode == library]: Add
	the versioned name $(libdir)/$(libname.so).$(hurd-version).

	* version.h.in: New file.
	* versioh.h, sh-version.sed: Deleted files.
	* Makeconf (hurd-version): New variable.
	* Makefile ($(subdirs)): Depend on version.h.
	(version.h): New rule.
	(DIST_FILES): Delete version.h and sh-version.sed.  Add version.h.in.

1999-01-24  Roland McGrath  <roland@baalperazim.frob.com>

	* configure.in: Add AC_PROG_AWK.
	* config.make.in (AWK): New variable, substituted by configure.

1998-12-27  Roland McGrath  <roland@baalperazim.frob.com>

	* Makefile (prog-subdirs): Reordered with vague topical grouping.

1998-11-29  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf ($(libdir) installation rules): Use automatic variables.
	Use a static pattern rule for foo.a and foo_p.a, treated the same.

1998-10-20  Roland McGrath  <roland@baalperazim.frob.com>

	* Makefile (TAGS): Create a TAGS file that specifies the subdir TAGS
	files as includes.

	* Makeconf (TAGS): Make rules cope with having no source files to tag.

1998-09-04  Roland McGrath  <roland@baalperazim.frob.com>

	* Makeconf (objs): Don't build PIC objects unless $(makemode) library.

	* Makeconf (objs): New target, just compile w/o ar or ld.
	(OBJS): Remove bogus `%.o' default defn.

	* Makefile (objs, %-objs): New subdir target.

1998-08-12  Roland McGrath  <roland@baalperazim.frob.com>

	* aclocal.m4 (AC_PROG_CC_LOCAL): Renamed to hurd_PROG_CC.
	(AC_PROG_CC_WORKS_LOCAL): Renamed to hurd_PROG_CC_WORKS.
	* configure.in: Use hurd_PROG_CC instead of AC_PROG_CC_LOCAL.
	(AC_PREREQ): Require 2.12.
	(AC_CANONICAL_HOST): Give helpful error messages for likely cases of
	bogus host specs.
	(crypt check): Don't do AC_CHECK_FUNCS to get HAVE_CRYPT,
	just check for -lcrypt to set $LIBCRYPT.

1998-07-20  Roland McGrath  <roland@baalperazim.frob.com>

	* configure.in: Grok --{en,dis}able-profile, default enable.
	* config.make.in (build-profiled): New variable, from @enable_profile@.
	* Makeconf (no_prof): Set to t if $(build-profiled) is not no.

	* Makeconf: Inhibit $(target).prof_d include if no_prof=t.

Tue Jul  7 11:39:08 1998  Thomas Bushnell, n/BSG  <tb@mit.edu>

	* Makeconf (CPPFLAGS): Include $($*-CPPFLAGS).  Reported by Gordon
	Matzigkeit (gord@gnu.org).

	* INSTALL-cross: Updated by Gordon Matzigkeit (gord@gnu.org).

1998-04-02  Gordon Matzigkeit  <gord@profitpress.com>

	* Makefile (srcdir): Don't set srcdir, since this is either done
	in the generated Makefile or in Makeconf.  Just include ./Makeconf
	directly.

	* configure.in (makefiles): Check for $ac_unique_file, rather than
	doing string comparisons to determine if we are configured in the
	source directory.  This works for silly things like `srcdir=./.'.

1997-08-06  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Add ftpfs.

1997-07-23  Miles Bader  <miles@gnu.ai.mit.edu>

	* usermux: New directory.
	* Makefile (prog-subdirs): Add usermux.

Mon Jul 21 16:18:50 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf (linking .prof executable): Don't mutate library names
	here.
	(making %.prof_d special target): Mutate library names here.
	(%.prof_d): Depend on Makefile in srcdir.

Fri Jul 18 16:37:22 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* isofs: New directory.
	* Makefile (prog-subdirs): Add isofs.

Thu Jul 10 14:10:32 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf ($(makemode) == library): If $(no_prof) is `t', then
	don't build _p.a versions of libraries.

1997-06-19  Miles Bader  <miles@gnu.ai.mit.edu>

	* hostmux: New directory.
	* Makefile (prog-subdirs): Add hostmux.

1997-06-18  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (version): Use a four-digit year.
	(dist): Always generate distributes of the form
	`hurd-${version}.tar.gz'.

Thu Jun 12 18:58:41 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Released version 0.2.

1997-06-10  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Remove SETUP.
	* SETUP: File removed.

Mon Jun  9 12:27:40 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* version.h (HURD_VERSION): Update version number to 0.2.
	* sh-version.sed: Likewise.
	* README: Likewise.
	* INSTALL: Likewise.

Thu Jun  5 14:20:56 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile: Don't include directory .d files if no_deps is t.
	(prog-subdirs): Omit ftpfs.

Fri May 23 10:06:34 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* configure.in: Use AC_PROG_CC_LOCAL instead of AC_PROG_CC.
	* aclocal.m4: New file.
	* Makefile (DIST_FILES): Add aclocal.m4.
	(Patch from Marcus G. Daniels, marcus@cathcart.sysc.pdx.edu).

Wed May  7 12:28:58 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* libftpconn, ftpfs: New directories.
	* Makefile (lib-subdirs): Add libftpconn.
	(prog-subdirs): Add ftpfs.

Mon Mar 10 17:07:11 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Add `serverboot'.
	* serverboot: New directory.

Fri Oct 25 20:17:47 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf (%.prof_d): Don't set no-deps.
	(.prof_d inclusion): Don't do it if prof-depend=t.

Wed Oct 23 01:36:35 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf ($(target)): Repair rule for building of .prof_d
	files.
	($(target), $(target).prof): Refer to generated variables
	(-CFLAGS, -LFLAGS, -LDLIBS) by the base name ($*) not $@.
	(_libext): Likewise.

Mon Oct 21 22:22:49 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf (cleantarg) [makemode == library]: Add $(libname)_p.a.
	(targets) [makemode == library]: Include $(libname)_p.a in default
	value.
	($(libdir)/$(libname)_p.a) [makemode == library]: New rule.
	($(libname)_p.a) [makemode == library]: New rule.
	(%_p.o): Two new rules (depend on %.c or %.S).
	(make_deps): Make dependency now specify $*_p.o too.
	($(addsuffix .prof,$(target))): New rule to link profiled objects.
	($(target)): Surround usual build rule with if prof-depend == nil.
	($(addsuffix .prof_d, $(target))): Include this if not a library.
	Also a new rule to build them.
	($(target)) [prof-depend == t]: Kludge to write out its dependencies.

Tue Oct 15 12:29:26 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf (relink): Remove $(linktarg) always.
	(linktarg) [makemode == library]: Set variable.
	(linktarg): And also a default.
	* Makefile (%-relink): Set no_deps=t here.
	(relink): Do $(lib-subdirs) too.

Tue Oct  8 22:39:12 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makeconf ($(includedir)/$(installhdrsubdir),
	$(installationdirlist)): Suppress command echo (when mkinstalldirs
	actually does something, it prints the resulting commands itself).

Fri Oct  4 17:52:54 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf ($(..)$(dir).d): Always include libhurdbugaddr in the
	list for non-libraries.

Thu Sep 26 15:43:18 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makeconf (%: %.sh): New rule.

Tue Sep 24 21:43:57 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* configure.in: Add check for crypt function.

Mon Sep 23 00:10:52 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* sh-version.sed: Change to use new version format.

	* configure.in: Check for libcrypt.
	* config.make.in (LIBCRYPT): New variable.

Wed Sep 18 16:26:06 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* version.h (STANDARD_HURD_VERSION): Change to use new format.
	Add EXTRA tail arg.
	(_SHV_SEP): New macro.

	* Makefile (prog-subdirs): Remove devio.

Thu Sep 19 16:53:09 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile ($(addsuffix .d,$(subdirs))): Depend on the makefile in
	the source directory, not the build directory.
	* Makeconf ($(..)$(dir).d): Likewise.

	* Makeconf (install) [all variants]: Depend on installation
	directory directly; don't make installed file depend on it.

Thu Sep 12 15:45:34 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (include $(addsuffix .d,$(subdirs))): New directive to
	get dependencies for directories included.
	($(addsuffix .d,$(subdirs))) New target.
	* Makeconf (library_deps): New variable.
	(directory-depend): New target.
	($(..)/$(dir).d): New target.
	($(target)) [doinst == one]: Depend on libraries from library_deps.
	($(libname).so) [makemode == library]: Likewise.

	* Makefile ($(prog-subdirs) $(lib-subdirs)): New rule.
	(%-all): Delete rule.
	(all): Depend on directory names without appended -all.

Sun Sep  8 14:21:57 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Add storeio.

Fri Sep  6 17:00:23 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* INSTALL: Update to version 0.1.
	* README: Likewise.

Thu Sep  5 11:04:38 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* version.h: New file.
	* sh-version.sed: New file.
	* Makefile (DIST_FILES): Add version.h and sh-version.sed.

Wed Sep  4 16:25:24 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makeconf
	($(addprefix $(includedir)/$(installhdrsubdir)/,$(installhdrs))):
	`$(includdir)' --> `$(includedir)'

Wed Sep  4 08:56:04 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* configure.in (asm_syntax): New variable, canonicalized from
	host_cpu.  AC_SUBST it.
	* config.make.in (asm_syntax): New variable, from @asm_syntax@.

Sun Sep  1 14:03:20 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makeconf ($(target): %$(target-suffix)): Add dependency on
	$(BUGADDR), and $(BUGADDR_REF) to the flags.
	(BUGADDR, BUGADDR_REF): New variables.
	* Makefile (lib-subdirs): Add libhurdbugaddr.
	* libhurdbugaddr: New directory.

Thu Aug 29 14:14:04 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf [doinst == one] (install): Don't depend on
 	$(installationdir).
	[doinst==one] ($(installationdir)/$(target)): Do depend on
 	$(installationdir).
	[doinst == many] (install): Don't depend on $(installationdir).
  	$(addprefix $(installationdir)/,$(targets)): Depend on
 	$(installationdir).
	[makemode == library] (install): Don't depend on $(libdir),
 	$(includedir), or $(includedir)/$(installhdrsubdir).
	[makemode == library] ($(libdir)/$(libname.a)): Depend on
 	$(libdir).
	[makemode == library] ($(libdir)/$(libname).so): Likewise.
	[makemode == library] $(addprefix
 	$(includedir)/$(installhdrsubdir)/,$(installhdrs)): Depend on
 	$(includdir)/$(installhdrsubdir)
	[makemode == library] $(includedir)/$(installhdrsubdir): Depend on
	$(includedir).
	[makemode == library] (install-headers): Don't depend on
	$(includedir)/$(installhdrsubdir) or $(includedir).

	* INSTALL: Tell people to delete Mach's mach_init.h if it got
	installed.

Wed Aug 28 11:22:28 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* INSTALL: Say to use `no_deps=t' when installing headers.

Tue Aug 13 17:54:53 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makeconf ($(target)): Add $($@-LDLIBS) $(LDLIBS) to libs.

Tue Aug 13 14:05:54 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf (vpath %.defs): Remove reference for mach and device
	headers.
	(mach_defs_names, device_defs,names, mach_defs, device_defs): New
	variables.
	($(mach_defs), $(device_defs)): New rules.
	* config.make.in (install_prefix, install_includedir): Delete
	variables.
	* configure.in (install_prefix): Delete AC_SUBST.

Mon Aug 12 12:51:03 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf: Comment out the lines that cause recursive makes into
	library subdirs.

Thu Aug  8 13:14:44 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* configure.in: Add AC_SUBST for `install_prefix'.
	* config.make.in (install_prefix, install_includedir): New
	variables.
	* Makeconf (vpath %.defs): Look for these in install_includedir.

Wed Aug  7 14:57:55 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Add `nfsd'.

Tue Aug  6 12:20:37 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Released source version 0.0.

Fri Aug  2 11:02:11 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (cp-linked-files): Add missing hyphen to rule.
	(dist): Delete directory named for VERSION, not old var DATE.
	Build tar file from SRCDIR to avoid embedding an odd pathname in
	the archive.

Tue Jul 30 13:54:47 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makeconf (top_srcdirinc): Don't define EWOULDBLOCK anymore.

Sat Jul 20 15:42:43 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (lndist): Find DISTFILES in $(srcdir).
	* Makefile (date): Delete vare.
	(version, dirname): New vars.
	(dist): Operate in $(srcdir).  Use $(dirname) for the tar dir name.
	(hurd-snap): Create in $(srcdir).

Thu Jul 18 00:40:04 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (install): Depend on $(includedir)/$(installhdrsubdir).
	(install-headers): Likewise.
	($(includedir)/$(installhdrsubdir)): New rule.

	* Makeconf (vpath -l%): Tell make where to find -l libraries.

Wed Jul 17 22:49:50 1996  Roland McGrath  <roland@baalperazim.frob.com>

	* build.mkcf.in: Use top_srcdir instead of srcdir.

Wed Jul 17 14:28:29 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf: gs/install-hdrs/install-headers/g
	* Makefile: Likewise.

Tue Jul 16 11:35:48 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (CFLAGS): Define EWOULDBLOCK here to work around new
 	libc bug.

Sat Jul 13 20:34:41 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (other-subdirs): Add `include'.
	* Makeconf (install-hdrs) [library]: Depend on installed copies of
 	headers.
	(install-hdrs): Provide default target.
	* Makefile (%-install-hdrs, install-hdrs): New targets.
	* INSTALL: Discourage cross-building; include instructions for
	libc/hurd co-installation.
	* README: Discourage cross-building.

	* Makefile (install): Install $(other-subdirs) too.

Fri Jul 12 14:18:37 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (install) [doinst==one || doinst==many]: Include
 	file-specific options in call to INSTALL_PROGRAM.

Mon Jul  8 00:54:56 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Removed *.h.

	* Makefile (DIST_FILES): Removed INSTALL-binary; now in
 	./release/.
	(other-subdirs): Add `release'.
	* release: New directory.

	* Makeconf: disable excessive cleverness for now...

Sun Jul  7 22:41:04 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (lib-subdirs): Move libthreads up before libpager.
	* Makeconf (libs) [library]: Depend on add-to-librecord instead of
 	$(targets).
	(install) [library]: Add dependency on add-to-librecord.
	(add-to-librecord) [library]: Depend on $(targets).
	(librecord) [MAKELEVEL == 0]: Define and export.
	(include librecord): New inclusion.
	($(librecord)): New target.
	(add-to-librecord): New target.

Thu Jun 27 09:51:44 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* config.make.in (installationdirlist): New variable.
	* Makeconf (MKINSTALLDIRS): New variable.
	(install) [all versions]: Add dependency on the directory being
	installed into.
	($(installationdirlist)): New dependency.

	* Makefile (linked-files, lf-inst): New variables.
	(cp-linked-files): Use implicit rule.
	($(lfinst)): New implicit rule.
	* mkinstalldirs: New symlink to /gd/gnu/lib program.

	* Makefile (distclean): Add config.cache.

	* Makefile (lndist-cthreads-h): Delet target.
	(lndist): Remove `lndist-cthreads-h'.

Fri Jun 21 12:28:26 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makeconf ($(target)): Get rid of -defsym hack for ___brk_addr
	(there's a hack in libc now).

Thu Jun 20 14:33:01 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Add `daemons'.
	* daemons: New directory.
	* config.make.in (libexecdir): New variable.

Mon Jun 17 11:24:49 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf ($(target)): Add bletcherous hack to deal with undefined
 	(and unused) libc symbol.

	* Makefile (prog-subdirs): init.trim -> init.
	(other-subdirs): Delete init; add config.
	* init.trim: Renamed to be init.
	* init: Sluffed into olds.

	* config: New directory.

Mon Jun 17 10:30:54 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makeconf (CPPFLAGS): Add -I$(top_srcdir)/include.
	(INSTALLED_LOCAL_HEADERS): Split into two cases based on
	$(installhdrsubdir).
	($(INSTALLED_LOCAL_HEADERS)) [$(installhdrsubdir) == .]: Linked to
	$(top_srcdir)/include.  Prefix ../ to link contents.
	* include: New directory.

	* Makefile (prog-subdirs): Rename fsck to ufs-fsck.  Add sutils.
	* ufs-fsck: Renamed from fsck.
	* sutils: New directory.

Thu Jun 13 17:14:44 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* config.make.in (localstatedir, sharedstatedir): Add variables.

Fri May 24 15:16:25 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (lib-subdirs): Add libmom.
	* libmom: New directory.

Sat May 11 17:00:19 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* Makeconf: Add .PHONY spec for phony targets.

Thu May  9 12:19:08 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Add *.h.

	* Makeconf (INSTALLED_LOCAL_HEADERS): New variable that $(libs)
 	depends on.  This arranges to make sure that headers exported by
 	this library always get installed eventually into the source
 	directory as symlinks.

Mon May  6 16:25:46 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* libiohelp: Renamed from `libioserver'.
	* Makefile (lib-subdirs): libioserver -> libiohelp.

Tue Apr 30 22:06:05 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Add build.mkcf.in.
	* build.mkcf.in: New file.
	* configure.in (makefiles): Add Makeconf:build.mkcf.in.

	* Makefile (srcdir): Set to . if undefined.  Find Makeconf in
 	$(srcdir).

Tue Apr 30 09:27:31 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf ($(target)): Don't depend on $(OBJS) or $(OTHERLIBS) in
 	the main build rule.  Add new rule specifying such a dependency
 	only when doinst is one.

Sun Apr 28 19:02:56 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* Makeconf (make-deps): New canned sequence.  Remove gcc-lib hdrs from
 	deps.  Use atomic mv for output.
	(%.d: %.c, %.d: %.S): Use $(make-deps).

Fri Apr 26 09:25:48 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (OBJS): Provide default definition.
	(_objs): Delete variable; replace references with $(OBJS).

	* Makefile (cp-linked-files): New target.
	(lndist): Add `cp-linked-files'.

Thu Apr 25 03:13:51 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* Makeconf: Use -include for generated dep files.

Thu Apr 11 16:18:25 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* INSTALL-binary: Renamed from README-binary.

Thu Apr 11 16:13:35 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Add SETUP.

Thu Apr 11 16:06:21 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* README: Rewritten for a new purpose.
	* INSTALL-cross: Renamed from INSTALL.
	* INSTALL: New file.

Mon Mar 25 03:09:09 1996  Roland McGrath  <roland@charlie-brown.gnu.ai.mit.edu>

	* configure.in: After CC tool check, invoke AC_PROG_CC to set default
 	CFLAGS and test for GCC.  Barf if not GCC.

Thu Mar 21 11:41:53 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (CFLAGS): Always turn on -g and -O3.

Wed Mar 20 15:30:49 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (vpath %.defs): Make that $(includedir)/mach and
	$(includedir)/device.
	(CPPFLAGS): Add -D_GNU_SOURCE.

Wed Mar 20 15:29:21 1996  Roland McGrath  <roland@charlie-brown.gnu.ai.mit.edu>

	* Makeconf (vpath %.defs): Use $(includedir) to locate mach files.

Tue Feb 27 14:48:19 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Change `newfs' to `ufs-utils'.

	* Makeconf ($(target): %): Add $(target-suffix) to destination name.

Thu Nov 30 10:57:21 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Added pfinet.

Tue Nov 21 14:34:04 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makeconf (top_srcdirinc, srcdirinc): New variables.
	(CPPFLAGS): Use new vars $(top_srcdirinc) and $(srcdirinc) to avoid
	ugly duplication of `.' and `..' in compile lines when possible.

Tue Oct 24 17:24:36 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Replace hurd.boot.in with hurd.boot
	(hurd.boot): Target removed.
	(clean-misc): Don't remove hurd.boot.
	(all): Don't depend on it.
	* hurd.boot: Renamed back from hurd.boot.in.
	Name ufs and ld.so as they will be found in an installed Hurd
	filesystem.

Tue Oct 10 23:31:26 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (rpath): New variable.
	($(target)): Use it in link command.
	($(libname).so): Likewise.
	Use $^ instead of $+.

Sat Oct  7 05:02:17 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf ($(libname).so): Pass $(LDFLAGS) and $($@-LDFLAGS).

Wed Oct  4 16:21:33 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (%_pic.o: %.c): Use $(COMPILE.c) instead of its
	contents.  Pass -DPIC.
	(%_pic.o: %.S): New rule.

Sat Sep 23 02:45:18 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (top_srcdir): Define properly in parent directory.

	* Makefile (other-subdirs): Remove lib.

Fri Sep 22 14:26:12 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* build.mk.in (VPATH): New variable.

Thu Sep 21 19:07:44 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (hurd.boot): New target.
	(all): Depend on hurd.boot
	(DIST_FILES): Add build.mk.in and hurd.boot.in.
	(clean-misc, distclean): New targets.
	(clean): Depend on clean-misc.

	* hurd.boot.in: Renamed from hurd.boot; use @exec_prefix@ instead
	of hardcoded dir.  Added some comments.
	* build.mk.in: New file.
	* configure.in: If not in $srcdir, produce */Makefile from
	build.mk.in.

Thu Sep 21 14:28:26 1995  Michael I. Bushnell, p/BSG  <mib@duality.gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Removed `pfinet'.

	* term, newterm: Renamed `term' to be `term.old'; renamed
	`newterm' to be `term', thus installing the new version.

Wed Sep 20 20:10:54 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd.boot: Run ld.so with arg of /hurd/exec, instead of running
	exec/exec.  Now exec can be dynamically linked.

Tue Sep 19 13:40:47 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makeconf (LDFLAGS): Variable removed.

Tue Sep 19 02:33:13 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (libthreads-libsubst): Variable removed.

Sat Sep 16 14:17:08 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* configure.in: New file.
	* config.make.in: New file.
	* Maketools: File removed.
	* Makefile (DIST_FILES): Remove Maketools.
	Add config.make.in, configure.in, configure.
	* Makeconf: Include $(..)config.make for configure-generated
	parameters.
	No longer include Maketools.
	(prefix, exec_prefix, srcdir, hurddir, bindir, sbindir, libdir,
	infodir, includedir): Variables removed.
	(..): New variable.
	(srcdir, top_srcdir): Set if not already set.
	(CPPFLAGS): Append -I's for . and .. and $(srcdir) and $(top_srcdir).
	(CFLAGS): Remove -g.
	Change miscellaneous uses of $(srcdir) to $(top_srcdir).
	(vpath %.defs): Remove $(crossheaders) dirs from path.

Sat Sep 16 13:26:59 1995  Miles Bader  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (sbindir): New variable.
	(installationdir): Don't set if already set.

Mon Sep 11 12:06:44 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Maketools (CCVERSION): Changed to 2.7.1.
	(CCVERSION-duality.gnu.ai.mit.edu): Removed.

Fri Sep  1 13:02:12 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makeconf (libsubst, libsubst-override, _libsubst): New vars.
	($(target): %): Replace each library reference with $(_libsubst).
	(libthreads-libsubst): New variable.
	[$(makemode)==library] (targets): Default to both .a and .so libraries.
	[$(makemode)==library] (all, install): Make and install $(targets)
 	instead of the explicit default list of them.
	[$(makemode)==library] (libs): New target.
	(../%.a ../%.so): Make the `libs' target instead of an explicit
	list of libraries.

Mon Aug 28 17:22:24 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd.boot: Use ${boot-args} preset variable.
	Use $(...) for action directives.

Mon Aug 28 15:52:16 1995  Michael I. Bushnell, p/BSG  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (inclusion of .d files based on OBJS): Only deal with
 	.o files in $(OBJS).

Mon Aug 28 09:59:04 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makeconf (TAGS): Automagically find all the files to scan from
	the dependency information.
	(DEP_SRCS): Sort in reverse order so that local files come first.

Fri Aug 25 08:02:04 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makeconf ($(libname).so): Use the linker -soname option to
	specify what library name should be recorded by users.
	(__libext, __libext-static, _libext): New variables.
	($(target): %): Link against the absolute library with the
	appropiate extension do determine whether shared or not, instead
	of using -L...-l syntax.

Thu Aug 24 10:09:59 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makeconf (HURDLIBS-files, HURDLIBS-libs): Removed.
	($(targets): %): The same rule now used for both many and one
	cases.  Get the things to be linked against entirely from the
	dependency list, and munge it to convert library pathnames to
	-L...-l pairs.
	Stop using *HURDLIBS as the mechanism for passing in libraries to
	be linked against.  Now you should just put the pathname in the
	dependency list of the target, along with the object files, etc.
	[$(doinst)==many] (target): Set this from $(targets).
	($(sort $(HURDLIBS-files))): Rule deleted.
	(../%.a ../%.so): New rule, replacing the previous one.

Wed Aug 23 17:55:04 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Add hurd.boot.
	* hurd.boot: New file.

Tue Aug 22 17:04:19 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makeconf ($(addprefix $(installationdir)/,$(targets)),): Use
	INSTALL_PROGRAM, not INSTALL_BIN.
	* Maketools (INSTALL_BIN): Changed to INSTALL_PROGRAM.

	* Makeconf (HURDLIBS-libs): Re-enable the -L... version, but using
 	-Wl,-L...  instead to avoid gcc hosage.
	(HURDLIBS-files): Use both the target specific and general values
	of HURDLIBS.
	Get rid of the merging of all target-specific HURDLIBS into the
	general HURDLIBS, as the former are use properly now.
	[$(doinst)==one] ($(target)): Don't explicitly link with $(libc).
	[$(doinst)==many] ($(targets): %:): Depend on the .o file of the
 	same name, and on all the hurd library files, and on all
 	appropriate other libraries.  Use $^ instead of $+ as we now get
 	all the libraries from the various HURDLIBS instead of from the
 	dependencies list, and this allows us to put %.o in our
 	dependencies without worrying about duplicating what the user has
 	done.  Don't explicitly link with $(libc).

	* Makeconf [$(makemode)==library]: Use $(installhdrsubdir) to
 	determine where headers in $(installhdrs) should be installed,
 	instead of a constant `hurd'.

Fri Aug 18 21:53:17 1995  Miles Bader  <miles@duality.gnu.ai.mit.edu>

	* Makeconf [$(doinst)==many]: Depend on what's in plain OTHERLIBS
	as well as the target specific $@-OTHERLIBS.

Mon Aug  7 16:29:53 1995  Miles Bader  <miles@duality.gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Remove pipes.

Fri Aug  4 14:49:25 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* README-binary: Say to run /hurd/pflocal instead of /hurd/pipes.

Wed Jul 26 14:30:17 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (lib-subdirs): Added libpipe.
	(prog-subdirs): Added pflocal.
	* libpipe: New directory.

Sun Jul 23 15:57:50 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Removed `missing'.
	(dist): Include date in snapshot name.

Sat Jul 22 14:19:36 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile (%-lndist, %-clean, %-TAGS): Set no_deps in recursive
 	make.
	* Makeconf: Don't include dependency files if no_deps is set.

Tue Jul 18 20:09:35 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makeconf (%.d: %.c): Include the _pic.o files if we are making a
 	library.

Wed Jul 12 11:41:19 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile (lib-subdirs): Removed `libnetserv'.
	* libnetserv: Move to old.
	* pfinet: Move to old; start new directory.

Fri Jul  7 17:34:54 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf [$(doinst)==many] ($(targets) installation rule): Fix typo.

Fri Jul  7 00:29:12 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (install) [doinst == one || doinst == many]: Don't
 	install files if they already exist and are up to date.

Thu Jul  6 14:45:30 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Maketools (OBJCOPY): New var.

	* Makeconf (HURDLIBS-libs): Comment out path-search rule here; I
 	don't yet trust -L to work right; particularly inside linker
 	parens.

	* Makeconf (%.d:%.c %.d:%.S): Repair sed line to include more
 	context.

	* Makeconf (Building targets) [doinst == many]: Don't try and
 	build $(special-targets).

	* Makeconf: Delete now-unneeeded explicit dependencies.

	* Makeconf (clean): Add dependency files to be removed.

	* cthreads.h: New link to libthreads/cthreads.h to make sure we
	get the local copy instead of the one in the include dir.
	* Makefile (lndist): Add new dependency.
	(lndist-cthreads-h): Rule to create the cthreads.h link.

	* Makeconf ($(target) [doinst == one]): Don't explicitly depend on
 	libc.  Too hairy for now.

	* Makeconf: Added many new rules for automatic dependency
 	generation.

	* Makeconf (install) [makemode == library]: Install libraries and
	headers as separate targets.

Wed Jul  5 17:41:33 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf: Make things work nicer for $(doinst)==many by allowing
 	per-target HURDLIBS and LDFLAGS values.

	* Makefile (prog-subdirs): Removed `pflocal'.

Thu Jun 29 15:14:25 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (cleantarg) [makemode == library]: Add $(libname).so.
	(`Building Hurd libraries'): Make simpler rule that doesn't need
	allibs.
	(alllibs): Delete variable.
	(all) [makemode == library]: Add $(libname).so.
	(install) [makemode == library]: Install $(libname.so) too.
	($(libname).so) [makemode == library]: New rule to build shared
	library.
	(%_pic.o): New rule to build pic object files.

Wed Jun 28 15:06:25 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (HURDLIBS-libs): Restore variable definition.
	($(target)) [doinst == one]: Use HURDLIBS-libs instead of
	HURDLIBS-files.
	(HURDLIBS-files): Compute names automatically.  Dike out
	per-library variables up above.

	* Makefile (prog-subdirs): Removed dev.trim.

Thu Jun 22 11:47:05 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (libihash): New variable.
	(alllibs): Add libihash.

Mon Jun 19 21:34:14 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (CFLAGS): Omit -Wno-parentheses.

Tue Jun  6 13:18:14 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile (lib-subdirs): Added libihash.
	* libihash: New directory.

Thu May 18 03:34:31 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (LDFLAGS): Append -static.

Fri May 12 18:39:21 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Removed mkbootfs.

Fri May  5 09:46:01 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makeconf: Make MIGCOMUFLAGS & <target>-MIGCOMUFLAGS actually work.

Fri Apr 21 11:44:05 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Maketools (INSTALL_BIN): Reverse Miles's last change.

Wed Apr 12 11:12:51 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (install [$(makemode) == library]): Use `$(RANLIB)',
        not `ranlib'.

Tue Apr 11 10:51:22 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Add README-binary.
	* README: Small doc fix.
	* INSTALL: Many changes.
	* README-binary: New file.

	* Makeconf (prefix): Change to /home/gd4/hurdinst.

	* Makefile (all, install): Do lib-subdirs too.

	* Makefile (prog-subdirs): Added devio, newfs, ext2fs, benchmarks,
	pfinet, tmpfs, defpager, login, and nfs.
	(other-subdirs): Added lib.
	(lib-subdirs): Added libps, libnetserv, libdirmgt, and libnetfs.
	(subdirs-nodist): Remove libnetserv.

	* devio, lib, libps, ext2fs: New directories (actually created
	several weeks before this log entry).

Mon Apr 10 14:38:26 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Maketools (INSTALL_BIN): Use /gd4/hurd-cross/install-stripped to
	install binaries stripped.

	* Makeconf (prefix, exec_prefix): Point at the currently correct place.

Fri Apr  7 18:14:01 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* ext2fs: Delete directory and its contents.
	* Makefile (subdirs-nodist, other-subdirs): Delete `ext2fs'.

Wed Apr  5 12:59:10 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile (clean): Only clean in working-prog-subdirs.

	* Makeconf (hurdinst, hurdroot): Deleted vars.  Replaced usages
	with $(prefix) and derivatives.
	(hurdroot-douglas.gnu.ai.mit.edu, hurdroot-ernst.gnu.ai.mit.edu,
	hostname, hurdrootdev): Deleted vars.
	(hurdsource): Replaced with `srcdir'.
	(startup, libc): Deleted vars; now in Maketools.
	(prefix, exec_prefix): New vars.
	(hurddir, bindir, libdir, infodir, includedir): New vars.
	($(hurdroot), $(hurdroot)/mounted): Deleted rules.
	(vpath %.defs): Look in $(crossheaders), not installation dir.
	* Maketools (crossdir, startup, libc, crossheaders): New vars.
	(MIGCOM): Use $(crossdir) instead of literal string.

Fri Mar 31 23:45:11 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf [makemode=library] (install): Only do $(installhdrs) if
 	defined.
	* Makeconf [makemode=library] (install): Use $(INSTALL_DATA).
	* Maketools (INSTALL, INSTALL_DATA, INSTALL_BIN): Define normally
 	using `install'.

Mon Mar 20 14:02:08 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makeconf (libps): New variable.
	(alllibs): Add libps.

	* ps, libps: New directories.

	* Makeconf: Doc fix.

	* Maketools (CC): Specify `$(CCTARGET)-gcc' instead of just `gcc'.

Thu Feb 16 00:43:43 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (CPPFLAGS, CFLAGS): Set with += so Makefiles can add things.

	* Maketools (hostname): New variable, so CCVERSION actually works.

Wed Feb 15 22:40:25 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Maketools (CCVERSION-duality.gnu.ai.mit.edu): New variable.

Sat Feb 11 03:59:15 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Maketools (INSTALL_BIN): Use objcopy.

Wed Dec 14 07:31:46 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* Makeconf (libnetserv): New variable.
	(alllibs): Added `libnetserv'.

Thu Nov 24 07:36:57 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Remove gcc-specs.

Tue Nov 22 22:29:41 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf ($(target)): Use normal linking with -Wl,-( $+ -Wl,-).

Wed Nov 16 14:52:20 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Maketools (MIG, MIGCOM): Never define using rsh; use
        /usr/local/i386-gnu/....

Tue Nov  8 14:27:58 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makeconf (link-objects): Mention libgcc.a explicitly here.
	* Maketools (CCVERSION): Upgrade default to version 2.6.2.

Thu Nov  3 17:17:15 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Renamed `fsck' to `bsdfsck'; renamed `newfsck' to `fsck'.
	* Makefile (prog-subdirs): Added bsdfsck.

Tue Nov  1 13:15:28 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (hurdroot): Don't set if already defined.

Fri Oct 14 17:43:46 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* newfsck: New directory.

Fri Sep 23 15:57:45 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (working-prog-subdirs): New variable, omits dirs
	containing a file BROKEN.
	(all, install): Use that instead of $(prog-subdirs).

Fri Sep 16 10:16:19 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* Makeconf (libc): Now that libc.a is a linker script, do the
	Right Thing here.
	($(target)): Here too.

Thu Sep  8 12:20:05 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* Makefile (prog-subdirs): Added `fsck'.

	* Makefile (DIST_FILES): Added `INSTALL'.
	* INSTALL: New file.

Tue Aug 30 11:29:50 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile (other-subdirs): Add libnetserv.
	(lib-subdirs): Remove libnetserv.

Tue Aug 23 09:35:44 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makeconf (link-objects): Don't use -v anymore.

Fri Aug 19 01:36:11 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (link-objects): Don't put $(OBJS) inside -( ... -).

Tue Aug 16 14:21:46 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makeconf (link-objects): Don't use $^; it omits duplicates.

Tue Aug 16 00:47:08 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (link-objects): Define with hair to use -( ... -).

Mon Aug 15 21:24:42 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* gcc-specs: Updated; now expects gcc configured for
	{i386,mips}-gnu target and libc installed in
	/usr/local/{i386,mips}-gnu/{lib,include} or wherever configured.
	(cpp): Grok only -posix.
	(lib): Use -( ... -) hack.
	(startfile): Use normal defn.
	(predefines): Remove `hurd'; `gnu' is enough.

	* Makeconf (link-objects): New variable.
	($(target)): Use it in place of other objects variables.
	Depend on $(libc).

	* Maketools (BUILD_CC): Set this instead of HOST_CC.

Wed Aug 10 13:59:40 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* netinet: New directory.

Wed Aug 10 13:41:54 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Maketools (LD): Find ld in $(tooldir) instead of $(ccdir).

Mon Aug  8 15:37:29 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* libnetserv: New directory.
	* Makefile (lib-subdirs): Added `libnetserv'.

	* Makeconf (distfiles): Don't set with :=.
	* Makefile (dist): Fix typo.

Fri Aug  5 15:23:49 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* Makeconf (machdefs, devicedefs): Deleted vars.
	(vpath %.defs): Added $(includedir)/device.

	* Makeconf (install) [doinst == many]: Repair shell syntax.

	* sh.trim, ps, su: Deleted directories.

Mon Aug  1 19:41:06 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Maketools (CC): Add -pipe.

Sun Jul 31 21:12:40 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Maketools (tooldir): Use /usr/local/i386-gnu/bin.
	(CCVERSION): Use 2.6.0.
	(INSTALL_BIN): Use objcopy -S.

Sat Jul 23 01:35:03 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf: Removed all the hairy mig rules.
	Replaced with two pattern rules and a vpath %.defs directive.
	Rationalized use of flag variables; add dash after interface name
	in computed flag variable names.

	* gcc-specs (predefines): Remove -Asystem(hurd); `gnu' is enough.

	* Makeconf ($(target)): Pass $(LDFLAGS) like a sane person.

Fri Jul 22 19:42:53 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makeconf (HURDLIBS-files): New variable.
	($(target)): Use that instead of $($(HURDLIBS)).  (mib braino.)
	(distfiles): Use $(DIST_FILES) instead of just DIST_FILES.
	(TAGS): Use a substitution reference instead of several function
	invocations.

Fri Jul 22 10:18:33 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile (other-subdirs): Removed `i386'.
	* i386: Deleted directory.
	* machine: Deleted symlink.

	* Makeconf (CFLAGS): Use += instead of :=.
	(TAGS): New var OTHERTAGS for source not in the usual places.

Thu Jul 21 15:09:34 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makeconf (CPPFLAGS): Remove -I. and add -I$(hurdsource) in
	accord with reorganization.
	(libthreads,libports,libioserver,libpager,libfshelp,libdiskfs,
	libtrivfs): Changed to find libraries in local (uninstalled)
	locations.
	($(hurdsource)/lib%/lib%.a): Define this instead of bogus rules for
	each installed library and header file separately.
	(%_S.h, %Server.c): New implicit rules for Hurd and Mach
	interfaces; associated variables.
	(makemode): New variable parent should set.
	(doinst, installationdir): New vars.
	(install, $(target), $(libname).a): New targets.
	(TAGS): Rewritten with new variable names.

	* Makefile (prog-subdirs): Removed sh.trim, ps, and su.  Added
	utils.  Removed ifsock and symlink.  Added trans.

Wed Jul 20 16:27:50 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Maketools (MIGHOSTCCVERSION, MIGCCTYPE, MIGHOSTCC): Deleted
	variables.

Tue Jul 19 12:25:06 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (other-subdirs): Added ext2fs.
	(subdirs-nodist): New variable.
	(dist): Don't include things in subdirs-nodist.

	* gcc-specs (cpp): Use -idirafter instead of -I in searching for
	our substitute /usr/include.
	(lib): Don't look for libmalloc.

	* Maketools (CCTARGET): Changed to be i386-gnu.
	(CPP): Use $(CC) instead of calling CPP directly.
	* Makeconf (CPPFLAGS): Deleted -nostdinc and -I flags.
	(link): Deleted macro.
	(ldflags, gccheaders, libgcc): Deleted variables.

	* Makeconf (malloc): Deleted variable.
	(link): Deleted $(malloc) and `-u _malloc'.

Tue Jul 12 15:23:43 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (other-subdirs): Moved dev here from $(prog-subdirs).
	(prog-subdirs): Added dev.trim.

Tue Jul  5 14:07:02 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Snapshot published.

	* Makefile (prog-subdirs): Added dev, su, symlink.
	(DIST_FILES): Added tasks and ChangeLog.

	* Makeconf (TAGS): New target.
	* Makefile (%-TAGS): New target.
	(TAGS): New target.

	(other-subdirs): Moved tmpfs here from $(prog-subdirs).

Mon Jun 20 15:03:14 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Maketools (INSTALL_BIN): New macro.

Sat Jun 18 12:34:04 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Maketools (MIGCOM): Fix mib's losing command to propagate umask
	through rsh to the remote migcom run.

Wed May 25 12:55:35 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makeconf (libtrivfs): New variable.
	($(libtrivfs), $(includedir/hurd/trivfs.h)): New targets.

Tue May 24 16:15:30 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Maketools (MIGHOSTCC, CC): Don't use -pipe any more.

Wed May 18 13:02:44 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* tasks: New file.

Tue May 17 19:51:15 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Snapshot published.

	* gcc-specs: New file.
	* Makefile (DIST_FILES): Added gcc-specs.

Fri May  6 13:24:42 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* Maketools (MIGHOSTCCVERSION, MIGHOSTCCTYPE, MIGHOSTCC):
	New variables.
	(mighost): Fully canonicalize name.

Thu May  5 19:34:57 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* Makeconf (malloc): Changed to point to libmalloc.a; installed
	there by libthreads/Makefile.

Thu May  5 07:10:49 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makeconf (malloc): Pass -u _malloc and reference $(libthreads).

	* Makeconf (headers): Variable renamed to includedir; all uses changed.
	(CPPFLAGS): Add -I. before other -Is.

Wed May  4 07:07:16 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Maketools (machine): Define variable.

Wed Apr 27 01:54:34 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile (LIB_SUBDIRS, PROG_SUBDIRS, OTHER_SUBDIRS, SUBDIRS):
	Renamed to less annoying names, not in ALL GRATUITOUS CAPS.
	(lib-subdirs): Fixed name of libthreads.
