From 7115f60b91b5717d90f643fd692010905c7004db Mon Sep 17 00:00:00 2001 From: Bryan Galdrikian Date: Thu, 31 May 2018 11:36:08 -0700 Subject: Blast 1.1.3. See docs/release_notes.txt. --- tools/common/Utils.cpp | 388 ++++++++++++++++++++++++------------------------- 1 file changed, 194 insertions(+), 194 deletions(-) mode change 100644 => 100755 tools/common/Utils.cpp (limited to 'tools/common/Utils.cpp') diff --git a/tools/common/Utils.cpp b/tools/common/Utils.cpp old mode 100644 new mode 100755 index d42ed81..8355f48 --- a/tools/common/Utils.cpp +++ b/tools/common/Utils.cpp @@ -1,194 +1,194 @@ -// This code contains NVIDIA Confidential Information and is disclosed to you -// under a form of NVIDIA software license agreement provided separately to you. -// -// Notice -// NVIDIA Corporation and its licensors retain all intellectual property and -// proprietary rights in and to this software and related documentation and -// any modifications thereto. Any use, reproduction, disclosure, or -// distribution of this software and related documentation without an express -// license agreement from NVIDIA Corporation is strictly prohibited. -// -// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES -// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO -// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, -// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. -// -// Information and code furnished is believed to be accurate and reliable. -// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such -// information or for any infringement of patents or other rights of third parties that may -// result from its use. No license is granted by implication or otherwise under any patent -// or patent rights of NVIDIA Corporation. Details are subject to change without notice. -// This code supersedes and replaces all information previously supplied. -// NVIDIA Corporation products are not authorized for use as critical -// components in life support devices or systems without express written approval of -// NVIDIA Corporation. -// -// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved. - - -#include "Utils.h" - -#include "Log.h" - -#include - -#if PX_WINDOWS_FAMILY -#include -#define getCwd _getcwd -#else -#include -#define getCwd getcwd -#endif - -/////////////////////////////////////////////////////////////////////////// - -namespace Nv -{ -namespace Blast -{ - -////////////////////////////////////////////////////////////////////////////// - -static void addSlashToPath(std::string& path) -{ - if (path[path.length() - 1] != '/' && path[path.length() - 1] != '\\') - { - path.append("/"); - } -} - -FileUtils::FileUtils() -{ - mSearchPaths.push_back(""); - char currentPathTemp[FILENAME_MAX]; - if (getCwd(currentPathTemp, sizeof(currentPathTemp))) - { - std::string currentPath(currentPathTemp); - addSlashToPath(currentPath); - addAbsolutePath(currentPath); - mCurrentPath = currentPath; - } -} - -std::string FileUtils::getDirectory(const std::string& filePath) -{ - return filePath.substr(0, filePath.find_last_of("/\\") + 1); -} - -std::string FileUtils::getFilename(const std::string& filePath, bool bWithExtension) -{ - size_t p0 = filePath.find_last_of("/\\") + 1; - if (bWithExtension) - { - return filePath.substr(p0); - } - else - { - return filePath.substr(p0, filePath.find_last_of(".") - p0); - } -} - -std::string FileUtils::getFileExtension(const std::string& filePath) -{ - std::string filename = getFilename(filePath); - size_t p0 = filename.find_last_of("."); - if (p0 != std::string::npos) - return filePath.substr(p0);// + 1); - return ""; -} - -void FileUtils::addAbsolutePath(const std::string& path) -{ - if (path.empty()) - { - return; - } - - std::string newPath = path; - addSlashToPath(newPath); - - mSearchPaths.push_back(newPath); -} - -void FileUtils::addRelativePath(const std::string& relPath) -{ - addAbsolutePath(mCurrentPath + relPath); -} - -void FileUtils::clearPaths() -{ - mSearchPaths.clear(); -} - -FILE* FileUtils::findFile(const std::string& path, bool bVerbose) -{ - FILE* file; - if (find(path, &file, NULL, bVerbose)) - { - return file; - } - else - { - return NULL; - } -} - -std::string FileUtils::findPath(const std::string& path, bool bVerbose) -{ - std::string fullPath; - if (find(path, NULL, &fullPath, bVerbose)) - { - return fullPath; - } - else - { - return path; - } -} - -bool FileUtils::find(const std::string& path, FILE** ppFile, std::string* pFullPath, bool bVerbose) -{ - if (mSearchPaths.empty() || path.empty()) - { - if (bVerbose) - { - lout() << Log::TYPE_ERROR << "Error: Invalid search path configuration."; - } - return false; - } - - std::string fullPath; - - FILE* file = NULL; - const uint32_t numSearchPaths = (uint32_t)mSearchPaths.size(); - for (uint32_t i = 0; i < numSearchPaths; ++i) - { - fullPath = mSearchPaths[i] + path; - fopen_s(&file, fullPath.c_str(), "rb"); - if (file) - { - break; - } - } - - if (!file) - { - if (bVerbose) - lout() << Log::TYPE_ERROR << std::endl << "Error: Unable to find file " << path << std::endl; - return false; - } - - if (ppFile) - *ppFile = file; - else - fclose(file); - - if (pFullPath) - *pFullPath = fullPath; - - return true; -} - - -} // namespace Blast -} // namespace Nv +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved. + + +#include "Utils.h" + +#include "Log.h" + +#include + +#if PX_WINDOWS_FAMILY +#include +#define getCwd _getcwd +#else +#include +#define getCwd getcwd +#endif + +/////////////////////////////////////////////////////////////////////////// + +namespace Nv +{ +namespace Blast +{ + +////////////////////////////////////////////////////////////////////////////// + +static void addSlashToPath(std::string& path) +{ + if (path[path.length() - 1] != '/' && path[path.length() - 1] != '\\') + { + path.append("/"); + } +} + +FileUtils::FileUtils() +{ + mSearchPaths.push_back(""); + char currentPathTemp[FILENAME_MAX]; + if (getCwd(currentPathTemp, sizeof(currentPathTemp))) + { + std::string currentPath(currentPathTemp); + addSlashToPath(currentPath); + addAbsolutePath(currentPath); + mCurrentPath = currentPath; + } +} + +std::string FileUtils::getDirectory(const std::string& filePath) +{ + return filePath.substr(0, filePath.find_last_of("/\\") + 1); +} + +std::string FileUtils::getFilename(const std::string& filePath, bool bWithExtension) +{ + size_t p0 = filePath.find_last_of("/\\") + 1; + if (bWithExtension) + { + return filePath.substr(p0); + } + else + { + return filePath.substr(p0, filePath.find_last_of(".") - p0); + } +} + +std::string FileUtils::getFileExtension(const std::string& filePath) +{ + std::string filename = getFilename(filePath); + size_t p0 = filename.find_last_of("."); + if (p0 != std::string::npos) + return filePath.substr(p0);// + 1); + return ""; +} + +void FileUtils::addAbsolutePath(const std::string& path) +{ + if (path.empty()) + { + return; + } + + std::string newPath = path; + addSlashToPath(newPath); + + mSearchPaths.push_back(newPath); +} + +void FileUtils::addRelativePath(const std::string& relPath) +{ + addAbsolutePath(mCurrentPath + relPath); +} + +void FileUtils::clearPaths() +{ + mSearchPaths.clear(); +} + +FILE* FileUtils::findFile(const std::string& path, bool bVerbose) +{ + FILE* file; + if (find(path, &file, NULL, bVerbose)) + { + return file; + } + else + { + return NULL; + } +} + +std::string FileUtils::findPath(const std::string& path, bool bVerbose) +{ + std::string fullPath; + if (find(path, NULL, &fullPath, bVerbose)) + { + return fullPath; + } + else + { + return path; + } +} + +bool FileUtils::find(const std::string& path, FILE** ppFile, std::string* pFullPath, bool bVerbose) +{ + if (mSearchPaths.empty() || path.empty()) + { + if (bVerbose) + { + lout() << Log::TYPE_ERROR << "Error: Invalid search path configuration."; + } + return false; + } + + std::string fullPath; + + FILE* file = NULL; + const uint32_t numSearchPaths = (uint32_t)mSearchPaths.size(); + for (uint32_t i = 0; i < numSearchPaths; ++i) + { + fullPath = mSearchPaths[i] + path; + fopen_s(&file, fullPath.c_str(), "rb"); + if (file) + { + break; + } + } + + if (!file) + { + if (bVerbose) + lout() << Log::TYPE_ERROR << std::endl << "Error: Unable to find file " << path << std::endl; + return false; + } + + if (ppFile) + *ppFile = file; + else + fclose(file); + + if (pFullPath) + *pFullPath = fullPath; + + return true; +} + + +} // namespace Blast +} // namespace Nv -- cgit v1.2.3