diff --git a/configs/nucleo-f4x1re/src/stm32_ajoystick.c b/configs/nucleo-f4x1re/src/stm32_ajoystick.c index fc5b5cc237e..5a88e2e95b0 100644 --- a/configs/nucleo-f4x1re/src/stm32_ajoystick.c +++ b/configs/nucleo-f4x1re/src/stm32_ajoystick.c @@ -1,7 +1,7 @@ /**************************************************************************** * configs/nucleo-f3x1re/src/stm32_ajoystick.c * - * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2014, 2016-2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -210,13 +210,12 @@ static int ajoy_sample(FAR const struct ajoy_lowerhalf_s *lower, MAX_ADC_CHANNELS * sizeof(struct adc_msg_s)); if (nread < 0) { - int errcode = get_errno(); - if (errcode != EINTR) + if (nread != -EINTR) { - ierr("ERROR: read failed: %d\n", errcode); + ierr("ERROR: read failed: %d\n", (int)nread); } - return -errcode; + return nread; } else if (nread < NJOYSTICK_CHANNELS * sizeof(struct adc_msg_s)) { diff --git a/configs/nucleo-l476rg/src/stm32_ajoystick.c b/configs/nucleo-l476rg/src/stm32_ajoystick.c index 2864a98c933..d39bd4a1504 100644 --- a/configs/nucleo-l476rg/src/stm32_ajoystick.c +++ b/configs/nucleo-l476rg/src/stm32_ajoystick.c @@ -1,7 +1,7 @@ /**************************************************************************** * configs/nucleo-l476rg/src/stm32_ajoystick.c * - * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2014, 2016-2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -209,13 +209,12 @@ static int ajoy_sample(FAR const struct ajoy_lowerhalf_s *lower, MAX_ADC_CHANNELS * sizeof(struct adc_msg_s)); if (nread < 0) { - int errcode = get_errno(); - if (errcode != EINTR) + if (nread != -EINTR) { - ierr("ERROR: read failed: %d\n", errcode); + ierr("ERROR: read failed: %d\n", (int)nread); } - return -errcode; + return nread; } else if (nread < NJOYSTICK_CHANNELS * sizeof(struct adc_msg_s)) { diff --git a/configs/sama5d3-xplained/src/sam_ajoystick.c b/configs/sama5d3-xplained/src/sam_ajoystick.c index 322240fd9da..4aa092f0006 100644 --- a/configs/sama5d3-xplained/src/sam_ajoystick.c +++ b/configs/sama5d3-xplained/src/sam_ajoystick.c @@ -191,13 +191,12 @@ static int ajoy_sample(FAR const struct ajoy_lowerhalf_s *lower, MAX_ADC_CHANNELS * sizeof(struct adc_msg_s)); if (nread < 0) { - int errcode = get_errno(); - if (errcode != EINTR) + if (nread != iEINTR) { - ierr("ERROR: read failed: %d\n", errcode); + ierr("ERROR: read failed: %d\n", (int)nread); } - return -errcode; + return nread; } else if (nread < 2 * sizeof(struct adc_msg_s)) { diff --git a/fs/vfs/fs_pread.c b/fs/vfs/fs_pread.c index 5fc87152cd2..24451a24545 100644 --- a/fs/vfs/fs_pread.c +++ b/fs/vfs/fs_pread.c @@ -95,7 +95,7 @@ ssize_t file_pread(FAR struct file *filep, FAR void *buf, size_t nbytes, ret = file_read(filep, buf, nbytes); if (ret < 0) { - errcode = get_errno(); + errcode = -ret; ret = ERROR; } diff --git a/fs/vfs/fs_read.c b/fs/vfs/fs_read.c index b00616682a0..42e0fa2b0fa 100644 --- a/fs/vfs/fs_read.c +++ b/fs/vfs/fs_read.c @@ -1,7 +1,7 @@ /**************************************************************************** * fs/vfs/fs_read.c * - * Copyright (C) 2007-2009, 2012-2014, 2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2007-2009, 2012-2014, 2016-2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -102,15 +102,7 @@ ssize_t file_read(FAR struct file *filep, FAR void *buf, size_t nbytes) ret = (int)inode->u.i_ops->read(filep, (FAR char *)buf, (size_t)nbytes); } - /* If an error occurred, set errno and return -1 (ERROR) */ - - if (ret < 0) - { - set_errno(-ret); - return ERROR; - } - - /* Otherwise, return the number of bytes read */ + /* Return the number of bytes read (or possibly an error code) */ return ret; } @@ -180,11 +172,14 @@ ssize_t read(int fd, FAR void *buf, size_t nbytes) } else { - /* Then let file_read do all of the work. Note that file_read() - * sets the errno variable. - */ + /* Then let file_read do all of the work. */ ret = file_read(filep, buf, nbytes); + if (ret < 0) + { + set_errno((int)-ret); + ret = ERROR; + } } } #endif diff --git a/net/tcp/tcp_sendfile.c b/net/tcp/tcp_sendfile.c index 7f18a31426e..ae48e2284a2 100644 --- a/net/tcp/tcp_sendfile.c +++ b/net/tcp/tcp_sendfile.c @@ -402,9 +402,8 @@ static uint16_t sendfile_eventhandler(FAR struct net_driver_s *dev, ret = file_read(pstate->snd_file, dev->d_appdata, sndlen); if (ret < 0) { - int errcode = get_errno(); - nerr("ERROR: Failed to read from input file: %d\n", errcode); - pstate->snd_sent = -errcode; + nerr("ERROR: Failed to read from input file: %d\n", (int)ret); + pstate->snd_sent = ret; goto end_wait; }