From 3595933d221f0ba836917debc0776b8723972ec9 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 11 Aug 2015 17:40:50 +0300
Subject: [PATCH 1/3] Patch with fixes provided by Debian.

This patch is taken from
ftp://ftp.debian.org/debian/pool/main/a/apmd/apmd_3.2.2-15.debian.tar.xz

Upstream-Status: Inappropriate [upstream is dead]
Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>

---
 Makefile |  2 +-
 apm.c    |  3 ++-
 apm.h    |  9 +++++++++
 apmd.c   | 15 ++++++++-------
 4 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/Makefile b/Makefile
index bf346d9..92fc0fd 100644
--- a/Makefile
+++ b/Makefile
@@ -43,7 +43,7 @@ DESTDIR=
 
 CC=gcc
 CFLAGS=-O -g
-XTRACFLAGS=-Wall -pipe -I. -I/usr/src/linux/include \
+XTRACFLAGS=-Wall -pipe -I. -I/usr/src/linux/include -I/usr/X11R6/include \
 		-I/usr/src/linux-2.2/include -I /usr/src/linux-2.0/include \
 		-DVERSION=\"$(VERSION)\" \
 		-DDEFAULT_PROXY_NAME=\"$(PROXY_DIR)/apmd_proxy\"
diff --git a/apm.c b/apm.c
index b21c057..0359b1c 100644
--- a/apm.c
+++ b/apm.c
@@ -219,12 +219,13 @@ int main(int argc, char **argv)
 		}
 	}
 													    
-
+#if 0
     if (!(i.apm_flags & APM_32_BIT_SUPPORT))
     {
 	fprintf(stderr, "32-bit APM interface not supported\n");
 	exit(1);
     }
+#endif
 
     if (verbose && (i.apm_flags & 0x10))
 	printf("APM BIOS Power Management is currently disabled\n");
diff --git a/apm.h b/apm.h
index fb24dfd..824cc06 100644
--- a/apm.h
+++ b/apm.h
@@ -20,6 +20,13 @@
  * $Id: apm.h,v 1.7 1999/07/05 22:31:11 apenwarr Exp $
  * 
  */
+#ifndef _APM_H
+#define _APM_H 1
+
+#ifndef __KERNEL_STRICT_NAMES
+#define __KERNEL_STRICT_NAMES
+#endif
+
 #include <linux/apm_bios.h>
 #include <sys/types.h>
 
@@ -93,3 +100,5 @@ extern int apm_reject(int fd);
 #else
 #define apm_reject(fd)   (-EINVAL)
 #endif
+
+#endif
diff --git a/apmd.c b/apmd.c
index 49ed3a1..560f536 100644
--- a/apmd.c
+++ b/apmd.c
@@ -343,7 +343,7 @@ static int call_proxy(apm_event_t event)
 		/* parent */
 		int status, retval;
 		ssize_t len;
-		time_t time_limit;
+		time_t countdown;
 
 		if (pid < 0) {
 			/* Couldn't fork */
@@ -356,8 +356,9 @@ static int call_proxy(apm_event_t event)
 		/* Capture the child's output, if any, but only until it terminates */
 		close(fds[1]);
 		fcntl(fds[0], F_SETFL, O_RDONLY|O_NONBLOCK);
-		time_limit = time(0) + proxy_timeout;
+		countdown = proxy_timeout;
 		do {
+			countdown -= 1;
 			while ((len = read(fds[0], line, sizeof(line)-1)) > 0) {
 				line[len] = 0;
 				APMD_SYSLOG(LOG_INFO, "+ %s", line);
@@ -372,16 +373,16 @@ static int call_proxy(apm_event_t event)
 				goto proxy_done;
 			}
 				
-			sleep(1);
+			while (sleep(1) > 0) ;
 		} while (
-			(time(0) < time_limit)
+			(countdown >= 0)
 			|| (proxy_timeout < 0)
 		);
 
 		APMD_SYSLOG(LOG_NOTICE, "Proxy has been running more than %d seconds; killing it", proxy_timeout);
 
 		kill(pid, SIGTERM);
-		time_limit = time(0) + 5;
+		countdown = 5;
 		do {
 			retval = waitpid(pid, &status, WNOHANG);
 			if (retval == pid)
@@ -392,9 +393,9 @@ static int call_proxy(apm_event_t event)
 				goto proxy_done;
 			}
 
-			sleep(1);
+			while (sleep(1) > 0) ;
 
-		} while (time(0) < time_limit);
+		} while (countdown >= 0);
 
 		kill(pid, SIGKILL);
 		status = __W_EXITCODE(0, SIGKILL);
-- 
2.1.4

