- int result = wmove(w, y, x);
- if (result == OK) {
- result = wgetstr(w, buf);
- if (result == OK) {
+
+ if (::wmove(w, y, x) != ERR) {
+ if (::wgetnstr(w, buf, sizeof(buf)) != ERR) {
+ va_list args;
+ va_start(args, fmt);
+#if USE_STDIO_VSCAN
+ if (::vsscanf(buf, fmt, args) != -1)
+ result = OK;
+#elif USE_STRSTREAM_VSCAN /* powerpc, os390 */
+ strstreambuf ss(buf, sizeof(buf));
+ if (ss.vscan(fmt, args) != -1)
+ result = OK;
+#elif USE_STRSTREAM_VSCAN_CAST /* pre-gcc 3.0 */