1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2011 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "src/utils/SkOSPath.h" 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTypes.h" 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Worker #include <string.h> 13*c8dee2aaSAndroid Build Coastguard Worker Join(const char * rootPath,const char * relativePath)14*c8dee2aaSAndroid Build Coastguard WorkerSkString SkOSPath::Join(const char *rootPath, const char *relativePath) { 15*c8dee2aaSAndroid Build Coastguard Worker SkString result(rootPath); 16*c8dee2aaSAndroid Build Coastguard Worker if (!result.endsWith(SEPARATOR) && !result.isEmpty()) { 17*c8dee2aaSAndroid Build Coastguard Worker result.appendUnichar(SEPARATOR); 18*c8dee2aaSAndroid Build Coastguard Worker } 19*c8dee2aaSAndroid Build Coastguard Worker result.append(relativePath); 20*c8dee2aaSAndroid Build Coastguard Worker return result; 21*c8dee2aaSAndroid Build Coastguard Worker } 22*c8dee2aaSAndroid Build Coastguard Worker Basename(const char * fullPath)23*c8dee2aaSAndroid Build Coastguard WorkerSkString SkOSPath::Basename(const char* fullPath) { 24*c8dee2aaSAndroid Build Coastguard Worker if (!fullPath) { 25*c8dee2aaSAndroid Build Coastguard Worker return SkString(); 26*c8dee2aaSAndroid Build Coastguard Worker } 27*c8dee2aaSAndroid Build Coastguard Worker const char* filename = strrchr(fullPath, SEPARATOR); 28*c8dee2aaSAndroid Build Coastguard Worker if (nullptr == filename) { 29*c8dee2aaSAndroid Build Coastguard Worker filename = fullPath; 30*c8dee2aaSAndroid Build Coastguard Worker } else { 31*c8dee2aaSAndroid Build Coastguard Worker ++filename; 32*c8dee2aaSAndroid Build Coastguard Worker } 33*c8dee2aaSAndroid Build Coastguard Worker return SkString(filename); 34*c8dee2aaSAndroid Build Coastguard Worker } 35*c8dee2aaSAndroid Build Coastguard Worker Dirname(const char * fullPath)36*c8dee2aaSAndroid Build Coastguard WorkerSkString SkOSPath::Dirname(const char* fullPath) { 37*c8dee2aaSAndroid Build Coastguard Worker if (!fullPath) { 38*c8dee2aaSAndroid Build Coastguard Worker return SkString(); 39*c8dee2aaSAndroid Build Coastguard Worker } 40*c8dee2aaSAndroid Build Coastguard Worker const char* end = strrchr(fullPath, SEPARATOR); 41*c8dee2aaSAndroid Build Coastguard Worker if (nullptr == end) { 42*c8dee2aaSAndroid Build Coastguard Worker return SkString(); 43*c8dee2aaSAndroid Build Coastguard Worker } 44*c8dee2aaSAndroid Build Coastguard Worker if (end == fullPath) { 45*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(fullPath[0] == SEPARATOR); 46*c8dee2aaSAndroid Build Coastguard Worker ++end; 47*c8dee2aaSAndroid Build Coastguard Worker } 48*c8dee2aaSAndroid Build Coastguard Worker return SkString(fullPath, end - fullPath); 49*c8dee2aaSAndroid Build Coastguard Worker } 50