1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /* Copyright (c) 1988 AT&T */
22 /* All Rights Reserved */
23 /*
24  * Copyright 1997 Sun Microsystems, Inc. All rights reserved.
25  * Use is subject to license terms.
26  */
27 /*
28  * This file contains modifications Copyright 2006-2009 J. Schilling
29  *
30  * @(#)dname.c	1.5 09/11/08 J. Schilling
31  */
32 #if defined(sun)
33 #pragma ident "@(#)dname.c 1.5 09/11/08 J. Schilling"
34 #endif
35 /*
36  * @(#)dname.c 1.4 06/12/12
37  */
38 
39 #if defined(sun)
40 #pragma ident	"@(#)dname.c"
41 #pragma ident	"@(#)sccs:lib/mpwlib/dname.c"
42 #endif
43 # include	<defines.h>
44 # include	<macros.h>
45 
46 /*
47 	Returns directory name containing a file
48 	(by modifying its argument).
49 	Returns "." if current
50 	directory; handles root correctly.
51 	Returns its argument.
52 	Bugs: doesn't handle null strings correctly.
53 */
54 
dname(p)55 char *dname(p)
56 char *p;
57 {
58 	register char *c;
59 	register int s;
60 
61 	s = size(p);
62 	for(c = p+s-2; c > p; c--)
63 		if(*c == '/') {
64 			*c = '\0';
65 			return(p);
66 		}
67 	if (p[0] != '/')
68 		p[0] = '.';
69 	p[1] = 0;
70 	return(p);
71 }
72