GIF89a; EcchiShell v1.0
//bin/

Mass Deface Email Grabber

4: msgid=msgid[2:] if msgstr[:2]=='""' and len(msgstr)>4: msgstr=msgstr[2:] message=GTMessage(msgid,msgstr,refs) self._messages.append(message) msgstr="" msgid="" refs=[] else: msgstr=msgstr+line[pos:pos2+1]+"\n" if inmsgid==0 and line[:5]=="msgid": msgid="" inmsgid=1 if inmsgid==1: if pos==-1: inmsgid=0 else: msgid=msgid+line[pos:pos2+1]+"\n" if msgstr and msgid: message=GTMessage(msgid,msgstr,refs) self._messages.append(message) class GTMaster: """ A class containing a master catalogue of gettext dictionaries """ def __init__(self,dicts): """ The constructor for the GTMaster class @self The object instance @dicts An array of dictionaries to merge """ self._messages=[] self.createMaster(dicts) def createMaster(self,dicts): """ Create the master catalogue @self The object instance @dicts An array of dictionaries to merge """ self._master=dicts[0] self._dicts=dicts[1:] for message in self._master._messages: gtm=GTMasterMessage(message._id,message._refs) gtm.addMessage(message._message,self._master._filename[:-3]) for dict in self._dicts: res=dict.getMsgstr(message._id) if(res): gtm.addMessage(res,dict._filename[:-3]) self._messages.append(gtm) def __str__(self): """ Return a string representation of the object @self The object instance """ res="" for message in self._messages: res=res+str(message)+"\n" return res def printUsage(): "Print the usage messages" print "Usage: ", str(sys.argv[0])," [OPTION] file.po [ref.po]\n\ This program can be used to alter .po files in ways no sane mind would think about.\n\ -o result will be written to FILE\n\ --invert invert a po file by switching msgid and msgstr\n\ --master join any number of files in a master-formatted catalog\n\ --empty empty the contents of the .po file, creating a .pot\n\ --append append entries from ref.po that don't exist in file.po\n\ \n\ Note: It is just a replacement of msghack for backward support.\n" if __name__=="__main__": output=None res=None if("-o") in sys.argv: if (len(sys.argv)<=sys.argv.index("-o")+1): print "file.po and ref.po are not specified!\n" printUsage() exit(1) output=sys.argv[sys.argv.index("-o")+1] sys.argv.remove("-o") sys.argv.remove(output) if("--invert") in sys.argv: if (len(sys.argv)<=sys.argv.index("--invert")+1): print "file.po is not specified!\n" printUsage() exit(1) file=sys.argv[sys.argv.index("--invert")+1] gtf=GTFile(file) res1=gtf.msgidDupes() if res1: sys.stderr.write(res1) sys.exit(1) res=str(gtf.invertedStrings()) elif("--empty") in sys.argv: if (len(sys.argv)<=sys.argv.index("--empty")+1): print "file.po is not specified!\n" printUsage() exit(1) file=sys.argv[sys.argv.index("--empty")+1] gtf=GTFile(file) res=str(gtf.emptyMsgStrings()) elif("--master") in sys.argv: if (len(sys.argv)<=sys.argv.index("--master")+1): print "file.po is not specified!\n" printUsage() exit(1) loc=sys.argv.index("--master")+1 gtfs=[] for file in sys.argv[loc:]: gtfs.append(GTFile(file)) master=GTMaster(gtfs) res=str(master) elif("--append") in sys.argv: if (len(sys.argv)<=sys.argv.index("--append")+2): print "file.po and/or ref.po are not specified!\n" printUsage() exit(1) file=sys.argv[sys.argv.index("--append")+1] file2=sys.argv[sys.argv.index("--append")+2] gtf=GTFile(file) gtf2=GTFile(file2) gtf.append(gtf2) res=str(gtf) else: #print "Not implemented: "+str(sys.argv) printUsage() sys.exit(1) if not output: print res else: file=open(output,"w") file.write(res) sys.exit(0)