sd: remove 'ssd' driver support
[unleashed/tickless.git] / usr / src / lib / libast / common / comp / dirname.c
blobb744f7b790f4e35532505c5af4f083da255d32cc
1 /***********************************************************************
2 * *
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
8 * *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
12 * *
13 * Information and Software Systems Research *
14 * AT&T Research *
15 * Florham Park NJ *
16 * *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
20 * *
21 ***********************************************************************/
22 #pragma prototyped
24 * dirname(3) implementation
27 #include <ast_std.h>
29 #if defined(__EXPORT__)
30 #define extern __EXPORT__
31 #endif
33 extern char *dirname(register char *pathname)
35 register char *last;
36 /* go to end of path */
37 for(last=pathname; *last; last++);
38 /* back over trailing '/' */
39 while(last>pathname && *--last=='/');
40 /* back over non-slash chars */
41 for(;last>pathname && *last!='/';last--);
42 if(last==pathname)
44 /* all '/' or "" */
45 if(*last!='/')
46 *last = '.';
47 /* preserve // */
48 else if(last[1]=='/')
49 last++;
51 else
53 /* back over trailing '/' */
54 for(;*last=='/' && last > pathname; last--);
55 /* preserve // */
56 if(last==pathname && *pathname=='/' && pathname[1]=='/')
57 last++;
59 *(last + 1) = 0;
60 return(pathname);