ftp.nice.ch/pub/next/unix/backup/backupod.N.bs.tar.gz#/mountod.c

This is mountod.c in view mode; [Download] [Up]

/* mountod.c - mount an od in argv[1], change owner to user
*/


#include <stdio.h>

#define UNIT	"0a"					/* Default unit number */
#define DEVICE	"od"					/* Default (only available) device name */
#define DEVDIR	"/dev"					/* Default (only available) device directory */
#define MOUNT	"/usr/etc/mount"		/* Command for mounting filesystem */

#define MAX(x, y)	\
	(x > y ? x : y)


char *getenv();

main(int argc, char *argv[])
{
	char		*cmdbuf;
	char		*PgmName;
	char		*unit;
	char		*user;


	PgmName = basename(argv[0]);		/* So messages look nice */

	if ((argc > 3) || (argc < 2)){
		(void)fprintf(stderr, "%s: wrong number of arguments\n", PgmName);
		(void)fprintf(stderr, "Usage: %s directory [UNIT]\n", PgmName);
		(void)fprintf(stderr,
	"\tUNIT is the OD unit number (e.g., 0a) to be mounted on directory\n", DEVDIR);
		exit(1);
	} else if (argc == 3) {		/* Two argument provided */
		unit = argv[2];
	} else {					/* One argument provided; use default unit */
		unit = UNIT;
	}

	cmdbuf = (char *)malloc(1024);

	(void)sprintf(cmdbuf, "%s %s/%s%s %s", MOUNT, DEVDIR, DEVICE, unit, argv[1]);
	if (0 != system(cmdbuf)) {
		(void)fprintf(stderr, "%s: problems mounting %s on %s.\n", PgmName, unit, argv[1]);
		exit(1);
	}
	
	if (user = getenv ("USER")) {
		(void)sprintf (cmdbuf, "/usr/etc/chown %s %s", user, argv[1]);
		if (0 != system(cmdbuf)) {
			(void)fprintf(stderr, "%s: problems with chown\n", PgmName);
			exit (2);
		} /* end if command didn't work */
	} else {
		fprintf (stderr, "%s: environment variable USER not defined\n", PgmName);
		exit (3);
	} /* end if USER in environment var */

	exit(0);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.