xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-bsp/apmd/apmd/legacy.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From 3595933d221f0ba836917debc0776b8723972ec9 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 11 Aug 2015 17:40:50 +0300
4Subject: [PATCH 1/3] Patch with fixes provided by Debian.
5
6This patch is taken from
7ftp://ftp.debian.org/debian/pool/main/a/apmd/apmd_3.2.2-15.debian.tar.xz
8
9Upstream-Status: Inappropriate [upstream is dead]
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11
12---
13 Makefile |  2 +-
14 apm.c    |  3 ++-
15 apm.h    |  9 +++++++++
16 apmd.c   | 15 ++++++++-------
17 4 files changed, 20 insertions(+), 9 deletions(-)
18
19diff --git a/Makefile b/Makefile
20index bf346d9..92fc0fd 100644
21--- a/Makefile
22+++ b/Makefile
23@@ -43,7 +43,7 @@ DESTDIR=
24
25 CC=gcc
26 CFLAGS=-O -g
27-XTRACFLAGS=-Wall -pipe -I. -I/usr/src/linux/include \
28+XTRACFLAGS=-Wall -pipe -I. -I/usr/src/linux/include -I/usr/X11R6/include \
29 		-I/usr/src/linux-2.2/include -I /usr/src/linux-2.0/include \
30 		-DVERSION=\"$(VERSION)\" \
31 		-DDEFAULT_PROXY_NAME=\"$(PROXY_DIR)/apmd_proxy\"
32diff --git a/apm.c b/apm.c
33index b21c057..0359b1c 100644
34--- a/apm.c
35+++ b/apm.c
36@@ -219,12 +219,13 @@ int main(int argc, char **argv)
37 		}
38 	}
39
40-
41+#if 0
42     if (!(i.apm_flags & APM_32_BIT_SUPPORT))
43     {
44 	fprintf(stderr, "32-bit APM interface not supported\n");
45 	exit(1);
46     }
47+#endif
48
49     if (verbose && (i.apm_flags & 0x10))
50 	printf("APM BIOS Power Management is currently disabled\n");
51diff --git a/apm.h b/apm.h
52index fb24dfd..824cc06 100644
53--- a/apm.h
54+++ b/apm.h
55@@ -20,6 +20,13 @@
56  * $Id: apm.h,v 1.7 1999/07/05 22:31:11 apenwarr Exp $
57  *
58  */
59+#ifndef _APM_H
60+#define _APM_H 1
61+
62+#ifndef __KERNEL_STRICT_NAMES
63+#define __KERNEL_STRICT_NAMES
64+#endif
65+
66 #include <linux/apm_bios.h>
67 #include <sys/types.h>
68
69@@ -93,3 +100,5 @@ extern int apm_reject(int fd);
70 #else
71 #define apm_reject(fd)   (-EINVAL)
72 #endif
73+
74+#endif
75diff --git a/apmd.c b/apmd.c
76index 49ed3a1..560f536 100644
77--- a/apmd.c
78+++ b/apmd.c
79@@ -343,7 +343,7 @@ static int call_proxy(apm_event_t event)
80 		/* parent */
81 		int status, retval;
82 		ssize_t len;
83-		time_t time_limit;
84+		time_t countdown;
85
86 		if (pid < 0) {
87 			/* Couldn't fork */
88@@ -356,8 +356,9 @@ static int call_proxy(apm_event_t event)
89 		/* Capture the child's output, if any, but only until it terminates */
90 		close(fds[1]);
91 		fcntl(fds[0], F_SETFL, O_RDONLY|O_NONBLOCK);
92-		time_limit = time(0) + proxy_timeout;
93+		countdown = proxy_timeout;
94 		do {
95+			countdown -= 1;
96 			while ((len = read(fds[0], line, sizeof(line)-1)) > 0) {
97 				line[len] = 0;
98 				APMD_SYSLOG(LOG_INFO, "+ %s", line);
99@@ -372,16 +373,16 @@ static int call_proxy(apm_event_t event)
100 				goto proxy_done;
101 			}
102
103-			sleep(1);
104+			while (sleep(1) > 0) ;
105 		} while (
106-			(time(0) < time_limit)
107+			(countdown >= 0)
108 			|| (proxy_timeout < 0)
109 		);
110
111 		APMD_SYSLOG(LOG_NOTICE, "Proxy has been running more than %d seconds; killing it", proxy_timeout);
112
113 		kill(pid, SIGTERM);
114-		time_limit = time(0) + 5;
115+		countdown = 5;
116 		do {
117 			retval = waitpid(pid, &status, WNOHANG);
118 			if (retval == pid)
119@@ -392,9 +393,9 @@ static int call_proxy(apm_event_t event)
120 				goto proxy_done;
121 			}
122
123-			sleep(1);
124+			while (sleep(1) > 0) ;
125
126-		} while (time(0) < time_limit);
127+		} while (countdown >= 0);
128
129 		kill(pid, SIGKILL);
130 		status = __W_EXITCODE(0, SIGKILL);
131--
1322.1.4
133
134