[vfs] localizable fsnotifier messages
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Thu, 27 Aug 2020 16:50:39 +0000 (18:50 +0200)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Thu, 27 Aug 2020 16:50:39 +0000 (16:50 +0000)
GitOrigin-RevId: 4757b274e7b87548d6110b0372b2c64d8fae6db5

bin/linux/fsnotifier
bin/linux/fsnotifier64
native/fsNotifier/linux/fsnotifier.h
native/fsNotifier/linux/inotify.c
native/fsNotifier/linux/main.c
platform/platform-api/resources/messages/ApplicationBundle.properties
platform/platform-api/src/com/intellij/openapi/application/ApplicationBundle.java
platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/NativeFileWatcherImpl.java

index a3a8c2f746a09ccd23f50c8ae5ea904378a7d36e..9ec6dc70e1151dc9291a79a8dfc6540713290ac5 100755 (executable)
Binary files a/bin/linux/fsnotifier and b/bin/linux/fsnotifier differ
index 3d0105f6f2d2b4af825dc3c0b8d4d3d5a774a737..19b5270363d3124921b21e23d41f3927a65b3247 100755 (executable)
Binary files a/bin/linux/fsnotifier64 and b/bin/linux/fsnotifier64 differ
index 87eab9fb5909c7c05684a08134885fffcf1b353a..32112852f86ded2e932c0af2b91de91a40982282 100644 (file)
@@ -2,21 +2,14 @@
 
 #pragma once
 
-#define VERSION "20191018.1702"
+#define VERSION "20200827.1844"
 
 #include <stdbool.h>
 #include <stdio.h>
 
 
-// messaging
-typedef enum {
-  MSG_INSTANCE_LIMIT, MSG_WATCH_LIMIT
-} MSG;
-
-void message(MSG id);
-
-
-// logging
+// messaging and logging
+void message(const char *text);
 void userlog(int priority, const char* format, ...);
 
 #define CHECK_NULL(p, r) if (p == NULL) { userlog(LOG_ERR, "out of memory"); return r; }
index e2acf16f677626f03198a5299eb319fd4509bd51..9b15393faaa40066d26ffc7ba904b3ffd99a7dc9 100644 (file)
@@ -62,7 +62,7 @@ bool init_inotify() {
     int e = errno;
     userlog(LOG_ERR, "inotify_init: %s", strerror(e));
     if (e == EMFILE) {
-      message(MSG_INSTANCE_LIMIT);
+      message("inotify.instance.limit");
     }
     return false;
   }
