//
// aegis - project change supervisor
// Copyright (C) 2004 Walter Franzini
// Copyright (C) 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
#include
#include
#include
string_ty *
os_basename(string_ty *name, string_ty *ext)
{
trace(("os_basename(name =\"%s\", ext = \"%s\")\n{\n", name->str_text,
(ext ? ext->str_text : "(null)")));
const char *cp = strrchr(name->str_text, '/');
if (cp)
++cp;
else
cp = name->str_text;
const char *ep = name->str_text + name->str_length;
if (NULL != ext && str_trailing_suffix(name, ext))
ep -= ext->str_length;
string_ty *path = str_n_from_c(cp, ep - cp);
trace_string(path->str_text);
trace(("}\n"));
return path;
}
nstring
os_basename(const nstring &name, const nstring &ext)
{
trace(("os_basename(name =\"%s\", ext = \"%s\")\n{\n",
name.c_str(), ext.c_str()));
const char *cp = strrchr(name.c_str(), '/');
if (cp)
++cp;
else
cp = name.c_str();
const char *ep = name.c_str() + name.size();
if (ep >= cp + ext.size() && name.ends_with(ext))
{
ep -= ext.size();
}
nstring result(cp, ep - cp);
trace(("return \"%s\";\n", result.c_str()));
trace(("}\n"));
return result;
}