mirror of https://github.com/trapexit/mergerfs.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							89 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							89 lines
						
					
					
						
							1.9 KiB
						
					
					
				
								/*
							 | 
						|
								  Copyright (c) 2016, Antonio SJ Musumeci <trapexit@spawn.link>
							 | 
						|
								
							 | 
						|
								  Permission to use, copy, modify, and/or distribute this software for any
							 | 
						|
								  purpose with or without fee is hereby granted, provided that the above
							 | 
						|
								  copyright notice and this permission notice appear in all copies.
							 | 
						|
								
							 | 
						|
								  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
							 | 
						|
								  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
							 | 
						|
								  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
							 | 
						|
								  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
							 | 
						|
								  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
							 | 
						|
								  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
							 | 
						|
								  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
							 | 
						|
								*/
							 | 
						|
								
							 | 
						|
								#pragma once
							 | 
						|
								
							 | 
						|
								#include "ghc/filesystem.hpp"
							 | 
						|
								
							 | 
						|
								#include <string>
							 | 
						|
								#include <vector>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								namespace fs
							 | 
						|
								{
							 | 
						|
								  typedef ghc::filesystem::path Path;
							 | 
						|
								
							 | 
						|
								  namespace path
							 | 
						|
								  {
							 | 
						|
								    std::string dirname(const char *path);
							 | 
						|
								    std::string dirname(const std::string &path);
							 | 
						|
								
							 | 
						|
								    std::string basename(const std::string &path);
							 | 
						|
								
							 | 
						|
								    static
							 | 
						|
								    inline
							 | 
						|
								    void
							 | 
						|
								    append(std::string &base_,
							 | 
						|
								           const char  *suffix_)
							 | 
						|
								    {
							 | 
						|
								      base_ += suffix_;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    static
							 | 
						|
								    inline
							 | 
						|
								    void
							 | 
						|
								    append(std::string       &base_,
							 | 
						|
								           const std::string &suffix_)
							 | 
						|
								    {
							 | 
						|
								      base_ += suffix_;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    static
							 | 
						|
								    inline
							 | 
						|
								    std::string
							 | 
						|
								    make(const char *base_,
							 | 
						|
								         const char *suffix_)
							 | 
						|
								    {
							 | 
						|
								      char back;
							 | 
						|
								      std::string path(base_);
							 | 
						|
								
							 | 
						|
								      back = *path.rbegin();
							 | 
						|
								      if((back != '/') && (suffix_[0] != '/'))
							 | 
						|
								        path.push_back('/');
							 | 
						|
								      path += suffix_;
							 | 
						|
								
							 | 
						|
								      return path;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    static
							 | 
						|
								    inline
							 | 
						|
								    std::string
							 | 
						|
								    make(const std::string &base_,
							 | 
						|
								         const char        *suffix_)
							 | 
						|
								    {
							 | 
						|
								      return (base_ + suffix_);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    static
							 | 
						|
								    inline
							 | 
						|
								    std::string
							 | 
						|
								    make(const std::string &base_,
							 | 
						|
								         const std::string &suffix_)
							 | 
						|
								    {
							 | 
						|
								      return (base_ + suffix_);
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								};
							 |