Karel Zak <[EMAIL PROTECTED]> writes:
> OK. Now we can simplify the function at all :-) Please, review the
> patch below. Thanks Matthias, good catch.
>
> Karel
>
>
>>From 5d1f6bae3b298809ecd63b3e55f6ab30caaa4dbf Mon Sep 17 00:00:00 2001
> From: Matthias Koenig <[EMAIL PROTECTED]>
> Date: Thu, 20 Sep 2007 11:11:18 +0200
> Subject: [PATCH] hwclock: fix --rtc option
>
> The --rtc option does not set the name of the device correctly.
> It still uses /dev/rtc even if the --rtc option is given.
>
> Testcase:
> $ mv /dev/rtc /dev/foo
> $ hwclock --show --debug --rtc=/dev/foo
> hwclock from util-linux-2.13-rc2
> Using /dev interface to clock.
> Last drift adjustment done at 1190198135 seconds after 1969
> Last calibration done at 1190198135 seconds after 1969
> Hardware clock is on local time
> Assuming hardware clock is kept in local time.
> Waiting for clock tick...
> hwclock: open() of /dev/rtc failed, errno=2: No such file or directory.
> ...got clock tick
>
> Co-Author: Karel Zak <[EMAIL PROTECTED]>
> Signed-off-by: Matthias Koenig <[EMAIL PROTECTED]>
> Signed-off-by: Karel Zak <[EMAIL PROTECTED]>
> ---
> hwclock/rtc.c | 33 +++++++++++++++------------------
> 1 files changed, 15 insertions(+), 18 deletions(-)
>
> diff --git a/hwclock/rtc.c b/hwclock/rtc.c
> index f8e626e..724daf9 100644
> --- a/hwclock/rtc.c
> +++ b/hwclock/rtc.c
> @@ -104,24 +104,21 @@ open_rtc(void) {
> "/dev/misc/rtc",
> NULL
> };
> - char **p = fls;
> - char *fname = rtc_dev_name ? : *p;
> -
> - do {
> - int fd = open(fname, O_RDONLY);
> -
> - if (fd < 0 && errno == ENOENT) {
> - if (fname == rtc_dev_name)
> - break;
> - fname = *++p;
> - } else {
> - rtc_dev_name = *p;
> - return fd;
> - }
> - } while(fname);
> -
> - if (!rtc_dev_name)
> - rtc_dev_name = *fls;
> + char **p;
> +
> + /* --rtc option has been given */
> + if (rtc_dev_name)
> + return open(rtc_dev_name, O_RDONLY);
> +
> + for (p=fls; *p; ++p) {
> + int fd = open(*p, O_RDONLY);
> +
> + if (fd < 0 && errno == ENOENT)
> + continue;
> + rtc_dev_name = *p;
> + return fd;
> + }
> + rtc_dev_name = *fls; /* default */
> return -1;
> }
Yes, even better.
Thanks,
Matthias
-
To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html