diff options
author | Nathan Scott <nathans@redhat.com> | 2020-10-05 15:57:52 +1100 |
---|---|---|
committer | Nathan Scott <nathans@redhat.com> | 2020-10-05 15:57:52 +1100 |
commit | 576b82f86a5be79c3576af1aaf1eb56112be79fe (patch) | |
tree | b81b1b615a1bc8654e71f6680e8fbfec855b2825 | |
parent | b82a13c6ba48eb8711071342bec80798aca5de1c (diff) | |
parent | 2cde4a7f8eef5f4b4701128b272d529c74f5cfc1 (diff) |
Merge branch 'attr-nonnull' of https://github.com/BenBE/htop into BenBE-attr-nonnull
-rw-r--r-- | Affinity.c | 2 | ||||
-rw-r--r-- | AvailableMetersPanel.h | 4 | ||||
-rw-r--r-- | CategoriesPanel.h | 4 | ||||
-rw-r--r-- | ColorsPanel.h | 2 | ||||
-rw-r--r-- | DisplayOptionsPanel.h | 2 | ||||
-rw-r--r-- | IncSet.h | 3 | ||||
-rw-r--r-- | InfoScreen.h | 4 | ||||
-rw-r--r-- | Meter.h | 3 | ||||
-rw-r--r-- | MetersPanel.h | 2 | ||||
-rw-r--r-- | Panel.h | 2 | ||||
-rw-r--r-- | Process.h | 4 | ||||
-rw-r--r-- | ProcessList.h | 4 | ||||
-rw-r--r-- | ScreenManager.h | 2 | ||||
-rw-r--r-- | Settings.h | 3 | ||||
-rw-r--r-- | XAlloc.c | 30 | ||||
-rw-r--r-- | XAlloc.h | 20 | ||||
-rw-r--r-- | configure.ac | 19 | ||||
-rw-r--r-- | freebsd/FreeBSDProcessList.c | 2 |
18 files changed, 78 insertions, 34 deletions
@@ -6,6 +6,8 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ +#include "config.h" + #include "Affinity.h" #include <stdlib.h> diff --git a/AvailableMetersPanel.h b/AvailableMetersPanel.h index ecebb28d..92d7c941 100644 --- a/AvailableMetersPanel.h +++ b/AvailableMetersPanel.h @@ -7,10 +7,10 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ -#include "Settings.h" #include "Panel.h" -#include "ScreenManager.h" #include "ProcessList.h" +#include "ScreenManager.h" +#include "Settings.h" typedef struct AvailableMetersPanel_ { Panel super; diff --git a/CategoriesPanel.h b/CategoriesPanel.h index fefc3e93..5f8cb0f5 100644 --- a/CategoriesPanel.h +++ b/CategoriesPanel.h @@ -8,9 +8,9 @@ in the source distribution for its full text. */ #include "Panel.h" -#include "Settings.h" -#include "ScreenManager.h" #include "ProcessList.h" +#include "ScreenManager.h" +#include "Settings.h" typedef struct CategoriesPanel_ { Panel super; diff --git a/ColorsPanel.h b/ColorsPanel.h index 479fad08..8dd61711 100644 --- a/ColorsPanel.h +++ b/ColorsPanel.h @@ -8,8 +8,8 @@ in the source distribution for its full text. */ #include "Panel.h" -#include "Settings.h" #include "ScreenManager.h" +#include "Settings.h" typedef struct ColorsPanel_ { Panel super; diff --git a/DisplayOptionsPanel.h b/DisplayOptionsPanel.h index 499b2fc1..b103503b 100644 --- a/DisplayOptionsPanel.h +++ b/DisplayOptionsPanel.h @@ -8,8 +8,8 @@ in the source distribution for its full text. */ #include "Panel.h" -#include "Settings.h" #include "ScreenManager.h" +#include "Settings.h" typedef struct DisplayOptionsPanel_ { Panel super; @@ -7,9 +7,10 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ +#include <stdbool.h> + #include "FunctionBar.h" #include "Panel.h" -#include <stdbool.h> #define INCMODE_MAX 40 diff --git a/InfoScreen.h b/InfoScreen.h index a5a5abf6..196c56e1 100644 --- a/InfoScreen.h +++ b/InfoScreen.h @@ -1,10 +1,10 @@ #ifndef HEADER_InfoScreen #define HEADER_InfoScreen -#include "Process.h" -#include "Panel.h" #include "FunctionBar.h" #include "IncSet.h" +#include "Panel.h" +#include "Process.h" typedef struct InfoScreen_ InfoScreen; @@ -7,9 +7,10 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ -#include "ListItem.h" #include <sys/time.h> +#include "ListItem.h" + #define METER_BUFFER_LEN 256 typedef struct Meter_ Meter; diff --git a/MetersPanel.h b/MetersPanel.h index dbc31ee4..919b117d 100644 --- a/MetersPanel.h +++ b/MetersPanel.h @@ -8,8 +8,8 @@ in the source distribution for its full text. */ #include "Panel.h" -#include "Settings.h" #include "ScreenManager.h" +#include "Settings.h" typedef struct MetersPanel_ MetersPanel; @@ -7,9 +7,9 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ +#include "FunctionBar.h" #include "Object.h" #include "Vector.h" -#include "FunctionBar.h" typedef struct Panel_ Panel; @@ -20,10 +20,10 @@ in the source distribution for its full text. #endif #define PAGE_SIZE_KB ( PAGE_SIZE / ONE_K ) -#include "Object.h" - #include <sys/types.h> +#include "Object.h" + #define PROCESS_FLAG_IO 0x0001 typedef enum ProcessFields { diff --git a/ProcessList.h b/ProcessList.h index 7b572d8f..34f92b1b 100644 --- a/ProcessList.h +++ b/ProcessList.h @@ -7,12 +7,12 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ -#include "Vector.h" #include "Hashtable.h" -#include "UsersTable.h" #include "Panel.h" #include "Process.h" #include "Settings.h" +#include "UsersTable.h" +#include "Vector.h" #ifdef HAVE_LIBHWLOC #include <hwloc.h> diff --git a/ScreenManager.h b/ScreenManager.h index 6f19ab8f..4c78efd3 100644 --- a/ScreenManager.h +++ b/ScreenManager.h @@ -7,10 +7,10 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ -#include "Vector.h" #include "Header.h" #include "Settings.h" #include "Panel.h" +#include "Vector.h" typedef enum Orientation_ { VERTICAL, @@ -9,9 +9,10 @@ in the source distribution for its full text. #define DEFAULT_DELAY 15 -#include "Process.h" #include <stdbool.h> +#include "Process.h" + typedef struct { int len; char** names; @@ -5,6 +5,8 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif + +#include <stdarg.h> #include <stdlib.h> #include <string.h> @@ -39,7 +41,33 @@ void* xRealloc(void* ptr, size_t size) { return data; } -char* xStrdup_(const char* str) { +int xAsprintf(char** strp, const char* fmt, ...) { + va_list vl; + va_start(vl, fmt); + int _r = vasprintf(strp, fmt, vl); + va_end(vl); + + if (_r < 0) { + fail(); + } + + return _r; +} + +int xSnprintf(char* buf, int len, const char* fmt, ...) { + va_list vl; + va_start(vl, fmt); + int _n=vsnprintf(buf, len, fmt, vl); + va_end(vl); + + if (!(_n > -1 && _n < len)) { + fail(); + } + + return _n; +} + +char* xStrdup(const char* str) { char* data = strdup(str); if (!data) { fail(); @@ -7,8 +7,8 @@ #include "Macros.h" -#include <err.h> #include <assert.h> +#include <err.h> #include <stdlib.h> void fail(void) ATTR_NORETURN; @@ -19,20 +19,12 @@ void* xCalloc(size_t nmemb, size_t size); void* xRealloc(void* ptr, size_t size); -#undef xAsprintf - -#define xAsprintf(strp, fmt, ...) do { int _r=asprintf(strp, fmt, __VA_ARGS__); if (_r < 0) { fail(); } } while(0) +ATTR_FORMAT(printf, 2, 3) +int xAsprintf(char **strp, const char* fmt, ...); -#define xSnprintf(fmt, len, ...) do { int _l=len; int _n=snprintf(fmt, _l, __VA_ARGS__); if (!(_n > -1 && _n < _l)) { curs_set(1); endwin(); err(1, NULL); } } while(0) - -#undef xStrdup -#undef xStrdup_ -#ifdef NDEBUG -# define xStrdup_ xStrdup -#else -# define xStrdup(str_) (assert(str_), xStrdup_(str_)) -#endif +ATTR_FORMAT(printf, 3, 4) +int xSnprintf(char *buf, int len, const char* fmt, ...); -char* xStrdup_(const char* str) ATTR_NONNULL; +char* xStrdup(const char* str) ATTR_NONNULL; #endif diff --git a/configure.ac b/configure.ac index 6104a1f3..fb6400fd 100644 --- a/configure.ac +++ b/configure.ac @@ -169,6 +169,23 @@ m4_define([HTOP_CHECK_LIB], ], [$4]) ]) +dnl https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS + AC_ARG_ENABLE(unicode, [AS_HELP_STRING([--enable-unicode], [enable Unicode support])], ,enable_unicode="yes") if test "x$enable_unicode" = xyes; then HTOP_CHECK_SCRIPT([ncursesw6], [addnwstr], [HAVE_LIBNCURSESW], "ncursesw6-config", @@ -291,6 +308,8 @@ AM_CFLAGS="\ -Wunused\ -Wwrite-strings" +AX_CHECK_COMPILE_FLAG([-Wnull-dereference], [AM_CFLAGS="$AM_CFLAGS -Wnull-dereference"], , [-Werror]) + AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], [Treat warnings as errors (default: warnings are not errors)])], [enable_werror="$enableval"], [enable_werror=no]) AS_IF([test "x$enable_werror" = "xyes"], [AM_CFLAGS="$AM_CFLAGS -Werror"]) diff --git a/freebsd/FreeBSDProcessList.c b/freebsd/FreeBSDProcessList.c index 11cfe7e1..6e7f6ecb 100644 --- a/freebsd/FreeBSDProcessList.c +++ b/freebsd/FreeBSDProcessList.c @@ -355,7 +355,7 @@ char* FreeBSDProcessList_readJailName(struct kinfo_proc* kproc) { if (jid < 0) { if (!jail_errmsg[0]) xSnprintf(jail_errmsg, JAIL_ERRMSGLEN, "jail_get: %s", strerror(errno)); - return NULL; + return NULL; } else if (jid == kproc->ki_jid) { jname = xStrdup(jnamebuf); if (jname == NULL) |