aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/utils
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/utils')
-rw-r--r--host/lib/utils/images.cpp20
-rw-r--r--host/lib/utils/log.cpp47
-rw-r--r--host/lib/utils/paths.cpp39
3 files changed, 53 insertions, 53 deletions
diff --git a/host/lib/utils/images.cpp b/host/lib/utils/images.cpp
index a124cc208..251cadeaa 100644
--- a/host/lib/utils/images.cpp
+++ b/host/lib/utils/images.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2011 Ettus Research LLC
+// Copyright 2010-2012 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -17,16 +17,18 @@
#include <uhd/utils/images.hpp>
#include <uhd/exception.hpp>
+#include <uhd/utils/paths.hpp>
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
#include <vector>
+#include <iostream>
namespace fs = boost::filesystem;
std::vector<fs::path> get_image_paths(void); //defined in paths.cpp
/***********************************************************************
- * Find a image in the image paths
+ * Find an image in the image paths
**********************************************************************/
std::string uhd::find_image_path(const std::string &image_name){
if (fs::exists(image_name)){
@@ -36,5 +38,17 @@ std::string uhd::find_image_path(const std::string &image_name){
fs::path image_path = path / image_name;
if (fs::exists(image_path)) return image_path.string();
}
- throw uhd::io_error("Could not find path for image: " + image_name);
+ throw uhd::io_error("Could not find path for image: " + image_name + "\n\n" + uhd::print_images_error());
+}
+
+std::string uhd::find_images_downloader(void){
+ return fs::path((fs::path(get_pkg_data_path()) / "utils" / "uhd_images_downloader.py")).string();
+}
+
+std::string uhd::print_images_error(void){
+ #ifdef UHD_PLATFORM_WIN32
+ return "As an Administrator, please run:\n\n\"" + find_images_downloader() + "\"";
+ #else
+ return "Please run:\n\nsudo \"" + find_images_downloader() + "\"";
+ #endif
}
diff --git a/host/lib/utils/log.cpp b/host/lib/utils/log.cpp
index 31d11796e..d6d1786c7 100644
--- a/host/lib/utils/log.cpp
+++ b/host/lib/utils/log.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2011 Ettus Research LLC
+// Copyright 2012 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -18,6 +18,7 @@
#include <uhd/utils/log.hpp>
#include <uhd/utils/msg.hpp>
#include <uhd/utils/static.hpp>
+#include <uhd/utils/paths.hpp>
#include <boost/filesystem.hpp>
#include <boost/format.hpp>
#include <boost/thread/mutex.hpp>
@@ -35,12 +36,6 @@ namespace boost{ namespace interprocess{
#else
#include <boost/interprocess/sync/file_lock.hpp>
#endif
-#ifdef BOOST_MSVC
-#define USE_GET_TEMP_PATH
-#include <Windows.h> //GetTempPath
-#endif
-#include <stdio.h> //P_tmpdir
-#include <cstdlib> //getenv
#include <fstream>
#include <sstream>
#include <cctype>
@@ -50,42 +45,6 @@ namespace pt = boost::posix_time;
namespace ip = boost::interprocess;
/***********************************************************************
- * Helper function to get the system's temporary path
- **********************************************************************/
-static fs::path get_temp_path(void){
- const char *tmp_path = NULL;
-
- //try the official uhd temp path environment variable
- tmp_path = std::getenv("UHD_TEMP_PATH");
- if (tmp_path != NULL) return tmp_path;
-
- //try the windows function if available
- #ifdef USE_GET_TEMP_PATH
- char lpBuffer[2048];
- if (GetTempPath(sizeof(lpBuffer), lpBuffer)) return lpBuffer;
- #endif
-
- //try windows environment variables
- tmp_path = std::getenv("TMP");
- if (tmp_path != NULL) return tmp_path;
-
- tmp_path = std::getenv("TEMP");
- if (tmp_path != NULL) return tmp_path;
-
- //try the stdio define if available
- #ifdef P_tmpdir
- return P_tmpdir;
- #endif
-
- //try unix environment variables
- tmp_path = std::getenv("TMPDIR");
- if (tmp_path != NULL) return tmp_path;
-
- //give up and use the unix default
- return "/tmp";
-}
-
-/***********************************************************************
* Global resources for the logger
**********************************************************************/
class log_resource_type{
@@ -119,7 +78,7 @@ public:
void log_to_file(const std::string &log_msg){
boost::mutex::scoped_lock lock(_mutex);
if (_file_lock == NULL){
- const std::string log_path = (get_temp_path() / "uhd.log").string();
+ const std::string log_path = (fs::path(uhd::get_tmp_path()) / "uhd.log").string();
_file_stream.open(log_path.c_str(), std::fstream::out | std::fstream::app);
_file_lock = new ip::file_lock(log_path.c_str());
}
diff --git a/host/lib/utils/paths.cpp b/host/lib/utils/paths.cpp
index 4fc877d5d..26fa6d1c7 100644
--- a/host/lib/utils/paths.cpp
+++ b/host/lib/utils/paths.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2011 Ettus Research LLC
+// Copyright 2010-2012 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -26,6 +26,10 @@
#include <vector>
#include <cstdlib> //getenv
#include <cstdio> //P_tmpdir
+#ifdef BOOST_MSVC
+#define USE_GET_TEMP_PATH
+#include <windows.h> //GetTempPath
+#endif
namespace fs = boost::filesystem;
@@ -67,19 +71,20 @@ static std::vector<fs::path> get_env_paths(const std::string &var_name){
/***********************************************************************
* Get a list of special purpose paths
**********************************************************************/
-static fs::path get_uhd_pkg_data_path(void){
- return fs::path(get_env_var("UHD_PKG_DATA_PATH", UHD_PKG_DATA_PATH));
+std::string uhd::get_pkg_data_path(void)
+{
+ return get_env_var("UHD_PKG_DATA_PATH", UHD_PKG_DATA_PATH);
}
std::vector<fs::path> get_image_paths(void){
std::vector<fs::path> paths = get_env_paths("UHD_IMAGE_PATH");
- paths.push_back(get_uhd_pkg_data_path() / "images");
+ paths.push_back(fs::path(uhd::get_pkg_data_path()) / "images");
return paths;
}
std::vector<fs::path> get_module_paths(void){
std::vector<fs::path> paths = get_env_paths("UHD_MODULE_PATH");
- paths.push_back(get_uhd_pkg_data_path() / "modules");
+ paths.push_back(fs::path(uhd::get_pkg_data_path()) / "modules");
return paths;
}
@@ -87,13 +92,35 @@ std::vector<fs::path> get_module_paths(void){
* Implement the functions in paths.hpp
**********************************************************************/
std::string uhd::get_tmp_path(void){
- const char *tmp_path = std::getenv("TMP");
+ const char *tmp_path = NULL;
+
+ //try the official uhd temp path environment variable
+ tmp_path = std::getenv("UHD_TEMP_PATH");
+ if (tmp_path != NULL) return tmp_path;
+
+ //try the windows function if available
+ #ifdef USE_GET_TEMP_PATH
+ char lpBuffer[2048];
+ if (GetTempPath(sizeof(lpBuffer), lpBuffer)) return lpBuffer;
+ #endif
+
+ //try windows environment variables
+ tmp_path = std::getenv("TMP");
if (tmp_path != NULL) return tmp_path;
+ tmp_path = std::getenv("TEMP");
+ if (tmp_path != NULL) return tmp_path;
+
+ //try the stdio define if available
#ifdef P_tmpdir
if (P_tmpdir != NULL) return P_tmpdir;
#endif
+ //try unix environment variables
+ tmp_path = std::getenv("TMPDIR");
+ if (tmp_path != NULL) return tmp_path;
+
+ //give up and use the unix default
return "/tmp";
}