Hwclock is a program that runs under Linux and sets and queries the 
Hardware Clock, which is often called the Real Time Clock, RTC, or
CMOS clock.

Sometimes, you need to install hwclock setuid root.  If you want users
other than the superuser to be able to display the clock value using the
direct ISA I/O method, install it setuid root.  If you have the /dev/rtc
interface on your system or are on a non-ISA system, there's probably
no need for users to use the direct ISA I/O method, so don't bother.

To install setuid root, do something like this:

  chmod a=rx,u=s /sbin/hwclock

In any case, hwclock will not allow you to set anything unless you have
the superuser _real_ uid.  (This is restriction is not necessary if you
haven't installed setuid root, but it's there for now).

You may want to preformat and/or compress the man page before installing.

If you want to build hwclock, just cd to the source directory and invoke
make with no parameters.

hwclock calls option processing routines in the libsshopt library,
which is part of Sverre H. Huseby's "shhopt" package. You
can find a more authoritative copy of this package on metalab
(ftp://metalab.unc.edu/pub/Linux/libs/shhopt-X.Y).
