Add a mode to ensure a server is not already running.

BUG=128770
TEST=local positive, negative, and no argument.

Review URL: https://chromiumcodereview.appspot.com/10409035

Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 14240b3aaf02da328ecb70031ab3f3c9fc2eee43
diff --git a/xdisplaycheck.cc b/xdisplaycheck.cc
index 6c4c677..7bc99c5 100644
--- a/xdisplaycheck.cc
+++ b/xdisplaycheck.cc
@@ -12,6 +12,7 @@
 
 #include <errno.h>
 #include <stdio.h>
+#include <string.h>
 #include <time.h>
 #include <X11/Xlib.h>
 
@@ -34,8 +35,19 @@
 }
 
 int main(int argc, char* argv[]) {
-  int kNumTries = 78;  // 78*77/2 * 10 = 30s of waiting
   Display* display = NULL;
+  if (argv[1] && strcmp(argv[1], "--noserver") == 0) {
+    display = XOpenDisplay(NULL);
+    if (display) {
+      fprintf(stderr, "Found unexpected connectable display %s\n",
+              XDisplayName(NULL));
+    }
+    // Return success when we got an unexpected display so that the code
+    // without the --noserver is the same, but slow, rather than inverted.
+    return !display;
+  }
+
+  int kNumTries = 78;  // 78*77/2 * 10 = 30s of waiting
   int tries;
   for (tries = 0; tries < kNumTries; ++tries) {
     display = XOpenDisplay(NULL);