From dfd9279f87791e36a5212726781c31fbe7110361 Mon Sep 17 00:00:00 2001
From: Nathan Scott <nathans@redhat.com>
Date: Fri, 10 Jul 2020 10:35:32 +1000
Subject: [PATCH] Resolve complation issues with -fno-common (default from
 gcc-10)

Extends the MakeHeader script to auto-generate correct "extern"
function declarations in some cases that it currently does not.

Related to https://github.com/hishamhm/htop/pull/981

Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
Fetch from: https://github.com/hishamhm/htop/commit/dfd9279f87791e36a5212726781c31fbe7110361.patch
---
 CRT.c                 |  4 ++--
 CRT.h                 | 28 ++++++++++++++--------------
 linux/LinuxProcess.c  |  3 ++-
 linux/LinuxProcess.h  | 19 ++++++++++---------
 scripts/MakeHeader.py |  4 +++-
 5 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/CRT.c b/CRT.c
index ca9a10dd..088cd1a4 100644
--- a/CRT.c
+++ b/CRT.c
@@ -131,9 +131,9 @@ typedef enum ColorElements_ {
    LAST_COLORELEMENT
 } ColorElements;
 
-void CRT_fatalError(const char* note) __attribute__ ((noreturn));
+extern void CRT_fatalError(const char* note) __attribute__ ((noreturn));
 
-void CRT_handleSIGSEGV(int sgn);
+extern void CRT_handleSIGSEGV(int sgn);
 
 #define KEY_ALT(x) (KEY_F(64 - 26) + (x - 'A'))
 
diff --git a/CRT.h b/CRT.h
index 933fe068..bc3fb8b7 100644
--- a/CRT.h
+++ b/CRT.h
@@ -119,9 +119,9 @@ typedef enum ColorElements_ {
    LAST_COLORELEMENT
 } ColorElements;
 
-void CRT_fatalError(const char* note) __attribute__ ((noreturn));
+extern void CRT_fatalError(const char* note) __attribute__ ((noreturn));
 
-void CRT_handleSIGSEGV(int sgn);
+extern void CRT_handleSIGSEGV(int sgn);
 
 #define KEY_ALT(x) (KEY_F(64 - 26) + (x - 'A'))
 
@@ -140,7 +140,7 @@ extern const char **CRT_treeStr;
 
 extern int CRT_delay;
 
-int* CRT_colors;
+extern int* CRT_colors;
 
 extern int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT];
 
@@ -150,21 +150,21 @@ extern int CRT_scrollHAmount;
 
 extern int CRT_scrollWheelVAmount;
 
-char* CRT_termType;
+extern char* CRT_termType;
 
 // TODO move color scheme to Settings, perhaps?
 
 extern int CRT_colorScheme;
 
-void *backtraceArray[128];
+extern void *backtraceArray[128];
 
 #if HAVE_SETUID_ENABLED
 
 #define DIE(msg) do { CRT_done(); fprintf(stderr, msg); exit(1); } while(0)
 
-void CRT_dropPrivileges();
+extern void CRT_dropPrivileges();
 
-void CRT_restorePrivileges();
+extern void CRT_restorePrivileges();
 
 #else
 
@@ -179,18 +179,18 @@ void CRT_restorePrivileges();
 
 // TODO: pass an instance of Settings instead.
 
-void CRT_init(int delay, int colorScheme);
+extern void CRT_init(int delay, int colorScheme);
 
-void CRT_done();
+extern void CRT_done();
 
-void CRT_fatalError(const char* note);
+extern void CRT_fatalError(const char* note);
 
-int CRT_readKey();
+extern int CRT_readKey();
 
-void CRT_disableDelay();
+extern void CRT_disableDelay();
 
-void CRT_enableDelay();
+extern void CRT_enableDelay();
 
-void CRT_setColors(int colorScheme);
+extern void CRT_setColors(int colorScheme);
 
 #endif

diff --git a/linux/LinuxProcess.h b/linux/LinuxProcess.h
index 6ce3037d..586aa717 100644
--- a/linux/LinuxProcess.h
+++ b/linux/LinuxProcess.h
@@ -152,9 +153,9 @@ extern ProcessPidColumn Process_pidColumns[];
 
 extern ProcessClass LinuxProcess_class;
 
-LinuxProcess* LinuxProcess_new(Settings* settings);
+extern LinuxProcess* LinuxProcess_new(Settings* settings);
 
-void Process_delete(Object* cast);
+extern void Process_delete(Object* cast);
 
 /*
 [1] Note that before kernel 2.6.26 a process that has not asked for
@@ -166,19 +167,19 @@ extern io_priority;
 */
 #define LinuxProcess_effectiveIOPriority(p_) (IOPriority_class(p_->ioPriority) == IOPRIO_CLASS_NONE ? IOPriority_tuple(IOPRIO_CLASS_BE, (p_->super.nice + 20) / 5) : p_->ioPriority)
 
-IOPriority LinuxProcess_updateIOPriority(LinuxProcess* this);
+extern IOPriority LinuxProcess_updateIOPriority(LinuxProcess* this);
 
-bool LinuxProcess_setIOPriority(LinuxProcess* this, IOPriority ioprio);
+extern bool LinuxProcess_setIOPriority(LinuxProcess* this, IOPriority ioprio);
 
 #ifdef HAVE_DELAYACCT
-void LinuxProcess_printDelay(float delay_percent, char* buffer, int n);
+extern void LinuxProcess_printDelay(float delay_percent, char* buffer, int n);
 #endif
 
-void LinuxProcess_writeField(Process* this, RichString* str, ProcessField field);
+extern void LinuxProcess_writeField(Process* this, RichString* str, ProcessField field);
 
-long LinuxProcess_compare(const void* v1, const void* v2);
+extern long LinuxProcess_compare(const void* v1, const void* v2);
 
-bool Process_isThread(Process* this);
+extern bool Process_isThread(Process* this);
 
 
 #endif
diff --git a/scripts/MakeHeader.py b/scripts/MakeHeader.py
index 349531b8..3ef34b88 100755
--- a/scripts/MakeHeader.py
+++ b/scripts/MakeHeader.py
@@ -54,8 +54,10 @@
          elif line.startswith("typedef struct"):
             state = SKIP
          elif line[-1] == "{":
-            out.write( line[:-2].replace("inline", "extern") + ";\n" )
+            out.write("extern " + line[:-2].replace("inline ", "") + ";\n")
             state = SKIP
+         elif line[-1] == ";":
+            out.write("extern " + line + "\n")
          else:
             out.write( line + "\n")
          is_blank = False
