This file is indexed.

/usr/share/fritzing/parts/scripts/cleanschem.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
100
101
102
103
104
105
106
107
108
import getopt, sys, os, os.path, re, xml.dom.minidom, xml.dom
    
def usage():
        print """
usage:
    cleanschem.py -d [svg folder]
    cleans files with multiple copies of internal rects and labels
"""
           
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hd:", ["help", "directory"])
    except getopt.GetoptError, err:
        # print help information and exit:
        print str(err) # will print something like "option -a not recognized"
        usage()
        return
        
    dir = None
            
    for o, a in opts:
        #print o
        #print a
        if o in ("-d", "--directory"):
            dir = a
        elif o in ("-h", "--help"):
            usage()
            return
        else:
            print "unhandled option", o
            usage()
            return
        
            
    if dir == None:
        print "missing directory argument"
        usage()
        return
          
            
    for root, dirs, files in os.walk(dir, topdown=False):
        for filename in files:
            if not filename.endswith(".svg"): 
                continue
                
            svgFilename = os.path.join(root, filename)
            handlesvg(svgFilename)

                
def handlesvg(svgFilename):
    try:
        dom = xml.dom.minidom.parse(svgFilename)
    except xml.parsers.expat.ExpatError, err:
        print str(err), svgFilename
        return
        
    #print svgFilename
    rcount = 0
    toDelete = []
    svg = dom.documentElement
    rectNodes = svg.getElementsByTagName("rect")
    for rect in rectNodes:
        if rect.getAttribute("class") == "interior rect":
            rcount += 1
            if rcount > 1:
                toDelete.append(rect)
                print "\t", rect.toxml("UTF-8")
                
    #print rcount, toDelete
    
    textNodes = svg.getElementsByTagName("text")
    labels = []
    fix = False
    for text in textNodes:
        id = text.getAttribute("id")
        if id.startswith("label"):
            labels.append(text)
            if "_" in id:
                #fix = True
                #text.setAttribute("id", id.replace("_", ""))
                #print "id", id
                pass
            
    if len(labels) > 0:
        for ix in range(len(labels)):
            labeli = labels[ix]
            for jx in range(ix + 1, len(labels)):
                labelj = labels[jx]
                if labeli.toxml("UTF-8") == labelj.toxml("UTF-8"):
                    toDelete.append(labeli)
                    print "\t", labeli.toxml("UTF-8")
                    break
                
    for node in toDelete:
        node.parentNode.removeChild(node)
        
    if len(toDelete) > 0 or fix:
        print "fixing", svgFilename
        outfile = open(svgFilename, 'wb')
        s = dom.toxml("UTF-8")
        outfile.write(s)
        outfile.close()                    
    


            
if __name__ == "__main__":
        main()