brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 4bda70f Raw
69 lines · cpp
1// RUN: %check_clang_tidy %s android-cloexec-pipe2 %t2 3#define O_NONBLOCK 14#define __O_CLOEXEC 35#define O_CLOEXEC __O_CLOEXEC6#define TEMP_FAILURE_RETRY(exp) \7  ({                            \8    int _rc;                    \9    do {                        \10      _rc = (exp);              \11    } while (_rc == -1);        \12  })13#define NULL 014 15extern "C" int pipe2(int pipefd[2], int flags);16 17void 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 27void warningInMacroArugment() {28  int pipefd[2];29  pipe2(pipefd, 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, flag);38  TEMP_FAILURE_RETRY(pipe2(pipefd, flag));39}40 41namespace i {42int pipe2(int pipefd[2], int flags);43 44void noWarning() {45  int pipefd[2];46  pipe2(pipefd, O_NONBLOCK);47  TEMP_FAILURE_RETRY(pipe2(pipefd, O_NONBLOCK));48}49 50} // namespace i51 52void 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 60class G {61public: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