• 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
  • 相关阅读:
    PRISM概率模型检测器初使用--骰子模型(改进版)
    什么是P问题、NP问题和NPC问题
    kali linux进行arp欺骗和dos攻击
    java log日志的输出。
    sublime text3输入中文的问题.
    java 正则表达式匹配字符串
    python tornado+mongodb的使用
    jasper3
    jasper2
    jasper
  • 原文地址:https://www.cnblogs.com/Danhuise/p/3911929.html
Copyright © 2020-2023  润新知