mirror of
https://github.com/xzeldon/htop.git
synced 2024-12-24 15:15:44 +00:00
Merge branch 'ci2' of https://github.com/cgzones/htop into cgzones-ci2
This commit is contained in:
commit
ba94e0dfda
24
.github/workflows/ci.yml
vendored
24
.github/workflows/ci.yml
vendored
@ -16,7 +16,29 @@ jobs:
|
||||
- name: Build
|
||||
run: make
|
||||
- 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:
|
||||
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);
|
||||
if (!p) return HTOP_OK;
|
||||
Affinity* affinity = Affinity_get(p, st->pl);
|
||||
if (!affinity) return HTOP_OK;
|
||||
Panel* affinityPanel = AffinityPanel_new(st->pl, affinity);
|
||||
Affinity_delete(affinity);
|
||||
Affinity* affinity1 = Affinity_get(p, st->pl);
|
||||
if (!affinity1) return HTOP_OK;
|
||||
Panel* affinityPanel = AffinityPanel_new(st->pl, affinity1);
|
||||
Affinity_delete(affinity1);
|
||||
|
||||
void* set = Action_pickFromVector(st, affinityPanel, 15, true);
|
||||
if (set) {
|
||||
Affinity* affinity = AffinityPanel_getAffinity(affinityPanel, st->pl);
|
||||
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) Affinity_set, (Arg){ .v = affinity }, NULL);
|
||||
Affinity* affinity2 = AffinityPanel_getAffinity(affinityPanel, st->pl);
|
||||
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) Affinity_set, (Arg){ .v = affinity2 }, NULL);
|
||||
if (!ok) beep();
|
||||
Affinity_delete(affinity);
|
||||
Affinity_delete(affinity2);
|
||||
}
|
||||
Panel_delete((Object*)affinityPanel);
|
||||
#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 len = nameLen + 100;
|
||||
char* name = xMalloc(len);
|
||||
strncpy(name, Meter_name(meter), nameLen);
|
||||
memcpy(name, Meter_name(meter), nameLen);
|
||||
name[nameLen] = '\0';
|
||||
if (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};
|
||||
|
||||
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;
|
||||
if (!bar) {
|
||||
bar = FunctionBar_new(InfoScreenFunctions, InfoScreenKeys, InfoScreenEvents);
|
||||
@ -75,7 +75,7 @@ InfoScreen* InfoScreen_done(InfoScreen* this) {
|
||||
return this;
|
||||
}
|
||||
|
||||
void InfoScreen_drawTitled(InfoScreen* this, char* fmt, ...) {
|
||||
void InfoScreen_drawTitled(InfoScreen* this, const char* fmt, ...) {
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
attrset(CRT_colors[METER_TEXT]);
|
||||
|
@ -38,11 +38,11 @@ struct InfoScreen_ {
|
||||
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 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);
|
||||
|
||||
|
@ -85,7 +85,7 @@ typedef enum ProcessFields {
|
||||
|
||||
typedef struct ProcessPidColumn_ {
|
||||
int id;
|
||||
char* label;
|
||||
const char* label;
|
||||
} ProcessPidColumn;
|
||||
|
||||
typedef struct Process_ {
|
||||
|
@ -61,7 +61,7 @@ typedef enum ProcessFields {
|
||||
|
||||
typedef struct ProcessPidColumn_ {
|
||||
int id;
|
||||
char* label;
|
||||
const char* label;
|
||||
} ProcessPidColumn;
|
||||
|
||||
typedef struct Process_ {
|
||||
|
@ -81,10 +81,7 @@ char** String_split(const char* s, char sep, int* n) {
|
||||
s += size + 1;
|
||||
}
|
||||
if (s[0] != '\0') {
|
||||
int size = strlen(s);
|
||||
char* token = xMalloc(size + 1);
|
||||
strncpy(token, s, size + 1);
|
||||
out[ctr] = token;
|
||||
out[ctr] = xStrdup(s);
|
||||
ctr++;
|
||||
}
|
||||
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;
|
||||
for (unsigned short int i = 0; i < lineNum; i++) {
|
||||
for (unsigned short int j = 0; j < lineNum; j++) {
|
||||
free(line);
|
||||
line = String_readLine(file);
|
||||
if (!line) break;
|
||||
@ -194,26 +194,26 @@ static void Battery_getSysData(double* level, ACPresence* isOnAC) {
|
||||
const char filePath[50];
|
||||
|
||||
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/type", entryName);
|
||||
int fd = open(filePath, O_RDONLY);
|
||||
if (fd == -1)
|
||||
int fd1 = open(filePath, O_RDONLY);
|
||||
if (fd1 == -1)
|
||||
continue;
|
||||
|
||||
char type[8];
|
||||
ssize_t typelen = xread(fd, type, 7);
|
||||
close(fd);
|
||||
ssize_t typelen = xread(fd1, type, 7);
|
||||
close(fd1);
|
||||
if (typelen < 1)
|
||||
continue;
|
||||
|
||||
if (type[0] == 'B' && type[1] == 'a' && type[2] == 't') {
|
||||
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/uevent", entryName);
|
||||
int fd = open(filePath, O_RDONLY);
|
||||
if (fd == -1) {
|
||||
int fd2 = open(filePath, O_RDONLY);
|
||||
if (fd2 == -1) {
|
||||
closedir(dir);
|
||||
return;
|
||||
}
|
||||
char buffer[1024];
|
||||
ssize_t buflen = xread(fd, buffer, 1023);
|
||||
close(fd);
|
||||
ssize_t buflen = xread(fd2, buffer, 1023);
|
||||
close(fd2);
|
||||
if (buflen < 1) {
|
||||
closedir(dir);
|
||||
return;
|
||||
@ -259,18 +259,18 @@ static void Battery_getSysData(double* level, ACPresence* isOnAC) {
|
||||
}
|
||||
|
||||
xSnprintf((char *) filePath, sizeof filePath, SYS_POWERSUPPLY_DIR "/%s/online", entryName);
|
||||
int fd = open(filePath, O_RDONLY);
|
||||
if (fd == -1) {
|
||||
int fd3 = open(filePath, O_RDONLY);
|
||||
if (fd3 == -1) {
|
||||
closedir(dir);
|
||||
return;
|
||||
}
|
||||
char buffer[2] = "";
|
||||
for(;;) {
|
||||
ssize_t res = read(fd, buffer, 1);
|
||||
ssize_t res = read(fd3, buffer, 1);
|
||||
if (res == -1 && errno == EINTR) continue;
|
||||
break;
|
||||
}
|
||||
close(fd);
|
||||
close(fd3);
|
||||
if (buffer[0] == '0') {
|
||||
*isOnAC = AC_ABSENT;
|
||||
} else if (buffer[0] == '1') {
|
||||
|
@ -1227,9 +1227,9 @@ static inline double LinuxProcessList_scanCPUFrequency(LinuxProcessList* this) {
|
||||
(sscanf(buffer, "processor: %d", &cpuid) == 1)
|
||||
) {
|
||||
if (cpuid < 0 || cpuid > (cpus - 1)) {
|
||||
char buffer[64];
|
||||
xSnprintf(buffer, sizeof(buffer), PROCCPUINFOFILE " contains out-of-range CPU number %d", cpuid);
|
||||
CRT_fatalError(buffer);
|
||||
char tmpbuffer[64];
|
||||
xSnprintf(tmpbuffer, sizeof(tmpbuffer), PROCCPUINFOFILE " contains out-of-range CPU number %d", cpuid);
|
||||
CRT_fatalError(tmpbuffer);
|
||||
}
|
||||
} else if (
|
||||
(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)))
|
||||
#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 };
|
||||
|
||||
@ -94,12 +94,12 @@ static Htop_Reaction Platform_actionSetIOPriority(State* st) {
|
||||
|
||||
LinuxProcess* p = (LinuxProcess*) Panel_getSelected(panel);
|
||||
if (!p) return HTOP_OK;
|
||||
IOPriority ioprio = p->ioPriority;
|
||||
Panel* ioprioPanel = IOPriorityPanel_new(ioprio);
|
||||
IOPriority ioprio1 = p->ioPriority;
|
||||
Panel* ioprioPanel = IOPriorityPanel_new(ioprio1);
|
||||
void* set = Action_pickFromVector(st, ioprioPanel, 21, true);
|
||||
if (set) {
|
||||
IOPriority ioprio = IOPriorityPanel_getIOPriority(ioprioPanel);
|
||||
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) LinuxProcess_setIOPriority, (Arg){ .i = ioprio }, NULL);
|
||||
IOPriority ioprio2 = IOPriorityPanel_getIOPriority(ioprioPanel);
|
||||
bool ok = MainPanel_foreachProcess((MainPanel*)panel, (MainPanel_ForeachProcessFn) LinuxProcess_setIOPriority, (Arg){ .i = ioprio2 }, NULL);
|
||||
if (!ok)
|
||||
beep();
|
||||
}
|
||||
|
2
scripts/MakeHeader.py.in
Executable file → Normal file
2
scripts/MakeHeader.py.in
Executable file → Normal file
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env @PYTHON@
|
||||
import os, sys, string, io
|
||||
import os, sys, io
|
||||
try:
|
||||
from StringIO import StringIO
|
||||
except ImportError:
|
||||
|
Loading…
Reference in New Issue
Block a user