增加判断文件是否存在的通用函数
authorCaisking <Casiking@zhihuishixun.com>
Tue, 20 May 2025 12:44:21 +0000 (20:44 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Tue, 20 May 2025 12:44:21 +0000 (20:44 +0800)
code/sdk/zhihui/utils/custom_utils.c
code/sdk/zhihui/utils/custom_utils.h

index f4cee04..abf6b47 100644 (file)
 #include "mag_hal.h"
 #endif
 
+#include <sys/stat.h>
+
 errcode_t uapi_create_osThread_custom(app_task_definition_t *task_cfg)
 {
     if (task_cfg==NULL)
@@ -1319,6 +1321,42 @@ void ScreenAlwaysOnCtr(uint8_t turnOnFlag)
     }
 }
 
+
+bool uapi_create_dir(const char *path)
+{
+    if (path == NULL || strlen(path) == 0) {
+        PRINT("[DirCreate] ERROR: Invalid path (NULL or empty)\n");
+        return false;
+    }
+    
+    PRINT("[DirCreate] Checking directory: %s\n", path);
+
+    struct stat info;
+    // 检查目录是否存在
+    if (stat(path, &info) != 0) {
+        PRINT("[DirCreate] Directory does not exist, creating...\n");
+        
+        // 目录不存在,尝试创建
+        if (mkdir(path, 0755) != 0) {
+            // 创建失败,打印错误信息
+            PRINT("[DirCreate] ERROR: Failed to create directory %s (errno=%d)\n", path, errno);
+            return false;
+        }
+        
+        PRINT("[DirCreate] SUCCESS: Directory created: %s\n", path);
+        return true;
+    }
+    
+    // 检查是否为目录
+    if (info.st_mode & S_IFDIR) {
+        PRINT("[DirCreate] Directory already exists: %s\n", path);
+        return true;
+    }
+    
+    return false;
+}
+
+
 // Is the screen always on
 bool mmi_screen_always_on_flag_get(void)
 {
index f1bf6ef..f355bec 100644 (file)
@@ -163,6 +163,9 @@ errcode_t uapi_get_fw_version(uint8_t *_major, uint8_t *_mid,uint8_t *_minor);
  * @}
  */
 
+ //判断文件夹是否存在
+ bool uapi_create_dir(const char *path);
+
 // 使能翻腕亮灭屏功能接口
 // cmd: 1-active;other-deactive
 void uapi_take_to_wake(int cmd);