瀏覽代碼

[4.0.x] 修复在fcntl.h中两种不同的宏编码方式导致的bug

Meco Man 3 年之前
父節點
當前提交
afd0f75cff
共有 2 個文件被更改,包括 30 次插入4 次删除
  1. 7 4
      components/libc/compilers/common/nogcc/fcntl.h
  2. 23 0
      components/libc/compilers/gcc/newlib/fcntl.h

+ 7 - 4
components/libc/compilers/common/fcntl.h → components/libc/compilers/common/nogcc/fcntl.h

@@ -12,10 +12,9 @@
 
 #include <sys/types.h>
 
-#define O_RDONLY    0x0000      /* open for reading only */
-#define O_WRONLY    0x0001      /* open for writing only */
-#define O_RDWR      0x0002      /* open for reading and writing */
-#define O_ACCMODE   0x0003      /* mask for above modes */
+#define O_RDONLY         00
+#define O_WRONLY         01
+#define O_RDWR           02
 
 #define O_CREAT        0100
 #define O_EXCL         0200
@@ -30,6 +29,7 @@
 #define O_DIRECTORY 0200000
 #define O_NOFOLLOW  0400000
 #define O_CLOEXEC  02000000
+
 #define O_ASYNC      020000
 #define O_DIRECT     040000
 #define O_LARGEFILE 0100000
@@ -37,9 +37,12 @@
 #define O_PATH    010000000
 #define O_TMPFILE 020200000
 #define O_NDELAY O_NONBLOCK
+
 #define O_SEARCH  O_PATH
 #define O_EXEC    O_PATH
 
+#define O_ACCMODE (03|O_SEARCH)
+
 #define F_DUPFD  0
 #define F_GETFD  1
 #define F_SETFD  2

+ 23 - 0
components/libc/compilers/gcc/newlib/fcntl.h

@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-09-02     Meco Man     First version
+ */
+#ifndef __FCNTL_H__
+#define __FCNTL_H__
+
+#include <sys/_default_fcntl.h>
+
+#ifndef O_DIRECTORY
+#define O_DIRECTORY 0x200000
+#endif
+
+#ifndef O_BINARY
+#define O_BINARY 0x10000
+#endif
+
+#endif