1*89a1d03eSRichard // RUN: %check_clang_tidy %s android-cloexec-accept %t
2*89a1d03eSRichard
3*89a1d03eSRichard struct sockaddr {};
4*89a1d03eSRichard typedef int socklen_t;
5*89a1d03eSRichard #define NULL 0
6*89a1d03eSRichard
7*89a1d03eSRichard extern "C" int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
8*89a1d03eSRichard
f()9*89a1d03eSRichard void f() {
10*89a1d03eSRichard accept(0, NULL, NULL);
11*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: prefer accept4() to accept() because accept4() allows SOCK_CLOEXEC [android-cloexec-accept]
12*89a1d03eSRichard // CHECK-FIXES: accept4(0, NULL, NULL, SOCK_CLOEXEC);
13*89a1d03eSRichard }
14*89a1d03eSRichard
15*89a1d03eSRichard namespace i {
16*89a1d03eSRichard int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
g()17*89a1d03eSRichard void g() {
18*89a1d03eSRichard accept(0, NULL, NULL);
19*89a1d03eSRichard }
20*89a1d03eSRichard } // namespace i
21*89a1d03eSRichard
22*89a1d03eSRichard class C {
23*89a1d03eSRichard public:
24*89a1d03eSRichard int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
h()25*89a1d03eSRichard void h() {
26*89a1d03eSRichard accept(0, NULL, NULL);
27*89a1d03eSRichard }
28*89a1d03eSRichard };
29