diff options
author | Ilya Dryomov <idryomov@gmail.com> | 2012-02-03 21:00:17 +0200 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2012-02-03 21:00:17 +0200 |
commit | 4f268331932819fb5e002e4a88449de6f76bb0b2 (patch) | |
tree | e2ff8cd9fc5d4aba5449ac6a2af4cef15b53839e /common.c | |
parent | fdb6c0402337d9607c7a39155088eaf033742752 (diff) |
Btrfs-progs: rearrange files in the repo
Separate every command group into its own file (cmds_<group>.c) and
rearrange includes. Remove btrfs_cmds.c.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'common.c')
-rw-r--r-- | common.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/common.c b/common.c new file mode 100644 index 00000000..03f65703 --- /dev/null +++ b/common.c @@ -0,0 +1,46 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License v2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 021110-1307, USA. + */ + +#include <sys/types.h> +#include <sys/stat.h> +#include <dirent.h> +#include <fcntl.h> + +int open_file_or_dir(const char *fname) +{ + int ret; + struct stat st; + DIR *dirstream; + int fd; + + ret = stat(fname, &st); + if (ret < 0) { + return -1; + } + if (S_ISDIR(st.st_mode)) { + dirstream = opendir(fname); + if (!dirstream) { + return -2; + } + fd = dirfd(dirstream); + } else { + fd = open(fname, O_RDWR); + } + if (fd < 0) { + return -3; + } + return fd; +} |