Merge branch 'ci2' of https://github.com/cgzones/htop into cgzones-ci2

This commit is contained in:
Nathan Scott 2020-08-26 10:08:50 +10:00
commit ba94e0dfda
12 changed files with 60 additions and 41 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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]);

View File

@ -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);

View File

@ -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_ {

View File

@ -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_ {

View File

@ -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));

View File

@ -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') {

View File

@ -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) ||

View File

@ -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();
} }

2
scripts/MakeHeader.py.in Executable file → Normal file
View File

@ -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: