brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 2b74fad Raw
65 lines · cpp
1// RUN: %check_clang_tidy %s android-cloexec-inotify-init1 %t2 3#define IN_NONBLOCK 14#define __O_CLOEXEC 35#define IN_CLOEXEC __O_CLOEXEC6#define TEMP_FAILURE_RETRY(exp) \7  ({                            \8    int _rc;                    \9    do {                        \10      _rc = (exp);              \11    } while (_rc == -1);        \12  })13 14extern "C" int inotify_init1(int flags);15 16void a() {17  inotify_init1(IN_NONBLOCK);18  // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: 'inotify_init1' should use IN_CLOEXEC where possible [android-cloexec-inotify-init1]19  // CHECK-FIXES: inotify_init1(IN_NONBLOCK | IN_CLOEXEC);20  TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK));21  // CHECK-MESSAGES: :[[@LINE-1]]:47: warning: 'inotify_init1'22  // CHECK-FIXES: TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK | IN_CLOEXEC));23}24 25void f() {26  inotify_init1(0);27  // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: 'inotify_init1'28  // CHECK-FIXES: inotify_init1(IN_CLOEXEC);29  TEMP_FAILURE_RETRY(inotify_init1(0));30  // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: 'inotify_init1'31  // CHECK-FIXES: TEMP_FAILURE_RETRY(inotify_init1(IN_CLOEXEC));32 33  int flag = 1;34  inotify_init1(flag);35  TEMP_FAILURE_RETRY(inotify_init1(flag));36}37 38namespace i {39int inotify_init1(int flags);40 41void d() {42  inotify_init1(IN_NONBLOCK);43  TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK));44}45 46} // namespace i47 48void e() {49  inotify_init1(IN_CLOEXEC);50  TEMP_FAILURE_RETRY(inotify_init1(IN_CLOEXEC));51  inotify_init1(IN_NONBLOCK | IN_CLOEXEC);52  TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK | IN_CLOEXEC));53}54 55class G {56public:57  int inotify_init1(int flags);58  void d() {59    inotify_init1(IN_CLOEXEC);60    TEMP_FAILURE_RETRY(inotify_init1(IN_CLOEXEC));61    inotify_init1(IN_NONBLOCK | IN_CLOEXEC);62    TEMP_FAILURE_RETRY(inotify_init1(IN_NONBLOCK | IN_CLOEXEC));63  }64};65