diff --git a/acpid-2.0.28-kacpimon-dynamic-connections.patch b/acpid-2.0.28-kacpimon-dynamic-connections.patch deleted file mode 100644 index b17dcbc..0000000 --- a/acpid-2.0.28-kacpimon-dynamic-connections.patch +++ /dev/null @@ -1,131 +0,0 @@ -diff --git a/kacpimon/connection_list.c b/kacpimon/connection_list.c -index 9b0b0a8..f228186 100644 ---- a/kacpimon/connection_list.c -+++ b/kacpimon/connection_list.c -@@ -22,6 +22,7 @@ - - #include - #include -+#include - - #include "connection_list.h" - -@@ -30,9 +31,9 @@ - /*---------------------------------------------------------------*/ - /* private objects */ - --#define MAX_CONNECTIONS 20 -+static int capacity = 0; - --static struct connection connection_list[MAX_CONNECTIONS]; -+static struct connection *connection_list = NULL; - - static int nconnections = 0; - -@@ -51,9 +52,19 @@ add_connection(struct connection *p) - { - if (nconnections < 0) - return; -- if (nconnections >= MAX_CONNECTIONS) { -- printf("add_connection(): Too many connections.\n"); -- return; -+ -+ /* if the list is full, allocate more space */ -+ if (nconnections >= capacity) { -+ /* no more than 1024 */ -+ if (capacity > 1024) { -+ printf("add_connection(): Too many connections.\n"); -+ return; -+ } -+ -+ /* another 20 */ -+ capacity += 20; -+ connection_list = -+ realloc(connection_list, sizeof(struct connection) * capacity); - } - - if (nconnections == 0) -@@ -70,6 +81,30 @@ add_connection(struct connection *p) - - /*---------------------------------------------------------------*/ - -+void -+delete_all_connections(void) -+{ -+ int i = 0; -+ -+ /* For each connection */ -+ for (i = 0; i <= get_number_of_connections(); ++i) -+ { -+ struct connection *p; -+ -+ p = get_connection(i); -+ -+ /* If this connection is invalid, try the next. */ -+ if (p == 0) -+ continue; -+ -+ close(p -> fd); -+ } -+ free(connection_list); -+ connection_list = NULL; -+} -+ -+/*---------------------------------------------------------------*/ -+ - struct connection * - find_connection(int fd) - { -diff --git a/kacpimon/connection_list.h b/kacpimon/connection_list.h -index 1d037cf..a787637 100644 ---- a/kacpimon/connection_list.h -+++ b/kacpimon/connection_list.h -@@ -56,4 +56,7 @@ extern const fd_set *get_fdset(void); - /* get the highest fd that was added to the list */ - extern int get_highestfd(void); - -+/* delete all connections, closing the fds */ -+extern void delete_all_connections(void); -+ - #endif /* CONNECTION_LIST_H__ */ -diff --git a/kacpimon/kacpimon.c b/kacpimon/kacpimon.c -index 1ddb9aa..253d270 100644 ---- a/kacpimon/kacpimon.c -+++ b/kacpimon/kacpimon.c -@@ -164,27 +164,6 @@ static void monitor(void) - - // --------------------------------------------------------------- - --static void close_all(void) --{ -- int i = 0; -- -- /* For each connection */ -- for (i = 0; i <= get_number_of_connections(); ++i) -- { -- struct connection *p; -- -- p = get_connection(i); -- -- /* If this connection is invalid, try the next. */ -- if (p == 0) -- continue; -- -- close(p -> fd); -- } --} -- --// --------------------------------------------------------------- -- - int main(void) - { - printf("Kernel ACPI Event Monitor...\n"); -@@ -199,7 +178,7 @@ int main(void) - - printf("Closing files...\n"); - -- close_all(); -+ delete_all_connections(); - - printf("Goodbye\n"); - diff --git a/acpid-2.0.32-kacpimon-dynamic-connections.patch b/acpid-2.0.32-kacpimon-dynamic-connections.patch new file mode 100644 index 0000000..2cd2a7c --- /dev/null +++ b/acpid-2.0.32-kacpimon-dynamic-connections.patch @@ -0,0 +1,131 @@ +diff --git a/kacpimon/connection_list.c b/kacpimon/connection_list.c +index 9b0b0a8..f228186 100644 +--- a/kacpimon/connection_list.c ++++ b/kacpimon/connection_list.c +@@ -22,6 +22,7 @@ + + #include + #include ++#include + + #include "connection_list.h" + +@@ -30,9 +31,9 @@ + /*---------------------------------------------------------------*/ + /* private objects */ + +-#define MAX_CONNECTIONS 100 ++static int capacity = 0; + +-static struct connection connection_list[MAX_CONNECTIONS]; ++static struct connection *connection_list = NULL; + + static int nconnections = 0; + +@@ -51,9 +52,19 @@ add_connection(struct connection *p) + { + if (nconnections < 0) + return; +- if (nconnections >= MAX_CONNECTIONS) { +- printf("add_connection(): Too many connections.\n"); +- return; ++ ++ /* if the list is full, allocate more space */ ++ if (nconnections >= capacity) { ++ /* no more than 1024 */ ++ if (capacity > 1024) { ++ printf("add_connection(): Too many connections.\n"); ++ return; ++ } ++ ++ /* another 20 */ ++ capacity += 20; ++ connection_list = ++ realloc(connection_list, sizeof(struct connection) * capacity); + } + + if (nconnections == 0) +@@ -70,6 +81,30 @@ add_connection(struct connection *p) + + /*---------------------------------------------------------------*/ + ++void ++delete_all_connections(void) ++{ ++ int i = 0; ++ ++ /* For each connection */ ++ for (i = 0; i <= get_number_of_connections(); ++i) ++ { ++ struct connection *p; ++ ++ p = get_connection(i); ++ ++ /* If this connection is invalid, try the next. */ ++ if (p == 0) ++ continue; ++ ++ close(p -> fd); ++ } ++ free(connection_list); ++ connection_list = NULL; ++} ++ ++/*---------------------------------------------------------------*/ ++ + struct connection * + find_connection(int fd) + { +diff --git a/kacpimon/connection_list.h b/kacpimon/connection_list.h +index 1d037cf..a787637 100644 +--- a/kacpimon/connection_list.h ++++ b/kacpimon/connection_list.h +@@ -56,4 +56,7 @@ extern const fd_set *get_fdset(void); + /* get the highest fd that was added to the list */ + extern int get_highestfd(void); + ++/* delete all connections, closing the fds */ ++extern void delete_all_connections(void); ++ + #endif /* CONNECTION_LIST_H__ */ +diff --git a/kacpimon/kacpimon.c b/kacpimon/kacpimon.c +index 1ddb9aa..253d270 100644 +--- a/kacpimon/kacpimon.c ++++ b/kacpimon/kacpimon.c +@@ -164,27 +164,6 @@ static void monitor(void) + + // --------------------------------------------------------------- + +-static void close_all(void) +-{ +- int i = 0; +- +- /* For each connection */ +- for (i = 0; i <= get_number_of_connections(); ++i) +- { +- struct connection *p; +- +- p = get_connection(i); +- +- /* If this connection is invalid, try the next. */ +- if (p == 0) +- continue; +- +- close(p -> fd); +- } +-} +- +-// --------------------------------------------------------------- +- + int main(void) + { + printf("Kernel ACPI Event Monitor...\n"); +@@ -199,7 +178,7 @@ int main(void) + + printf("Closing files...\n"); + +- close_all(); ++ delete_all_connections(); + + printf("Goodbye\n"); + diff --git a/acpid.spec b/acpid.spec index 15a2069..ddf45c4 100644 --- a/acpid.spec +++ b/acpid.spec @@ -7,8 +7,8 @@ Summary: ACPI Event Daemon Name: acpid -Version: 2.0.30 -Release: 4%{?dist} +Version: 2.0.32 +Release: 1%{?dist} License: GPLv2+ Source: http://downloads.sourceforge.net/acpid2/%{name}-%{version}.tar.xz Source2: acpid.video.conf @@ -18,7 +18,7 @@ Source5: acpid.service Source6: acpid.sysconfig Source7: acpid.socket # https://sourceforge.net/p/acpid2/tickets/14/ -Patch0: acpid-2.0.28-kacpimon-dynamic-connections.patch +Patch0: acpid-2.0.32-kacpimon-dynamic-connections.patch ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64 URL: http://sourceforge.net/projects/acpid2/ BuildRequires: systemd, gcc @@ -99,6 +99,10 @@ fi /bin/systemctl try-restart acpid.service >/dev/null 2>&1 || : %changelog +* Tue Aug 20 2019 Jaroslav Škarvada - 2.0.32-1 +- New version + Resolves: rhbz#1742776 + * Wed Jul 24 2019 Fedora Release Engineering - 2.0.30-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild