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
|
#ifndef _NO_DIRNAME
/* Copyright 2005 Shaun Jackman
* Permission to use, copy, modify, and distribute this software
* is freely granted, provided that this notice is preserved.
*/
#include <libgen.h>
#include <string.h>
char *
dirname (char *path)
{
char *p;
if( path == NULL || *path == '\0' )
return ".";
p = path + strlen(path) - 1;
while( *p == '/' ) {
if( p == path )
return path;
*p-- = '\0';
}
while( p >= path && *p != '/' )
p--;
while( p > path && p[-1] == '/' )
p--;
return
p < path ? "." :
p == path ? "/" :
(*p = '\0', path);
}
#endif /* !_NO_DIRNAME */
|