diff -r 9f363c099ba9 lsx.c --- a/lsx.c Fri Oct 13 10:54:25 2006 +0200 +++ b/lsx.c Fri Oct 13 11:05:19 2006 +0200 @@ -7,30 +7,13 @@ #include #include #include -#include - -static int -ingroups(struct stat *s, int size, gid_t list[]) { - int i; - - for(i = 0; i < size; i++) - if(s->st_gid == list[i]) - return 1; - return 0; -} int main(int argc, char *argv[]) { int i; - gid_t gid = getgid(); struct dirent *dp; struct stat s; - uid_t uid = getuid(); DIR *dir; - long ngroups_max; - ngroups_max = sysconf(_SC_NGROUPS_MAX); - gid_t gid_l[ngroups_max]; - int ngroups = getgroups(ngroups_max, gid_l); if((argc > 1) && !strncmp(argv[1], "-v", 3)) { fputs("lsx-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout); @@ -43,9 +26,7 @@ main(int argc, char *argv[]) { if((dp = readdir(dir)) && (stat(dp->d_name, &s) != -1) && S_ISREG (s.st_mode) - && ((s.st_uid == uid && s.st_mode & S_IXUSR) || - ((s.st_gid == gid || ingroups(&s, ngroups, gid_l)) - && s.st_mode & S_IXGRP) || (s.st_mode & S_IXOTH))) + && !access(dp->d_name, X_OK)) puts(dp->d_name); while(dp); closedir(dir);