8cd89ee
From 2f16822b9487a951ac898fd6703a7f8c7cd4ce06 Mon Sep 17 00:00:00 2001
8cd89ee
From: Guillem Jover <guillem@hadrons.org>
8cd89ee
Date: Sat, 15 Nov 2014 11:59:37 +0100
8cd89ee
Subject: [PATCH] Do not assume fixed line lengths for /proc/acpi/wakeup file
8cd89ee
8cd89ee
The lines in that file might be equal or longer than 40 characters, which
8cd89ee
means that the getline() call will truncate them, possibly at the wrong
8cd89ee
place, and then be unable to proceed, as subsequent calls will get stuck
8cd89ee
waiting for input that is not coming.
8cd89ee
---
8cd89ee
 src/acpitool.cpp | 9 +++++----
8cd89ee
 1 file changed, 5 insertions(+), 4 deletions(-)
8cd89ee
8cd89ee
diff --git a/src/acpitool.cpp b/src/acpitool.cpp
8cd89ee
index f3beeca..e85a7c1 100644
8cd89ee
--- a/src/acpitool.cpp
8cd89ee
+++ b/src/acpitool.cpp
8cd89ee
@@ -416,7 +416,8 @@ int Do_Fan_Info(int verbose)
8cd89ee
 int Show_WakeUp_Devices(int verbose)
8cd89ee
 {
8cd89ee
     ifstream file_in;
8cd89ee
-    char *filename, str[40];
8cd89ee
+    char *filename;
8cd89ee
+    string str;
8cd89ee
     
8cd89ee
     filename = "/proc/acpi/wakeup";
8cd89ee
     
8cd89ee
@@ -437,14 +438,14 @@ int Show_WakeUp_Devices(int verbose)
8cd89ee
     }
8cd89ee
     else
8cd89ee
     {
8cd89ee
-	file_in.getline(str, 40);           // first line are just headers //
8cd89ee
+	getline(file_in, str);           // first line are just headers //
8cd89ee
 	cout<<"   "<
8cd89ee
 	cout<<"  ---------------------------------------"<
8cd89ee
         int t = 1;
8cd89ee
 	while(!file_in.eof())
8cd89ee
 	{
8cd89ee
-	    file_in.getline(str, 40);
8cd89ee
-	    if (strlen(str)!=0)                     // avoid printing last empty line //
8cd89ee
+	    getline(file_in, str);
8cd89ee
+	    if (str.length()!=0)                     // avoid printing last empty line //
8cd89ee
 	    {
8cd89ee
 		cout<<"  "<
8cd89ee
 		t++;
8cd89ee
-- 
8cd89ee
2.1.3
8cd89ee