summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hwclock/clock.h6
-rw-r--r--hwclock/cmos.c21
-rw-r--r--hwclock/hwclock.c223
-rw-r--r--hwclock/kd.c18
-rw-r--r--hwclock/rtc.c90
5 files changed, 151 insertions, 207 deletions
diff --git a/hwclock/clock.h b/hwclock/clock.h
index 8d1befe8f..363541bbd 100644
--- a/hwclock/clock.h
+++ b/hwclock/clock.h
@@ -27,12 +27,6 @@ typedef int bool;
extern char *progname;
extern int debug;
extern int epoch_option;
-extern void outsyserr(char *msg, ...)
-#ifdef __GNUC__
- __attribute__ ((format(printf, 1, 2)));
-#else
- ;
-#endif
extern double time_diff(struct timeval subtrahend, struct timeval subtractor);
/* cmos.c */
extern void set_cmos_epoch(int ARCconsole, int SRM);
diff --git a/hwclock/cmos.c b/hwclock/cmos.c
index 8c4ccbe0d..89bcc50f9 100644
--- a/hwclock/cmos.c
+++ b/hwclock/cmos.c
@@ -287,9 +287,8 @@ atomic(const char *name, unsigned long (*op) (unsigned long), unsigned long arg)
return v;
}
}
- fprintf(stderr, _("%s: atomic %s failed for 1000 iterations!"),
- progname, name);
- exit(1);
+ errx(EXIT_FAILURE, _("atomic %s failed for 1000 iterations!"),
+ name);
}
#else
@@ -626,26 +625,20 @@ static int get_permissions_cmos(void)
if (use_dev_port) {
if ((dev_port_fd = open("/dev/port", O_RDWR)) < 0) {
int errsv = errno;
- fprintf(stderr, _("Cannot open /dev/port: %s"),
- strerror(errsv));
+ warn(_("Cannot open /dev/port"));
rc = 1;
} else
rc = 0;
} else {
rc = i386_iopl(3);
if (rc == -2) {
- fprintf(stderr,
- _
- ("I failed to get permission because I didn't try.\n"));
+ warnx(_("I failed to get permission because I didn't try."));
} else if (rc != 0) {
rc = errno;
- fprintf(stderr,
- _("%s is unable to get I/O port access: "
- "the iopl(3) call failed.\n"), progname);
+ warn(_("unable to get I/O port access: "
+ "the iopl(3) call failed."));
if (rc == EPERM && geteuid())
- fprintf(stderr,
- _
- ("Probably you need root privileges.\n"));
+ warnx(_("Probably you need root privileges.\n"));
}
}
return rc ? 1 : 0;
diff --git a/hwclock/hwclock.c b/hwclock/hwclock.c
index 3211b8f8e..88281f448 100644
--- a/hwclock/hwclock.c
+++ b/hwclock/hwclock.c
@@ -79,10 +79,6 @@ static int hwaudit_fd = -1;
static int hwaudit_on;
#endif
-#define MYNAME "hwclock"
-
-char *progname = MYNAME;
-
/* The struct that holds our hardware access routines */
struct clock_ops *ur;
@@ -157,7 +153,7 @@ static void write_date_to_file(struct tm *tm)
tm->tm_year + 1900);
fclose(fp);
} else
- perror(LASTDATE);
+ warn(_("cannot write %s"), LASTDATE);
}
static void read_date_from_file(struct tm *tm)
@@ -265,7 +261,7 @@ static int read_adjtime(struct adjtime *adjtime_p)
adjfile = fopen(adj_file_name, "r"); /* open file for reading */
if (adjfile == NULL) {
- outsyserr("cannot open file %s", adj_file_name);
+ warn("cannot open file %s", adj_file_name);
return EX_OSFILE;
}
@@ -301,11 +297,8 @@ static int read_adjtime(struct adjtime *adjtime_p)
} else {
adjtime_p->local_utc = UNKNOWN;
if (line3[0]) {
- fprintf(stderr,
- _("%s: Warning: unrecognized third line in adjtime file\n"),
- MYNAME);
- fprintf(stderr,
- _("(Expected: `UTC' or `LOCAL' or nothing.)\n"));
+ warnx(_("Warning: unrecognized third line in adjtime file\n"
+ "(Expected: `UTC' or `LOCAL' or nothing.)"));
}
}
@@ -570,11 +563,10 @@ display_time(const bool hclock_valid, const time_t systime,
const double sync_duration)
{
if (!hclock_valid)
- fprintf(stderr,
- _
- ("The Hardware Clock registers contain values that are "
- "either invalid (e.g. 50th day of month) or beyond the range "
- "we can handle (e.g. Year 2095).\n"));
+ warnx(_
+ ("The Hardware Clock registers contain values that are "
+ "either invalid (e.g. 50th day of month) or beyond the range "
+ "we can handle (e.g. Year 2095)."));
else {
struct tm *lt;
char *format = "%c";
@@ -613,22 +605,21 @@ static int interpret_date_string(const char *date_opt, time_t * const time_p)
int rc; /* local return code */
if (date_opt == NULL) {
- fprintf(stderr, _("No --date option specified.\n"));
+ warnx(_("No --date option specified."));
return 14;
}
/* prevent overflow - a security risk */
if (strlen(date_opt) > sizeof(date_command) - 50) {
- fprintf(stderr, _("--date argument too long\n"));
+ warnx(_("--date argument too long"));
return 13;
}
/* Quotes in date_opt would ruin the date command we construct. */
if (strchr(date_opt, '"') != NULL) {
- fprintf(stderr,
- _
- ("The value of the --date option is not a valid date.\n"
- "In particular, it contains quotation marks.\n"));
+ warnx(_
+ ("The value of the --date option is not a valid date.\n"
+ "In particular, it contains quotation marks."));
return 12;
}
@@ -639,7 +630,7 @@ static int interpret_date_string(const char *date_opt, time_t * const time_p)
date_child_fp = popen(date_command, "r");
if (date_child_fp == NULL) {
- outsyserr(_("Unable to run 'date' program in /bin/sh shell. "
+ warn(_("Unable to run 'date' program in /bin/sh shell. "
"popen() failed"));
return 10;
}
@@ -649,24 +640,24 @@ static int interpret_date_string(const char *date_opt, time_t * const time_p)
if (debug)
printf(_("response from date command = %s\n"), date_resp);
if (strncmp(date_resp, magic, sizeof(magic) - 1) != 0) {
- fprintf(stderr, _("The date command issued by %s returned "
+ warnx(_("The date command issued by %s returned "
"unexpected results.\n"
"The command was:\n %s\n"
- "The response was:\n %s\n"),
- MYNAME, date_command, date_resp);
+ "The response was:\n %s"),
+ program_invocation_short_name, date_command, date_resp);
retcode = 8;
} else {
long seconds_since_epoch;
rc = sscanf(date_resp + sizeof(magic) - 1, "%ld",
&seconds_since_epoch);
if (rc < 1) {
- fprintf(stderr,
- _("The date command issued by %s returned "
- "something other than an integer where the "
- "converted time value was expected.\n"
- "The command was:\n %s\n"
- "The response was:\n %s\n"),
- MYNAME, date_command, date_resp);
+ warnx(_("The date command issued by %s returned "
+ "something other than an integer where the "
+ "converted time value was expected.\n"
+ "The command was:\n %s\n"
+ "The response was:\n %s\n"),
+ program_invocation_short_name, date_command,
+ date_resp);
retcode = 6;
} else {
retcode = 0;
@@ -703,10 +694,9 @@ set_system_clock(const bool hclock_valid, const time_t newtime,
int retcode;
if (!hclock_valid) {
- fprintf(stderr,
- _
- ("The Hardware Clock does not contain a valid time, so "
- "we cannot set the System Time from it.\n"));
+ warnx(_
+ ("The Hardware Clock does not contain a valid time, so "
+ "we cannot set the System Time from it."));
retcode = 1;
} else {
struct timeval tv;
@@ -742,12 +732,11 @@ set_system_clock(const bool hclock_valid, const time_t newtime,
rc = settimeofday(&tv, &tz);
if (rc) {
if (errno == EPERM) {
- fprintf(stderr,
- _
- ("Must be superuser to set system clock.\n"));
+ warnx(_
+ ("Must be superuser to set system clock."));
retcode = EX_NOPERM;
} else {
- outsyserr(_("settimeofday() failed"));
+ warn(_("settimeofday() failed"));
retcode = 1;
}
} else
@@ -825,12 +814,11 @@ static int set_system_clock_timezone(const bool universal, const bool testing)
rc = settimeofday(&tv, &tz);
if (rc) {
if (errno == EPERM) {
- fprintf(stderr,
- _
- ("Must be superuser to set system clock.\n"));
+ warnx(_
+ ("Must be superuser to set system clock."));
retcode = EX_NOPERM;
} else {
- outsyserr(_("settimeofday() failed"));
+ warn(_("settimeofday() failed"));
retcode = 1;
}
} else
@@ -1005,31 +993,29 @@ static void save_adjtime(const struct adjtime adjtime, const bool testing)
adjfile = fopen(adj_file_name, "w");
if (adjfile == NULL) {
- outsyserr(_
- ("Could not open file with the clock adjustment parameters "
- "in it (%s) for writing"),
- adj_file_name);
+ warn(_
+ ("Could not open file with the clock adjustment parameters "
+ "in it (%s) for writing"), adj_file_name);
err = 1;
} else {
if (fputs(newfile, adjfile) < 0) {
- outsyserr(_
- ("Could not update file with the clock adjustment "
- "parameters (%s) in it"),
- adj_file_name);
+ warn(_
+ ("Could not update file with the clock adjustment "
+ "parameters (%s) in it"),
+ adj_file_name);
err = 1;
}
if (fclose(adjfile) < 0) {
- outsyserr(_
- ("Could not update file with the clock adjustment "
- "parameters (%s) in it"),
- adj_file_name);
+ warn(_
+ ("Could not update file with the clock adjustment "
+ "parameters (%s) in it"),
+ adj_file_name);
err = 1;
}
}
if (err)
- fprintf(stderr,
- _
- ("Drift adjustment parameters not updated.\n"));
+ warnx(_
+ ("Drift adjustment parameters not updated."));
}
}
}
@@ -1068,9 +1054,8 @@ do_adjustment(struct adjtime *adjtime_p,
const bool universal, const bool testing)
{
if (!hclock_valid) {
- fprintf(stderr,
- _("The Hardware Clock does not contain a valid time, "
- "so we cannot adjust it.\n"));
+ warnx(_("The Hardware Clock does not contain a valid time, "
+ "so we cannot adjust it."));
adjtime_p->last_calib_time = 0; /* calibration startover is required */
adjtime_p->last_adj_time = 0;
adjtime_p->not_adjusted = 0;
@@ -1304,28 +1289,25 @@ manipulate_epoch(const bool getepoch, const bool setepoch,
* should be changed.
*/
#ifndef __alpha__
- fprintf(stderr,
- _("The kernel keeps an epoch value for the Hardware Clock "
- "only on an Alpha machine.\nThis copy of hwclock was built for "
- "a machine other than Alpha\n(and thus is presumably not running "
- "on an Alpha now). No action taken.\n"));
+ warnx(_("The kernel keeps an epoch value for the Hardware Clock "
+ "only on an Alpha machine.\nThis copy of hwclock was built for "
+ "a machine other than Alpha\n(and thus is presumably not running "
+ "on an Alpha now). No action taken."));
#else
if (getepoch) {
unsigned long epoch;
if (get_epoch_rtc(&epoch, 0))
- fprintf(stderr,
- _
- ("Unable to get the epoch value from the kernel.\n"));
+ warnx(_
+ ("Unable to get the epoch value from the kernel."));
else
printf(_("Kernel is assuming an epoch value of %lu\n"),
epoch);
} else if (setepoch) {
if (epoch_opt == -1)
- fprintf(stderr,
- _
- ("To set the epoch value, you must use the 'epoch' "
- "option to tell to what value to set it.\n"));
+ warnx(_
+ ("To set the epoch value, you must use the 'epoch' "
+ "option to tell to what value to set it."));
else if (testing)
printf(_
("Not setting the epoch to %d - testing only.\n"),
@@ -1346,7 +1328,7 @@ manipulate_epoch(const bool getepoch, const bool setepoch,
static void out_version(void)
{
- printf(_("%s from %s\n"), MYNAME, PACKAGE_STRING);
+ printf(_("%s from %s\n"), program_invocation_short_name, PACKAGE_STRING);
}
/*
@@ -1408,7 +1390,7 @@ static void usage(const char *fmt, ...)
"\n"));
#endif
- fflush(stdout);
+ fflush(usageto);
if (fmt) {
usageto = stderr;
va_start(ap, fmt);
@@ -1416,7 +1398,7 @@ static void usage(const char *fmt, ...)
va_end(ap);
}
- hwclock_exit(fmt ? EX_USAGE : 0);
+ hwclock_exit(fmt ? EX_USAGE : EX_OK);
}
static const struct option longopts[] = {
@@ -1499,8 +1481,7 @@ int main(int argc, char **argv)
* You get these error codes only when the kernel doesn't
* have audit compiled in.
*/
- fprintf(stderr, _("%s: Unable to connect to audit system\n"),
- MYNAME);
+ warnx(_("Unable to connect to audit system"));
return EX_NOPERM;
}
#endif
@@ -1630,43 +1611,40 @@ int main(int argc, char **argv)
#endif
if (argc > 0) {
usage(_("%s takes no non-option arguments. "
- "You supplied %d.\n"), MYNAME, argc);
+ "You supplied %d.\n"), program_invocation_short_name,
+ argc);
}
if (show + set + systohc + hctosys + systz + adjust + getepoch
+ setepoch + predict > 1) {
- fprintf(stderr, _("You have specified multiple functions.\n"
- "You can only perform one function "
- "at a time.\n"));
+ warnx(_("You have specified multiple functions.\n"
+ "You can only perform one function at a time."));
hwclock_exit(EX_USAGE);
}
if (utc && local_opt) {
- fprintf(stderr, _("%s: The --utc and --localtime options "
- "are mutually exclusive. You specified "
- "both.\n"), MYNAME);
+ warnx(_("The --utc and --localtime options "
+ "are mutually exclusive. You specified both."));
hwclock_exit(EX_USAGE);
}
if (adjust && noadjfile) {
- fprintf(stderr, _("%s: The --adjust and --noadjfile options "
- "are mutually exclusive. You specified "
- "both.\n"), MYNAME);
+ warnx(_("The --adjust and --noadjfile options "
+ "are mutually exclusive. You specified both."));
hwclock_exit(EX_USAGE);
}
if (adj_file_name && noadjfile) {
- fprintf(stderr, _("%s: The --adjfile and --noadjfile options "
- "are mutually exclusive. You specified "
- "both.\n"), MYNAME);
+ warnx(_("The --adjfile and --noadjfile options "
+ "are mutually exclusive. You specified both."));
hwclock_exit(EX_USAGE);
}
if (!adj_file_name)
adj_file_name = ADJPATH;
if (noadjfile && !(utc || local_opt)) {
- fprintf(stderr, _("%s: With --noadjfile, you must specify "
- "either --utc or --localtime\n"), MYNAME);
+ warnx(_("With --noadjfile, you must specify "
+ "either --utc or --localtime"));
hwclock_exit(EX_USAGE);
}
#ifdef __alpha__
@@ -1678,8 +1656,8 @@ int main(int argc, char **argv)
rc = interpret_date_string(date_opt, &set_time);
/* (time-consuming) */
if (rc != 0) {
- fprintf(stderr, _("No usable set-to time. "
- "Cannot set clock.\n"));
+ warnx(_("No usable set-to time. "
+ "Cannot set clock."));
hwclock_exit(EX_USAGE);
}
}
@@ -1693,19 +1671,16 @@ int main(int argc, char **argv)
else {
/* program is designed to run setuid (in some situations) */
if (set || systohc || adjust) {
- fprintf(stderr,
- _("Sorry, only the superuser can change "
- "the Hardware Clock.\n"));
+ warnx(_("Sorry, only the superuser can change "
+ "the Hardware Clock."));
permitted = FALSE;
} else if (systz || hctosys) {
- fprintf(stderr,
- _("Sorry, only the superuser can change "
- "the System Clock.\n"));
+ warnx(_("Sorry, only the superuser can change "
+ "the System Clock."));
permitted = FALSE;
} else if (setepoch) {
- fprintf(stderr,
- _("Sorry, only the superuser can change the "
- "Hardware Clock epoch in the kernel.\n"));
+ warnx(_("Sorry, only the superuser can change the "
+ "Hardware Clock epoch in the kernel."));
permitted = FALSE;
} else
permitted = TRUE;
@@ -1717,24 +1692,23 @@ int main(int argc, char **argv)
#ifdef __linux__
if (getepoch || setepoch) {
manipulate_epoch(getepoch, setepoch, epoch_option, testing);
- hwclock_exit(0);
+ hwclock_exit(EX_OK);
}
#endif
if (debug)
out_version();
+
if (!systz && !predict) {
determine_clock_access_method(directisa);
if (!ur) {
- fprintf(stderr,
- _("Cannot access the Hardware Clock via "
- "any known method.\n"));
+ warnx(_("Cannot access the Hardware Clock via "
+ "any known method."));
if (!debug)
- fprintf(stderr,
- _("Use the --debug option to see the "
- "details of our search for an access "
- "method.\n"));
- hwclock_exit(1);
+ warnx(_("Use the --debug option to see the "
+ "details of our search for an access "
+ "method."));
+ hwclock_exit(EX_SOFTWARE);
}
}
@@ -1745,21 +1719,12 @@ int main(int argc, char **argv)
return rc; /* Not reached */
}
-/* A single routine for greater uniformity */
-void outsyserr(char *msg, ...)
-{
- va_list args;
- int errsv = errno;
-
- fprintf(stderr, "%s: ", progname);
- va_start(args, msg);
- vfprintf(stderr, msg, args);
- va_end(args);
- fprintf(stderr, ", errno=%d: %s.\n", errsv, strerror(errsv));
-}
-
#ifdef HAVE_LIBAUDIT
-void hwaudit_exit(int status)
+/*
+ * hwclock_exit calls either this function or plain exit depending
+ * HAVE_LIBAUDIT, see also clock.h
+ */
+void __attribute__((__noreturn__)) hwaudit_exit(int status)
{
if (hwaudit_on) {
audit_log_user_message(hwaudit_fd, AUDIT_USYS_CONFIG,
diff --git a/hwclock/kd.c b/hwclock/kd.c
index 62643178e..4bbca9cd6 100644
--- a/hwclock/kd.c
+++ b/hwclock/kd.c
@@ -49,7 +49,7 @@ static int synchronize_to_clock_tick_kd(void)
printf(_("Waiting in loop for time from KDGHWCLK to change\n"));
if (ioctl(con_fd, KDGHWCLK, &start_time) == -1) {
- outsyserr(_("KDGHWCLK ioctl to read time failed"));
+ warn(_("KDGHWCLK ioctl to read time failed"));
return 3;
}
@@ -71,16 +71,14 @@ static int synchronize_to_clock_tick_kd(void)
usleep(1);
if (ioctl(con_fd, KDGHWCLK, &nowtime) == -1) {
- outsyserr(_
- ("KDGHWCLK ioctl to read time failed in loop"));
+ warn(_("KDGHWCLK ioctl to read time failed in loop"));
return 3;
}
if (start_time.tm_sec != nowtime.tm_sec)
break;
gettimeofday(&now, NULL);
if (time_diff(now, begin) > 1.5) {
- fprintf(stderr,
- _("Timed out waiting for time change.\n"));
+ warnx(_("Timed out waiting for time change."));
return 2;
}
} while (1);
@@ -99,7 +97,7 @@ static int read_hardware_clock_kd(struct tm *tm)
struct hwclk_time t;
if (ioctl(con_fd, KDGHWCLK, &t) == -1) {
- outsyserr(_("ioctl() failed to read time from %s"),
+ warn(_("ioctl() failed to read time from %s"),
con_fd_filename);
hwclock_exit(EX_IOERR);
}
@@ -135,8 +133,8 @@ static int set_hardware_clock_kd(const struct tm *new_broken_time)
t.wday = new_broken_time->tm_wday;
if (ioctl(con_fd, KDSHWCLK, &t) == -1) {
- outsyserr(_("ioctl KDSHWCLK failed"));
- hwclock_exit(1);
+ warn(_("ioctl KDSHWCLK failed"));
+ hwclock_exit(EX_IOERR);
}
return 0;
}
@@ -171,11 +169,11 @@ struct clock_ops *probe_for_kd_clock()
}
if (con_fd < 0) {
/* probably KDGHWCLK exists on m68k only */
- outsyserr(_("Can't open /dev/tty1 or /dev/vc/1"));
+ warn(_("Can't open /dev/tty1 or /dev/vc/1"));
} else {
if (ioctl(con_fd, KDGHWCLK, &t) == -1) {
if (errno != EINVAL)
- outsyserr(_("KDGHWCLK ioctl failed"));
+ warn(_("KDGHWCLK ioctl failed"));
} else
ret = &kd;
}
diff --git a/hwclock/rtc.c b/hwclock/rtc.c
index a76b95c65..79b949625 100644
--- a/hwclock/rtc.c
+++ b/hwclock/rtc.c
@@ -158,7 +158,7 @@ static int open_rtc_or_exit(void)
int rtc_fd = open_rtc();
if (rtc_fd < 0) {
- outsyserr(_("open() of %s failed"), rtc_dev_name);
+ warn(_("open() of %s failed"), rtc_dev_name);
hwclock_exit(EX_OSFILE);
}
return rtc_fd;
@@ -191,9 +191,8 @@ static int do_rtc_read_ioctl(int rtc_fd, struct tm *tm)
rc = ioctl(rtc_fd, RTC_RD_TIME, tm);
}
if (rc == -1) {
- perror(ioctlname);
- fprintf(stderr, _("ioctl() to %s to read the time failed.\n"),
- rtc_dev_name);
+ warn(_("ioctl(%s) to %s to read the time failed"),
+ ioctlname, rtc_dev_name);
return -1;
}
@@ -233,8 +232,7 @@ static int busywait_for_rtc_clock_tick(const int rtc_fd)
break;
gettimeofday(&now, NULL);
if (time_diff(now, begin) > 1.5) {
- fprintf(stderr,
- _("Timed out waiting for time change.\n"));
+ warnx(_("Timed out waiting for time change."));
return 2;
}
} while (1);
@@ -254,7 +252,7 @@ static int synchronize_to_clock_tick_rtc(void)
rtc_fd = open_rtc();
if (rtc_fd == -1) {
- outsyserr(_("open() of %s failed"), rtc_dev_name);
+ warn(_("open() of %s failed"), rtc_dev_name);
ret = 1;
} else {
int rc; /* Return code from ioctl */
@@ -289,9 +287,9 @@ static int synchronize_to_clock_tick_rtc(void)
rc = read(rtc_fd, &dummy, sizeof(dummy));
ret = 1;
if (rc == -1)
- outsyserr(_
- ("read() to %s to wait for clock tick failed"),
- rtc_dev_name);
+ warn(_
+ ("read() to %s to wait for clock tick failed"),
+ rtc_dev_name);
else
ret = 0;
#else
@@ -314,14 +312,13 @@ static int synchronize_to_clock_tick_rtc(void)
rc = select(rtc_fd + 1, &rfds, NULL, NULL, &tv);
ret = 1;
if (rc == -1)
- outsyserr(_
- ("select() to %s to wait for clock tick failed"),
- rtc_dev_name);
+ warn(_
+ ("select() to %s to wait for clock tick failed"),
+ rtc_dev_name);
else if (rc == 0)
- fprintf(stderr,
- _
- ("select() to %s to wait for clock tick timed out\n"),
- rtc_dev_name);
+ warn(_
+ ("select() to %s to wait for clock tick timed out"),
+ rtc_dev_name);
else
ret = 0;
#endif
@@ -329,13 +326,13 @@ static int synchronize_to_clock_tick_rtc(void)
/* Turn off update interrupts */
rc = ioctl(rtc_fd, RTC_UIE_OFF, 0);
if (rc == -1)
- outsyserr(_
- ("ioctl() to %s to turn off update interrupts failed"),
- rtc_dev_name);
+ warn(_
+ ("ioctl() to %s to turn off update interrupts failed"),
+ rtc_dev_name);
} else {
- outsyserr(_
- ("ioctl() to %s to turn on update interrupts "
- "failed unexpectedly"), rtc_dev_name);
+ warn(_
+ ("ioctl() to %s to turn on update interrupts "
+ "failed unexpectedly"), rtc_dev_name);
ret = 1;
}
}
@@ -388,9 +385,8 @@ static int set_hardware_clock_rtc(const struct tm *new_broken_time)
}
if (rc == -1) {
- perror(ioctlname);
- fprintf(stderr, _("ioctl() to %s to set the time failed.\n"),
- rtc_dev_name);
+ warn(_("ioctl(%s) to %s to set the time failed."),
+ ioctlname, rtc_dev_name);
hwclock_exit(EX_IOERR);
}
@@ -420,7 +416,7 @@ struct clock_ops *probe_for_rtc_clock()
if (rtc_fd >= 0)
return &rtc;
if (debug)
- outsyserr(_("Open of %s failed"), rtc_dev_name);
+ warn(_("Open of %s failed"), rtc_dev_name);
return NULL;
}
@@ -435,21 +431,20 @@ int get_epoch_rtc(unsigned long *epoch_p, int silent)
if (rtc_fd < 0) {
if (!silent) {
if (errno == ENOENT)
- fprintf(stderr,
- _
- ("To manipulate the epoch value in the kernel, we must "
- "access the Linux 'rtc' device driver via the device special "
- "file %s. This file does not exist on this system.\n"),
- rtc_dev_name);
+ warnx(_
+ ("To manipulate the epoch value in the kernel, we must "
+ "access the Linux 'rtc' device driver via the device special "
+ "file %s. This file does not exist on this system."),
+ rtc_dev_name);
else
- outsyserr(_("Unable to open %s"), rtc_dev_name);
+ warn(_("Unable to open %s"), rtc_dev_name);
}
return 1;
}
if (ioctl(rtc_fd, RTC_EPOCH_READ, epoch_p) == -1) {
if (!silent)
- outsyserr(_("ioctl(RTC_EPOCH_READ) to %s failed"),
+ warn(_("ioctl(RTC_EPOCH_READ) to %s failed"),
rtc_dev_name);
return 1;
}
@@ -475,22 +470,21 @@ int set_epoch_rtc(unsigned long epoch)
* Bad habit, deciding not to do what the user asks just
* because one believes that the kernel might not like it.
*/
- fprintf(stderr, _("The epoch value may not be less than 1900. "
- "You requested %ld\n"), epoch);
+ warnx(_("The epoch value may not be less than 1900. "
+ "You requested %ld"), epoch);
return 1;
}
rtc_fd = open_rtc();
if (rtc_fd < 0) {
if (errno == ENOENT)
- fprintf(stderr,
- _
- ("To manipulate the epoch value in the kernel, we must "
- "access the Linux 'rtc' device driver via the device special "
- "file %s. This file does not exist on this system.\n"),
- rtc_dev_name);
+ warnx(_
+ ("To manipulate the epoch value in the kernel, we must "
+ "access the Linux 'rtc' device driver via the device special "
+ "file %s. This file does not exist on this system."),
+ rtc_dev_name);
else
- outsyserr(_("Unable to open %s"), rtc_dev_name);
+ warn(_("Unable to open %s"), rtc_dev_name);
return 1;
}
@@ -501,11 +495,11 @@ int set_epoch_rtc(unsigned long epoch)
if (ioctl(rtc_fd, RTC_EPOCH_SET, epoch) == -1) {
if (errno == EINVAL)
- fprintf(stderr, _("The kernel device driver for %s "
- "does not have the RTC_EPOCH_SET ioctl.\n"),
- rtc_dev_name);
+ warnx(_("The kernel device driver for %s "
+ "does not have the RTC_EPOCH_SET ioctl."),
+ rtc_dev_name);
else
- outsyserr(_("ioctl(RTC_EPOCH_SET) to %s failed"),
+ warn(_("ioctl(RTC_EPOCH_SET) to %s failed"),
rtc_dev_name);
return 1;
}