This file is indexed.

/usr/share/fritzing/parts/scripts/unusedsvgs.py is in fritzing-parts 0.9.3b-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import getopt, sys, os, os.path, re, xml.dom.minidom, xml.dom
    
def usage():
        print """
usage:
    unusedsvgs.py -f [fzp folder] -s [svg folder]
    lists orphan svgs
"""
    
        
           
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hf:s:", ["help", "fzp", "svg"])
    except getopt.GetoptError, err:
        # print help information and exit:
        print str(err) # will print something like "option -a not recognized"
        usage()
        return
        
    fzpdir = None
    svgdir = None
            
    for o, a in opts:
        #print o
        #print a
        if o in ("-f", "--fzp"):
            fzpdir = a
        elif o in ("-s", "--svg"):
            svgdir = a
        elif o in ("-h", "--help"):
            usage()
            return
        else:
            print "unhandled option", o
            return
            
    if not fzpdir:
        print "missing fzp folder argument"
        usage()
        return           
            
    if not svgdir:
        print "missing svg folder argument"
        usage()
        return  

    svgfiles = {}
    for root, dirs, files in os.walk(svgdir, topdown=False):
        for filename in files:
            if not filename.endswith(".svg"): 
                continue
            
            basename = os.path.basename(root)
            if svgfiles.get(basename) == None:
                svgfiles[basename] = []
                
            svgfiles[basename].append(filename)
            
    viewnames = ["iconView", "breadboardView", "schematicView", "pcbView"]
            
    for root, dirs, files in os.walk(fzpdir, topdown=False):
        for filename in files:
            if not filename.endswith(".fzp"): 
                continue
                
            fzpFilename = os.path.join(root, filename)
            try:
                dom = xml.dom.minidom.parse(fzpFilename)
            except xml.parsers.expat.ExpatError, err:
                print str(err), fzpFilename
                continue
                
            fzp = dom.documentElement
            for viewname in viewnames:
                viewNodes = fzp.getElementsByTagName(viewname)
                for viewNode in viewNodes:
                    layersNodes = viewNode.getElementsByTagName("layers")
                    for layersNode in layersNodes:
                        image = layersNode.getAttribute("image")
                        dn = os.path.dirname(image)
                        viewFiles = svgfiles.get(dn)
                        if viewFiles:
                            fn = os.path.basename(image)
                            try:
                                if fn in viewFiles:
                                    print "{0} uses {1}/{2}".format(os.path.basename(root), dn, fn)
                                    viewFiles.remove(fn)
                            except:
                                pass
                        
                        
    for key in svgfiles.keys():
        for name in svgfiles.get(key):
            print "unused {0}/{1}".format(key, name)

            
if __name__ == "__main__":
        main()