Split change_flags into set and clear. 78/125978/5
authorMichal Bloch <m.bloch@samsung.com>
Wed, 12 Apr 2017 19:44:57 +0000 (21:44 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Mon, 24 Apr 2017 16:38:06 +0000 (16:38 +0000)
Change-Id: I02878434720f92f83a5c3682b305654e60ca7be1
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/logger/logger.c

index 757f79a..06fc65e 100644 (file)
@@ -192,7 +192,8 @@ static void reader_free(struct reader* reader);
 static void logger_free(struct logger* l);
 static int parse_args(int argc, char ** argv, struct buffering * b);
 static int socket_initialize(struct sock_data * sock, struct log_buffer * buffer, int type, struct socket_config_data * data, int epoll_fd);
-static void fd_change_flag(int fd, int flag, int set);
+static void fd_set_flags(int fd, int mask);
+static void fd_clear_flags(int fd, int mask);
 static void help();
 
 /** signals handled to flush all buffered logs before exit */
@@ -533,7 +534,7 @@ static int create_syslog_writer(struct writer ** writer, struct log_buffer *log_
                free(w);
                return -errno;
        }
-       fd_change_flag(w->working_fd, O_NONBLOCK, 1);
+       fd_set_flags(w->working_fd, O_NONBLOCK);
 
        w->service_writer = service_writer_syslog;
        w->buf_ptr = log_buffer;
@@ -1265,22 +1266,25 @@ cleanup:
 }
 
 /**
- * @brief Change FD flag
- * @details Set or clear a file descriptor's flag
- * @param[in] fd The FD whose flags to change
- * @param[in] flag The flag to change
- * @param[in] set Whether to set or to clear
+ * @brief Set FD flags
+ * @details Set a file descriptor's flags
+ * @param[in] fd The FD whose flags to set
+ * @param[in] mask The flags to set
  */
-static void fd_change_flag(int fd, int flag, int set)
+static void fd_set_flags(int fd, int mask)
 {
-       int flags = fcntl(fd, F_GETFL);
-
-       if (set)
-               flags |= flag;
-       else
-               flags &= ~flag;
+       fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | mask);
+}
 
-       fcntl(fd, F_SETFL, flags);
+/**
+ * @brief Clear FD flags
+ * @details Clear a file descriptor's flags
+ * @param[in] fd The FD whose flags to clear
+ * @param[in] mask The flags to clear
+ */
+static void fd_clear_flags(int fd, int mask)
+{
+       fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~mask);
 }
 
 /**
@@ -1379,7 +1383,7 @@ static int service_writer_handle_req_pipe(struct logger* server, struct writer*
 
        wr->event.data.ptr = wr;
        wr->event.events = EPOLLIN;
-       fd_change_flag(pipe_fd[1], O_NONBLOCK, 0);
+       fd_clear_flags(pipe_fd[1], O_NONBLOCK);
        fcntl(pipe_fd[1], F_SETPIPE_SZ, PIPE_REQUESTED_SIZE);
 
        r = add_fd_loop(server->epollfd, pipe_fd[0], &wr->event);