#!/usr/bin/perl # # Emit a script to fix the use of obsolete parts, where possible. # # Make sure we are editing the right drawing. $dirty = ""; sub dirty { local($f) = @_; if ($dirty ne $f) { &clean; print "SET CONFIRM YES;\n"; print "EDIT '\$HOME/eagle/projects/$f';\n"; print "SET CONFIRM OFF;\n"; $dirty = $f; } } # # Finish editing a drawing. sub clean { if ($dirty) { print "SET CONFIRM YES;\n"; print "WRITE '\$HOME/eagle/projects/$dirty';\n"; print "SET CONFIRM OFF;\n"; $dirty = ""; } } # # First, obtain the LBR search path for Eagle. @lbrdir = ("C:/Users/Vince/Documents/eagle/lbr", "C:/Program Files (x86)/EAGLE-6.6.0/lbr"); # # Next, iterate over the libraries, looking for devicesets. %dset = (); foreach $lbrdir (@lbrdir) { opendir(DIR, $lbrdir) || die "$lbrdir: $!"; while (($l = readdir(DIR))) { next unless $l =~ /[.]lbr$/; $lbr = "$lbrdir/$l"; open(INPUT, $lbr) || do { warn "$lbr: $!"; next; }; # Skip libraries that aren't converted yet. $xml = ; if ($xml !~ /^<[?]xml /) { # warn "$lbr: not converted\n"; next; } $lbr =~ m:([^/]*).lbr$:; $lname = $1; while () { # Should note packages too. next unless /^) { next unless /