// // aegis - project change supervisor // Copyright (C) 1999, 2002-2006, 2008 Peter Miller // // This program 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. // // This program 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 this program; if not, see // . // #include // for assert #include #include #include void os_mkdir_between(const nstring &top, const nstring &extn, int mode) { trace(("os_mkdir_between(top = %08lX, extn = %08lX, mode = 0%o)\n{\n", (long)&top, (long)&extn, mode)); trace_string(top.c_str()); trace_string(extn.c_str()); assert(top[0] == '/'); assert(extn[0] != '/'); assert(extn[extn.size() - 1] != '/'); assert(!extn.empty()); for (const char *cp = extn.c_str(); *cp; ++cp) { if (*cp != '/') continue; nstring s1(extn.c_str(), cp - extn.c_str()); nstring s2(os_path_cat(top, s1)); trace(("mkdir %s\n", s2.c_str())); if (!os_exists(s2)) { os_mkdir(s2, mode); undo_rmdir_errok(s2); } } trace(("}\n")); } void os_mkdir_between(string_ty *top, string_ty *extn, int mode) { os_mkdir_between(nstring(top), nstring(extn), mode); }