summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/misc_api/misc_api_kernel_2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/misc_api/misc_api_kernel_2.cpp')
-rw-r--r--ml/dlib/dlib/misc_api/misc_api_kernel_2.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/ml/dlib/dlib/misc_api/misc_api_kernel_2.cpp b/ml/dlib/dlib/misc_api/misc_api_kernel_2.cpp
new file mode 100644
index 000000000..e6dc772da
--- /dev/null
+++ b/ml/dlib/dlib/misc_api/misc_api_kernel_2.cpp
@@ -0,0 +1,123 @@
+// Copyright (C) 2004 Davis E. King (davis@dlib.net)
+// License: Boost Software License See LICENSE.txt for the full license.
+#ifndef DLIB_MISC_API_KERNEL_2_CPp_
+#define DLIB_MISC_API_KERNEL_2_CPp_
+#include "../platform.h"
+
+#ifdef POSIX
+
+#include <unistd.h>
+#include "misc_api_kernel_2.h"
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <errno.h>
+
+namespace dlib
+{
+// ----------------------------------------------------------------------------------------
+
+ void sleep (
+ unsigned long milliseconds
+ )
+ {
+ // in HP-UX you can only usleep for less than a second
+#ifdef HPUX
+ if (milliseconds >= 1000)
+ {
+ ::sleep(milliseconds/1000);
+ unsigned long remaining = milliseconds%1000;
+ if (remaining > 0)
+ ::usleep(remaining*1000);
+ }
+ else
+ {
+ ::usleep(milliseconds*1000);
+ }
+#else
+ ::usleep(milliseconds*1000);
+#endif
+ }
+
+// ----------------------------------------------------------------------------------------
+
+ std::string get_current_dir (
+ )
+ {
+ char buf[1024];
+ if (getcwd(buf,sizeof(buf)) == 0)
+ {
+ return std::string();
+ }
+ else
+ {
+ return std::string(buf);
+ }
+ }
+
+// ----------------------------------------------------------------------------------------
+
+ void set_current_dir (
+ const std::string& new_dir
+ )
+ {
+ if (chdir(new_dir.c_str()))
+ {
+ throw set_current_dir_error("Error changing current dir to '" + new_dir + "'");
+ }
+ }
+
+// ----------------------------------------------------------------------------------------
+
+ uint64 timestamper::
+ get_timestamp (
+ ) const
+ {
+ uint64 ts;
+ timeval curtime;
+ gettimeofday(&curtime,0);
+
+ ts = curtime.tv_sec;
+ ts *= 1000000;
+ ts += curtime.tv_usec;
+ return ts;
+ }
+
+// ----------------------------------------------------------------------------------------
+
+ void create_directory (
+ const std::string& dir
+ )
+ {
+ if (mkdir(dir.c_str(),0777))
+ {
+ // an error has occurred
+ if (errno == EEXIST)
+ {
+ struct stat buffer;
+ // now check that this is actually a valid directory
+ if (::stat(dir.c_str(),&buffer))
+ {
+ // the directory was not found
+ throw dir_create_error(dir);
+ }
+ else if (S_ISDIR(buffer.st_mode) == 0)
+ {
+ // It is not a directory
+ throw dir_create_error(dir);
+ }
+ }
+ else
+ {
+ throw dir_create_error(dir);
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------------------
+}
+
+#endif // POSIX
+
+#endif // DLIB_MISC_API_KERNEL_2_CPp_
+