
*** to conform to clang-format’s LLVM style. This kind of mass change has *** two obvious implications: Firstly, merging this particular commit into a downstream fork may be a huge effort. Alternatively, it may be worth merging all changes up to this commit, performing the same reformatting operation locally, and then discarding the merge for this particular commit. The commands used to accomplish this reformatting were as follows (with current working directory as the root of the repository): find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} + find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ; The version of clang-format used was 3.9.0, and autopep8 was 1.2.4. Secondly, “blame” style tools will generally point to this commit instead of a meaningful prior commit. There are alternatives available that will attempt to look through this change and find the appropriate prior commit. YMMV. llvm-svn: 280751
59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
|
|
"""This displays uptime information using uptime. This is redundant,
|
|
but it demonstrates expecting for a regular expression that uses subgroups.
|
|
|
|
$Id: uptime.py 489 2007-11-28 23:40:34Z noah $
|
|
"""
|
|
|
|
import pexpect
|
|
import re
|
|
|
|
# There are many different styles of uptime results. I try to parse them all. Yeee!
|
|
# Examples from different machines:
|
|
# [x86] Linux 2.4 (Redhat 7.3)
|
|
# 2:06pm up 63 days, 18 min, 3 users, load average: 0.32, 0.08, 0.02
|
|
# [x86] Linux 2.4.18-14 (Redhat 8.0)
|
|
# 3:07pm up 29 min, 1 user, load average: 2.44, 2.51, 1.57
|
|
# [PPC - G4] MacOS X 10.1 SERVER Edition
|
|
# 2:11PM up 3 days, 13:50, 3 users, load averages: 0.01, 0.00, 0.00
|
|
# [powerpc] Darwin v1-58.corefa.com 8.2.0 Darwin Kernel Version 8.2.0
|
|
# 10:35 up 18:06, 4 users, load averages: 0.52 0.47 0.36
|
|
# [Sparc - R220] Sun Solaris (8)
|
|
# 2:13pm up 22 min(s), 1 user, load average: 0.02, 0.01, 0.01
|
|
# [x86] Linux 2.4.18-14 (Redhat 8)
|
|
# 11:36pm up 4 days, 17:58, 1 user, load average: 0.03, 0.01, 0.00
|
|
# AIX jwdir 2 5 0001DBFA4C00
|
|
# 09:43AM up 23:27, 1 user, load average: 0.49, 0.32, 0.23
|
|
# OpenBSD box3 2.9 GENERIC#653 i386
|
|
# 6:08PM up 4 days, 22:26, 1 user, load averages: 0.13, 0.09, 0.08
|
|
|
|
# This parses uptime output into the major groups using regex group matching.
|
|
p = pexpect.spawn('uptime')
|
|
p.expect(
|
|
'up\s+(.*?),\s+([0-9]+) users?,\s+load averages?: ([0-9]+\.[0-9][0-9]),?\s+([0-9]+\.[0-9][0-9]),?\s+([0-9]+\.[0-9][0-9])')
|
|
duration, users, av1, av5, av15 = p.match.groups()
|
|
|
|
# The duration is a little harder to parse because of all the different
|
|
# styles of uptime. I'm sure there is a way to do this all at once with
|
|
# one single regex, but I bet it would be hard to read and maintain.
|
|
# If anyone wants to send me a version using a single regex I'd be happy
|
|
# to see it.
|
|
days = '0'
|
|
hours = '0'
|
|
mins = '0'
|
|
if 'day' in duration:
|
|
p.match = re.search('([0-9]+)\s+day', duration)
|
|
days = str(int(p.match.group(1)))
|
|
if ':' in duration:
|
|
p.match = re.search('([0-9]+):([0-9]+)', duration)
|
|
hours = str(int(p.match.group(1)))
|
|
mins = str(int(p.match.group(2)))
|
|
if 'min' in duration:
|
|
p.match = re.search('([0-9]+)\s+min', duration)
|
|
mins = str(int(p.match.group(1)))
|
|
|
|
# Print the parsed fields in CSV format.
|
|
print 'days, hours, minutes, users, cpu avg 1 min, cpu avg 5 min, cpu avg 15 min'
|
|
print '%s, %s, %s, %s, %s, %s, %s' % (days, hours, mins, users, av1, av5, av15)
|