149 lines
4.8 KiB
C
149 lines
4.8 KiB
C
/* dosFsCommon.h - DOS file system header file (common elements) */
|
|
|
|
/* Copyright 1999-2004, 2009, 2015 Wind River Systems, Inc. */
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
01e,21dec15,yjl Fix VXW6-84877 unlink(fileName) system call of
|
|
VxWorks6.9+ATOM does not work correctly
|
|
01d,18jun09,zly added macro PRINT_MSG
|
|
01c,17aug06,kuo added macro DOS_CHK_VERB_MASK
|
|
01b,02may04,jkf fixed SPR#83487, DOS_MAX_DIR_LEVELS to 124
|
|
01a,09apr04,dat written (from dosFsLib.h ver 01q)
|
|
*/
|
|
|
|
/*
|
|
These are the common DOS file system macros needed for both
|
|
kernel and RTP space. (This file is referenced as usrFsLib.h from
|
|
RTP space).
|
|
*/
|
|
|
|
#ifndef __INCdosFsCommonh
|
|
#define __INCdosFsCommonh
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* defines */
|
|
#define DOS_FS_COMPAT /* enable definition for backwards compatibility */
|
|
|
|
/* dosDevCreateOptions - check disk levels */
|
|
|
|
#define DOS_CHK_FLAGS_MASK 0x000000ff /* all "control" flags in here */
|
|
#define DOS_CHK_ONLY 0x00000001
|
|
#define DOS_CHK_REPAIR 0x00000002
|
|
#define DOS_CHK_NONE 0x00000004
|
|
#define DOS_CHK_FORCE 0x00000008 /* force chkdsk even if clean */
|
|
#define DOS_CHK_VERB_0 0x0000ff00 /* verbosity level/flags */
|
|
#define DOS_CHK_VERB_SILENT DOS_CHK_VERB_0
|
|
#define DOS_CHK_VERB_1 0x00000100
|
|
#define DOS_CHK_VERB_2 0x00000200
|
|
#define DOS_CHK_VERB_MASK 0x0000ff00
|
|
|
|
/* misc max definitions */
|
|
#define DOS_MAX_DIR_LEVELS 124 /* max expected directory levels */
|
|
#define DOS_VOL_LABEL_LEN 11 /* length of volume label */
|
|
|
|
/* ioctl FIOCHKDSK - check disk levels */
|
|
|
|
#define CHK_ONLY 1
|
|
#define CHK_REPAIR 2
|
|
|
|
/* additional open() flags */
|
|
|
|
#define DOS_O_CONTIG_CHK 0x10000 /* check file for contiguity */
|
|
#define DOS_O_CASENS 0x20000 /* case-sensitive file lookup */
|
|
|
|
/* File attribute byte values */
|
|
|
|
#define DOS_ATTR_RDONLY 0x01 /* read-only file */
|
|
#define DOS_ATTR_HIDDEN 0x02 /* hidden file */
|
|
#define DOS_ATTR_SYSTEM 0x04 /* system file */
|
|
#define DOS_ATTR_VOL_LABEL 0x08 /* volume label (not a file) */
|
|
#define DOS_ATTR_DIRECTORY 0x10 /* entry is a sub-directory */
|
|
#define DOS_ATTR_ARCHIVE 0x20 /* file subject to archiving */
|
|
|
|
/* error codes */
|
|
/*
|
|
* The codes which are defined with ERRNO_PX_FLAG can be mapped
|
|
* to POSIX error codes:
|
|
* if (errno & ERRNO_PX_FLAG) errno &= 0x7fff ;
|
|
*/
|
|
|
|
#define S_dosFsLib_32BIT_OVERFLOW (M_dosFsLib | 1)
|
|
#define S_dosFsLib_DISK_FULL (M_dosFsLib | 2)
|
|
#define S_dosFsLib_FILE_NOT_FOUND (M_dosFsLib | 3)
|
|
#define S_dosFsLib_NO_FREE_FILE_DESCRIPTORS (M_dosFsLib | 4)
|
|
#define S_dosFsLib_NOT_FILE (M_dosFsLib | 5)
|
|
#define S_dosFsLib_NOT_SAME_VOLUME (M_dosFsLib | 6)
|
|
#define S_dosFsLib_NOT_DIRECTORY (M_dosFsLib | 7)
|
|
#define S_dosFsLib_DIR_NOT_EMPTY (M_dosFsLib | 8)
|
|
#define S_dosFsLib_FILE_EXISTS (M_dosFsLib | 9)
|
|
#define S_dosFsLib_INVALID_PARAMETER (M_dosFsLib | 10)
|
|
#define S_dosFsLib_NAME_TOO_LONG (M_dosFsLib | 11)
|
|
#define S_dosFsLib_UNSUPPORTED (M_dosFsLib | 12)
|
|
#define S_dosFsLib_VOLUME_NOT_AVAILABLE (M_dosFsLib | 13)
|
|
#define S_dosFsLib_INVALID_NUMBER_OF_BYTES (M_dosFsLib | 14)
|
|
#define S_dosFsLib_ILLEGAL_NAME (M_dosFsLib | 15)
|
|
#define S_dosFsLib_CANT_DEL_ROOT (M_dosFsLib | 16)
|
|
#define S_dosFsLib_READ_ONLY (M_dosFsLib | 17)
|
|
#define S_dosFsLib_ROOT_DIR_FULL (M_dosFsLib | 18)
|
|
#define S_dosFsLib_NO_LABEL (M_dosFsLib | 19)
|
|
#define S_dosFsLib_NO_CONTIG_SPACE (M_dosFsLib | 20)
|
|
#define S_dosFsLib_FD_OBSOLETE (M_dosFsLib | 21)
|
|
#define S_dosFsLib_DELETED (M_dosFsLib | 22)
|
|
#define S_dosFsLib_INTERNAL_ERROR (M_dosFsLib | 23)
|
|
#define S_dosFsLib_WRITE_ONLY (M_dosFsLib | 24)
|
|
#define S_dosFsLib_ILLEGAL_PATH (M_dosFsLib | 25)
|
|
#define S_dosFsLib_ACCESS_BEYOND_EOF (M_dosFsLib | 26)
|
|
#define S_dosFsLib_DIR_READ_ONLY (M_dosFsLib | 27)
|
|
#define S_dosFsLib_UNKNOWN_VOLUME_FORMAT (M_dosFsLib | 28)
|
|
#define S_dosFsLib_ILLEGAL_CLUSTER_NUMBER (M_dosFsLib | 29)
|
|
#define S_dosFsLib_UNLINKED (M_dosFsLib | 30)
|
|
|
|
/*
|
|
* user`s printing message level :
|
|
* 0 - print nothing
|
|
* 1 - print message at level-1
|
|
* >1 - for future extension
|
|
*/
|
|
|
|
IMPORT int dosFsMsgLevel;
|
|
|
|
/*
|
|
*Classification of message
|
|
*By default all message at level-1
|
|
*/
|
|
|
|
#define CLSMSG_NORMAL 1
|
|
|
|
|
|
/*
|
|
* print message according to dosFsMsgLevel (DOSFS_PRTMSG_LEVEL)
|
|
* class : default value is CLSMSG_NORMAL
|
|
*/
|
|
|
|
#define PRINT_MSG(class, fmt, ...) \
|
|
do { \
|
|
if ((dosFsMsgLevel) != 0) { \
|
|
if ((dosFsMsgLevel) <= (class)) { \
|
|
printf((fmt),##__VA_ARGS__); \
|
|
} \
|
|
} \
|
|
} while (0)
|
|
|
|
/* macros */
|
|
|
|
/* typedefs */
|
|
|
|
/* interface functions prototypes */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INCdosFsCommonh */
|