Ticket #1545: pr1545-1.diff

File pr1545-1.diff, 5.7 KB (added by Chris Johns, on 06/04/10 at 00:27:37)

Move iop->offset to the file systems.

  • libcsupport/src/read.c

    RCS file: /usr1/CVS/rtems/cpukit/libcsupport/src/read.c,v
    retrieving revision 1.15
    diff -p -u -r1.15 read.c
    ssize_t read( 
    2424  size_t      count
    2525)
    2626{
    27   ssize_t      rc;
    2827  rtems_libio_t *iop;
    2928
    3029  rtems_libio_check_fd( fd );
    ssize_t read( 
    4140  if ( !iop->handlers->read_h )
    4241    rtems_set_errno_and_return_minus_one( ENOTSUP );
    4342
    44   rc = (*iop->handlers->read_h)( iop, buffer, count );
    45 
    46   if ( rc > 0 )
    47     iop->offset += rc;
    48 
    49   return rc;
     43  return (*iop->handlers->read_h)( iop, buffer, count );
    5044}
    5145
    5246/*
  • libfs/src/devfs/devread.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/devfs/devread.c,v
    retrieving revision 1.3
    diff -p -u -r1.3 devread.c
    ssize_t devFS_read( 
    4343  if ( status )
    4444    return rtems_deviceio_errno(status);
    4545
     46  if (args.bytes_moved > 0)
     47    iop->offset += args.bytes_moved;
     48 
    4649  return (ssize_t) args.bytes_moved;
    4750}
    4851
  • libfs/src/dosfs/msdos_dir.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/dosfs/msdos_dir.c,v
    retrieving revision 1.18
    diff -p -u -r1.18 msdos_dir.c
    msdos_dir_read(rtems_libio_t *iop, void  
    265265            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
    266266                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)
    267267            {
     268                iop->offset += cmpltd;
    268269                rtems_semaphore_release(fs_info->vol_sema);
    269270                return cmpltd;
    270271            }
    msdos_dir_read(rtems_libio_t *iop, void  
    468469        j++;
    469470    }
    470471
     472    iop->offset += cmpltd;
    471473    rtems_semaphore_release(fs_info->vol_sema);
    472474    return cmpltd;
    473475}
  • libfs/src/dosfs/msdos_file.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/dosfs/msdos_file.c,v
    retrieving revision 1.13
    diff -p -u -r1.13 msdos_file.c
    msdos_file_read(rtems_libio_t *iop, void 
    159159    ret = fat_file_read(iop->pathinfo.mt_entry, fat_fd, iop->offset, count,
    160160                        buffer);
    161161
     162    iop->offset += ret;
    162163    rtems_semaphore_release(fs_info->vol_sema);
    163164    return ret;
    164165}
  • libfs/src/imfs/deviceio.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/imfs/deviceio.c,v
    retrieving revision 1.21
    diff -p -u -r1.21 deviceio.c
    ssize_t device_read( 
    129129  if ( status )
    130130    return rtems_deviceio_errno(status);
    131131
     132  if (args.bytes_moved > 0)
     133    iop->offset += args.bytes_moved;
     134
    132135  return (ssize_t) args.bytes_moved;
    133136}
    134137
  • libfs/src/imfs/memfile.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/imfs/memfile.c,v
    retrieving revision 1.32
    diff -p -u -r1.32 memfile.c
    ssize_t memfile_read( 
    158158)
    159159{
    160160  IMFS_jnode_t   *the_jnode;
    161 
     161  int            bytes_transferred;
    162162  the_jnode = iop->file_info;
    163 
    164   return IMFS_memfile_read( the_jnode, iop->offset, buffer, count );
     163  bytes_transferred = IMFS_memfile_read( the_jnode, iop->offset, buffer, count );
     164  iop->offset += bytes_transferred;
     165  return bytes_transferred;
    165166}
    166167
    167168/*
  • libfs/src/rfs/rtems-rfs-rtems-dev.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c,v
    retrieving revision 1.2
    diff -p -u -r1.2 rtems-rfs-rtems-dev.c
    rtems_rfs_rtems_device_read (rtems_libio 
    149149  if (status)
    150150    return rtems_deviceio_errno (status);
    151151
     152  iop->offset += args.bytes_moved;
     153 
    152154  return (ssize_t) args.bytes_moved;
    153155}
    154156
  • libfs/src/rfs/rtems-rfs-rtems-dir.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems-dir.c,v
    retrieving revision 1.3
    diff -p -u -r1.3 rtems-rfs-rtems-dir.c
    rtems_rfs_rtems_dir_read (rtems_libio_t* 
    148148  }
    149149
    150150  rtems_rfs_inode_close (fs, &inode);
    151   rtems_rfs_rtems_unlock (fs);
     151
     152  iop->offset += bytes_transfered;
    152153 
     154  rtems_rfs_rtems_unlock (fs);
     155
    153156  return (ssize_t) bytes_transfered;
    154157}
    155158
  • libfs/src/rfs/rtems-rfs-rtems-file.c

    RCS file: /usr1/CVS/rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c,v
    retrieving revision 1.4
    diff -p -u -r1.4 rtems-rfs-rtems-file.c
    rtems_rfs_rtems_file_read (rtems_libio_t 
    160160      }
    161161    }
    162162  }
     163
     164  iop->offset += read;
    163165 
    164166  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
    165167