From d4dee0ebe39627e9d3b90c312f770d7ba73a46f5 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 8 Mar 2009 07:35:32 -0400 Subject: tests: add symlink tests and unify code Add test cases for symlink behavior and unify some of the test code to make adding more test cases even easier. Signed-off-by: Mike Frysinger --- tests/get-group.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tests/get-group.c (limited to 'tests/get-group.c') diff --git a/tests/get-group.c b/tests/get-group.c new file mode 100644 index 0000000..8138967 --- /dev/null +++ b/tests/get-group.c @@ -0,0 +1,43 @@ +#include "tests.h" + +static int usage(int status) +{ + fputs( + "Usage: get-group [args]\n" + " `get-group` return current gid\n" + " `get-group file` return gid of file\n" + " `get-group -group` return gid of group name\n" + , status ? stderr : stdout + ); + return status; +} + +int main(int argc, char *argv[]) +{ + switch (argc) { + case 1: + printf("%i\n", getgid()); + return 0; + + case 2: + if (!strcmp(argv[1], "-h")) + return usage(0); + + if (*argv[1] == '-') { + const char *name = argv[1] + 1; + struct group *grp = getgrnam(name); + if (!grp) + errp("getgrnam(%s) failed", name); + printf("%i\n", grp->gr_gid); + } else { + const char *file = argv[1]; + struct stat st; + if (lstat(file, &st)) + errp("lstat(%s) failed", file); + printf("%i\n", st.st_gid); + } + return 0; + } + + return usage(1); +} -- cgit v1.2.3-65-gdbad