aboutsummaryrefslogtreecommitdiff
path: root/src/helper/update_jep106.pl
blob: caec0664f23b4a85fbb4e4e050de5de3cf459b00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;

if (@ARGV != 1) {
	die "Usage: $0 <JEP106 PDF document>\n\n"
	. "Convert the JEDEC document containing manufacturer identification codes\n"
	. "to an array initializer suitable for incusion into jep106.c. The latest\n"
	. "version of the document can be found here:\n"
	. "http://www.jedec.org/standards-documents/results/jep106\n";
};

my $outfile = dirname($0) . "/jep106.inc";

open(my $out, ">", $outfile) || die "Cannot open $outfile: $!\n";
open(my $pdftotext, "pdftotext -layout $ARGV[0] - |") || die "Cannot fork: $!\n";

print $out "/* Autogenerated with " . basename($0) . "*/\n";

my $bank = -1;

while (<$pdftotext>) {
	if (/^[0-9]+[[:space:]]+(.*?)[[:space:]]+([01][[:space:]]+){8}([0-9A-F]{2})$/) {
		if ($3 eq "01") {
			$bank++
		}
		my $id=sprintf("0x%02x",hex($3)&0x7f);
		print $out "[$bank][$id - 1] = \"$1\",\n";
	}
}

close $pdftotext || die "Error: $! $?\n";

print $out "/* EOF */\n";