diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/android-cloexec-inotify-init1.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/android-cloexec-inotify-init1.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/android-cloexec-inotify-init1.cpp b/clang-tools-extra/test/clang-tidy/android-cloexec-inotify-init1.cpp new file mode 100644 index 00000000000..2b74fad1359 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/android-cloexec-inotify-init1.cpp @@ -0,0 +1,64 @@ +// RUN: %check_clang_tidy %s android-cloexec-inotify-init1 %t + +#define IN_NONBLOCK 1 +#define __O_CLOEXEC 3 +#define IN_CLOEXEC __O_CLOEXEC +#define TEMP_FAILURE_RETRY(exp) \ + ({ \ + int _rc; \ + do { \ + _rc = (exp); \ + } while (_rc == -1); \ + }) + +extern "C" int inotify_init1(int flags); + +void a() { + inotify_init1(IN_NONBLOCK); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: 'inotify_init1' should use IN_CLOEXEC where possible [android-cloexec-inotify-init1] + // CHECK-FIXES: inotify_init1(IN_NONBLOCK | IN_CLOEXEC); + TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK)); + // CHECK-MESSAGES: :[[@LINE-1]]:47: warning: 'inotify_init1' + // CHECK-FIXES: TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK | IN_CLOEXEC)); +} + +void f() { + inotify_init1(0); + // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: 'inotify_init1' + // CHECK-FIXES: inotify_init1(IN_CLOEXEC); + TEMP_FAILURE_RETRY(inotify_init1(0)); + // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: 'inotify_init1' + // CHECK-FIXES: TEMP_FAILURE_RETRY(inotify_init1(IN_CLOEXEC)); + + int flag = 1; + inotify_init1(flag); + TEMP_FAILURE_RETRY(inotify_init1(flag)); +} + +namespace i { +int inotify_init1(int flags); + +void d() { + inotify_init1(IN_NONBLOCK); + TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK)); +} + +} // namespace i + +void e() { + inotify_init1(IN_CLOEXEC); + TEMP_FAILURE_RETRY(inotify_init1(IN_CLOEXEC)); + inotify_init1(IN_NONBLOCK | IN_CLOEXEC); + TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK | IN_CLOEXEC)); +} + +class G { +public: + int inotify_init1(int flags); + void d() { + inotify_init1(IN_CLOEXEC); + TEMP_FAILURE_RETRY(inotify_init1(IN_CLOEXEC)); + inotify_init1(IN_NONBLOCK | IN_CLOEXEC); + TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK | IN_CLOEXEC)); + } +}; |