socket-util: Move get_mtime() here from stream-ssl.
authorBen Pfaff <blp@nicira.com>
Wed, 21 Apr 2010 17:47:45 +0000 (10:47 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 26 Apr 2010 18:29:32 +0000 (11:29 -0700)
An upcoming commit will add a new user for this function in another file,
so export it and move it to a common library file.

lib/socket-util.c
lib/socket-util.h
lib/stream-ssl.c

index 350f5f065324148a78de2c49930820fb9101d35b..4965b63af4d1cce7e5b62e38579efe26834fb68f 100644 (file)
@@ -611,3 +611,31 @@ fsync_parent_dir(const char *file_name)
 
     return error;
 }
+
+/* Obtains the modification time of the file named 'file_name' to the greatest
+ * supported precision.  If successful, stores the mtime in '*mtime' and
+ * returns 0.  On error, returns a positive errno value and stores zeros in
+ * '*mtime'. */
+int
+get_mtime(const char *file_name, struct timespec *mtime)
+{
+    struct stat s;
+
+    if (!stat(file_name, &s)) {
+        mtime->tv_sec = s.st_mtime;
+
+#if HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
+        mtime->tv_nsec = s.st_mtim.tv_nsec;
+#elif HAVE_STRUCT_STAT_ST_MTIMENSEC
+        mtime->tv_nsec = s.st_mtimensec;
+#else
+        mtime->tv_nsec = 0;
+#endif
+
+        return 0;
+    } else {
+        mtime->tv_sec = mtime->tv_nsec = 0;
+        return errno;
+    }
+}
+
index f5d60105eede92f99b0626bcb21315948a3a9ece..40a96144d9b21e7fd411c72be4da58bf129a1fc1 100644 (file)
@@ -45,5 +45,6 @@ int read_fully(int fd, void *, size_t, size_t *bytes_read);
 int write_fully(int fd, const void *, size_t, size_t *bytes_written);
 
 int fsync_parent_dir(const char *file_name);
+int get_mtime(const char *file_name, struct timespec *mtime);
 
 #endif /* socket-util.h */
index aeca21ecc0fdd555507ddd749fdf3f9d6ba86118..27c9d4c92de6a440df9e41e8ada5978953f4a992 100644 (file)
@@ -37,7 +37,6 @@
 #include "packets.h"
 #include "poll-loop.h"
 #include "socket-util.h"
-#include "socket-util.h"
 #include "util.h"
 #include "stream-provider.h"
 #include "stream.h"
@@ -915,26 +914,6 @@ stream_ssl_is_configured(void)
     return private_key.file_name || certificate.file_name || ca_cert.file_name;
 }
 
-static void
-get_mtime(const char *file_name, struct timespec *mtime)
-{
-    struct stat s;
-
-    if (!stat(file_name, &s)) {
-        mtime->tv_sec = s.st_mtime;
-
-#if HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
-        mtime->tv_nsec = s.st_mtim.tv_nsec;
-#elif HAVE_STRUCT_STAT_ST_MTIMENSEC
-        mtime->tv_nsec = s.st_mtimensec;
-#else
-        mtime->tv_nsec = 0;
-#endif
-    } else {
-        mtime->tv_sec = mtime->tv_nsec = 0;
-    }
-}
-
 static bool
 update_ssl_config(struct ssl_config_file *config, const char *file_name)
 {