Why i get Undefined error in getgrgid() function
Basically my code looks like this:
int main(int ac, char **av) {
char *dir_name = get_dir_name(ac, av);
DIR *dir;
struct dirent *entry;
t_stat rd_stat;
dir = opendir(dir_name);
if (!dir) {
perror("diropen");
exit(EXIT_FAILURE);
}
t_group *group_info;
while ((entry = readdir(dir)) != NULL) {
if (lstat(entry->d_name, &rd_stat) == -1) {
perror("lstat");
exit(EXIT_FAILURE);
}
if ((group_info = getgrgid(rd_stat.st_gid)) == NULL) {
perror("getgrgid() error");
}
printf(%s\n", group_info);
}
closedir(dir);
}
And i'm getting error while trying to decode group id to char* type:
getgrgid() error: Undefined error: 0
I have no idea why this doesn't work, because everything worked well with user id
getgrgid()
returns NULL
when there's an error or when the group ID isn't found. You need to check errno
to tell the difference.
Also, group_info
is a structure, not a string, you can't print it with printf()
. Get the gr_name
member to print the group name.
if ((group_info = getgrgid(rd_stat.st_gid)) == NULL) {
if (errno) {
perror("getgrgid() error");
} else {
printf("Unnamed group %d\n", rd_stat.st_gid);
}
} else {
printf(%s\n", group_info.gr_name);
}