/** * @file op_fileio.h * Reading from / writing to files * * @remark Copyright 2002 OProfile authors * @remark Read the file COPYING * * @author John Levon * @author Philippe Elie */ #ifndef OP_FILEIO_H #define OP_FILEIO_H #ifdef __cplusplus extern "C" { #endif #include "op_types.h" #include <stdio.h> /** * op_try_open_file - open a file * @param name file name * @param mode mode string * * Open a file name. * Returns file handle or %NULL on failure. */ FILE * op_try_open_file(char const * name, char const * mode); /** * op_open_file - open a file * @param name file name * @param mode mode string * * Open a file name. * Failure to open is fatal. */ FILE * op_open_file(char const * name, char const * mode); /** * op_read_int_from_file - parse an ASCII value from a file into an integer * @param filename name of file to parse integer value from * @param fatal non-zero if any error must be fatal * * Reads an ASCII integer from the given file. If an error occur and fatal is * zero (u32)-1 is returned else the value read in is returned. */ u32 op_read_int_from_file(char const * filename, int fatal); /** * op_close_file - close a file * @param fp file pointer * * Closes a file pointer. A non-fatal * error message is produced if the * close fails. */ void op_close_file(FILE * fp); /** * op_write_file - write to a file * @param fp file pointer * @param buf buffer * @param size nr. of bytes to write * * Write size bytes of buffer buf to a file. * Failure is fatal. */ void op_write_file(FILE * fp, void const * buf, size_t size); /** * op_write_u32 - write four bytes to a file * @param fp file pointer * @param val value to write * * Write an unsigned four-byte value val to a file. * Failure is fatal. * * No byte-swapping is done. */ void op_write_u32(FILE * fp, u32 val); /** * op_write_u64 - write eight bytes to a file * @param fp file pointer * @param val value to write * * Write an unsigned eight-byte value val to a file. * Failure is fatal. * * No byte-swapping is done. */ void op_write_u64(FILE * fp, u64 val); /** * op_write_u8 - write a byte to a file * @param fp file pointer * @param val value to write * * Write an unsigned byte value val to a file. * Failure is fatal. */ void op_write_u8(FILE * fp, u8 val); /** * op_get_line - read an ASCII line from a file * @param fp file pointer * * Get a line of ASCII text from a file. The file is read * up to the first '\0' or '\n'. A trailing '\n' is deleted. * * Returns the dynamically-allocated string containing * that line. At the end of a file NULL will be returned. * be returned. * * The string returned must be free()d by the caller. * * getline() is not a proper solution to replace this function */ char * op_get_line(FILE * fp); /** * calc_crc32 * @param crc current value * @param buf pointer to buffer * @param len * * Returns current crc computed from the crc argument and the * characters in len characters in buf. */ unsigned long calc_crc32(unsigned long crc, unsigned char * buf, size_t len); #ifdef __cplusplus } #endif #endif /* OP_FILEIO_H */