How do you determine a file's attributes? Ans. The file attributes are stored in the find_t.attrib structure member. This structure member is a single character, and each file attribute is represented by a single bit. Here is a list of the valid DOS file attributes: Value Description Constant 0x00 - Normal - (none) 0x01 - Read Only - FA_RDONLY 0x02 - Hidden File - FA_HIDDEN 0x04 - System File - FA_SYSTEM 0x08 - Volume Label - FA_LABEL 0x10 - Subdirectory - FA_DIREC 0x20 - Archive File - FA_ARCHIVE To determine the file's attributes, you check which bits are turned on and map them corresponding to the preceding table. For example, a read-only hidden system file will have the first, second, and third bits turned on. A 'normal' file will have none of the bits turned on. To determine whether a particular bit is turned on, you do a bit-wise AND with the bit's constant representation. The following program uses this technique to print a file's attributes: #include #include #include #include #include #include typedef struct find_t FILE_BLOCK; void main(void); void main(void) { FILE_BLOCK f_block; /* Define the find_t structure variable */ int ret_code; /* Define a variable to store the return codes */ printf('\nDirectory listing of all files in this directory:\n\n'); /* Use the '*.*' file mask and the 0xFF attribute mask to list all files in the directory, including system files, hidden files, and subdirectory names. */ ret_code = _dos_findfirst('*.*', 0xFF, &f_block); /* The _dos_findfirst() function returns a 0 when it is successful and has found a valid filename in the directory. */ while (ret_code == 0) { /* Print the file's name */ printf('%-12s ', f_block.name); /* Print the read-only attribute */ printf('%s ', (f_block.attrib & FA_RDONLY) ? 'R' : '.'); /* Print the hidden attribute */ printf('%s ', (f_block.attrib & FA_HIDDEN) ? 'H' : '.'); /* Print the system attribute */ printf('%s ', (f_block.attrib & FA_SYSTEM) ? 'S' : '.'); /* Print the directory attribute */ printf('%s ', (f_block.attrib & FA_DIREC) ? 'D' : '.'); /* Print the archive attribute */ printf('%s\n', (f_block.attrib & FA_ARCH) ? 'A' : '.'); /* Use the _dos_findnext() function to look for the next file in the directory. */ ret_code = _dos_findnext(&f_block); } printf('\nEnd of directory listing.\n'); } - Study24x7
Social learning Network
12 Apr 2023 11:47 AM study24x7 study24x7

How do you determine a file's attributes? Ans. The file attributes are stored in the find_t.attrib structure member. This structure member is a single character, and each file attribute is represented by a single bit. Here is a list of the valid DOS file attributes: Value Des...

See more

study24x7
Write a comment
Related Questions
500+   more Questions to answer
Most Related Articles