| #ifndef NETSNMP_FILE_UTILS_H |
| #define NETSNMP_FILE_UTILS_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| |
| /*------------------------------------------------------------------ |
| * |
| * structures |
| * |
| */ |
| typedef struct netsnmp_file_s { |
| |
| /** file name */ |
| char *name; |
| |
| /** file descriptor for the file */ |
| int fd; |
| |
| /** filesystem flags */ |
| int fs_flags; |
| |
| /** open/create mode */ |
| mode_t mode; |
| |
| /** netsnmp flags */ |
| u_int ns_flags; |
| |
| /** file stats */ |
| struct stat *stats; |
| |
| /* |
| * future expansion |
| */ |
| netsnmp_data_list *extras; |
| |
| } netsnmp_file; |
| |
| |
| |
| /*------------------------------------------------------------------ |
| * |
| * Prototypes |
| * |
| */ |
| netsnmp_file *netsnmp_file_new(const char *name, int fs_flags, mode_t mode, |
| u_int ns_flags); |
| |
| netsnmp_file * netsnmp_file_create(void); |
| netsnmp_file * netsnmp_file_fill(netsnmp_file * filei, const char* name, |
| int fs_flags, mode_t mode, u_int ns_flags); |
| int netsnmp_file_release(netsnmp_file * filei); |
| |
| int netsnmp_file_open(netsnmp_file * filei); |
| int netsnmp_file_close(netsnmp_file * filei); |
| |
| /** support netsnmp_file containers */ |
| int netsnmp_file_compare_name(netsnmp_file *lhs, netsnmp_file *rhs); |
| void netsnmp_file_container_free(netsnmp_file *file, void *context); |
| |
| |
| |
| /*------------------------------------------------------------------ |
| * |
| * flags |
| * |
| */ |
| #define NETSNMP_FILE_NO_AUTOCLOSE 0x00000001 |
| #define NETSNMP_FILE_STATS 0x00000002 |
| #define NETSNMP_FILE_AUTO_OPEN 0x00000004 |
| |
| /*------------------------------------------------------------------ |
| * |
| * macros |
| * |
| */ |
| #define NS_FI_AUTOCLOSE(x) (0 == (x & NETSNMP_FILE_NO_AUTOCLOSE)) |
| #define NS_FI_(x) (0 == (x & NETSNMP_FILE_)) |
| |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* NETSNMP_FILE_UTILS_H */ |