summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJoão Abecasis <joao@abecasis.name>2009-10-07 10:04:33 +0200
committerJoão Abecasis <joao@abecasis.name>2009-10-07 12:44:42 +0200
commit95ec7681b70933ce61ef198ed60a375b7393a395 (patch)
tree2f539c5a0ac0a3ce176e556f3936eb6f7825a7b8 /tools
parentd8e68a95c43d0eef4ac0ebc31c7dd0e6c487e3b2 (diff)
Check the result of scanf
Fixes a warning with GCC. Reviewed-by: Markus Goetz
Diffstat (limited to 'tools')
-rw-r--r--tools/porting/src/filewriter.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/tools/porting/src/filewriter.cpp b/tools/porting/src/filewriter.cpp
index ee8debb9e2..99bd6e7445 100644
--- a/tools/porting/src/filewriter.cpp
+++ b/tools/porting/src/filewriter.cpp
@@ -44,6 +44,7 @@
#include <QFileInfo>
#include <QDir>
#include <ctype.h>
+#include <errno.h>
QT_BEGIN_NAMESPACE
@@ -106,11 +107,18 @@ FileWriter::WriteResult FileWriter::writeFile(QString filePath, QByteArray conte
char answer = 0;
while (answer != 'y' && answer != 'n' && answer != 'a') {
#if defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400
- scanf_s("%c", &answer);
+ int result = scanf_s("%c", &answer);
#else
- scanf("%c", &answer);
+ int result = scanf("%c", &answer);
#endif
- answer = tolower(answer);
+ if (1 == result)
+ answer = tolower(answer);
+ else if (EOF == result) {
+ if (EINTR == errno || EILSEQ == errno)
+ continue;
+
+ answer = 'n';
+ }
}
if(answer == 'n')