Add h-flag to chown(1) and chgrp(1)
This commit is contained in:
		
							
								
								
									
										22
									
								
								chgrp.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								chgrp.c
									
									
									
									
									
								
							@@ -14,30 +14,36 @@ static int gid;
 | 
			
		||||
static int status;
 | 
			
		||||
static int rflag;
 | 
			
		||||
static struct stat st;
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
usage(void)
 | 
			
		||||
{
 | 
			
		||||
	eprintf("usage: chgrp [-R] groupname file...\n");
 | 
			
		||||
}
 | 
			
		||||
static char *chown_f_name = "chown";
 | 
			
		||||
static int (*chown_f)(const char *, uid_t, gid_t) = chown;
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
chgrp(const char *path)
 | 
			
		||||
{
 | 
			
		||||
	if (chown(path, st.st_uid, gid) < 0) {
 | 
			
		||||
		weprintf("chown %s:", path);
 | 
			
		||||
	if (chown_f(path, st.st_uid, gid) < 0) {
 | 
			
		||||
		weprintf("%s %s:", chown_f_name, path);
 | 
			
		||||
		status = 1;
 | 
			
		||||
	}
 | 
			
		||||
	if (rflag)
 | 
			
		||||
		recurse(path, chgrp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
usage(void)
 | 
			
		||||
{
 | 
			
		||||
	eprintf("usage: chgrp [-hR] groupname file...\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	struct group *gr;
 | 
			
		||||
 | 
			
		||||
	ARGBEGIN {
 | 
			
		||||
	case 'h':
 | 
			
		||||
		chown_f_name = "lchown";
 | 
			
		||||
		chown_f = lchown;
 | 
			
		||||
		break;
 | 
			
		||||
	case 'R':
 | 
			
		||||
		rflag = 1;
 | 
			
		||||
		break;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user