#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <pwd.h>

int main(int argc, char ** argv)
{
	uid_t newUid;
	struct passwd * pswd;
	unsigned int i = 0;
	if (argc < 3)
	{
		printf("Usage: mchown USER FILE\n");
		exit(1);
	}
	switch (argv[1][0])
	{
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
			newUid = atoi(argv[1]);
			break;
		default:
			pswd = getpwnam(argv[1]);
			if (pswd == (struct passwd *) NULL)
			{
				printf("No such user?\n");
				exit(1);
			}
			newUid = pswd->pw_uid;
	}

	for (i = 2; i < argc; ++i)
	{
		if (chown(argv[i], newUid, -1) == -1)
		{
			printf("Error on file %s.\n", argv[i]);
			exit(1);
		}
	}
	return(0);
}
