#!/usr/bin/perl
# 
# devicestex.pl
# Created: Sun Sep 27 18:13:58 1998 by jay.kominek@colorado.edu
# Revised: Sun Sep 27 18:32:33 1998 by jay.kominek@colorado.edu
# Copyright 1998 Jay F. Kominek (jay.kominek@colorado.edu)
# This program comes with ABSOLUTELY NO WARRANTY.
#
# This file reads the devices.tex that accompanies the kernel
# source code to figure out all the type/major/minor/file name
# values to populate /dev with.
#

open(DEVICES,"devices.tex");
while(<DEVICES>) { chomp;
  if(/^\\major\{\s*(\d+)\}\{\}\{(\w+)\s*\}/) {
    $curmajor = $1;
    $type     = $2;
  }
  if(/^\s+\\minor\{(\d+)\}\{([\/\w\d]+)\}/) {
    $curminor = $1;
    $name     = $2;
    print "$type device $curmajor/$curminor is $name\n";
  }
  if(/^\s+\\minordots/) {
    $previousminor = $curminor;
    $previousname  = $name;

    chomp($line = <DEVICES>);
    $line =~ /^\s+\\minor\{(\d+)\}\{([\/\w\d]+)\}/;
    $curminor = $1;
    $name     = $2;

    $previousname =~ /(\d+)/;
    $startinname  = $1;
    $name         =~ /(\d+)/;
    $choppedname  = $previousname;
    $choppedname  =~ s/\d+$//;
    for(($previousminor+1)..$curminor) {
      if($choppedname =~ /\?/) {
	$tmpname = $choppedname;
	$fu = $startinname++;
	$tmpname =~ s/\?/$startinname/;
	print "$type device $curmajor/$_ is $fu\n";
      } else {
	my $fu = $choppedname.(++$startinname);
	print "$type device $curmajor/$_ is $fu\n";
      }
    }
  }
}
close(DEVICES);
