DataMuseum.dk

Presents historical artifacts from the history of:

Commodore CBM-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Commodore CBM-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦cd2c7a07b⟧ TextFile

    Length: 808 (0x328)
    Types: TextFile
    Notes: UNIX file
    Names: »chown.c«

Derivation

└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
    └─⟦f4b8d8c84⟧ UNIX V7 Filesystem
        └─ ⟦this⟧ »cmd/chown.c« 

TextFile

/*
 * Change the owner of specified files.
 */

#include <stdio.h>
#include <stat.h>
#include <pwd.h>

main(argc, argv)
char *argv[];
{
	register struct passwd *pwp;
	register int c;
	register short owner, group;
	struct stat sb;
	register short status = 0;

	if (argc < 3)
		usage();
	if ((c = *argv[1])>='0' && c<='9')
		owner = atoi(argv[1]);
	else {
		if ((pwp = getpwnam(argv[1])) == NULL)
			cherr("Bad username `%s'\n", argv[1]);
		owner = pwp->pw_uid;
	}
	for (c = 2; c < argc; c++) {
		group = 0;
		if (stat(argv[c], &sb) >= 0)
			group = sb.st_gid;
		if (chown(argv[c], owner, group) < 0) {
			perror(argv[c]);
			status = 2;
		}
	}
	exit (status);
}

usage()
{
	fprintf(stderr, "Usage: chown owner file ...\n");
	exit(1);
}

/* VARARGS */
cherr(x)
{
	fprintf(stderr, "chown: %r", &x);
	exit(2);
}