1*89a1d03eSRichard // RUN: %check_clang_tidy %s android-cloexec-pipe %t 2*89a1d03eSRichard 3*89a1d03eSRichard extern "C" int pipe(int pipefd[2]); 4*89a1d03eSRichard warning()5*89a1d03eSRichardvoid warning() { 6*89a1d03eSRichard int pipefd[2]; 7*89a1d03eSRichard pipe(pipefd); 8*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: prefer pipe2() with O_CLOEXEC to avoid leaking file descriptors to child processes [android-cloexec-pipe] 9*89a1d03eSRichard // CHECK-FIXES: pipe2(pipefd, O_CLOEXEC); 10*89a1d03eSRichard } 11*89a1d03eSRichard 12*89a1d03eSRichard namespace i { 13*89a1d03eSRichard int pipe(int pipefd[2]); noWarningInNamespace()14*89a1d03eSRichardvoid noWarningInNamespace() { 15*89a1d03eSRichard int pipefd[2]; 16*89a1d03eSRichard pipe(pipefd); 17*89a1d03eSRichard } 18*89a1d03eSRichard } // namespace i 19*89a1d03eSRichard 20*89a1d03eSRichard class C { 21*89a1d03eSRichard public: 22*89a1d03eSRichard int pipe(int pipefd[2]); noWarningForMemberFunction()23*89a1d03eSRichard void noWarningForMemberFunction() { 24*89a1d03eSRichard int pipefd[2]; 25*89a1d03eSRichard pipe(pipefd); 26*89a1d03eSRichard } 27*89a1d03eSRichard }; 28