X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Futil%2FPathResolver.h;h=3bfb07e0da37903a81a83b73efd58d0802897f56;hb=HEAD;hp=23f6d9437085d33ad76513686b59203303fc9b8a;hpb=3029760d10df48e06117ab3cdce697ef6f9f6738;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/util/PathResolver.h b/xmltooling/util/PathResolver.h index 23f6d94..3bfb07e 100644 --- a/xmltooling/util/PathResolver.h +++ b/xmltooling/util/PathResolver.h @@ -1,22 +1,26 @@ -/* - * Copyright 2001-2007 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** * @file xmltooling/util/PathResolver.h - * + * * Resolves local filenames into absolute pathnames. */ @@ -28,7 +32,6 @@ #include namespace xmltooling { - /** * Resolves local filenames into absolute pathnames. */ @@ -36,62 +39,97 @@ namespace xmltooling { { MAKE_NONCOPYABLE(PathResolver); public: - PathResolver() : m_defaultPackage("xmltooling"), m_defaultPrefix("/usr") {} + PathResolver(); + virtual ~PathResolver(); - virtual ~PathResolver() {} - /** Types of file resources to resolve. */ enum file_type_t { XMLTOOLING_LIB_FILE, XMLTOOLING_LOG_FILE, XMLTOOLING_XML_FILE, XMLTOOLING_RUN_FILE, - XMLTOOLING_CFG_FILE + XMLTOOLING_CFG_FILE, + XMLTOOLING_CACHE_FILE }; - + /** * Set the default package to use when resolving files. * - * @param pkgname name of default package to use + * @param pkgname name of default package to use */ - virtual void setDefaultPackageName(const char* pkgname) { - m_defaultPackage = pkgname; - } + virtual void setDefaultPackageName(const char* pkgname); /** - * Set the default istallation prefix to use when resolving files. + * Set the default installation prefix to use when resolving files. * - * @param prefix name of default prefix to use + * @param prefix name of default prefix to use */ - virtual void setDefaultPrefix(const char* prefix) { - m_defaultPrefix = prefix; - } - + virtual void setDefaultPrefix(const char* prefix); + + /** + * Set the lib directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the library directory to use + */ + virtual void setLibDir(const char* dir); + + /** + * Set the log directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the log directory to use + */ + virtual void setLogDir(const char* dir); + + /** + * Set the XML directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the XML directory to use + */ + virtual void setXMLDir(const char* dir); + + /** + * Set the run directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the run directory to use + */ + virtual void setRunDir(const char* dir); + + /** + * Set the config directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the config directory to use + */ + virtual void setCfgDir(const char* dir); + + /** + * Set the cache directory to use when resolving files. + *

If relative, the default prefix will be prepended. + * + * @param dir the cache directory to use + */ + virtual void setCacheDir(const char* dir); + /** * Changes the input filename into an absolute pathname to the same file. - * + * * @param s filename to resolve * @param filetype type of file being resolved - * @param pkgname application package name to use in resolving the file (or NULL for the default) - * @param prefix installation prefix to use in resolving the file (or NULL for the default) - * + * @param pkgname application package name to use in resolving the file (or nullptr for the default) + * @param prefix installation prefix to use in resolving the file (or nullptr for the default) + * * @return a const reference to the input string */ - virtual const std::string& resolve(std::string& s, file_type_t filetype, const char* pkgname=NULL, const char* prefix=NULL) const; + virtual const std::string& resolve(std::string& s, file_type_t filetype, const char* pkgname=nullptr, const char* prefix=nullptr) const; private: - bool isAbsolute(const char* s) const { - switch (*s) { - case '/': - case '\\': - return true; - case '.': - return (*(s+1) == '.' || *(s+1) == '/' || *(s+1) == '\\'); - } - return *(s+1) == ':'; - } - - std::string m_defaultPackage,m_defaultPrefix; + bool isAbsolute(const char* s) const; + + std::string m_defaultPackage,m_defaultPrefix,m_lib,m_log,m_xml,m_run,m_cfg,m_cache; }; };