| // RUN: %check_clang_tidy %s android-cloexec-creat %t |
| |
| typedef int mode_t; |
| |
| extern "C" int creat(const char *path, mode_t, ...); |
| extern "C" int create(const char *path, mode_t, ...); |
| |
| void f() { |
| creat("filename", 0); |
| // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: prefer open() to creat() because open() allows O_CLOEXEC [android-cloexec-creat] |
| // CHECK-FIXES: open ("filename", O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0); |
| create("filename", 0); |
| // CHECK-MESSAGES-NOT: warning: |
| mode_t mode = 0755; |
| creat("filename", mode); |
| // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: |
| // CHECK-FIXES: open ("filename", O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, mode); |
| } |
| |
| namespace i { |
| int creat(const char *path, mode_t, ...); |
| void g() { |
| creat("filename", 0); |
| // CHECK-MESSAGES-NOT: warning: |
| } |
| } // namespace i |
| |
| class C { |
| public: |
| int creat(const char *path, mode_t, ...); |
| void h() { |
| creat("filename", 0); |
| // CHECK-MESSAGES-NOT: warning: |
| } |
| }; |