zoukankan      html  css  js  c++  java
  • FATFS 初学之 f_chmod/ f_utime

    f_chmod:

     1 /*-----------------------------------------------------------------------*/
     2 /* Change Attribute                                                      */
     3 /*-----------------------------------------------------------------------*/
     4 
     5 FRESULT f_chmod (
     6     const TCHAR *path,    /* Pointer to the file path */
     7     BYTE value,            /* Attribute bits */
     8     BYTE mask            /* Attribute mask to change */
     9 )
    10 {
    11     FRESULT res;
    12     DIR dj;
    13     BYTE *dir;
    14     DEF_NAMEBUF;
    15 
    16 
    17     res = chk_mounted(&path, &dj.fs, 1);
    18     if (res == FR_OK) {
    19         INIT_BUF(dj);
    20         res = follow_path(&dj, path);        /* Follow the file path */
    21         FREE_BUF();
    22         if (_FS_RPATH && res == FR_OK && (dj.fn[NS] & NS_DOT))
    23             res = FR_INVALID_NAME;
    24         if (res == FR_OK) {
    25             dir = dj.dir;
    26             if (!dir) {                        /* Is it a root directory? */
    27                 res = FR_INVALID_NAME;
    28             } else {                        /* File or sub directory */
    29                 mask &= AM_RDO|AM_HID|AM_SYS|AM_ARC;    /* Valid attribute mask */
    30                 dir[DIR_Attr] = (value & mask) | (dir[DIR_Attr] & (BYTE)~mask);    /* Apply attribute change */
    31                 dj.fs->wflag = 1;
    32                 res = sync(dj.fs);
    33             }
    34         }
    35     }
    36 
    37     LEAVE_FF(dj.fs, res);
    38 }
    View Code

    函数功能:修改一个文件或目录的属性。

    描述:

    f_chmod函数当_FS_READONLY == 0并且_FS_MINIMIZE == 0时可用。
    f_chmod函数修改一个文件或目录的属性。

    f_utime:

     1 /*-----------------------------------------------------------------------*/
     2 /* Change Timestamp                                                      */
     3 /*-----------------------------------------------------------------------*/
     4 
     5 FRESULT f_utime (
     6     const TCHAR *path,    /* Pointer to the file/directory name */
     7     const FILINFO *fno    /* Pointer to the time stamp to be set */
     8 )
     9 {
    10     FRESULT res;
    11     DIR dj;
    12     BYTE *dir;
    13     DEF_NAMEBUF;
    14 
    15 
    16     res = chk_mounted(&path, &dj.fs, 1);
    17     if (res == FR_OK) {
    18         INIT_BUF(dj);
    19         res = follow_path(&dj, path);    /* Follow the file path */
    20         FREE_BUF();
    21         if (_FS_RPATH && res == FR_OK && (dj.fn[NS] & NS_DOT))
    22             res = FR_INVALID_NAME;
    23         if (res == FR_OK) {
    24             dir = dj.dir;
    25             if (!dir) {                    /* Root directory */
    26                 res = FR_INVALID_NAME;
    27             } else {                    /* File or sub-directory */
    28                 ST_WORD(dir+DIR_WrtTime, fno->ftime);
    29                 ST_WORD(dir+DIR_WrtDate, fno->fdate);
    30                 dj.fs->wflag = 1;
    31                 res = sync(dj.fs);
    32             }
    33         }
    34     }
    35 
    36     LEAVE_FF(dj.fs, res);
    37 }
    View Code

    函数功能:f_utime函数修改一个文件或目录的时间戳。

    描述:

    f_utime函数当_FS_READONLY == 0并且_FS_MINIMIZE == 0时可用。
    f_utime函数修改一个文件或目录的时间戳(即文件属性里的创建、修改、访问时间)。

    例:

    1 // 设置只读标志,清除存档标志,其他不变
    2 f_chmod("file.txt", AR_RDO, AR_RDO | AR_ARC);
    View Code
  • 相关阅读:
    android指纹
    2020-10-25:go中channel的close流程是什么?
    2020-10-24:go中channel的recv流程是什么?
    2020-10-23:go中channel的创建流程是什么?
    2020-10-22:谈谈java中的LongAdder和LongAccumulator的相同点和不同点。
    2020-10-21:go中channel的send流程是什么?
    2020-10-20:线程池如何保证核心线程不被销毁?
    2020-10-19:golang里defer为什么要逆序执行?顺序执行不是更符合人的习惯吗?
    2020-10-18:java中LongAdder和AtomicLong有什么区别?
    2020-10-17:谈一谈DDD面向领域编程。
  • 原文地址:https://www.cnblogs.com/Danhuise/p/3911929.html
Copyright © 2011-2022 走看看