mirror of https://github.com/xzeldon/htop.git
Merge branch 'ci2' of https://github.com/cgzones/htop into cgzones-ci2
This commit is contained in:
commit
ba94e0dfda
|
@ -16,7 +16,29 @@ jobs:
|
||||||
- name: Build
|
- name: Build
|
||||||
run: make
|
run: make
|
||||||
- name: Distcheck
|
- name: Distcheck
|
||||||
run: make distcheck
|
run: make distcheck DISTCHECK_CONFIGURE_FLAGS=--enable-werror
|
||||||
|
|
||||||
|
build-ubuntu-clang-latest:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
CC: clang-10
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: install clang repo
|
||||||
|
run: |
|
||||||
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key 2>/dev/null | sudo apt-key add -
|
||||||
|
sudo add-apt-repository 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main' -y
|
||||||
|
sudo apt-get update -q
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: sudo apt-get install clang-10 libncursesw5-dev
|
||||||
|
- name: Bootstrap
|
||||||
|
run: ./autogen.sh
|
||||||
|
- name: Configure
|
||||||
|
run: ./configure --enable-werror
|
||||||
|
- name: Build
|
||||||
|
run: make
|
||||||
|
- name: Distcheck
|
||||||
|
run: make distcheck DISTCHECK_CONFIGURE_FLAGS=--enable-werror
|
||||||
|
|
||||||
whitespace_check:
|
whitespace_check:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
14
Action.c
14
Action.c
|
@ -316,17 +316,17 @@ static Htop_Reaction actionSetAffinity(State* st) {
|
||||||
|
|
||||||
Process* p = (Process*) Panel_getSelected(panel);
|
Process* p = (Process*) Panel_getSelected(panel);
|
||||||
if (!p) return HTOP_OK;
|
if (!p) return HTOP_OK;
|
||||||
Affinity* affinity = Affinity_get(p, st->pl);
|
Affinity* affinity1 = Affinity_get(p, st->pl);
|
||||||
if (!affinity) return HTOP_OK;
|
if (!affinity1) return HTOP_OK;
|
||||||
Panel* affinityPanel = AffinityPanel_new(st->pl, affinity);
|
Panel* affinityPanel = AffinityPanel_new(st->pl, affinity1);
|
||||||
Affinity_delete(affinity);
|
Affinity_delete(affinity1);
|
||||||
|
|
||||||
void* set = Action_pickFromVector(st, affinityPanel, 15, true);
|
void* set = Action_pickFromVector(st, affinityPanel, 15, true);
|
||||||
if (set) {
|
if (set) {
|
||||||
Affinity* affinity = AffinityPanel_getAffinity(affinityPanel, st->pl);
|
Affinity* affinity2 = AffinityPanel_getAffinity(affinityPanel, st->pl);
|
||||||
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) Affinity_set, (Arg){ .v = affinity }, NULL);
|
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) Affinity_set, (Arg){ .v = affinity2 }, NULL);
|
||||||
if (!ok) beep();
|
if (!ok) beep();
|
||||||
Affinity_delete(affinity);
|
Affinity_delete(affinity2);
|
||||||
}
|
}
|
||||||
Panel_delete((Object*)affinityPanel);
|
Panel_delete((Object*)affinityPanel);
|
||||||
#endif
|
#endif
|
||||||
|
|
2
Header.c
2
Header.c
|
@ -154,7 +154,7 @@ char* Header_readMeterName(Header* this, int i, int column) {
|
||||||
int nameLen = strlen(Meter_name(meter));
|
int nameLen = strlen(Meter_name(meter));
|
||||||
int len = nameLen + 100;
|
int len = nameLen + 100;
|
||||||
char* name = xMalloc(len);
|
char* name = xMalloc(len);
|
||||||
strncpy(name, Meter_name(meter), nameLen);
|
memcpy(name, Meter_name(meter), nameLen);
|
||||||
name[nameLen] = '\0';
|
name[nameLen] = '\0';
|
||||||
if (meter->param)
|
if (meter->param)
|
||||||
xSnprintf(name + nameLen, len - nameLen, "(%d)", meter->param);
|
xSnprintf(name + nameLen, len - nameLen, "(%d)", meter->param);
|
||||||
|
|
|
@ -56,7 +56,7 @@ static const char* const InfoScreenKeys[] = {"F3", "F4", "F5", "Esc"};
|
||||||
|
|
||||||
static int InfoScreenEvents[] = {KEY_F(3), KEY_F(4), KEY_F(5), 27};
|
static int InfoScreenEvents[] = {KEY_F(3), KEY_F(4), KEY_F(5), 27};
|
||||||
|
|
||||||
InfoScreen* InfoScreen_init(InfoScreen* this, Process* process, FunctionBar* bar, int height, char* panelHeader) {
|
InfoScreen* InfoScreen_init(InfoScreen* this, Process* process, FunctionBar* bar, int height, const char* panelHeader) {
|
||||||
this->process = process;
|
this->process = process;
|
||||||
if (!bar) {
|
if (!bar) {
|
||||||
bar = FunctionBar_new(InfoScreenFunctions, InfoScreenKeys, InfoScreenEvents);
|
bar = FunctionBar_new(InfoScreenFunctions, InfoScreenKeys, InfoScreenEvents);
|
||||||
|
@ -75,7 +75,7 @@ InfoScreen* InfoScreen_done(InfoScreen* this) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InfoScreen_drawTitled(InfoScreen* this, char* fmt, ...) {
|
void InfoScreen_drawTitled(InfoScreen* this, const char* fmt, ...) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
attrset(CRT_colors[METER_TEXT]);
|
attrset(CRT_colors[METER_TEXT]);
|
||||||
|
|
|
@ -38,11 +38,11 @@ struct InfoScreen_ {
|
||||||
Vector* lines;
|
Vector* lines;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern InfoScreen* InfoScreen_init(InfoScreen* this, Process* process, FunctionBar* bar, int height, char* panelHeader);
|
extern InfoScreen* InfoScreen_init(InfoScreen* this, Process* process, FunctionBar* bar, int height, const char* panelHeader);
|
||||||
|
|
||||||
extern InfoScreen* InfoScreen_done(InfoScreen* this);
|
extern InfoScreen* InfoScreen_done(InfoScreen* this);
|
||||||
|
|
||||||
extern void InfoScreen_drawTitled(InfoScreen* this, char* fmt, ...);
|
extern void InfoScreen_drawTitled(InfoScreen* this, const char* fmt, ...);
|
||||||
|
|
||||||
extern void InfoScreen_addLine(InfoScreen* this, const char* line);
|
extern void InfoScreen_addLine(InfoScreen* this, const char* line);
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ typedef enum ProcessFields {
|
||||||
|
|
||||||
typedef struct ProcessPidColumn_ {
|
typedef struct ProcessPidColumn_ {
|
||||||
int id;
|
int id;
|
||||||
char* label;
|
const char* label;
|
||||||
} ProcessPidColumn;
|
} ProcessPidColumn;
|
||||||
|
|
||||||
typedef struct Process_ {
|
typedef struct Process_ {
|
||||||
|
|
|
@ -61,7 +61,7 @@ typedef enum ProcessFields {
|
||||||
|
|
||||||
typedef struct ProcessPidColumn_ {
|
typedef struct ProcessPidColumn_ {
|
||||||
int id;
|
int id;
|
||||||
char* label;
|
const char* label;
|
||||||
} ProcessPidColumn;
|
} ProcessPidColumn;
|
||||||
|
|
||||||
typedef struct Process_ {
|
typedef struct Process_ {
|
||||||
|
|
|
@ -81,10 +81,7 @@ char** String_split(const char* s, char sep, int* n) {
|
||||||
s += size + 1;
|
s += size + 1;
|
||||||
}
|
}
|
||||||
if (s[0] != '\0') {
|
if (s[0] != '\0') {
|
||||||
int size = strlen(s);
|
out[ctr] = xStrdup(s);
|
||||||
char* token = xMalloc(size + 1);
|
|
||||||
strncpy(token, s, size + 1);
|
|
||||||
out[ctr] = token;
|
|
||||||
ctr++;
|
ctr++;
|
||||||
}
|
}
|
||||||
out = xRealloc(out, sizeof(char*) * (ctr + 1));
|
out = xRealloc(out, sizeof(char*) * (ctr + 1));
|
||||||
|
|
|
@ -64,7 +64,7 @@ static unsigned long int parseBatInfo(const char *fileName, const unsigned short
|
||||||
}
|
}
|
||||||
|
|
||||||
char* line = NULL;
|
char* line = NULL;
|
||||||
for (unsigned short int i = 0; i < lineNum; i++) {
|
for (unsigned short int j = 0; j < lineNum; j++) {
|
||||||
free(line);
|
free(line);
|
||||||
line = String_readLine(file);
|
line = String_readLine(file);
|
||||||
if (!line) break;
|
if (!line) break;
|
||||||
|
@ -194,26 +194,26 @@ static void Battery_getSysData(double* level, ACPresence* isOnAC) {
|
||||||
const char filePath[50];
|
const char filePath[50];
|
||||||
|
|
||||||
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/type", entryName);
|
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/type", entryName);
|
||||||
int fd = open(filePath, O_RDONLY);
|
int fd1 = open(filePath, O_RDONLY);
|
||||||
if (fd == -1)
|
if (fd1 == -1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
char type[8];
|
char type[8];
|
||||||
ssize_t typelen = xread(fd, type, 7);
|
ssize_t typelen = xread(fd1, type, 7);
|
||||||
close(fd);
|
close(fd1);
|
||||||
if (typelen < 1)
|
if (typelen < 1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (type[0] == 'B' && type[1] == 'a' && type[2] == 't') {
|
if (type[0] == 'B' && type[1] == 'a' && type[2] == 't') {
|
||||||
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/uevent", entryName);
|
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/uevent", entryName);
|
||||||
int fd = open(filePath, O_RDONLY);
|
int fd2 = open(filePath, O_RDONLY);
|
||||||
if (fd == -1) {
|
if (fd2 == -1) {
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
ssize_t buflen = xread(fd, buffer, 1023);
|
ssize_t buflen = xread(fd2, buffer, 1023);
|
||||||
close(fd);
|
close(fd2);
|
||||||
if (buflen < 1) {
|
if (buflen < 1) {
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
return;
|
return;
|
||||||
|
@ -259,18 +259,18 @@ static void Battery_getSysData(double* level, ACPresence* isOnAC) {
|
||||||
}
|
}
|
||||||
|
|
||||||
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/online", entryName);
|
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/online", entryName);
|
||||||
int fd = open(filePath, O_RDONLY);
|
int fd3 = open(filePath, O_RDONLY);
|
||||||
if (fd == -1) {
|
if (fd3 == -1) {
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char buffer[2] = "";
|
char buffer[2] = "";
|
||||||
for(;;) {
|
for(;;) {
|
||||||
ssize_t res = read(fd, buffer, 1);
|
ssize_t res = read(fd3, buffer, 1);
|
||||||
if (res == -1 && errno == EINTR) continue;
|
if (res == -1 && errno == EINTR) continue;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd3);
|
||||||
if (buffer[0] == '0') {
|
if (buffer[0] == '0') {
|
||||||
*isOnAC = AC_ABSENT;
|
*isOnAC = AC_ABSENT;
|
||||||
} else if (buffer[0] == '1') {
|
} else if (buffer[0] == '1') {
|
||||||
|
|
|
@ -1227,9 +1227,9 @@ static inline double LinuxProcessList_scanCPUFrequency(LinuxProcessList* this) {
|
||||||
(sscanf(buffer, "processor: %d", &cpuid) == 1)
|
(sscanf(buffer, "processor: %d", &cpuid) == 1)
|
||||||
) {
|
) {
|
||||||
if (cpuid < 0 || cpuid > (cpus - 1)) {
|
if (cpuid < 0 || cpuid > (cpus - 1)) {
|
||||||
char buffer[64];
|
char tmpbuffer[64];
|
||||||
xSnprintf(buffer, sizeof(buffer), PROCCPUINFOFILE " contains out-of-range CPU number %d", cpuid);
|
xSnprintf(tmpbuffer, sizeof(tmpbuffer), PROCCPUINFOFILE " contains out-of-range CPU number %d", cpuid);
|
||||||
CRT_fatalError(buffer);
|
CRT_fatalError(tmpbuffer);
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
(sscanf(buffer, "cpu MHz : %lf", &frequency) == 1) ||
|
(sscanf(buffer, "cpu MHz : %lf", &frequency) == 1) ||
|
||||||
|
|
|
@ -44,7 +44,7 @@ in the source distribution for its full text.
|
||||||
#define CLAMP(x,low,high) (((x)>(high))?(high):(((x)<(low))?(low):(x)))
|
#define CLAMP(x,low,high) (((x)>(high))?(high):(((x)<(low))?(low):(x)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ProcessField Platform_defaultFields[] = { PID, USER, PRIORITY, NICE, M_SIZE, M_RESIDENT, M_SHARE, STATE, PERCENT_CPU, PERCENT_MEM, TIME, COMM, 0 };
|
ProcessField Platform_defaultFields[] = { PID, USER, PRIORITY, NICE, M_SIZE, M_RESIDENT, (int)M_SHARE, STATE, PERCENT_CPU, PERCENT_MEM, TIME, COMM, 0 };
|
||||||
|
|
||||||
//static ProcessField defaultIoFields[] = { PID, IO_PRIORITY, USER, IO_READ_RATE, IO_WRITE_RATE, IO_RATE, COMM, 0 };
|
//static ProcessField defaultIoFields[] = { PID, IO_PRIORITY, USER, IO_READ_RATE, IO_WRITE_RATE, IO_RATE, COMM, 0 };
|
||||||
|
|
||||||
|
@ -94,12 +94,12 @@ static Htop_Reaction Platform_actionSetIOPriority(State* st) {
|
||||||
|
|
||||||
LinuxProcess* p = (LinuxProcess*) Panel_getSelected(panel);
|
LinuxProcess* p = (LinuxProcess*) Panel_getSelected(panel);
|
||||||
if (!p) return HTOP_OK;
|
if (!p) return HTOP_OK;
|
||||||
IOPriority ioprio = p->ioPriority;
|
IOPriority ioprio1 = p->ioPriority;
|
||||||
Panel* ioprioPanel = IOPriorityPanel_new(ioprio);
|
Panel* ioprioPanel = IOPriorityPanel_new(ioprio1);
|
||||||
void* set = Action_pickFromVector(st, ioprioPanel, 21, true);
|
void* set = Action_pickFromVector(st, ioprioPanel, 21, true);
|
||||||
if (set) {
|
if (set) {
|
||||||
IOPriority ioprio = IOPriorityPanel_getIOPriority(ioprioPanel);
|
IOPriority ioprio2 = IOPriorityPanel_getIOPriority(ioprioPanel);
|
||||||
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) LinuxProcess_setIOPriority, (Arg){ .i = ioprio }, NULL);
|
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) LinuxProcess_setIOPriority, (Arg){ .i = ioprio2 }, NULL);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
beep();
|
beep();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env @PYTHON@
|
#!/usr/bin/env @PYTHON@
|
||||||
import os, sys, string, io
|
import os, sys, io
|
||||||
try:
|
try:
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|
Loading…
Reference in New Issue