1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /***************************************************************************
4 * Copyright (C) 2007 by Dominic Rath *
5 * Dominic.Rath@gmx.de *
7 * Copyright (C) 2007,2008 Øyvind Harboe *
8 * oyvind.harboe@zylin.com *
10 * Copyright (C) 2008 by Spencer Oliver *
11 * spen@spen-soft.co.uk *
12 ***************************************************************************/
14 #ifndef OPENOCD_HELPER_FILEIO_H
15 #define OPENOCD_HELPER_FILEIO_H
19 #define FILEIO_MAX_ERROR_STRING (128)
27 FILEIO_NONE
, /* open without any access (invalid mode) */
28 FILEIO_READ
, /* open for reading, position at beginning */
29 FILEIO_WRITE
, /* open for writing, position at beginning */
30 FILEIO_READWRITE
, /* open for writing, position at beginning, allow reading */
31 FILEIO_APPEND
, /* open for writing, position at end */
32 FILEIO_APPENDREAD
, /* open for writing, position at end, allow reading */
37 int fileio_open(struct fileio
**fileio
, const char *url
,
38 enum fileio_access access_type
, enum fileio_type type
);
39 int fileio_close(struct fileio
*fileio
);
40 int fileio_feof(struct fileio
*fileio
);
42 int fileio_seek(struct fileio
*fileio
, size_t position
);
43 int fileio_fgets(struct fileio
*fileio
, size_t size
, void *buffer
);
45 int fileio_read(struct fileio
*fileio
,
46 size_t size
, void *buffer
, size_t *size_read
);
47 int fileio_write(struct fileio
*fileio
,
48 size_t size
, const void *buffer
, size_t *size_written
);
50 int fileio_read_u32(struct fileio
*fileio
, uint32_t *data
);
51 int fileio_write_u32(struct fileio
*fileio
, uint32_t data
);
52 int fileio_size(struct fileio
*fileio
, size_t *size
);
54 #define ERROR_FILEIO_LOCATION_UNKNOWN (-1200)
55 #define ERROR_FILEIO_NOT_FOUND (-1201)
56 #define ERROR_FILEIO_OPERATION_FAILED (-1202)
57 #define ERROR_FILEIO_ACCESS_NOT_SUPPORTED (-1203)
58 #define ERROR_FILEIO_RESOURCE_TYPE_UNKNOWN (-1204)
59 #define ERROR_FILEIO_OPERATION_NOT_SUPPORTED (-1205)
61 #endif /* OPENOCD_HELPER_FILEIO_H */