Blob Blame History Raw
From 2f16822b9487a951ac898fd6703a7f8c7cd4ce06 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@hadrons.org>
Date: Sat, 15 Nov 2014 11:59:37 +0100
Subject: [PATCH] Do not assume fixed line lengths for /proc/acpi/wakeup file

The lines in that file might be equal or longer than 40 characters, which
means that the getline() call will truncate them, possibly at the wrong
place, and then be unable to proceed, as subsequent calls will get stuck
waiting for input that is not coming.
---
 src/acpitool.cpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/acpitool.cpp b/src/acpitool.cpp
index f3beeca..e85a7c1 100644
--- a/src/acpitool.cpp
+++ b/src/acpitool.cpp
@@ -416,7 +416,8 @@ int Do_Fan_Info(int verbose)
 int Show_WakeUp_Devices(int verbose)
 {
     ifstream file_in;
-    char *filename, str[40];
+    char *filename;
+    string str;
     
     filename = "/proc/acpi/wakeup";
     
@@ -437,14 +438,14 @@ int Show_WakeUp_Devices(int verbose)
     }
     else
     {
-	file_in.getline(str, 40);           // first line are just headers //
+	getline(file_in, str);           // first line are just headers //
 	cout<<"   "<<str<<endl;
 	cout<<"  ---------------------------------------"<<endl;
         int t = 1;
 	while(!file_in.eof())
 	{
-	    file_in.getline(str, 40);
-	    if (strlen(str)!=0)                     // avoid printing last empty line //
+	    getline(file_in, str);
+	    if (str.length()!=0)                     // avoid printing last empty line //
 	    {
 		cout<<"  "<<t<<". "<<str<<endl;
 		t++;
-- 
2.1.3