diff options
-rw-r--r-- | source3/utils/net_time.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/source3/utils/net_time.c b/source3/utils/net_time.c index d9b6f27551..a02387f6aa 100644 --- a/source3/utils/net_time.c +++ b/source3/utils/net_time.c @@ -103,26 +103,22 @@ int net_time_usage(struct net_context *c, int argc, const char **argv) return -1; } -/* try to set the system clock using /bin/date */ +/* try to set the system clock */ static int net_time_set(struct net_context *c, int argc, const char **argv) { - time_t t = nettime(c, NULL); - char *cmd; + struct timeval tv; int result; - if (t == 0) return -1; + tv.tv_sec = nettime(c, NULL); + tv.tv_usec=0; + + if (tv.tv_sec == 0) return -1; + + result = settimeofday(&tv,0); - /* yes, I know this is cheesy. Use "net time system" if you want to - roll your own. I'm putting this in as it works on a large number - of systems and the user has a choice in whether its used or not */ - if (asprintf(&cmd, "/bin/date %s", systime(t)) == -1) { - return -1; - } - result = system(cmd); if (result) - d_fprintf(stderr, _("%s failed. Error was (%s)\n"), - cmd, strerror(errno)); - free(cmd); + d_fprintf(stderr, _("setting system clock failed. Error was (%s)\n"), + strerror(errno)); return result; } |