#!/usr/bin/python
"""For each file given replaces seek with replace"""
__author__  = "Ed Pascoe <ed@pascoe.co.za>"
__credits__ = "Afrihost.com -- The best webhosting. Ever."

import os.path, sys,os
import optparse
import fcntl

def searchReplace(filename,seek,replace):
    src=open(filename,"r+")
    fcntl.fcntl(src,fcntl.LOCK_SH)
    out=[]
    changes=0
    for line in src:
        if line.find(seek)> -1:
            out.append(line.replace(seek,replace))
            changes+=1
        else: out.append(line)
    if changes > 0:
        fcntl.fcntl(src,fcntl.LOCK_EX)
        src.seek(0)
        src.truncate()
        for line in out: src.write(line)
    src.close()
    return changes
        
        

if __name__=='__main__':
    usage="Usage: %prog [<options>] [files]" +"\n"+__doc__+"\n"
    parser=optparse.OptionParser(usage)
    parser.add_option("--seek", "-s",   dest="seek", type="string", help="Text to find")
    parser.add_option("--replace","-r", dest="replace", type="string", help="Text to replace with")
    (options,args) = parser.parse_args()

    for filename in args:
        changes=searchReplace(filename,options.seek,options.replace)
        if changes > 0:
            print "%s updated. %s lines changed" % (filename,changes)


