From 61ef1134d97dbcf8b4ee069b36addf3c706ff55c Mon Sep 17 00:00:00 2001 From: Nathan Scott Date: Wed, 3 Mar 2021 10:59:28 +1100 Subject: [PATCH] Move generic (shared) code into its own sub-directory Code that is shared across some (but not all) platforms is moved into a 'generic' home. Makefile.am cleanups to match plus some minor alphabetic reordering/formatting. As discussed in https://github.com/htop-dev/htop/pull/553 --- Makefile.am | 116 ++++++++++++++++++++---------- darwin/DarwinProcessList.c | 2 +- darwin/Platform.h | 7 +- dragonflybsd/Platform.h | 7 +- freebsd/FreeBSDProcessList.c | 2 +- freebsd/Platform.h | 7 +- generic/hostname.c | 16 +++++ Generic.h => generic/hostname.h | 10 ++- {zfs => generic}/openzfs_sysctl.c | 4 +- {zfs => generic}/openzfs_sysctl.h | 2 +- Generic.c => generic/uname.c | 15 +--- generic/uname.h | 12 ++++ linux/Platform.h | 7 +- openbsd/Platform.h | 7 +- solaris/Platform.h | 7 +- 15 files changed, 144 insertions(+), 77 deletions(-) create mode 100644 generic/hostname.c rename Generic.h => generic/hostname.h (51%) rename {zfs => generic}/openzfs_sysctl.c (98%) rename {zfs => generic}/openzfs_sysctl.h (91%) rename Generic.c => generic/uname.c (91%) create mode 100644 generic/uname.h diff --git a/Makefile.am b/Makefile.am index 082f6e7a..e894457b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -42,7 +42,6 @@ myhtopsources = \ DisplayOptionsPanel.c \ EnvScreen.c \ FunctionBar.c \ - Generic.c \ Hashtable.c \ Header.c \ HostnameMeter.c \ @@ -97,7 +96,6 @@ myhtopheaders = \ DisplayOptionsPanel.h \ EnvScreen.h \ FunctionBar.h \ - Generic.h \ Hashtable.h \ Header.h \ HostnameMeter.h \ @@ -136,6 +134,8 @@ myhtopheaders = \ # ----- linux_platform_headers = \ + generic/hostname.h \ + generic/uname.h \ linux/HugePageMeter.h \ linux/IOPriority.h \ linux/IOPriorityPanel.h \ @@ -153,9 +153,9 @@ linux_platform_headers = \ zfs/ZfsArcStats.h \ zfs/ZfsCompressedArcMeter.h -if HTOP_LINUX -AM_LDFLAGS += -rdynamic -myhtopplatsources = \ +linux_platform_sources = \ + generic/hostname.c \ + generic/uname.c \ linux/HugePageMeter.c \ linux/IOPriorityPanel.c \ linux/LibSensors.c \ @@ -169,7 +169,10 @@ myhtopplatsources = \ zfs/ZfsArcMeter.c \ zfs/ZfsCompressedArcMeter.c +if HTOP_LINUX +AM_LDFLAGS += -rdynamic myhtopplatheaders = $(linux_platform_headers) +myhtopplatsources = $(linux_platform_sources) endif # FreeBSD @@ -180,17 +183,26 @@ freebsd_platform_headers = \ freebsd/FreeBSDProcess.h \ freebsd/Platform.h \ freebsd/ProcessField.h \ + generic/hostname.h \ + generic/openzfs_sysctl.h \ + generic/uname.h \ zfs/ZfsArcMeter.h \ - zfs/ZfsCompressedArcMeter.h \ zfs/ZfsArcStats.h \ - zfs/openzfs_sysctl.h + zfs/ZfsCompressedArcMeter.h + +freebsd_platform_sources = \ + freebsd/Platform.c \ + freebsd/FreeBSDProcessList.c \ + freebsd/FreeBSDProcess.c \ + generic/hostname.c \ + generic/openzfs_sysctl.c \ + generic/uname.c \ + zfs/ZfsArcMeter.c \ + zfs/ZfsCompressedArcMeter.c if HTOP_FREEBSD -myhtopplatsources = freebsd/Platform.c freebsd/FreeBSDProcessList.c \ -freebsd/FreeBSDProcess.c \ -zfs/ZfsArcMeter.c zfs/ZfsCompressedArcMeter.c zfs/openzfs_sysctl.c - myhtopplatheaders = $(freebsd_platform_headers) +myhtopplatsources = $(freebsd_platform_sources) endif # DragonFlyBSD @@ -200,31 +212,43 @@ dragonflybsd_platform_headers = \ dragonflybsd/DragonFlyBSDProcessList.h \ dragonflybsd/DragonFlyBSDProcess.h \ dragonflybsd/Platform.h \ - dragonflybsd/ProcessField.h + dragonflybsd/ProcessField.h \ + generic/hostname.h \ + generic/uname.h + +dragonflybsd_platform_sources = \ + dragonflybsd/DragonFlyBSDProcessList.c \ + dragonflybsd/DragonFlyBSDProcess.c \ + dragonflybsd/Platform.c \ + generic/hostname.c \ + generic/uname.c if HTOP_DRAGONFLYBSD -myhtopplatsources = \ - dragonflybsd/Platform.c \ - dragonflybsd/DragonFlyBSDProcessList.c \ - dragonflybsd/DragonFlyBSDProcess.c - myhtopplatheaders = $(dragonflybsd_platform_headers) +myhtopplatsources = $(dragonflybsd_platform_sources) endif # OpenBSD # ------- openbsd_platform_headers = \ + generic/hostname.h \ + generic/uname.h \ openbsd/OpenBSDProcessList.h \ openbsd/OpenBSDProcess.h \ openbsd/Platform.h \ openbsd/ProcessField.h -if HTOP_OPENBSD -myhtopplatsources = openbsd/Platform.c openbsd/OpenBSDProcessList.c \ -openbsd/OpenBSDProcess.c +openbsd_platform_sources = \ + generic/hostname.c \ + generic/uname.c \ + openbsd/OpenBSDProcessList.c \ + openbsd/OpenBSDProcess.c \ + openbsd/Platform.c +if HTOP_OPENBSD myhtopplatheaders = $(openbsd_platform_headers) +myhtopplatsources = $(openbsd_platform_sources) endif # Darwin @@ -235,38 +259,55 @@ darwin_platform_headers = \ darwin/DarwinProcessList.h \ darwin/Platform.h \ darwin/ProcessField.h \ + generic/hostname.h \ + generic/openzfs_sysctl.h \ + generic/uname.h \ zfs/ZfsArcMeter.h \ - zfs/ZfsCompressedArcMeter.h \ zfs/ZfsArcStats.h \ - zfs/openzfs_sysctl.h + zfs/ZfsCompressedArcMeter.h + +darwin_platform_sources = \ + darwin/Platform.c \ + darwin/DarwinProcess.c \ + darwin/DarwinProcessList.c \ + generic/hostname.c \ + generic/openzfs_sysctl.c \ + generic/uname.c \ + zfs/ZfsArcMeter.c \ + zfs/ZfsCompressedArcMeter.c if HTOP_DARWIN AM_LDFLAGS += -framework IOKit -framework CoreFoundation -myhtopplatsources = darwin/Platform.c darwin/DarwinProcess.c \ -darwin/DarwinProcessList.c \ -zfs/ZfsArcMeter.c zfs/ZfsCompressedArcMeter.c zfs/openzfs_sysctl.c - myhtopplatheaders = $(darwin_platform_headers) +myhtopplatsources = $(darwin_platform_sources) endif # Solaris # ------- solaris_platform_headers = \ - solaris/Platform.h \ + generic/hostname.h \ + generic/uname.h \ solaris/ProcessField.h \ + solaris/Platform.h \ solaris/SolarisProcess.h \ solaris/SolarisProcessList.h \ zfs/ZfsArcMeter.h \ - zfs/ZfsCompressedArcMeter.h \ - zfs/ZfsArcStats.h + zfs/ZfsArcStats.h \ + zfs/ZfsCompressedArcMeter.h + +solaris_platform_sources = \ + generic/hostname.c \ + generic/uname.c \ + solaris/Platform.c \ + solaris/SolarisProcess.c \ + solaris/SolarisProcessList.c \ + zfs/ZfsArcMeter.c \ + zfs/ZfsCompressedArcMeter.c if HTOP_SOLARIS -myhtopplatsources = solaris/Platform.c \ -solaris/SolarisProcess.c solaris/SolarisProcessList.c \ -zfs/ZfsArcMeter.c zfs/ZfsCompressedArcMeter.c - myhtopplatheaders = $(solaris_platform_headers) +myhtopplatsources = $(solaris_platform_sources) endif # Unsupported @@ -278,10 +319,13 @@ unsupported_platform_headers = \ unsupported/UnsupportedProcess.h \ unsupported/UnsupportedProcessList.h -if HTOP_UNSUPPORTED -myhtopplatsources = unsupported/Platform.c \ -unsupported/UnsupportedProcess.c unsupported/UnsupportedProcessList.c +unsupported_platform_sources = \ + unsupported/Platform.c \ + unsupported/UnsupportedProcess.c \ + unsupported/UnsupportedProcessList.c +if HTOP_UNSUPPORTED +myhtopplatsources = $(unsupported_platform_sources) myhtopplatheaders = $(unsupported_platform_headers) endif diff --git a/darwin/DarwinProcessList.c b/darwin/DarwinProcessList.c index 43337100..c8f89e9b 100644 --- a/darwin/DarwinProcessList.c +++ b/darwin/DarwinProcessList.c @@ -20,9 +20,9 @@ in the source distribution for its full text. #include "CRT.h" #include "DarwinProcess.h" +#include "generic/openzfs_sysctl.h" #include "Platform.h" #include "ProcessList.h" -#include "zfs/openzfs_sysctl.h" #include "zfs/ZfsArcStats.h" diff --git a/darwin/Platform.h b/darwin/Platform.h index 59c2b9c7..c329c608 100644 --- a/darwin/Platform.h +++ b/darwin/Platform.h @@ -16,7 +16,8 @@ in the source distribution for its full text. #include "CPUMeter.h" #include "DarwinProcess.h" #include "DiskIOMeter.h" -#include "Generic.h" +#include "generic/hostname.h" +#include "generic/uname.h" #include "NetworkIOMeter.h" #include "ProcessLocksScreen.h" #include "SignalsPanel.h" @@ -69,11 +70,11 @@ bool Platform_getNetworkIO(NetworkIOData* data); void Platform_getBattery(double *percent, ACPresence *isOnAC); static inline void Platform_getHostname(char* buffer, size_t size) { - Generic_Hostname(buffer, size); + Generic_hostname(buffer, size); } static inline void Platform_getRelease(char** string) { - *string = Generic_OSRelease(); + *string = Generic_uname(); } #endif diff --git a/dragonflybsd/Platform.h b/dragonflybsd/Platform.h index 4d70e4b7..2ed97a70 100644 --- a/dragonflybsd/Platform.h +++ b/dragonflybsd/Platform.h @@ -14,7 +14,8 @@ in the source distribution for its full text. #include "Action.h" #include "BatteryMeter.h" #include "DiskIOMeter.h" -#include "Generic.h" +#include "generic/hostname.h" +#include "generic/uname.h" #include "NetworkIOMeter.h" #include "ProcessLocksScreen.h" #include "SignalsPanel.h" @@ -59,11 +60,11 @@ bool Platform_getNetworkIO(NetworkIOData* data); void Platform_getBattery(double* percent, ACPresence* isOnAC); static inline void Platform_getHostname(char* buffer, size_t size) { - Generic_Hostname(buffer, size); + Generic_hostname(buffer, size); } static inline void Platform_getRelease(char** string) { - *string = Generic_OSRelease(); + *string = Generic_uname(); } #endif diff --git a/freebsd/FreeBSDProcessList.c b/freebsd/FreeBSDProcessList.c index 91e1d4ca..622403be 100644 --- a/freebsd/FreeBSDProcessList.c +++ b/freebsd/FreeBSDProcessList.c @@ -30,6 +30,7 @@ in the source distribution for its full text. #include "CRT.h" #include "Compat.h" #include "FreeBSDProcess.h" +#include "generic/openzfs_sysctl.h" #include "Macros.h" #include "Object.h" #include "Process.h" @@ -37,7 +38,6 @@ in the source distribution for its full text. #include "Settings.h" #include "XUtils.h" #include "zfs/ZfsArcStats.h" -#include "zfs/openzfs_sysctl.h" static int MIB_hw_physmem[2]; diff --git a/freebsd/Platform.h b/freebsd/Platform.h index 4ec130d7..79dfe0bd 100644 --- a/freebsd/Platform.h +++ b/freebsd/Platform.h @@ -13,7 +13,8 @@ in the source distribution for its full text. #include "Action.h" #include "BatteryMeter.h" #include "DiskIOMeter.h" -#include "Generic.h" +#include "generic/hostname.h" +#include "generic/uname.h" #include "Meter.h" #include "NetworkIOMeter.h" #include "Process.h" @@ -64,11 +65,11 @@ bool Platform_getNetworkIO(NetworkIOData* data); void Platform_getBattery(double* percent, ACPresence* isOnAC); static inline void Platform_getHostname(char* buffer, size_t size) { - Generic_Hostname(buffer, size); + Generic_hostname(buffer, size); } static inline void Platform_getRelease(char** string) { - *string = Generic_OSRelease(); + *string = Generic_uname(); } #endif diff --git a/generic/hostname.c b/generic/hostname.c new file mode 100644 index 00000000..78404e43 --- /dev/null +++ b/generic/hostname.c @@ -0,0 +1,16 @@ +/* +htop - generic/hostname.c +(C) 2021 htop dev team +Released under the GNU GPLv2, see the COPYING file +in the source distribution for its full text. +*/ +#include "config.h" // IWYU pragma: keep + +#include "generic/hostname.h" + +#include + + +void Generic_hostname(char* buffer, size_t size) { + gethostname(buffer, size - 1); +} diff --git a/Generic.h b/generic/hostname.h similarity index 51% rename from Generic.h rename to generic/hostname.h index 44adc09e..c6b941e8 100644 --- a/Generic.h +++ b/generic/hostname.h @@ -1,7 +1,7 @@ -#ifndef HEADER_Generic -#define HEADER_Generic +#ifndef HEADER_hostname +#define HEADER_hostname /* -htop - Generic.h +htop - generic/hostname.h (C) 2021 htop dev team Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. @@ -9,8 +9,6 @@ in the source distribution for its full text. #include -void Generic_Hostname(char* buffer, size_t size); - -char* Generic_OSRelease(void); +void Generic_hostname(char* buffer, size_t size); #endif diff --git a/zfs/openzfs_sysctl.c b/generic/openzfs_sysctl.c similarity index 98% rename from zfs/openzfs_sysctl.c rename to generic/openzfs_sysctl.c index fd00d61b..c7d79bcf 100644 --- a/zfs/openzfs_sysctl.c +++ b/generic/openzfs_sysctl.c @@ -1,11 +1,11 @@ /* -htop - zfs/openzfs_sysctl.c +htop - generic/openzfs_sysctl.c (C) 2014 Hisham H. Muhammad Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. */ -#include "zfs/openzfs_sysctl.h" +#include "generic/openzfs_sysctl.h" #include #include // IWYU pragma: keep diff --git a/zfs/openzfs_sysctl.h b/generic/openzfs_sysctl.h similarity index 91% rename from zfs/openzfs_sysctl.h rename to generic/openzfs_sysctl.h index b49128e3..4cf5485e 100644 --- a/zfs/openzfs_sysctl.h +++ b/generic/openzfs_sysctl.h @@ -1,7 +1,7 @@ #ifndef HEADER_openzfs_sysctl #define HEADER_openzfs_sysctl /* -htop - zfs/openzfs_sysctl.h +htop - generic/openzfs_sysctl.h (C) 2014 Hisham H. Muhammad Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. diff --git a/Generic.c b/generic/uname.c similarity index 91% rename from Generic.c rename to generic/uname.c index 185ecb41..5b4fb2cf 100644 --- a/Generic.c +++ b/generic/uname.c @@ -1,26 +1,20 @@ /* -htop - Generic.c +htop - generic/uname.c (C) 2021 htop dev team Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. */ #include "config.h" // IWYU pragma: keep -#include "Generic.h" +#include "generic/uname.h" #include #ifdef HAVE_SYS_UTSNAME_H #include #endif -#include #include "XUtils.h" -void Generic_Hostname(char* buffer, size_t size) { - gethostname(buffer, size - 1); -} - -#ifdef HAVE_SYS_UTSNAME_H #ifndef OSRELEASEFILE #define OSRELEASEFILE "/etc/os-release" @@ -68,9 +62,7 @@ static void parseOSRelease(char* buffer, size_t bufferLen) { snprintf(buffer, bufferLen, "%s%s%s", name[0] ? name : "", name[0] && version[0] ? " " : "", version); } -char* Generic_OSRelease(void) { - static struct utsname uname_info; - +char* Generic_uname(void) { static char savedString[ /* uname structure fields - manpages recommend sizeof */ sizeof(uname_info.sysname) + @@ -99,4 +91,3 @@ char* Generic_OSRelease(void) { return savedString; } -#endif diff --git a/generic/uname.h b/generic/uname.h new file mode 100644 index 00000000..820d0857 --- /dev/null +++ b/generic/uname.h @@ -0,0 +1,12 @@ +#ifndef HEADER_uname +#define HEADER_uname +/* +htop - generic/uname.h +(C) 2021 htop dev team +Released under the GNU GPLv2, see the COPYING file +in the source distribution for its full text. +*/ + +char* Generic_uname(void); + +#endif diff --git a/linux/Platform.h b/linux/Platform.h index c2a86f73..2d528bd3 100644 --- a/linux/Platform.h +++ b/linux/Platform.h @@ -14,7 +14,8 @@ in the source distribution for its full text. #include "Action.h" #include "BatteryMeter.h" #include "DiskIOMeter.h" -#include "Generic.h" +#include "generic/hostname.h" +#include "generic/uname.h" #include "Meter.h" #include "NetworkIOMeter.h" #include "Process.h" @@ -74,11 +75,11 @@ bool Platform_getNetworkIO(NetworkIOData* data); void Platform_getBattery(double *percent, ACPresence *isOnAC); static inline void Platform_getHostname(char* buffer, size_t size) { - Generic_Hostname(buffer, size); + Generic_hostname(buffer, size); } static inline void Platform_getRelease(char** string) { - *string = Generic_OSRelease(); + *string = Generic_uname(); } #endif diff --git a/openbsd/Platform.h b/openbsd/Platform.h index ca739988..8d9791e1 100644 --- a/openbsd/Platform.h +++ b/openbsd/Platform.h @@ -14,7 +14,8 @@ in the source distribution for its full text. #include "Action.h" #include "BatteryMeter.h" #include "DiskIOMeter.h" -#include "Generic.h" +#include "generic/hostname.h" +#include "generic/uname.h" #include "Meter.h" #include "NetworkIOMeter.h" #include "Process.h" @@ -62,11 +63,11 @@ bool Platform_getNetworkIO(NetworkIOData* data); void Platform_getBattery(double* percent, ACPresence* isOnAC); static inline void Platform_getHostname(char* buffer, size_t size) { - Generic_Hostname(buffer, size); + Generic_hostname(buffer, size); } static inline void Platform_getRelease(char** string) { - *string = Generic_OSRelease(); + *string = Generic_uname(); } #endif diff --git a/solaris/Platform.h b/solaris/Platform.h index d4496bc2..4a6765a1 100644 --- a/solaris/Platform.h +++ b/solaris/Platform.h @@ -19,7 +19,8 @@ in the source distribution for its full text. #include "Action.h" #include "BatteryMeter.h" #include "DiskIOMeter.h" -#include "Generic.h" +#include "generic/hostname.h" +#include "generic/uname.h" #include "NetworkIOMeter.h" #include "ProcessLocksScreen.h" #include "SignalsPanel.h" @@ -81,11 +82,11 @@ bool Platform_getNetworkIO(NetworkIOData* data); void Platform_getBattery(double* percent, ACPresence* isOnAC); static inline void Platform_getHostname(char* buffer, size_t size) { - Generic_Hostname(buffer, size); + Generic_hostname(buffer, size); } static inline void Platform_getRelease(char** string) { - *string = Generic_OSRelease(); + *string = Generic_uname(); } #endif