Gentoo Archives: gentoo-commits

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 +}