btrfs-progs: mkfs: create root directory with 755 permissions
[btrfs-progs-unstable/devel.git] / common.c
blob03f657039ed14b8c8a96fd995699d1e1a4a08ce0
1 /*
2 * This program is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU General Public
4 * License v2 as published by the Free Software Foundation.
6 * This program is distributed in the hope that it will be useful,
7 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9 * General Public License for more details.
11 * You should have received a copy of the GNU General Public
12 * License along with this program; if not, write to the
13 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
14 * Boston, MA 021110-1307, USA.
17 #include <sys/types.h>
18 #include <sys/stat.h>
19 #include <dirent.h>
20 #include <fcntl.h>
22 int open_file_or_dir(const char *fname)
24 int ret;
25 struct stat st;
26 DIR *dirstream;
27 int fd;
29 ret = stat(fname, &st);
30 if (ret < 0) {
31 return -1;
33 if (S_ISDIR(st.st_mode)) {
34 dirstream = opendir(fname);
35 if (!dirstream) {
36 return -2;
38 fd = dirfd(dirstream);
39 } else {
40 fd = open(fname, O_RDWR);
42 if (fd < 0) {
43 return -3;
45 return fd;