Skip to main content

Source code file content

Revision: 2974

17376567 Unable to use pkgrecv - failing with [Errno 22] Invalid argument
» Project Revision History

» Checkout URL

pkg-gate / src / modules /

Size: 2418 bytes, 1 line
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or
# See the License for the specific language governing permissions
# and limitations under the License.
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]

# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#ident	"%Z%%M%	%I%	%E% SMI"

import gzip

class PkgGzipFile(gzip.GzipFile):
        """This is a version of GzipFile that does not include a file
        pathname or timestamp in the gzip header.  This allows us to get
        deterministic gzip files on compression, so that we can reliably
        use a cryptographic hash on the compressed content."""

        def __init__(self, filename=None, mode=None, compresslevel=9,

               gzip.GzipFile.__init__(self, filename, mode, compresslevel,

        # This is a gzip header conforming to RFC1952.  The first two bytes
        # (\037,\213) are the gzip magic number.  The third byte is the
        # compression method (8, deflate).  The fourth byte is the flag byte
        # (0), which indicates that no FNAME, FCOMMENT or other extended data
        # is present.  Bytes 5-8 are the MTIME field, zeroed in this case.
        # Byte 9 is the XFL (Extra Flags) field, set to 2 (compressor used
        # max compression).  The final bit is the OS type, set to 255 (for
        # "unknown").
        magic = "\037\213\010\000\000\000\000\000\002\377"

        def _write_gzip_header(self):

        def test_is_pkggzipfile(path):
                f = open(path, "rb")
                hdrstr =
                return (hdrstr == PkgGzipFile.magic)
Please Confirm