Changeset 3780:d463fa7a8ba9 in roaraudio for libroaross/libroaross.c
- Timestamp:
- 05/07/10 12:43:34 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroaross/libroaross.c
r3779 r3780 119 119 struct session * session; 120 120 int type; 121 int sysio_flags; 121 122 struct roar_stream stream; 122 123 struct roar_vio_calls stream_vio; … … 538 539 } 539 540 540 handle->type = ptr->type; 541 handle->stream_dir = -1; 541 handle->type = ptr->type; 542 handle->sysio_flags = flags; 543 handle->stream_dir = -1; 542 544 543 545 switch (flags & (O_RDONLY|O_WRONLY|O_RDWR)) { … … 1531 1533 long argl = -1; 1532 1534 void * vp = NULL; 1535 int ret = -1; 1536 int diff; 1533 1537 1534 1538 _init(); … … 1605 1609 } 1606 1610 1607 errno = ENOSYS; 1608 return -1; 1611 switch (cmd) { 1612 case F_DUPFD: 1613 ret = _os.fcntl(fd, F_DUPFD, argl); 1614 1615 if ( ret != -1 ) { 1616 if ( _attach_pointer(pointer->handle, ret) == NULL ) { 1617 _os.close(ret); 1618 ret = -1; 1619 } 1620 } 1621 break; 1622 case F_SETFD: 1623 if ( argl == 0 ) { 1624 ret = 0; 1625 } else { 1626 errno = ENOSYS; 1627 ret = -1; 1628 } 1629 break; 1630 case F_GETFD: 1631 ret = 0; 1632 break; 1633 case F_GETFL: 1634 ret = pointer->handle->sysio_flags; 1635 break; 1636 case F_SETFL: 1637 diff = (int)argl ^ pointer->handle->sysio_flags; 1638 diff &= (int)~(int)(O_DIRECT|O_APPEND|O_LARGEFILE|O_NOATIME|O_NOCTTY|O_TRUNC); 1639 if ( diff == 0 ) { // only flags changed we ignore anyway. 1640 pointer->handle->sysio_flags = (int)argl; 1641 ret = 0; 1642 } else { 1643 errno = EINVAL; 1644 ret = -1; 1645 } 1646 break; 1647 /* TODO: add support for those types: 1648 case F_SETFD: 1649 case F_SETOWN: 1650 case F_SETSIG: 1651 case F_SETLEASE: 1652 case F_NOTIFY: 1653 case F_GETOWN: 1654 case F_GETSIG: 1655 case F_GETLEASE: 1656 case F_GETLK: 1657 case F_SETLK: 1658 case F_SETLKW: 1659 */ 1660 default: 1661 errno = ENOSYS; 1662 ret = -1; 1663 break; 1664 } 1665 1666 return ret; 1609 1667 } 1610 1668
Note: See TracChangeset
for help on using the changeset viewer.