summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/utils/net_time.c24
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;
}