]> git.cworth.org Git - apitrace/blobdiff - cli/cli_dump.cpp
d3dretrace: Use DirectXTex for d3d10 state too.
[apitrace] / cli / cli_dump.cpp
index d6f50141a3ebda2495dc0eacfddd0415bcdfac55..e30f6cc2b49574a00d58a111b38c82b59ca0982f 100644 (file)
@@ -28,6 +28,9 @@
 #include <string.h>
 #include <limits.h> // for CHAR_MAX
 #include <getopt.h>
+#ifndef _WIN32
+#include <unistd.h> // for isatty()
+#endif
 
 #include "cli.hpp"
 #include "cli_pager.hpp"
@@ -35,6 +38,7 @@
 #include "trace_parser.hpp"
 #include "trace_dump.hpp"
 #include "trace_callset.hpp"
+#include "trace_option.hpp"
 
 
 enum ColorOption {
@@ -64,8 +68,9 @@ usage(void)
         "    --color[=WHEN]\n"
         "    --colour[=WHEN]      colored syntax highlighting\n"
         "                         WHEN is 'auto', 'always', or 'never'\n"
-        "    --arg-names[=BOOL]   dump argument names [default: yes]\n"
         "    --thread-ids=[=BOOL] dump thread ids [default: no]\n"
+        "    --call-nos[=BOOL]    dump call numbers[default: yes]\n"
+        "    --arg-names[=BOOL]   dump argument names [default: yes]\n"
         "\n"
     ;
 }
@@ -73,8 +78,9 @@ usage(void)
 enum {
        CALLS_OPT = CHAR_MAX + 1,
        COLOR_OPT,
-    ARG_NAMES_OPT,
     THREAD_IDS_OPT,
+    CALL_NOS_OPT,
+    ARG_NAMES_OPT,
 };
 
 const static char *
@@ -87,30 +93,12 @@ longOptions[] = {
     {"calls", required_argument, 0, CALLS_OPT},
     {"colour", optional_argument, 0, COLOR_OPT},
     {"color", optional_argument, 0, COLOR_OPT},
-    {"arg-names", optional_argument, 0, ARG_NAMES_OPT},
     {"thread-ids", optional_argument, 0, THREAD_IDS_OPT},
+    {"call-nos", optional_argument, 0, CALL_NOS_OPT},
+    {"arg-names", optional_argument, 0, ARG_NAMES_OPT},
     {0, 0, 0, 0}
 };
 
-static bool
-boolOption(const char *option, bool default_ = true) {
-    if (!option) {
-        return default_;
-    }
-    if (strcmp(option, "0") == 0 ||
-        strcmp(option, "no") == 0 ||
-        strcmp(option, "false") == 0) {
-        return false;
-    }
-    if (strcmp(option, "0") == 0 ||
-        strcmp(option, "yes") == 0 ||
-        strcmp(option, "true") == 0) {
-        return true;
-    }
-    std::cerr << "error: unexpected bool " << option << "\n";
-    return default_;
-}
-
 static int
 command(int argc, char *argv[])
 {
@@ -142,16 +130,23 @@ command(int argc, char *argv[])
                 return 1;
             }
             break;
+        case THREAD_IDS_OPT:
+            dumpThreadIds = trace::boolOption(optarg);
+            break;
+        case CALL_NOS_OPT:
+            if (trace::boolOption(optarg)) {
+                dumpFlags &= ~trace::DUMP_FLAG_NO_CALL_NO;
+            } else {
+                dumpFlags |= trace::DUMP_FLAG_NO_CALL_NO;
+            }
+            break;
         case ARG_NAMES_OPT:
-            if (boolOption(optarg)) {
+            if (trace::boolOption(optarg)) {
                 dumpFlags &= ~trace::DUMP_FLAG_NO_ARG_NAMES;
             } else {
                 dumpFlags |= trace::DUMP_FLAG_NO_ARG_NAMES;
             }
             break;
-        case THREAD_IDS_OPT:
-            dumpThreadIds = boolOption(optarg);
-            break;
         default:
             std::cerr << "error: unexpected option `" << opt << "`\n";
             usage();
@@ -176,7 +171,6 @@ command(int argc, char *argv[])
         trace::Parser p;
 
         if (!p.open(argv[i])) {
-            std::cerr << "error: failed to open " << argv[i] << "\n";
             return 1;
         }