Changeset 5822f43 in rtems


Ignore:
Timestamp:
Dec 3, 1998, 10:17:26 PM (22 years ago)
Author:
Jennifer Averett <Jennifer.Averett@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
49629bd8
Parents:
7a3878b
Message:

Added source for F_DUPFD.

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libcsupport/src/fcntl.c

    r7a3878b r5822f43  
    2828  va_list        ap;
    2929  rtems_libio_t *iop;
     30  rtems_libio_t *diop;
     31  int            fd2;
    3032 
    3133  va_start( ap, cmd );
     
    5153  switch ( cmd ) {
    5254    case F_DUPFD:        /* dup */
    53       /*
    54        *  This is how it appears that this case should work:
    55        *
    56        *     filedes2 = va_arg( ap, int )
    57        *     if filedes2 is 0
    58        *       duplicate fd into a new descriptor
    59        *     else
    60        *       duplicate fd into specified descriptor after error checking it
    61        *
    62        *  See dup2() in case we can eliminate stuff in there.
    63        */
    64       return -1;
     55      fd2 = va_arg( ap, int );
     56      if ( fd2 )
     57        diop = rtems_libio_iop( fd2 );
     58      else {
     59        /* allocate a file control block */
     60        diop = rtems_libio_allocate();
     61        if ( diop == 0 )
     62          return -1;
     63      }
     64
     65      diop->handlers   = iop->handlers;
     66      diop->file_info  = iop->file_info;
     67      diop->flags      = iop->flags;
     68      diop->pathinfo   = iop->pathinfo;
     69     
     70      return 0;
    6571
    6672    case F_GETFD:        /* get f_flags */
  • c/src/lib/libc/fcntl.c

    r7a3878b r5822f43  
    2828  va_list        ap;
    2929  rtems_libio_t *iop;
     30  rtems_libio_t *diop;
     31  int            fd2;
    3032 
    3133  va_start( ap, cmd );
     
    5153  switch ( cmd ) {
    5254    case F_DUPFD:        /* dup */
    53       /*
    54        *  This is how it appears that this case should work:
    55        *
    56        *     filedes2 = va_arg( ap, int )
    57        *     if filedes2 is 0
    58        *       duplicate fd into a new descriptor
    59        *     else
    60        *       duplicate fd into specified descriptor after error checking it
    61        *
    62        *  See dup2() in case we can eliminate stuff in there.
    63        */
    64       return -1;
     55      fd2 = va_arg( ap, int );
     56      if ( fd2 )
     57        diop = rtems_libio_iop( fd2 );
     58      else {
     59        /* allocate a file control block */
     60        diop = rtems_libio_allocate();
     61        if ( diop == 0 )
     62          return -1;
     63      }
     64
     65      diop->handlers   = iop->handlers;
     66      diop->file_info  = iop->file_info;
     67      diop->flags      = iop->flags;
     68      diop->pathinfo   = iop->pathinfo;
     69     
     70      return 0;
    6571
    6672    case F_GETFD:        /* get f_flags */
  • cpukit/libcsupport/src/fcntl.c

    r7a3878b r5822f43  
    2828  va_list        ap;
    2929  rtems_libio_t *iop;
     30  rtems_libio_t *diop;
     31  int            fd2;
    3032 
    3133  va_start( ap, cmd );
     
    5153  switch ( cmd ) {
    5254    case F_DUPFD:        /* dup */
    53       /*
    54        *  This is how it appears that this case should work:
    55        *
    56        *     filedes2 = va_arg( ap, int )
    57        *     if filedes2 is 0
    58        *       duplicate fd into a new descriptor
    59        *     else
    60        *       duplicate fd into specified descriptor after error checking it
    61        *
    62        *  See dup2() in case we can eliminate stuff in there.
    63        */
    64       return -1;
     55      fd2 = va_arg( ap, int );
     56      if ( fd2 )
     57        diop = rtems_libio_iop( fd2 );
     58      else {
     59        /* allocate a file control block */
     60        diop = rtems_libio_allocate();
     61        if ( diop == 0 )
     62          return -1;
     63      }
     64
     65      diop->handlers   = iop->handlers;
     66      diop->file_info  = iop->file_info;
     67      diop->flags      = iop->flags;
     68      diop->pathinfo   = iop->pathinfo;
     69     
     70      return 0;
    6571
    6672    case F_GETFD:        /* get f_flags */
Note: See TracChangeset for help on using the changeset viewer.