Blame


1 cfa37a7b 2004-04-10 devnull .TH CLEANNAME 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull cleanname \- clean a path name
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
6 cfa37a7b 2004-04-10 devnull .br
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
8 cfa37a7b 2004-04-10 devnull .sp
9 cfa37a7b 2004-04-10 devnull .B
10 cfa37a7b 2004-04-10 devnull char* cleanname(char *filename)
11 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
12 cfa37a7b 2004-04-10 devnull .I Cleanname
13 cfa37a7b 2004-04-10 devnull takes a
14 cfa37a7b 2004-04-10 devnull .I filename
15 cfa37a7b 2004-04-10 devnull and by lexical processing only returns the shortest string that names the same (possibly
16 cfa37a7b 2004-04-10 devnull hypothetical) file.
17 cfa37a7b 2004-04-10 devnull It eliminates multiple and trailing slashes, and it lexically interprets
18 cfa37a7b 2004-04-10 devnull .B .
19 cfa37a7b 2004-04-10 devnull and
20 cfa37a7b 2004-04-10 devnull .B ..
21 cfa37a7b 2004-04-10 devnull directory components in the name.
22 cfa37a7b 2004-04-10 devnull The string is overwritten in place.
23 cfa37a7b 2004-04-10 devnull .PP
24 cfa37a7b 2004-04-10 devnull The shortest string
25 cfa37a7b 2004-04-10 devnull .I cleanname
26 cfa37a7b 2004-04-10 devnull can return is two bytes: the null-terminated string
27 cfa37a7b 2004-04-10 devnull \f(CW"."\f1.
28 cfa37a7b 2004-04-10 devnull Therefore
29 cfa37a7b 2004-04-10 devnull .I filename
30 cfa37a7b 2004-04-10 devnull must contain room for at least two bytes.
31 cfa37a7b 2004-04-10 devnull .SH SOURCE
32 c3674de4 2005-01-11 devnull .B \*9/src/lib9/cleanname.c
33 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
34 d32deab1 2020-08-16 rsc .MR cleanname (1)