Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* rm.h - include file for rm and undel facility
* * Revision History: * ??-???-???? ?? Created * 27-Dec-1989 SB Added new index file header stuff * * Index file format: * The indexed file is composed of records of length RM_RECLEN. * The old index file was composed of entries each the size of a record * and composed of filename padded by NULs. The hash function mapped the * Nth record (i.e. Nth INDEXED entry) to 'deleted.xxx', where, 'xxx' is (N+1) * padded by leading zeroes. * The new index file has an header record, rm_header, followed by entries * of one or more records padded by NULs. Longfilenames occupy multiple * records. The hash function maps the entry starting at Nth record to * 'deleted.xxx' where xxx is (N+1) padded by leading zeroes. This works out * to be basically the same as that for the old format. The differences are :- * -No entry is mapped to 'deleted.000' * -Entries for filenames longer than (RM_RECLEN-1) bytes cause gaps in * mapping. * * Notes: * RM/EXP/UNDEL work as follows:- * 'RM foo' saves a copy of 'foo' and places it in an hidden * sub-directory of RM_DIR (of foo) as file 'deleted.xxx', where, xxx is * determined from the index file RM_IDX in RM_DIR. An entry is made in * the index file for this. * 'UNDEL foo' reads the index file in RM_DIR and determines xxx for * foo and renames 'deleted.xxx' as foo. The entry for foo in the index * file is filled with NULLs. * 'EXP' picks up the index file from RM_DIR and deletes 'deleted.xxx' * for each entry in the index file. It then deletes the index file and * RM_DIR. * * The new index file format can coexist with the old one because :- * The header has a starting NULL which causes it to be ignored by * the old utilities, * When the old utilities attempt to read in a long filename entry they * fail without harm as the hashed 'deleted.xx' does not exist. */
#define RM_DIR "deleted."
#define RM_IDX "index."
#define RM_RECLEN 16
/* The header record in the index file has
* '\0IXn.nn\0' padded to RM_RECLEN bytes */
#define RM_SIG (char)0x00
#define RM_MAGIC "IX" /* IX - IndeXed file */
#define RM_VER "1.01"
#define RM_NULL "\0"
/* Forms header for Index file using RM_MAGIC, RM_VER and RM_NULL */
extern char rm_header[RM_RECLEN];
/* Function prototypes */
// Converts Index file to the new format
int convertIdxFile (int fhidx, char *dir);
// Determines if the record is a new index file header
flagType fIdxHdr (char *rec);
// Reads an Index file record
int readIdxRec (int fhIdx, char *rec);
// Reads index file records and returns INDEXED entry
int readNewIdxRec (int fhIdx, char *szRec, unsigned int cbMax);
// Writes an new index file header
int writeIdxHdr (int fhIdx);
// Writes an index file record
int writeIdxRec (int fhIdx, char *rec);
// Indexes an entry into the Index file
int writeNewIdxRec (int fhIdx, char *szRec);
|