The following is a list of commands or features that are deprecated.  All
deprecated utils are in maintenace mode and we keep them in source tree for
backward compatibilty only.

What:	losetup -s
When:	2.15
Why:	the option -s is in collision with the Loop-AES losetup dialect that is used
        in some distributions. Use the long version (--show) only.

--------------------------

What:	cryptoloop support in mount/losetup
When:	undefined yet
Why:	depreciated in favor of dm-crypt.

---------------------------

What:	elvtune
When:	undefined yet
Why:	useless for kernel >= 2.6.9

---------------------------

What:	arch(1) command
When:	2.14
Why:	deprecated in favor of uname(1) or arch(1) from coreutils

	The arch(1) has been added (during 2.13 development cycle) to coreutuls
	where it will be maintained as an alias for uname(1) command.

----------------------------

What:	kill(1) command
Why:	deprecated in favor of kill from procps or bash build-in kill command

----------------------------

What:	newgrp(1)
Why:	deprecated in favor of newgrp from shadow-utils

----------------------------

What:	vipw/vigr(8)
Why:	deprecated in favor of vipw/vigr(8) from shadow-utils

----------------------------

What:	last(1)
Why:	nobody uses this implementation

----------------------------

What:	shutdown(1)
Why:	nobody uses this implementation

----------------------------

What:	rdev(8), ramsize(8), vidmode(8) and  rootflags(8)
Why:	i386 specific and probably useless

