From: | "Mike Frysinger (vapier)" <vapier@g.o> |
---|---|
To: | gentoo-commits@l.g.o |
Subject: | [gentoo-commits] gentoo-projects commit in portage-utils/libq: xmkdir.c |
Date: | Wed, 02 Mar 2011 08:13:29 |
Message-Id: | 20110302081320.A71912004F@flycatcher.gentoo.org |
1 | vapier 11/03/02 08:13:20 |
2 | |
3 | Modified: xmkdir.c |
4 | Log: |
5 | add a helper to prune empty dir trees |
6 | |
7 | Revision Changes Path |
8 | 1.3 portage-utils/libq/xmkdir.c |
9 | |
10 | file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/libq/xmkdir.c?rev=1.3&view=markup |
11 | plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/libq/xmkdir.c?rev=1.3&content-type=text/plain |
12 | diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/libq/xmkdir.c?r1=1.2&r2=1.3 |
13 | |
14 | Index: xmkdir.c |
15 | =================================================================== |
16 | RCS file: /var/cvsroot/gentoo-projects/portage-utils/libq/xmkdir.c,v |
17 | retrieving revision 1.2 |
18 | retrieving revision 1.3 |
19 | diff -u -r1.2 -r1.3 |
20 | --- xmkdir.c 2 Mar 2011 01:18:02 -0000 1.2 |
21 | +++ xmkdir.c 2 Mar 2011 08:13:20 -0000 1.3 |
22 | @@ -85,3 +85,24 @@ |
23 | * trailing slashes: `rm -rf a/b/c/` -> need to change to a/b/c */ |
24 | return -1; |
25 | } |
26 | + |
27 | +static int rmdir_r(const char *path) |
28 | +{ |
29 | + size_t len; |
30 | + char *p, *e; |
31 | + |
32 | + p = xstrdup_len(path, &len); |
33 | + e = p + len; |
34 | + |
35 | + while (e != p) { |
36 | + if (rmdir(p) && errno == ENOTEMPTY) |
37 | + break; |
38 | + while (*e != '/' && e > p) |
39 | + --e; |
40 | + *e = '\0'; |
41 | + } |
42 | + |
43 | + free(p); |
44 | + |
45 | + return 0; |
46 | +} |