On (05/21/12 12:20), Chris Ferron wrote:
patch accepted by hand merge from v1.
Thanks
-Chris
Thank you.
-ss
On 05/18/2012 04:18 AM, Sergey Senozhatsky wrote:
>[PATCH] catch fstream exceptions in lib routines (v2)
>
>Catch possible fstream and traits_type exceptions in lib.
>
>V2: Thanks to Peter, he pointed to silly typo I've done in V1.
>
>Reported-and-tested-by: Lekensteyn<lekensteyn(a)gmail.com>
>Signed-off-by: Sergey Senozhatsky<sergey.senozhatsky(a)gmail.com>
>
>---
>
> src/lib.cpp | 54 +++++++++++++++++++++++++++++++++++++++---------------
> 1 file changed, 39 insertions(+), 15 deletions(-)
>
>diff --git a/src/lib.cpp b/src/lib.cpp
>index 53638dd..0c2c1f1 100644
>--- a/src/lib.cpp
>+++ b/src/lib.cpp
>@@ -172,8 +172,13 @@ void write_sysfs(const string&filename, const
string&value)
> file.open(filename.c_str(), ios::out);
> if (!file)
> return;
>- file<< value;
>- file.close();
>+ try
>+ {
>+ file<< value;
>+ file.close();
>+ } catch (std::exception&exc) {
>+ return;
>+ }
> }
>
> int read_sysfs(const string&filename, bool *ok)
>@@ -187,10 +192,17 @@ int read_sysfs(const string&filename, bool *ok)
> *ok = false;
> return 0;
> }
>- file>> i;
>+ try
>+ {
>+ file>> i;
>+ if (ok)
>+ *ok = true;
>+ } catch (std::exception&exc) {
>+ if (ok)
>+ *ok = false;
>+ i = 0;
>+ }
> file.close();
>- if (ok)
>- *ok = true;
> return i;
> }
>
>@@ -203,11 +215,17 @@ string read_sysfs_string(const string&filename)
> file.open(filename.c_str(), ios::in);
> if (!file)
> return "";
>- file.getline(content, 4096);
>- file.close();
>- c = strchr(content, '\n');
>- if (c)
>- *c = 0;
>+ try
>+ {
>+ file.getline(content, 4096);
>+ file.close();
>+ c = strchr(content, '\n');
>+ if (c)
>+ *c = 0;
>+ } catch (std::exception&exc) {
>+ file.close();
>+ return "";
>+ }
> return content;
> }
>
>@@ -224,11 +242,17 @@ string read_sysfs_string(const char *format, const char
*param)
> file.open(filename, ios::in);
> if (!file)
> return "";
>- file.getline(content, 4096);
>- file.close();
>- c = strchr(content, '\n');
>- if (c)
>- *c = 0;
>+ try
>+ {
>+ file.getline(content, 4096);
>+ file.close();
>+ c = strchr(content, '\n');
>+ if (c)
>+ *c = 0;
>+ } catch (std::exception&exc) {
>+ file.close();
>+ return "";
>+ }
> return content;
> }
>
>