1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/*
* fnsplit.cc: Part of GNU CSSC.
*
*
* Copyright (C) 1997,2007 Free Software Foundation, Inc.
*
* 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 <http://www.gnu.org/licenses/>.
*
* Functions for canonifying filenames.
*/
#include "cssc.h"
#include "mystring.h"
void
split_filename(const mystring &fullname,
mystring& dirname, mystring& basename)
{
ASSERT(fullname.length() > 0);
dirname = mystring(""); // empty string.
basename = fullname;
/* Find the final slash.
*/
mystring::size_type i = fullname.find_last_of('/');
if (i != mystring::npos)
{
dirname = fullname.substr(0, i+1); // initial i characters
basename = fullname.substr(i+1, mystring::npos);
return;
}
}
#ifdef TEST_FNSPLIT
void usage()
{
}
int main(int argc, char *argv[])
{
for (int i=0; i<argc; ++i)
{
printf("Splitting \"%s\"..\n", argv[i]);
mystring d, b;
split_filename(argv[i], d, b);
printf("Directory part=\"%s\"\nBase part=\"%s\"\n",
d.c_str(), b.c_str());
}
return 0;
}
#endif
|