Mercurial > hg
view contrib/fixpax.py @ 27375:c4a062d090ee
help: teach loaddoc to load from a different directory
The help system currently only supports showing help topics from a
single directory. We'll need to teach it to show results from
different directories in order to show the internals topics.
The first step is to teach loaddoc() to load documentation from
a sub-directory.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 13 Dec 2015 10:45:27 -0800 |
parents | d0ef40776999 |
children | 58eb1c5bba58 |
line wrap: on
line source
# fixpax - fix ownership in bdist_mpkg output # # Copyright 2015 Matt Mackall <mpm@selenic.com> # # This software may be used and distributed according to the terms of the # MIT license (http://opensource.org/licenses/MIT) """Set file ownership to 0 in an Archive.pax.gz. Suitable for fixing files bdist_mpkg output: *.mpkg/Contents/Packages/*.pkg/Contents/Archive.pax.gz """ import sys, os, gzip def fixpax(iname, oname): i = gzip.GzipFile(iname) o = gzip.GzipFile(oname, "w") while True: magic = i.read(6) dev = i.read(6) ino = i.read(6) mode = i.read(6) i.read(6) # uid i.read(6) # gid nlink = i.read(6) rdev = i.read(6) mtime = i.read(11) namesize = i.read(6) filesize = i.read(11) name = i.read(int(namesize, 8)) data = i.read(int(filesize, 8)) o.write(magic) o.write(dev) o.write(ino) o.write(mode) o.write("000000") o.write("000000") o.write(nlink) o.write(rdev) o.write(mtime) o.write(namesize) o.write(filesize) o.write(name) o.write(data) if name.startswith("TRAILER!!!"): o.write(i.read()) break o.close() i.close() if __name__ == '__main__': for iname in sys.argv[1:]: print 'fixing file ownership in %s' % iname oname = sys.argv[1] + '.tmp' fixpax(iname, oname) os.rename(oname, iname)