/usr/lib/python3/dist-packages/bmaptools/BmapHelpers.py is in bmap-tools 3.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | # -*- coding: utf-8 -*-
# vim: ts=4 sw=4 et ai si
#
# Copyright (c) 2012-2014 Intel, Inc.
# License: GPLv2
# Author: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2,
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
import os
import struct
from fcntl import ioctl
"""
This module contains various shared helper functions.
"""
def human_size(size):
"""Transform size in bytes into a human-readable form."""
if size == 1:
return "1 byte"
if size < 512:
return "%d bytes" % size
for modifier in ["KiB", "MiB", "GiB", "TiB"]:
size /= 1024.0
if size < 1024:
return "%.1f %s" % (size, modifier)
return "%.1f %s" % (size, 'EiB')
def human_time(seconds):
"""Transform time in seconds to the HH:MM:SS format."""
(minutes, seconds) = divmod(seconds, 60)
(hours, minutes) = divmod(minutes, 60)
result = ""
if hours:
result = "%dh " % hours
if minutes:
result += "%dm " % minutes
return result + "%.1fs" % seconds
def get_block_size(file_obj):
"""
Return block size for file object 'file_obj'. Errors are indicated by the
'IOError' exception.
"""
# Get the block size of the host file-system for the image file by calling
# the FIGETBSZ ioctl (number 2).
try:
binary_data = ioctl(file_obj, 2, struct.pack('I', 0))
bsize = struct.unpack('I', binary_data)[0]
if not bsize:
raise IOError("get 0 bsize by FIGETBSZ ioctl")
except IOError as err:
stat = os.fstat(file_obj.fileno())
if hasattr(stat, 'st_blksize'):
bsize = stat.st_blksize
else:
raise IOError("Unable to determine block size")
return bsize
def program_is_available(name):
"""
This is a helper function which check if the external program 'name' is
available in the system.
"""
for path in os.environ["PATH"].split(os.pathsep):
program = os.path.join(path.strip('"'), name)
if os.path.isfile(program) and os.access(program, os.X_OK):
return True
return False
|