#!/usr/bin/perl

@ARGV == 1 && chdir $ARGV[0] or die "usage: devices.pl <dir>\n";

foreach (<DATA>) {
    chomp;
    my ($typ, $maj, $min, @l) = split;
    foreach (@l) {
	my @l2 = do {
	    if (my ($prefix, $ini, $end) = /(.*)(\d+)-(\d+)$/) {
		map { "$prefix$_" } $ini .. $end;
	    } else {
		$_;
	    }
	};
	foreach (@l2) {
	    my $cmd = "mknod-m600 $_ $typ $maj " . $min++;
	    system($cmd) == 0 or die "$cmd failed\n";
	}
    }
}

__DATA__
c   5   1 console
b   2   0 fd0-1
c   1   2 kmem
b   7   0 loop0-15
c   1   1 mem
c   1   3 null
c   1   4 port
b   1   1 ram
b   1   0 ram0-19
b   1   0 ramdisk
c   1   8 random
b  11   0 scd0-7
c   0   0 stderr
c   0   0 stdin
c   0   0 stdout
c   5   0 tty
c   4   0 tty0-9
c   4  64 ttyS0-3
c   1   9 urandom
c   1   5 zero
b   3   0 hda hda1-16
b   3  64 hdb hdb1-16
b  22   0 hdc hdc1-16
b  22  64 hdd hdd1-16
b  33   0 hde hde1-16
b  33  64 hdf hdf1-16
b  34   0 hdg hdg1-16
b  34  64 hdh hdh1-16
b   8   0 sda sda1-15 sdb sdb1-15 sdc sdc1-15 sdd sdd1-15 sde sde1-15 sdf sdf1-15 sdg sdg1-15 sdh sdh1-15
b   9   0 md0-15
c  10 144 nvram
c   9   0 st0-15