Change-Id: Ie116b44ba15e8ae41ca9ed4a354a82b2c4a92233
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/2997
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
if (ret != ERROR_OK)
return ret;
if (ret != ERROR_OK)
return ret;
buffer = malloc(MG_FILEIO_CHUNK);
if (!buffer) {
fileio_close(&fileio);
buffer = malloc(MG_FILEIO_CHUNK);
if (!buffer) {
fileio_close(&fileio);
}
if (duration_measure(&bench) == ERROR_OK) {
}
if (duration_measure(&bench) == ERROR_OK) {
- command_print(CMD_CTX, "wrote %ld bytes from file %s "
- "in %fs (%0.3f kB/s)", (long)filesize, CMD_ARGV[1],
+ command_print(CMD_CTX, "wrote %zu bytes from file %s "
+ "in %fs (%0.3f kB/s)", filesize, CMD_ARGV[1],
duration_elapsed(&bench), duration_kbps(&bench, filesize));
}
duration_elapsed(&bench), duration_kbps(&bench, filesize));
}
return retval;
if (!need_size) {
return retval;
if (!need_size) {
retval = fileio_size(&state->fileio, &filesize);
if (retval != ERROR_OK)
return retval;
retval = fileio_size(&state->fileio, &filesize);
if (retval != ERROR_OK)
return retval;
COMMAND_HANDLER(handle_nand_dump_command)
{
COMMAND_HANDLER(handle_nand_dump_command)
{
struct nand_device *nand = NULL;
struct nand_fileio_state s;
int retval = CALL_COMMAND_HANDLER(nand_fileio_parse_args,
struct nand_device *nand = NULL;
struct nand_fileio_state s;
int retval = CALL_COMMAND_HANDLER(nand_fileio_parse_args,
return retval;
if (nand_fileio_finish(&s) == ERROR_OK) {
return retval;
if (nand_fileio_finish(&s) == ERROR_OK) {
- command_print(CMD_CTX, "dumped %ld bytes in %fs (%0.3f KiB/s)",
- (long)filesize, duration_elapsed(&s.bench),
+ command_print(CMD_CTX, "dumped %zu bytes in %fs (%0.3f KiB/s)",
+ filesize, duration_elapsed(&s.bench),
duration_kbps(&s.bench, filesize));
}
return ERROR_OK;
duration_kbps(&s.bench, filesize));
}
return ERROR_OK;
if (fileio_open(&fileio, CMD_ARGV[1], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
return ERROR_OK;
if (fileio_open(&fileio, CMD_ARGV[1], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
return ERROR_OK;
retval = fileio_size(&fileio, &filesize);
if (retval != ERROR_OK) {
fileio_close(&fileio);
retval = fileio_size(&fileio, &filesize);
if (retval != ERROR_OK) {
fileio_close(&fileio);
buffer = NULL;
if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK)) {
buffer = NULL;
if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK)) {
- command_print(CMD_CTX, "wrote %ld bytes from file %s to flash bank %u"
+ command_print(CMD_CTX, "wrote %zu bytes from file %s to flash bank %u"
" at offset 0x%8.8" PRIx32 " in %fs (%0.3f KiB/s)",
" at offset 0x%8.8" PRIx32 " in %fs (%0.3f KiB/s)",
- (long)filesize, CMD_ARGV[1], p->bank_number, offset,
+ filesize, CMD_ARGV[1], p->bank_number, offset,
duration_elapsed(&bench), duration_kbps(&bench, filesize));
}
duration_elapsed(&bench), duration_kbps(&bench, filesize));
}
uint8_t *buffer_file, *buffer_flash;
struct fileio fileio;
size_t read_cnt;
uint8_t *buffer_file, *buffer_flash;
struct fileio fileio;
size_t read_cnt;
int differ;
if (CMD_ARGC != 3)
int differ;
if (CMD_ARGC != 3)
- if (read_cnt != (size_t) filesize) {
+ if (read_cnt != filesize) {
LOG_ERROR("Short read");
free(buffer_file);
return ERROR_FAIL;
LOG_ERROR("Short read");
free(buffer_file);
return ERROR_FAIL;
struct fileio_internal {
char *url;
struct fileio_internal {
char *url;
enum fileio_type type;
enum fileio_access access;
FILE *file;
enum fileio_type type;
enum fileio_access access;
FILE *file;
static inline int fileio_open_local(struct fileio_internal *fileio)
{
char file_access[4];
static inline int fileio_open_local(struct fileio_internal *fileio)
{
char file_access[4];
switch (fileio->access) {
case FILEIO_READ:
switch (fileio->access) {
case FILEIO_READ:
return ERROR_FILEIO_OPERATION_FAILED;
}
return ERROR_FILEIO_OPERATION_FAILED;
}
if ((fileio->access != FILEIO_WRITE) || (fileio->access == FILEIO_READWRITE)) {
/* NB! Here we use fseek() instead of stat(), since stat is a
* more advanced operation that might not apply to e.g. a disk path
if ((fileio->access != FILEIO_WRITE) || (fileio->access == FILEIO_READWRITE)) {
/* NB! Here we use fseek() instead of stat(), since stat is a
* more advanced operation that might not apply to e.g. a disk path
result = fseek(fileio->file, 0, SEEK_END);
result = fseek(fileio->file, 0, SEEK_END);
- fileio->size = ftell(fileio->file);
+ file_size = ftell(fileio->file);
result2 = fseek(fileio->file, 0, SEEK_SET);
result2 = fseek(fileio->file, 0, SEEK_SET);
- if ((fileio->size < 0) || (result < 0) || (result2 < 0)) {
+ if ((file_size < 0) || (result < 0) || (result2 < 0)) {
fileio_close_local(fileio);
return ERROR_FILEIO_OPERATION_FAILED;
}
fileio_close_local(fileio);
return ERROR_FILEIO_OPERATION_FAILED;
}
- } else
- fileio->size = 0x0;
+ }
+
+ fileio->size = file_size;
* Avoiding the seek on startup opens up for using streams.
*
*/
* Avoiding the seek on startup opens up for using streams.
*
*/
-int fileio_size(struct fileio *fileio_p, int *size)
+int fileio_size(struct fileio *fileio_p, size_t *size)
{
struct fileio_internal *fileio = fileio_p->fp;
*size = fileio->size;
{
struct fileio_internal *fileio = fileio_p->fp;
*size = fileio->size;
int fileio_read_u32(struct fileio *fileio, uint32_t *data);
int fileio_write_u32(struct fileio *fileio, uint32_t data);
int fileio_read_u32(struct fileio *fileio, uint32_t *data);
int fileio_write_u32(struct fileio *fileio, uint32_t data);
-int fileio_size(struct fileio *fileio, int *size);
+int fileio_size(struct fileio *fileio, size_t *size);
#define ERROR_FILEIO_LOCATION_UNKNOWN (-1200)
#define ERROR_FILEIO_NOT_FOUND (-1201)
#define ERROR_FILEIO_LOCATION_UNKNOWN (-1200)
#define ERROR_FILEIO_NOT_FOUND (-1201)
if (fileio_open(&file, CMD_ARGV[0], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
return ERROR_FAIL;
if (fileio_open(&file, CMD_ARGV[0], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
return ERROR_FAIL;
int retval = fileio_size(&file, &filesize);
if (retval != ERROR_OK) {
fileio_close(&file);
int retval = fileio_size(&file, &filesize);
if (retval != ERROR_OK) {
fileio_close(&file);
/* we can't determine the number of sections that we'll have to create ahead of time,
* so we locally hold them until parsing is finished */
/* we can't determine the number of sections that we'll have to create ahead of time,
* so we locally hold them until parsing is finished */
int retval;
retval = fileio_size(fileio, &filesize);
if (retval != ERROR_OK)
int retval;
retval = fileio_size(fileio, &filesize);
if (retval != ERROR_OK)
* so we locally hold them until parsing is finished */
int retval;
* so we locally hold them until parsing is finished */
int retval;
retval = fileio_size(fileio, &filesize);
if (retval != ERROR_OK)
return retval;
retval = fileio_size(fileio, &filesize);
if (retval != ERROR_OK)
return retval;
retval = fileio_open(&image_binary->fileio, url, FILEIO_READ, FILEIO_BINARY);
if (retval != ERROR_OK)
return retval;
retval = fileio_open(&image_binary->fileio, url, FILEIO_READ, FILEIO_BINARY);
if (retval != ERROR_OK)
return retval;
retval = fileio_size(&image_binary->fileio, &filesize);
if (retval != ERROR_OK) {
fileio_close(&image_binary->fileio);
retval = fileio_size(&image_binary->fileio, &filesize);
if (retval != ERROR_OK) {
fileio_close(&image_binary->fileio);
free(buffer);
if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK)) {
free(buffer);
if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK)) {
retval = fileio_size(&fileio, &filesize);
if (retval != ERROR_OK)
return retval;
command_print(CMD_CTX,
retval = fileio_size(&fileio, &filesize);
if (retval != ERROR_OK)
return retval;
command_print(CMD_CTX,
- "dumped %ld bytes in %fs (%0.3f KiB/s)", (long)filesize,
+ "dumped %zu bytes in %fs (%0.3f KiB/s)", filesize,
duration_elapsed(&bench), duration_kbps(&bench, filesize));
}
duration_elapsed(&bench), duration_kbps(&bench, filesize));
}
Linking to existing account procedure
If you already have an account and want to add another login method
you
MUST first sign in with your existing account and
then change URL to read
https://review.openocd.org/login/?link
to get to this page again but this time it'll work for linking. Thank you.
SSH host keys fingerprints
1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=.. |
|+o.. . |
|*.o . . |
|+B . . . |
|Bo. = o S |
|Oo.+ + = |
|oB=.* = . o |
| =+=.+ + E |
|. .=o . o |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)