176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>. 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This program is free software; you can redistribute it and/or 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * modify it under the terms of the GNU General Public License as 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * published by the Free Software Foundation; either version 2 of the 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * License, or any later version. 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This program is distributed in the hope that it will be useful, but 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * WITHOUT ANY WARRANTY; without even the implied warranty of 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * General Public License for more details. 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * You should have received a copy of the GNU General Public License 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * along with this program; if not, write to the Free Software 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanFILE_LICENCE ( GPL2_OR_LATER ); 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @file 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Get base name of path 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <string.h> 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <libgen.h> 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Return base name from path 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @v path Full path 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @ret basename Base name 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanchar * basename ( char *path ) { 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman char *basename; 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman basename = strrchr ( path, '/' ); 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman return ( basename ? ( basename + 1 ) : path ); 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Return directory name from path 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @v path Full path 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @ret dirname Directory name 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Note that this function may modify its argument. 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanchar * dirname ( char *path ) { 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman char *separator; 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman separator = strrchr ( path, '/' ); 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if ( separator == path ) { 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman return "/"; 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman } else if ( separator ) { 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *separator = 0; 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman return path; 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman } else { 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman return "."; 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman } 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 65