1 | // RUN: %check_clang_tidy %s android-cloexec-pipe2 %t |
2 | |
3 | #define O_NONBLOCK 1 |
4 | #define __O_CLOEXEC 3 |
5 | #define O_CLOEXEC __O_CLOEXEC |
6 | #define TEMP_FAILURE_RETRY(exp) \ |
7 | ({ \ |
8 | int _rc; \ |
9 | do { \ |
10 | _rc = (exp); \ |
11 | } while (_rc == -1); \ |
12 | }) |
13 | #define NULL 0 |
14 | |
15 | extern "C" int pipe2(int pipefd[2], int flags); |
16 | |
17 | void warning() { |
18 | int pipefd[2]; |
19 | pipe2(pipefd, O_NONBLOCK); |
20 | // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: 'pipe2' |
21 | // CHECK-FIXES: pipe2(pipefd, O_NONBLOCK | O_CLOEXEC); |
22 | TEMP_FAILURE_RETRY(pipe2(pipefd, O_NONBLOCK)); |
23 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: 'pipe2' |
24 | // CHECK-FIXES: TEMP_FAILURE_RETRY(pipe2(pipefd, O_NONBLOCK | O_CLOEXEC)); |
25 | } |
26 | |
27 | void warningInMacroArugment() { |
28 | int pipefd[2]; |
29 | pipe2(pipefd, flags: 3); |
30 | // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: 'pipe2' |
31 | // CHECK-FIXES: pipe2(pipefd, 3 | O_CLOEXEC); |
32 | TEMP_FAILURE_RETRY(pipe2(pipefd, 3)); |
33 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: 'pipe2' |
34 | // CHECK-FIXES: TEMP_FAILURE_RETRY(pipe2(pipefd, 3 | O_CLOEXEC)); |
35 | |
36 | int flag = O_NONBLOCK; |
37 | pipe2(pipefd, flags: flag); |
38 | TEMP_FAILURE_RETRY(pipe2(pipefd, flag)); |
39 | } |
40 | |
41 | namespace i { |
42 | int pipe2(int pipefd[2], int flags); |
43 | |
44 | void noWarning() { |
45 | int pipefd[2]; |
46 | pipe2(pipefd, O_NONBLOCK); |
47 | TEMP_FAILURE_RETRY(pipe2(pipefd, O_NONBLOCK)); |
48 | } |
49 | |
50 | } // namespace i |
51 | |
52 | void noWarning() { |
53 | int pipefd[2]; |
54 | pipe2(pipefd, O_CLOEXEC); |
55 | TEMP_FAILURE_RETRY(pipe2(pipefd, O_CLOEXEC)); |
56 | pipe2(pipefd, O_NONBLOCK | O_CLOEXEC); |
57 | TEMP_FAILURE_RETRY(pipe2(pipefd, O_NONBLOCK | O_CLOEXEC)); |
58 | } |
59 | |
60 | class G { |
61 | public: |
62 | int pipe2(int pipefd[2], int flags); |
63 | void noWarning() { |
64 | int pipefd[2]; |
65 | pipe2(pipefd, O_NONBLOCK); |
66 | TEMP_FAILURE_RETRY(pipe2(pipefd, O_NONBLOCK)); |
67 | } |
68 | }; |
69 | |