113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/* Copyright (C) 2005 Red Hat, Inc. */ 213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#ifndef _SEMANAGE_DATABASE_FILE_INTERNAL_H_ 413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#define _SEMANAGE_DATABASE_FILE_INTERNAL_H_ 513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <stdio.h> 713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include "database.h" 813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include "parse_utils.h" 913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include "handle.h" 1013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 1113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlestruct dbase_file; 1213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindletypedef struct dbase_file dbase_file_t; 1313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 1413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/* FILE extension to RECORD interface - method table */ 1513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindletypedef struct record_file_table { 1613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 1713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle /* Fill record structuure based on supplied parse info. 1813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle * Parser must return STATUS_NODATA when EOF is encountered. 1913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle * Parser must handle NULL file stream correctly */ 2013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle int (*parse) (semanage_handle_t * handle, 2113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle parse_info_t * info, record_t * record); 2213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 2313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle /* Print record to stream */ 2413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle int (*print) (semanage_handle_t * handle, 2513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle record_t * record, FILE * str); 2613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 2713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle} record_file_table_t; 2813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 2913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/* FILE - initialization */ 3013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleextern int dbase_file_init(semanage_handle_t * handle, 31e37fa2f63be89afab9b5f5ddfedbd589d0676c4eCaleb Case const char *path_ro, 32e37fa2f63be89afab9b5f5ddfedbd589d0676c4eCaleb Case const char *path_rw, 3313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle record_table_t * rtable, 3413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle record_file_table_t * rftable, 3513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle dbase_file_t ** dbase); 3613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 3713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/* FILE - release */ 3813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleextern void dbase_file_release(dbase_file_t * dbase); 3913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 4013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/* FILE - method table implementation */ 4113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleextern dbase_table_t SEMANAGE_FILE_DTABLE; 4213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 4313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#endif 44