Browse Source

fix: beep on Ubuntu (#16357)

beeps on Linux are made by writing BEL to /dev/console,
which requires elevated permissions on Ubuntu. So if
opening /dev/console fails, fall back to /dev/tty.
trop[bot] 6 years ago
parent
commit
e05e18197b
1 changed files with 8 additions and 5 deletions
  1. 8 5
      atom/common/platform_util_linux.cc

+ 8 - 5
atom/common/platform_util_linux.cc

@@ -139,11 +139,14 @@ bool MoveItemToTrash(const base::FilePath& full_path) {
 
 void Beep() {
   // echo '\a' > /dev/console
-  FILE* console = fopen("/dev/console", "r");
-  if (console == NULL)
-    return;
-  fprintf(console, "\a");
-  fclose(console);
+  FILE* fp = fopen("/dev/console", "a");
+  if (fp == nullptr) {
+    fp = fopen("/dev/tty", "a");
+  }
+  if (fp != nullptr) {
+    fprintf(fp, "\a");
+    fclose(fp);
+  }
 }
 
 }  // namespace platform_util