forked from OSchip/llvm-project
36 lines
959 B
C++
36 lines
959 B
C++
// 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:
|
|
}
|
|
};
|