1 /** 2 * @file op_fileio.h 3 * Reading from / writing to files 4 * 5 * @remark Copyright 2002 OProfile authors 6 * @remark Read the file COPYING 7 * 8 * @author John Levon 9 * @author Philippe Elie 10 */ 11 12 #ifndef OP_FILEIO_H 13 #define OP_FILEIO_H 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 #include "op_types.h" 20 21 #include <stdio.h> 22 23 /** 24 * op_try_open_file - open a file 25 * @param name file name 26 * @param mode mode string 27 * 28 * Open a file name. 29 * Returns file handle or %NULL on failure. 30 */ 31 FILE * op_try_open_file(char const * name, char const * mode); 32 33 /** 34 * op_open_file - open a file 35 * @param name file name 36 * @param mode mode string 37 * 38 * Open a file name. 39 * Failure to open is fatal. 40 */ 41 FILE * op_open_file(char const * name, char const * mode); 42 43 /** 44 * op_read_int_from_file - parse an ASCII value from a file into an integer 45 * @param filename name of file to parse integer value from 46 * @param fatal non-zero if any error must be fatal 47 * 48 * Reads an ASCII integer from the given file. If an error occur and fatal is 49 * zero (u32)-1 is returned else the value read in is returned. 50 */ 51 u32 op_read_int_from_file(char const * filename, int fatal); 52 53 /** 54 * op_close_file - close a file 55 * @param fp file pointer 56 * 57 * Closes a file pointer. A non-fatal 58 * error message is produced if the 59 * close fails. 60 */ 61 void op_close_file(FILE * fp); 62 63 /** 64 * op_write_file - write to a file 65 * @param fp file pointer 66 * @param buf buffer 67 * @param size nr. of bytes to write 68 * 69 * Write size bytes of buffer buf to a file. 70 * Failure is fatal. 71 */ 72 void op_write_file(FILE * fp, void const * buf, size_t size); 73 74 /** 75 * op_write_u32 - write four bytes to a file 76 * @param fp file pointer 77 * @param val value to write 78 * 79 * Write an unsigned four-byte value val to a file. 80 * Failure is fatal. 81 * 82 * No byte-swapping is done. 83 */ 84 void op_write_u32(FILE * fp, u32 val); 85 86 /** 87 * op_write_u64 - write eight bytes to a file 88 * @param fp file pointer 89 * @param val value to write 90 * 91 * Write an unsigned eight-byte value val to a file. 92 * Failure is fatal. 93 * 94 * No byte-swapping is done. 95 */ 96 void op_write_u64(FILE * fp, u64 val); 97 98 /** 99 * op_write_u8 - write a byte to a file 100 * @param fp file pointer 101 * @param val value to write 102 * 103 * Write an unsigned byte value val to a file. 104 * Failure is fatal. 105 */ 106 void op_write_u8(FILE * fp, u8 val); 107 108 /** 109 * op_get_line - read an ASCII line from a file 110 * @param fp file pointer 111 * 112 * Get a line of ASCII text from a file. The file is read 113 * up to the first '\0' or '\n'. A trailing '\n' is deleted. 114 * 115 * Returns the dynamically-allocated string containing 116 * that line. At the end of a file NULL will be returned. 117 * be returned. 118 * 119 * The string returned must be free()d by the caller. 120 * 121 * getline() is not a proper solution to replace this function 122 */ 123 char * op_get_line(FILE * fp); 124 125 /** 126 * calc_crc32 127 * @param crc current value 128 * @param buf pointer to buffer 129 * @param len 130 * 131 * Returns current crc computed from the crc argument and the 132 * characters in len characters in buf. 133 */ 134 unsigned long calc_crc32(unsigned long crc, unsigned char * buf, size_t len); 135 136 #ifdef __cplusplus 137 } 138 #endif 139 140 #endif /* OP_FILEIO_H */ 141