technology: Remove unneeded scan stop when removing device
[framework/connectivity/connman.git] / src / timezone.c
index 1234622..173d658 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  Connection Manager
  *
- *  Copyright (C) 2007-2010  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2007-2012  Intel Corporation. All rights reserved.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -23,6 +23,7 @@
 #include <config.h>
 #endif
 
+#define _GNU_SOURCE
 #include <errno.h>
 #include <stdio.h>
 #include <fcntl.h>
@@ -49,7 +50,7 @@ static char *read_key_file(const char *pathname, const char *key)
        off_t ptrlen, keylen;
        int fd;
 
-       fd = open(pathname, O_RDONLY);
+       fd = open(pathname, O_RDONLY | O_CLOEXEC);
        if (fd < 0)
                return NULL;
 
@@ -121,7 +122,7 @@ static int compare_file(void *src_map, struct stat *src_st,
        void *dst_map;
        int fd, result;
 
-       fd = open(pathname, O_RDONLY);
+       fd = open(pathname, O_RDONLY | O_CLOEXEC);
        if (fd < 0)
                return -1;
 
@@ -223,7 +224,7 @@ char *__connman_timezone_lookup(void)
 
        DBG("sysconfig zone %s", zone);
 
-       fd = open(ETC_LOCALTIME, O_RDONLY);
+       fd = open(ETC_LOCALTIME, O_RDONLY | O_CLOEXEC);
        if (fd < 0) {
                g_free(zone);
                return NULL;
@@ -283,7 +284,7 @@ static int write_file(void *src_map, struct stat *src_st, const char *pathname)
                        unlink(pathname);
        }
 
-       fd = open(pathname, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+       fd = open(pathname, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0644);
        if (fd < 0)
                return -EIO;
 
@@ -307,7 +308,7 @@ int __connman_timezone_change(const char *zone)
 
        snprintf(pathname, PATH_MAX, "%s/%s", USR_SHARE_ZONEINFO, zone);
 
-       fd = open(pathname, O_RDONLY);
+       fd = open(pathname, O_RDONLY | O_CLOEXEC);
        if (fd < 0)
                return -EINVAL;
 
@@ -419,7 +420,7 @@ int __connman_timezone_init(void)
        dirname = g_path_get_dirname(ETC_LOCALTIME);
 
        wd = inotify_add_watch(fd, dirname, IN_DONT_FOLLOW |
-                                               IN_MODIFY | IN_MOVED_TO);
+                                               IN_CLOSE_WRITE | IN_MOVED_TO);
 
        g_free(dirname);