static void display(void) {
+    startTime = OS::GetTime();
     Trace::Call *call;
 
     while ((call = parser.parse_call())) {
     visual = ws->createVisual(double_buffer);
 
     for ( ; i < argc; ++i) {
-        if (parser.open(argv[i])) {
-            startTime = OS::GetTime();
-            display();
-            parser.close();
+        if (!parser.open(argv[i])) {
+            std::cerr << "error: failed to open " << argv[i] << "\n";
+            return 1;
         }
+
+        display();
+
+        parser.close();
     }
 
     return 0;
 
 {
     for (int i = 1; i < argc; ++i) {
         Trace::Parser p;
-        if (p.open(argv[i])) {
-            Trace::Call *call;
-            call = p.parse_call();
-            while (call) {
-                std::cout << *call;
-                delete call;
-                call = p.parse_call();
-            }
+
+        if (!p.open(argv[i])) {
+            std::cerr << "error: failed to open " << argv[i] << "\n";
+            return 1;
+        }
+
+        Trace::Call *call;
+        while ((call = p.parse_call())) {
+            std::cout << *call;
+            delete call;
         }
     }
     return 0;