@@ -189,7 +189,7 @@ static int add_watch(int path_len, watch_node* parent) {
 static void watch_limit_reached() {
   if (!limit_reached) {
     limit_reached = true;
-    message(MSG_WATCH_LIMIT);
+    message("inotify.watch.limit");
   }
 }
 
index f3d204693563ade7b72b4b80a036efd96f93b1e2..faa6b6ae8424737145a013ea2ec8998ad454ef5c 100644 (file)
 #define HELP_MSG \
     "Try 'fsnotifier --help' for more information.\n"
 
-#define INSTANCE_LIMIT_TEXT \
-    "The <b>inotify</b>(7) instances limit reached. " \
-    "<a href=\"https://confluence.jetbrains.com/display/IDEADEV/Inotify+Instances+Limit\">More details.</a>\n"
-
-#define WATCH_LIMIT_TEXT \
-    "The current <b>inotify</b>(7) watch limit is too low. " \
-    "<a href=\"https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit\">More details.</a>\n"
-
 #define MISSING_ROOT_TIMEOUT 1
 
 #define UNFLATTEN(root) (root[0] == '|' ? root + 1 : root)
@@ -152,16 +144,8 @@ static void init_log() {
 }
 
 
-void message(MSG id) {
-  if (id == MSG_INSTANCE_LIMIT) {
-    output("MESSAGE\n" INSTANCE_LIMIT_TEXT);
-  }
-  else if (id == MSG_WATCH_LIMIT) {
-    output("MESSAGE\n" WATCH_LIMIT_TEXT);
-  }
-  else {
-    userlog(LOG_ERR, "unknown message: %d", id);
-  }
+void message(const char *text) {
+  output("MESSAGE\n%s\n", text);
 }
 
 
index 4f51b03e1c8076f1f88a135505af4e4fd75677fa..1e37cd2c39640252d8b818024a0c277cf295fa58 100644 (file)
@@ -640,6 +640,12 @@ watcher.exe.not.exe=Native file watcher is not executable: <a href="{0}">{0}</a>
 watcher.failed.to.start=File watcher failed to start
 watcher.gave.up=File watcher gave up to operate
 watcher.non.watchable.project=Project files cannot be watched (are they under network mount?)
+# suppress inspection "UnusedProperty"
+inotify.instance.limit=The <b>inotify</b>(7) instances limit reached. \
+  <a href="https://confluence.jetbrains.com/display/IDEADEV/Inotify+Instances+Limit">More details.</a>
+# suppress inspection "UnusedProperty"
+inotify.watch.limit=The current <b>inotify</b>(7) watch limit is too low. \
+  <a href="https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit">More details.</a>
 
 fs.case.sensitivity.mismatch.title=Filesystem Case-Sensitivity Mismatch
 fs.case.sensitivity.mismatch.message=\
@@ -967,4 +973,4 @@ custom.option.description=Set custom page size
 intentions.are.not.available.message=Intentions are not available while indices are updating.
 settings.code.style.formatter.control.do.not.format.title=Do not format:
 settings.code.style.formatter.control.tab.title=Formatter Control
-settings.code.style.general.tab.title=General
\ No newline at end of file
+settings.code.style.general.tab.title=General
index be9629becab4d223b96b79643aa8fd27c48b0d27..4a52ba065da273f6cf8e90695fee16845d13ff97 100644 (file)
@@ -2,10 +2,7 @@
 package com.intellij.openapi.application;
 
 import com.intellij.DynamicBundle;
-import org.jetbrains.annotations.Nls;
-import org.jetbrains.annotations.NonNls;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.PropertyKey;
+import org.jetbrains.annotations.*;
 
 import java.util.function.Supplier;
 
@@ -13,20 +10,18 @@ import java.util.function.Supplier;
  * Provides access to localized properties of the IntelliJ Platform.
  */
 public final class ApplicationBundle extends DynamicBundle {
-  @NonNls public static final String BUNDLE = "messages.ApplicationBundle";
-  private static final ApplicationBundle INSTANCE = new ApplicationBundle();
+  public static final String BUNDLE = "messages.ApplicationBundle";
+  public static final ApplicationBundle INSTANCE = new ApplicationBundle();
 
   private ApplicationBundle() {
     super(BUNDLE);
   }
 
-  @NotNull
-  public static @Nls String message(@NotNull @PropertyKey(resourceBundle = BUNDLE) String key, Object @NotNull ... params) {
+  public static @NotNull @Nls String message(@NotNull @PropertyKey(resourceBundle = BUNDLE) String key, Object @NotNull ... params) {
     return INSTANCE.getMessage(key, params);
   }
 
-  @NotNull
-  public static Supplier<@Nls String> messagePointer(@NotNull @PropertyKey(resourceBundle = BUNDLE) String key, Object @NotNull ... params) {
+  public static @NotNull Supplier<@Nls String> messagePointer(@NotNull @PropertyKey(resourceBundle = BUNDLE) String key, Object @NotNull ... params) {
     return INSTANCE.getLazyMessage(key, params);
   }
 }
index e8ef18a0b85bdc411f3cd329b8829f640660251e..8b3735772530737c15591e5c8612b4cc719c85dd 100644 (file)
@@ -364,8 +364,9 @@ public class NativeFileWatcherImpl extends PluggableFileWatcher {
         }
       }
       else if (myLastOp == WatcherOp.MESSAGE) {
-        LOG.warn(line);
-        notifyOnFailure(line, NotificationListener.URL_OPENING_LISTENER);
+        String localized = Objects.requireNonNullElse(ApplicationBundle.INSTANCE.messageOrNull(line), line); //NON-NLS
+        LOG.warn(localized);
+        notifyOnFailure(localized, NotificationListener.URL_OPENING_LISTENER);
         myLastOp = null;
       }
       else if (myLastOp == WatcherOp.REMAP || myLastOp == WatcherOp.UNWATCHEABLE) {
@@ -494,4 +495,4 @@ public class NativeFileWatcherImpl extends PluggableFileWatcher {
       }
     }
   }
-}
\ No newline at end of file
+}