diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:03:49 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:03:49 -0800 |
commit | dcc08f073b6873c69ab891d4f69f7c568e282df7 (patch) | |
tree | cbaa218be3f46078555b6bfb36c48659096a747a /tools/fs_get_stats | |
parent | d3aa4000e42fd1036e0e3286843c5132f905d754 (diff) | |
download | build-dcc08f073b6873c69ab891d4f69f7c568e282df7.zip build-dcc08f073b6873c69ab891d4f69f7c568e282df7.tar.gz build-dcc08f073b6873c69ab891d4f69f7c568e282df7.tar.bz2 |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'tools/fs_get_stats')
-rw-r--r-- | tools/fs_get_stats/Android.mk | 9 | ||||
-rw-r--r-- | tools/fs_get_stats/fs_get_stats.c | 64 |
2 files changed, 73 insertions, 0 deletions
diff --git a/tools/fs_get_stats/Android.mk b/tools/fs_get_stats/Android.mk new file mode 100644 index 0000000..c9b4a05 --- /dev/null +++ b/tools/fs_get_stats/Android.mk @@ -0,0 +1,9 @@ +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := fs_get_stats.c + +LOCAL_MODULE := fs_get_stats + +include $(BUILD_HOST_EXECUTABLE) diff --git a/tools/fs_get_stats/fs_get_stats.c b/tools/fs_get_stats/fs_get_stats.c new file mode 100644 index 0000000..356f6f9 --- /dev/null +++ b/tools/fs_get_stats/fs_get_stats.c @@ -0,0 +1,64 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +#include <private/android_filesystem_config.h> + +#define DO_DEBUG 1 + +#define ERROR(fmt,args...) \ + do { \ + fprintf(stderr, "%s:%d: ERROR: " fmt, \ + __FILE__, __LINE__, ##args); \ + } while (0) + +#if DO_DEBUG +#define DEBUG(fmt,args...) \ + do { fprintf(stderr, "DEBUG: " fmt, ##args); } while(0) +#else +#define DEBUG(x...) do {} while(0) +#endif + +void +print_help(void) +{ + fprintf(stderr, "fs_get_stats: retrieve the target file stats " + "for the specified file\n"); + fprintf(stderr, "usage: fs_get_stats cur_perms is_dir filename\n"); + fprintf(stderr, "\tcur_perms - The current permissions of " + "the file\n"); + fprintf(stderr, "\tis_dir - Is filename is a dir, 1. Otherwise, 0.\n"); + fprintf(stderr, "\tfilename - The filename to lookup\n"); + fprintf(stderr, "\n"); +} + +int +main(int argc, const char *argv[]) +{ + char *endptr; + char is_dir = 0; + unsigned perms = 0; + unsigned uid = (unsigned)-1; + unsigned gid = (unsigned)-1; + + if (argc < 4) { + ERROR("Invalid arguments\n"); + print_help(); + exit(-1); + } + + perms = (unsigned)strtoul(argv[1], &endptr, 0); + if (!endptr || (endptr == argv[1]) || (*endptr != '\0')) { + ERROR("current permissions must be a number. Got '%s'.\n", argv[1]); + exit(-1); + } + + if (!strcmp(argv[2], "1")) + is_dir = 1; + + fs_config(argv[3], is_dir, &uid, &gid, &perms); + fprintf(stdout, "%d %d 0%o\n", uid, gid, perms); + + return 0; +} |