annotate lib/mkdir.c @ 5848:a48fb0e98c8c

*** empty log message ***
author Paul Eggert <eggert@cs.ucla.edu>
date Sat, 14 May 2005 06:03:57 +0000
parents dc6d827f3011
children 96c32553b4c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3479
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
1 /* On some systems, mkdir ("foo/", 0700) fails because of the trailing
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
2 slash. On those systems, this wrapper removes the trailing slash.
4665
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 3479
diff changeset
3
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 3479
diff changeset
4 Copyright (C) 2001, 2003 Free Software Foundation, Inc.
3479
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
5
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
6 This program is free software; you can redistribute it and/or modify
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
9 any later version.
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
10
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
11 This program is distributed in the hope that it will be useful,
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
14 GNU General Public License for more details.
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
15
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
17 along with this program; if not, write to the Free Software Foundation,
5848
a48fb0e98c8c *** empty log message ***
Paul Eggert <eggert@cs.ucla.edu>
parents: 4665
diff changeset
18 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
3479
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
19
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
20 /* written by Jim Meyering */
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
21
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
22 #include <config.h>
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
23
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
24 /* Disable the definition of mkdir to rpl_mkdir (from config.h) in this
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
25 file. Otherwise, we'd get conflicting prototypes for rpl_mkdir on
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
26 most systems. */
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
27 #undef mkdir
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
28
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
29 #include <sys/types.h>
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
30 #include <sys/stat.h>
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
31 #include <stdio.h>
4665
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 3479
diff changeset
32 #include <stdlib.h>
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 3479
diff changeset
33 #include <string.h>
3479
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
34
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
35 #include "dirname.h"
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
36 #include "xalloc.h"
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
37
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
38 /* This function is required at least for NetBSD 1.5.2. */
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
39
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
40 int
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
41 rpl_mkdir (char const *dir, mode_t mode)
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
42 {
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
43 int ret_val;
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
44 char *tmp_dir;
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
45 size_t len = strlen (dir);
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
46
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
47 if (len && dir[len - 1] == '/')
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
48 {
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
49 tmp_dir = xstrdup (dir);
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
50 strip_trailing_slashes (tmp_dir);
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
51 }
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
52 else
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
53 {
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
54 tmp_dir = (char *) dir;
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
55 }
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
56
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
57 ret_val = mkdir (tmp_dir, mode);
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
58
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
59 if (tmp_dir != dir)
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
60 free (tmp_dir);
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
61
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
62 return ret_val;
006fa74ac160 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
63 }