Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def validate_desktop_entry(path):
args = ["desktop-file-validate", path]
args = [_unicode_encode(x, errors='strict') for x in args]
proc = subprocess.Popen(args,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output_lines = _unicode_decode(proc.communicate()[0]).splitlines()
proc.wait()
if output_lines:
filtered_output = []
for line in output_lines:
msg = line[len(path)+2:]
# "hint:" output is new in desktop-file-utils-0.21
if msg.startswith('hint: ') or msg in _ignored_errors:
continue
if 'for key "NotShowIn" in group "Desktop Entry"' in msg or \
'for key "OnlyShowIn" in group "Desktop Entry"' in msg:
exempt = False
for s in _ShowIn_exemptions:
options.PF.lstrip(os.sep), desttree.lstrip(os.sep),
options.doc_prefix.lstrip(os.sep), prefix).rstrip(os.sep)
if not os.path.exists(fullpath):
sys.stderr.write("!!! dohtml: %s does not exist\n" % fullpath)
return False
elif os.path.isfile(fullpath):
ext = os.path.splitext(basename)[1][1:]
if ext in options.allowed_exts or basename in options.allowed_files:
dodir(destdir)
dofile(fullpath, os.path.join(destdir, basename))
elif warn_on_skipped_files and ext not in unwarned_skipped_extensions and basename not in unwarned_skipped_files:
skipped_files.append(fullpath)
elif options.recurse and os.path.isdir(fullpath) and \
basename not in options.disallowed_dirs:
for i in _os.listdir(_unicode_encode(fullpath)):
try:
i = _unicode_decode(i, errors='strict')
except UnicodeDecodeError:
writemsg('dohtml: argument is not encoded as UTF-8: %s\n' %
_unicode_decode(i), noiselevel=-1)
sys.exit(1)
pfx = basename
if prefix:
pfx = os.path.join(prefix, pfx)
install(i, dirname, options, pfx)
elif not options.recurse and os.path.isdir(fullpath):
global skipped_directories
skipped_directories.append(fullpath)
return False
else:
return False
"egrep '^[^\?] .*' | "
"egrep -v '^. .*/digest-[^/]+|^cvs server: .* -- ignored$'")
if vcs == 'svn':
logging.info(
"Performing a %s with a little magic grep to check for updates." %
green("svn status -u"))
cmd = (
"svn status -u 2>&1 | "
"egrep -v '^. +.*/digest-[^/]+' | "
"head -n-1")
if cmd is not None:
# Use Popen instead of getstatusoutput(), in order to avoid
# unicode handling problems (see bug #310789).
args = [BASH_BINARY, "-c", cmd]
args = [_unicode_encode(x) for x in args]
proc = subprocess.Popen(
args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
out = _unicode_decode(proc.communicate()[0])
proc.wait()
mylines = out.splitlines()
myupdates = []
for line in mylines:
if not line:
continue
# [ ] Unmodified (SVN) [U] Updates [P] Patches
# [M] Modified [A] Added [R] Removed / Replaced
# [D] Deleted
if line[0] not in " UPMARD":
# Stray Manifest is fine, we will readd it anyway.
if line[0] == '?' and line[1:].lstrip() == 'Manifest':
updated_items = {}
for k, mycontent in mydata.items():
k_unicode = _unicode_decode(k,
encoding=_encodings['repo.content'], errors='replace')
if k_unicode not in ignored_dbentries:
orig_content = mycontent
mycontent = _unicode_decode(mycontent,
encoding=_encodings['repo.content'], errors='replace')
is_encoded = mycontent is not orig_content
orig_content = mycontent
for update_cmd in update_iter:
mycontent = update_dbentry(update_cmd, mycontent,
eapi=eapi, parent=parent)
if mycontent != orig_content:
if is_encoded:
mycontent = _unicode_encode(mycontent,
encoding=_encodings['repo.content'],
errors='backslashreplace')
updated_items[k] = mycontent
return updated_items
def _read_repo_name(repo_path):
"""
Read repo_name from repo_path.
Returns repo_name, missing.
"""
repo_name_path = os.path.join(repo_path, REPO_NAME_LOC)
f = None
try:
f = io.open(
_unicode_encode(repo_name_path,
encoding=_encodings['fs'], errors='strict'),
mode='r', encoding=_encodings['repo.content'],
errors='replace')
return f.readline().strip(), False
except EnvironmentError:
return "x-" + os.path.basename(repo_path), True
finally:
if f is not None:
f.close()
def xpak_mem(mydata):
"""Create an xpack segment from a map object."""
mydata_encoded = {}
for k, v in mydata.items():
k = _unicode_encode(k,
encoding=_encodings['repo.content'], errors='backslashreplace')
v = _unicode_encode(v,
encoding=_encodings['repo.content'], errors='backslashreplace')
mydata_encoded[k] = v
mydata = mydata_encoded
del mydata_encoded
indexglob = b''
indexpos = 0
dataglob = b''
datapos = 0
for x, newglob in mydata.items():
mydatasize = len(newglob)
indexglob = indexglob + encodeint(len(x)) + x + encodeint(datapos) + encodeint(mydatasize)
indexpos = indexpos + 4 + len(x) + 4 + 4
dataglob = dataglob + newglob
def __init__(self,value):
self.value = value[:]
if sys.hexversion < 0x3000000 and isinstance(self.value, unicode):
# Workaround for string formatting operator and unicode value
# attribute triggering empty output in formatted string.
self.value = _unicode_encode(self.value)
def __str__(self):
elif len(userpass) == 1:
username = userpass[0]
password = None
del userpass
http_headers = {}
http_params = {}
if username and password:
try:
encodebytes = base64.encodebytes
except AttributeError:
# Python 2
encodebytes = base64.encodestring
http_headers = {
b"Authorization": "Basic %s" % \
encodebytes(_unicode_encode("%s:%s" % (username, password))).replace(
b"\012",
b""
),
}
if not conn:
if protocol == "https":
# Use local import since https typically isn't needed, and
# this way we can usually avoid triggering the global scope
# http.client ImportError handler (like during stage1 -> stage2
# builds where USE=ssl is disabled for python).
try:
from http.client import HTTPSConnection as http_client_HTTPSConnection
except ImportError:
raise NotImplementedError(
_("python must have ssl enabled for https support"))
node = LinkageMap._LibGraphNode(path, root)
alt_path_node = lib_graph.get(node)
if alt_path_node is not None:
node = alt_path_node
node.alt_paths.add(path)
path_node_map[path] = node
return node
consumer_map = {}
provider_nodes = set()
# Create provider nodes and add them to the graph.
for f_abs in old_contents:
if os is _os_merge:
try:
_unicode_encode(f_abs,
encoding=_encodings['merge'], errors='strict')
except UnicodeEncodeError:
# The package appears to have been merged with a
# different value of sys.getfilesystemencoding(),
# so fall back to utf_8 if appropriate.
try:
_unicode_encode(f_abs,
encoding=_encodings['fs'], errors='strict')
except UnicodeEncodeError:
pass
else:
os = portage.os
f = f_abs[root_len:]
if self.isowner(f):
continue
merge_cmd = [self.bin_command, 'merge']
merge_cmd.append('refs/remotes/%s' % remote_branch)
if quiet:
merge_cmd.append('--quiet')
exitcode = portage.process.spawn(merge_cmd,
cwd=portage._unicode_encode(self.repo.location),
**self.spawn_kwargs)
if exitcode != os.EX_OK:
msg = "!!! git merge error in %s" % self.repo.location
self.logger(self.xterm_titles, msg)
writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1)
return (exitcode, False)
current_rev = subprocess.check_output(rev_cmd,
cwd=portage._unicode_encode(self.repo.location))
return (os.EX_OK, current_rev != previous_rev)