diff -r 0998a43cc155 -r ca99a81745fe src/FileSystem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/FileSystem.cpp Tue Jan 01 15:34:07 2013 -0800 @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2012 David Anderson + * + * This file is part of SourcePawn. + * + * SourcePawn is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * SourcePawn is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * SourcePawn. If not, see http://www.gnu.org/licenses/. + */ +#include +#include "Zone.h" +#include "FileSystem.h" + +bool +ke::JoinPaths(Zone *zone, AutoFree &result, const char *base, const char *name) +{ + const char *sep = OS::PathSeparator(); + + size_t baselen = strlen(base); + size_t namelen = strlen(name); + size_t seplen = strlen(sep); + + char *ptr = (char *)zone->malloc(baselen + seplen + namelen + 1); + if (!ptr) + return false; + + strcpy(ptr, base); + strcpy(ptr + baselen, sep); + strcpy(ptr + baselen + seplen, name); + + result = ptr; + return true; +}