File: basename.3

package info (click to toggle)
manpages-es 1.55-9
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 7,468 kB
  • ctags: 6
  • sloc: sh: 1,629; makefile: 64
file content (137 lines) | stat: -rw-r--r-- 3,524 bytes parent folder | download | duplicates (4)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
.\" (c) 2000 by Michael Kerrisk (michael.kerrisk@gmx.net)
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\" 
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein. 
.\" 
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" License.
.\" Created, 14 Dec 2000 by Michael Kerrisk
.\"
.\" Traducido por Miguel Pérez Ibars <mpi79470@alu.um.es> el 10-julio-2004
.\"
.TH DIRNAME 3  "14 diciembre 2000" "GNU" "Manual del Programador de Linux"
.SH NOMBRE
dirname, basename \- Analiza los componentes de un nombre de ruta
.SH SINOPSIS
.nf
.B #include <libgen.h>
.sp
.BI "char *dirname(char *" path );
.nl
.BI "char *basename(char *" path );
.fi
.SH DESCRIPCIÓN
Las funciones
.B dirname
y
.B basename
descomponen un nombre de ruta terminado en null en un directorio
y un nombre de fichero.
En el caso habitual,
.B dirname
devuelve la cadena que precede, pero no incluye, al último carácter '/', y
.B basename
devuelve el componente que sigue al último carácter '/'.
Los carácteres '/' del final no se cuentan como parte del nombre de ruta.
.PP
Si
.I path
no contiene una barra,
.B dirname
devuelve la cadena "." mientras que
.B basename
devuelve una copia de
.IR path .
Si
.I path
es la cadena "/", entonces tanto
.B dirname
como
.B basename
devuelven la cadena "/".
Si
.I path
es un puntero a NULL o apunta a una cadena vacía, entonces tanto
.B dirname
como
.B basename
devuelven la cadena ".".
.PP
Concatenando la cadena devuelta por
.BR dirname ,
un carácter "/", y la cadena devuelta por
.B basename
se obtiene el nombre de ruta completo.
.PP
Tanto
.B dirname
como
.B basename
pueden modificar el contenido de
.IR path , 
así que si necesita preservar la cadena pathname,
debería pasar una copia de ella a estas funciones. Además,
.B dirname
y
.B basename
pueden devolver punteros a memoria estática
que puede ser sobreescrita en llamadas posteriores.
.PP
La siguiente lista de ejemplos (extraídos de SUSv2)
muestra las cadenas devueltas por
.B dirname
y
.B basename
para diferentes rutas:
.sp
.nf
.B 
ruta  		dirname		basename
"/usr/lib"	"/usr"		"lib"
"/usr/"		"/"  		"usr"
"usr"		"."  		"usr"
"/"  		"/"  		"/"
"."  		"."  		"."
".."  		"."  		".."
.fi
.SH EJEMPLO
.nf
char *dirc, *basec, *bname, *dname;
char *path = "/etc/passwd";

dirc = strdup(path);
basec = strdup(path);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s\\n", dname, bname);
free(dirc);
free(basec);
.fi
.SH "VALOR DEVUELTO"
Tanto
.B dirname
como
.B basename
devuelven punteros a cadenas terminadas en null.
.SH FALLOS
En versiones de glibc anteriores a 2.2.1 (incluída),
.B dirname
no maneja correctamente los nombres de ruta con carácteres '/' al final,
y provoca una violación de segmento si se le pasa un argumento NULL.
.SH "CONFORME A"
SUSv2
.SH "VÉASE TAMBIÉN"
.BR dirname (1),
.BR basename (1),