diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:28:42 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:28:42 -0800 |
commit | 88b607994a148f4af5bffee163e39ce8296750c6 (patch) | |
tree | fa249ff843e976cf034f2029437d3362a8396321 /tools/fs_get_stats | |
parent | 05806d7af62e07c6225b2e7103a1b115ecf6c9ad (diff) | |
download | build-88b607994a148f4af5bffee163e39ce8296750c6.zip build-88b607994a148f4af5bffee163e39ce8296750c6.tar.gz build-88b607994a148f4af5bffee163e39ce8296750c6.tar.bz2 |
auto import from //depot/cupcake/@135843
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; +} |