#include <sstream>
#include <fstream>
+#include "pbd/error.h"
+#include "pbd/compose.h"
+
#include "gtkmm2ext/cursors.h"
+#include "i18n.h"
+
using namespace Gtkmm2ext;
CursorInfo::Infos CursorInfo::infos;
std::string name;
int x;
int y;
+ bool parse_ok;
+ int line_number = 1;
do {
- s << infofile;
+ parse_ok = false;
+ infofile >> name;
if (!infofile) {
+ /* failing here is OK ... EOF */
+ parse_ok = true;
break;
}
- s >> name;
- s >> x;
- s >> y;
- if (!s) {
+ infofile >> x;
+ if (!infofile) {
break;
}
-
- CursorInfo* ci = new CursorInfo (name, x, y);
- infos[name] = ci;
+ infofile >> y;
+ if (!infofile) {
+ break;
+ }
+
+ parse_ok = true;
+ line_number++;
+
+ infos[name] = new CursorInfo (name, x, y);
} while (true);
+ if (!parse_ok) {
+ PBD::error << string_compose (_("cursor hotspots info file %1 has an error on line %2"), path, line_number) << endmsg;
+ infos.clear ();
+ return -1;
+ }
+
return 0;
}