Skip to content

Commit

Permalink
Newline in container command corrupts display / hides container #2733
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolargo committed Apr 22, 2024
1 parent ade83ac commit ccd5094
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 8 deletions.
6 changes: 6 additions & 0 deletions glances/globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -436,3 +436,9 @@ def namedtuple_to_dict(data):
def list_of_namedtuple_to_list_of_dict(data):
"""Convert a list of namedtuples to a dict, using the _asdict() method embeded in PsUtil stats."""
return [namedtuple_to_dict(d) for d in data]


def replace_special_chars(input_string, by=' '):
"""Replace some special char by another in the input_string
Return: the string with the chars replaced"""
return input_string.replace('\r\n', by).replace('\n', by).replace('\t', by)
4 changes: 2 additions & 2 deletions glances/plugins/containers/engines/docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"""Docker Extension unit for Glances' Containers plugin."""
import time

from glances.globals import iterkeys, itervalues, nativestr, pretty_date
from glances.globals import iterkeys, itervalues, nativestr, pretty_date, replace_special_chars
from glances.logger import logger
from glances.plugins.containers.stats_streamer import StatsStreamer

Expand Down Expand Up @@ -334,7 +334,7 @@ def generate_stats(self, container):
stats['network_rx'] = stats['network'].get('rx') // stats['network'].get('time_since_update')
stats['network_tx'] = stats['network'].get('tx') // stats['network'].get('time_since_update')
stats['uptime'] = pretty_date(parser.parse(started_at).astimezone(tz.tzlocal()).replace(tzinfo=None))
stats['command'] = ' '.join(stats['command'])
stats['command'] = replace_special_chars(' '.join(stats['command']))
else:
stats['io'] = {}
stats['cpu'] = {}
Expand Down
5 changes: 3 additions & 2 deletions glances/plugins/containers/engines/podman.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"""Podman Extension unit for Glances' Containers plugin."""
from datetime import datetime

from glances.globals import iterkeys, itervalues, nativestr, pretty_date, string_value_to_float
from glances.globals import iterkeys, itervalues, nativestr, pretty_date, string_value_to_float, replace_special_chars
from glances.logger import logger
from glances.plugins.containers.stats_streamer import StatsStreamer

Expand Down Expand Up @@ -334,7 +334,8 @@ def generate_stats(self, container):
stats['network_rx'] = stats['network'].get('rx') // stats['network'].get('time_since_update')
stats['network_tx'] = stats['network'].get('tx') // stats['network'].get('time_since_update')
stats['uptime'] = pretty_date(started_at)
stats['command'] = ' '.join(stats['command'])
# Manage special chars in command (see isse#2733)
stats['command'] = replace_special_chars(' '.join(stats['command']))
else:
stats['io'] = {}
stats['cpu'] = {}
Expand Down
6 changes: 2 additions & 4 deletions glances/plugins/processlist/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import copy

from glances.logger import logger
from glances.globals import WINDOWS, key_exist_value_not_none_not_v
from glances.globals import WINDOWS, key_exist_value_not_none_not_v, replace_special_chars
from glances.processes import glances_processes, sort_stats
from glances.outputs.glances_unicode import unicode_message
from glances.plugins.core import PluginModel as CorePluginModel
Expand Down Expand Up @@ -487,9 +487,7 @@ def get_process_curses_data(self, p, selected, args):
if cmdline:
path, cmd, arguments = split_cmdline(bare_process_name, cmdline)
# Manage end of line in arguments (see #1692)
arguments = arguments.replace('\r\n', ' ')
arguments = arguments.replace('\n', ' ')
arguments = arguments.replace('\t', ' ')
arguments = replace_special_chars(arguments)
if os.path.isdir(path) and not args.process_short_name:
msg = self.layout_stat['command'].format(path) + os.sep
ret.append(self.curse_add_line(msg, splittable=True))
Expand Down

0 comments on commit ccd5094

Please sign in to comment.