From 4fd57cbe1ba35d3b3deb01b2eb6aba1d0aa4ddfd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Jacke?= Date: Tue, 14 Dec 2010 13:28:49 +0100 Subject: [PATCH] s3/net: don't use external "date" to make "net time set" more portable MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit the "date" syntax is different for example on *BSD Autobuild-User: Björn Jacke Autobuild-Date: Tue Dec 14 15:31:03 CET 2010 on sn-devel-104 --- source3/utils/net_time.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/source3/utils/net_time.c b/source3/utils/net_time.c index d9b6f2755102..a02387f6aa78 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; } -- 2.34.1