AUSAM/source/S/mknod.c

Compare this file to the similar file:
Show the results in this format:

main(argc, argv)
int argc;
char **argv;
{
	register int m, a, b;

	if(argc != 5)
	{
		printf("arg count\n");
		goto usage;
	}
	if(*argv[2] == 'b')
		m = 0160666;
	else if(*argv[2] == 'c')
		m = 0120666;
	else
		goto usage;
	a = number(argv[3]);
	b = number(argv[4]);
	if( a == -1 || b == -1 )
		goto usage;
	if(mknod(argv[1], m, (a<<8)|b) < 0)
	{
		perror("mknod");
		return 1;
	}
	return 0;

usage:
	printf("usage: mknod name b/c major minor\n");
	return 1;
}

number(s)
register char *s;
{
	register int n = 0;
	register char c;

	while(c = *s++)
	{
		if( c<'0' || c>'9' )
			return -1;
		n = n*10 + c-'0';
		if( n < 0 )
			return -1;
	}
	return n;
}