/* FILE ROUTINES FOR ACCESS AUTHORIZATION PACKAGE This module implements the routines used for accessing (and parsing) the files used in the access authorization: password file group file access control list (ACL) file */ #ifndef HTAAFILE_H #define HTAAFILE_H #include /* FILE */ #include "HTUtils.h" /* BOOL, PARAMS, ARGS */ #include "HTList.h" /* HTList */ #ifdef SHORT_NAMES #define HTAAFnRe HTAAFile_nextRec #define HTAAFrFi HTAAFile_readField #define HTAAFrLi HTAAFile_readList #endif /*SHORT_NAMES*/ /* Used field separators */ #define FIELD_SEPARATOR ':' /* Used to separate fields */ #define LIST_SEPARATOR ',' /* Used to separate items in a list */ /* in group and ALC files. */ /* Naming conventions Record is an entire line in file. Field is an entity separated by colons and/or by end-of-line. List is a field in which there are items separated by commas. Record-oriented Read Routines Password, group and ACL are internally read in by the following functions: HTAAFile_nextRec() skips to the beginning of the next record (must be called even after the last field of a record is read to proceed to the next record). HTAAFile_readField() reads a field (separated by colons). HTAAFile_readList() reads a field containing a comma-separated list of items. */ /* PUBLIC HTAAFile_nextRec() ** GO TO THE BEGINNING OF THE NEXT RECORD ** ON ENTRY: ** fp is the file from which records are read from. ** ** ON EXIT: ** returns nothing. File read pointer is located at the beginning ** of the next record. ** */ PUBLIC void HTAAFile_nextRec PARAMS((FILE * fp)); /* PUBLIC HTAAFile_readField() ** READ A FIELD FROM A PASSWORD, GROUP ** OR ACCESS CONTROL LIST FILE ** i.e. an item terminated by colon, ** end-of-line, or end-of-file. ** ON ENTRY: ** fp is the file to read the characters from ** contents is the character array to put the characters ** max_len is the maximum number of characters that may ** be read (i.e. the size of dest minus one for ** terminating null). ** ON EXIT: ** returns the terminating character ** (i.e. either separator or CR or LF or EOF). ** contents contains a null-terminated string representing ** the read field. ** NOTE 1: ** Ignores leading and trailing blanks and tabs. ** NOTE 2: ** If the field is more than max_len characters ** long, the rest of the characters in that item ** are ignored. However, contents is always ** null-terminated! */ PUBLIC int HTAAFile_readField PARAMS((FILE * fp, char * contents, int max_len)); /* PUBLIC HTAAFile_readList() ** ** READ A LIST OF STRINGS SEPARATED BY COMMAS ** (FROM A GROUP OR ACCESS CONTROL LIST FILE) ** ON ENTRY: ** fp is a pointer to the input file. ** result is the list to which append the read items. ** max_len is the maximum number of characters in each ** list entry (extra characters are ignored). ** ON EXIT: ** returns the number of items read. ** */ PUBLIC int HTAAFile_readList PARAMS((FILE * fp, HTList * result, int max_len)); /* */ #endif /* not HTAAFILE_H */ /* End of file HTAAFile.h. */