From a7027bf89e57d59958641ee7033e0f85f26ef412 Mon Sep 17 00:00:00 2001 From: Alexander Shishkin Date: Thu, 21 Oct 2010 00:24:05 +0200 Subject: stat: remove superfluous setXXent() calls, plug memory leak function old new delta print_stat 875 865 -10 Signed-off-by: Alexander Shishkin Signed-off-by: Denys Vlasenko --- coreutils/stat.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'coreutils/stat.c') diff --git a/coreutils/stat.c b/coreutils/stat.c index 777197292..d176d07ea 100644 --- a/coreutils/stat.c +++ b/coreutils/stat.c @@ -247,14 +247,12 @@ static void FAST_FUNC print_stat(char *pformat, const char m, strcat(pformat, "lu"); printf(pformat, (unsigned long) statbuf->st_uid); } else if (m == 'U') { - setpwent(); pw_ent = getpwuid(statbuf->st_uid); printfs(pformat, (pw_ent != NULL) ? pw_ent->pw_name : "UNKNOWN"); } else if (m == 'g') { strcat(pformat, "lu"); printf(pformat, (unsigned long) statbuf->st_gid); } else if (m == 'G') { - setgrent(); gw_ent = getgrgid(statbuf->st_gid); printfs(pformat, (gw_ent != NULL) ? gw_ent->gr_name : "UNKNOWN"); } else if (m == 't') { @@ -591,20 +589,20 @@ static bool do_stat(const char *filename, const char *format) # endif } else { char *linkname = NULL; - struct passwd *pw_ent; struct group *gw_ent; - setgrent(); + gw_ent = getgrgid(statbuf.st_gid); - setpwent(); pw_ent = getpwuid(statbuf.st_uid); if (S_ISLNK(statbuf.st_mode)) linkname = xmalloc_readlink_or_warn(filename); - if (linkname) + if (linkname) { printf(" File: '%s' -> '%s'\n", filename, linkname); - else + free(linkname); + } else { printf(" File: '%s'\n", filename); + } printf(" Size: %-10llu\tBlocks: %-10llu IO Block: %-6lu %s\n" "Device: %llxh/%llud\tInode: %-10llu Links: %-5lu", -- cgit v1.2.3