1 /* 2 * Copyright (C) 2007 Michael Brown <mbrown (at) fensystems.co.uk>. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as 6 * published by the Free Software Foundation; either version 2 of the 7 * License, or any later version. 8 * 9 * This program is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 */ 18 19 FILE_LICENCE ( GPL2_OR_LATER ); 20 21 /** 22 * @file 23 * 24 * Get base name of path 25 * 26 */ 27 28 #include <string.h> 29 #include <libgen.h> 30 31 /** 32 * Return base name from path 33 * 34 * @v path Full path 35 * @ret basename Base name 36 */ 37 char * basename ( char *path ) { 38 char *basename; 39 40 basename = strrchr ( path, '/' ); 41 return ( basename ? ( basename + 1 ) : path ); 42 } 43 44 /** 45 * Return directory name from path 46 * 47 * @v path Full path 48 * @ret dirname Directory name 49 * 50 * Note that this function may modify its argument. 51 */ 52 char * dirname ( char *path ) { 53 char *separator; 54 55 separator = strrchr ( path, '/' ); 56 if ( separator == path ) { 57 return "/"; 58 } else if ( separator ) { 59 *separator = 0; 60 return path; 61 } else { 62 return "."; 63 } 64 } 65