This file is indexed.

/usr/share/fritzing/parts/scripts/thtsmd.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# usage:
#	thtsms.py -d [fzp folder] -t [tht | smd]
#       add or update a package <property> element.

import getopt, sys, os, os.path, re, xml.dom.minidom, xml.dom
    
def usage():
        print """
usage:
    thtsmd.py -d [fzp folder] -t [tht | smd]
    add or update a package <property> element.
"""
           
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hd:t:", ["help", "directory", "type"])
    except getopt.GetoptError, err:
        # print help information and exit:
        print str(err) # will print something like "option -a not recognized"
        usage()
        sys.exit(2)
        
    dir = None
    typ = None
            
    for o, a in opts:
        #print o
        #print a
        if o in ("-d", "--directory"):
            dir = a
        elif o in ("-t", "--type"):
            typ = a
        elif o in ("-h", "--help"):
            usage()
            sys.exit(2)
        else:
            assert False, "unhandled option"
            
    if not(dir):
        usage()
        sys.exit(2)    
        
    if not(typ):
        usage()
        sys.exit(2)       
    
    for root, dirs, files in os.walk(dir, topdown=False):
        for filename in files:
            if not filename.endswith(".fzp"): 
                continue
                
            fzpFilename = os.path.join(root, filename)
            infile = open(os.path.join(root, filename), "r")
            content = infile.read()
            infile.close()
            try:
                dom = xml.dom.minidom.parseString(content)
            except xml.parsers.expat.ExpatError, err:
                print str(err), fzpFilename
                continue
                
            #print "testing", fzpFilename
                
            fzp = dom.documentElement
            properties = None
            propertiesNodes = fzp.getElementsByTagName("properties")
            if (propertiesNodes.length == 0):
                properties = dom.createElement("properties")
                fzp.insertBefore(properties, fzp.firstChild)
            elif (propertiesNodes.length == 1):
                properties = propertiesNodes.item(0)                
            else:
                print "multiple properties elements in", fzpFilename
                continue
             

            #print "got properties", properties
            
            propertyNodes = properties.getElementsByTagName("property")
            package = None
            for property in propertyNodes:
                name = property.getAttribute("name")
                #print "got name", name
                if name == "package":
                    package = property
                    break
 
            #print "got package", package
 
            if package == None:
                package = dom.createElement("property")
                properties.appendChild(package)
                package.setAttribute("name", "package")
                t = dom.createTextNode(typ)
                package.appendChild(t)
            else:
                package.normalize()  #make sure all the text is in one node
                t = None
                for child in package.childNodes:
                    if child.nodeType == child.TEXT_NODE:
                        t = child
                        break                        
                
                if t == None:
                    t = dom.createTextNode(typ)
                    package.appendChild(t)
                else:
                    if ("SMD" in t.nodeValue):
                        continue
                    if ("THT" in t.nodeValue):
                        continue
                    
                    t1 = dom.createTextNode(" [" + typ + "]")
                    package.appendChild(t1)
                    package.normalize()
            
            print "adding package property " + typ + " to", fzpFilename
            outfile = open(fzpFilename, 'wb')
            s = dom.toxml("UTF-8")
            outfile.write(s)
            outfile.flush()
            outfile.close()                    
            
if __name__ == "__main__":
        main()