View | Details | Raw Unified
Collapse All | Expand All

(-) bin/filter-bash-environment.py (-2 / +7 lines)
 Lines 25-30    Link Here 
		close_quote_match.group(1) == quote
		close_quote_match.group(1) == quote
def filter_bash_environment(pattern, file_in, file_out):
def filter_bash_environment(pattern, file_in, file_out):
	# Filter out any instances of the \1 character from variable values
	# since this character multiplies each time that the environment
	# is saved (strange bash behavior). This can eventually result in
	# mysterious 'Argument list too long' errors from programs that have
	# huge strings of \1 characters in their environment. See bug #222091.
	here_doc_delim = None
	here_doc_delim = None
	in_func = None
	in_func = None
	multi_line_quote = None
	multi_line_quote = None
 Lines 32-38    Link Here 
	for line in file_in:
	for line in file_in:
		if multi_line_quote is not None:
		if multi_line_quote is not None:
			if not multi_line_quote_filter:
			if not multi_line_quote_filter:
				file_out.write(line)
				file_out.write(line.replace("\1", ""))
			if have_end_quote(multi_line_quote, line):
			if have_end_quote(multi_line_quote, line):
				multi_line_quote = None
				multi_line_quote = None
				multi_line_quote_filter = None
				multi_line_quote_filter = None
 Lines 59-65    Link Here 
								(declare_opts, line[readonly_match.end():])
								(declare_opts, line[readonly_match.end():])
						else:
						else:
							line = "declare " + line[readonly_match.end():]
							line = "declare " + line[readonly_match.end():]
					file_out.write(line)
					file_out.write(line.replace("\1", ""))
				continue
				continue
		if here_doc_delim is not None:
		if here_doc_delim is not None:
			if here_doc_delim.match(line):
			if here_doc_delim.match(line):