176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#!/usr/bin/perl
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Read the "version" file and produce some macro declarations
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanuse Fcntl;
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansub defx($$$) {
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    my($def, $name, $val) = @_;
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    $def =~ s/\</${name}/g;
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    $def =~ s/\@/${val}/g;
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    return $def."\n";
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman($vfile, $vout, $def) = @ARGV;
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansysopen(VERSION, $vfile, O_RDONLY) or die "$0: Cannot open $vfile\n";
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$vfile = <VERSION>;
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanchomp $vfile;
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanclose(VERSION);
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunless ( $vfile =~ /^(([0-9]+)\.([0-9]+))\s+([0-9]+)$/ ) {
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    die "$0: Cannot parse version format\n";
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$version = $1;
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$vma = $2+0;
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$vmi = $3+0;
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$year = $4;
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansysopen(VI, $vout, O_WRONLY|O_CREAT|O_TRUNC)
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    or die "$0: Cannot create $vout: $!\n";
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION',       $version);
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION_STR',   '"'.$version.'"');
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION_MAJOR', $vma);
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION_MINOR', $vmi);
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'YEAR',          $year);
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'YEAR_STR',      '"'.$year.'"');
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanclose(VI);
40