Sfoglia il codice sorgente

!319 为lwp cwd添加可选功能
Merge pull request !319 from lin123/rt-smart

bernard 4 anni fa
parent
commit
3cbd894801
2 ha cambiato i file con 16 aggiunte e 1 eliminazioni
  1. 4 0
      components/dfs/src/dfs.c
  2. 12 1
      components/dfs/src/dfs_posix.c

+ 4 - 0
components/dfs/src/dfs.c

@@ -567,7 +567,11 @@ char *dfs_normalize_path(const char *directory, const char *filename)
 #ifdef DFS_USING_WORKDIR
 #ifdef DFS_USING_WORKDIR
     if (directory == NULL) /* shall use working directory */
     if (directory == NULL) /* shall use working directory */
     {
     {
+#ifdef RT_USING_LWP
         directory = lwp_getcwd();
         directory = lwp_getcwd();
+#else
+        directory = &working_directory[0];
+#endif
     }
     }
 #else
 #else
     if ((directory == NULL) && (filename[0] != '/'))
     if ((directory == NULL) && (filename[0] != '/'))

+ 12 - 1
components/dfs/src/dfs_posix.c

@@ -856,9 +856,12 @@ int chdir(const char *path)
 
 
     /* close directory stream */
     /* close directory stream */
     closedir(d);
     closedir(d);
-
+#ifdef RT_USING_LWP
     /* copy full path to working directory */
     /* copy full path to working directory */
     lwp_setcwd(fullpath);
     lwp_setcwd(fullpath);
+#else
+    rt_strncpy(working_directory, fullpath, DFS_PATH_MAX);
+#endif
     /* release normalize directory path name */
     /* release normalize directory path name */
     rt_free(fullpath);
     rt_free(fullpath);
 
 
@@ -903,7 +906,11 @@ void setcwd(char *buf)
 {
 {
 #ifdef DFS_USING_WORKDIR
 #ifdef DFS_USING_WORKDIR
     dfs_lock();
     dfs_lock();
+#ifdef RT_USING_LWP
     lwp_setcwd(buf);
     lwp_setcwd(buf);
+#else
+    rt_strncpy(working_directory, buf, DFS_PATH_MAX);
+#endif
     dfs_unlock();
     dfs_unlock();
 #else
 #else
     rt_kprintf(NO_WORKING_DIR);
     rt_kprintf(NO_WORKING_DIR);
@@ -927,12 +934,16 @@ char *getcwd(char *buf, size_t size)
     char *dir_buf = RT_NULL;
     char *dir_buf = RT_NULL;
 #ifdef DFS_USING_WORKDIR
 #ifdef DFS_USING_WORKDIR
     dfs_lock();
     dfs_lock();
+#ifdef RT_USING_LWP
     dir_buf = lwp_getcwd();
     dir_buf = lwp_getcwd();
     if(dir_buf[0] != '/')
     if(dir_buf[0] != '/')
     {
     {
         dir_buf = &working_directory[0];
         dir_buf = &working_directory[0];
     }
     }
     rt_strncpy(buf, dir_buf, size);
     rt_strncpy(buf, dir_buf, size);
+#else
+    dir_buf = &working_directory[0];
+#endif
     dfs_unlock();
     dfs_unlock();
 #else
 #else
     rt_kprintf(NO_WORKING_DIR);
     rt_kprintf(NO_WORKING_DIR);