[ create a new paste ] login | about

Link: http://codepad.org/PDH0kt8G    [ raw code | fork ]

Python, pasted on Feb 19:
#!/usr/bin/python

import os, sys, glob, re, shutil

####sys.argv = sys.argv[1:]

####path1 = sys.argv[0]

def postfixbuild(tempname):
	import md5, os.path, time
	md5o = md5.md5()
	rw = open(tempname)
	while True:
		nextbuf=rw.read(8192)
		if nextbuf == "":
			break
		md5o.update( nextbuf )
	rw.close()
	time1 = os.path.getmtime(tempname)
	timestr = time.strftime( "%Y%m%d-%H%M", time.localtime( int(time1)) )

	return timestr + "_$_" + md5o.hexdigest()

def execzip(path1):
	hasjp = False
	
	whitelist = re.compile( r'[^0-9a-zA-Z@\/\-=\.\n_%~\^\+,\s\-]' )
	
	zipname = os.path.dirname(path1) + "/" + os.path.basename(path1).replace(".","#")
	
	for f1 in glob.glob( path1 + "/*" ):
		blackis = whitelist.search(f1)
		if blackis != None:
			hasjp = True; print blackis.group(0)
	
	if hasjp:
		tempname = "/tmp/" + str( os.getpid() ) + ".7z"
		try:
			os.spawnv( os.P_WAIT, "/usr/bin/7za", 
				[ 
					"/usr/bin/7za", 
					"u", 
					"-mx=1",  
					tempname, 
					path1  ] )
			postfix = postfixbuild(tempname)
			shutil.move( tempname, path1 + ".7z.temp" )
			os.rename( path1 + ".7z.temp", path1 + "(" + postfix + ")" + ".7z" )
			os.rename( path1, path1 + ".7zed" )
			shutil.rmtree( path1 + ".7zed" )
		except KeyboardInterrupt:
			os.remove( tempname )
	else:
		try:
			tempname = "/tmp/" + str( os.getpid() ) + ".zip"
			os.spawnv( os.P_WAIT, "/usr/bin/zip",
				[
					"/usr/bin/zip",
					"-ru",
					tempname,
					path1
				] )
			postfix = postfixbuild(tempname)
			shutil.move( tempname, path1 + ".zipped.temp" )
			os.rename( path1 + ".zipped.temp", path1 + "(" + postfix + ")" + ".zip" )
			os.rename( path1, path1 + ".zipped" )
			shutil.rmtree( path1 + ".zipped" )
		except KeyboardInterrupt:
			os.remove( tempname )

for f1 in sys.argv[1:]:
	if not os.path.isdir(f1): continue
	if re.search( r'\.7zed$', f1 ): continue
	execzip(f1)


Output:
No errors or program output.


Create a new paste based on this one


Comments: