… | |
… | |
834 | return etp_poll (); |
834 | return etp_poll (); |
835 | } |
835 | } |
836 | |
836 | |
837 | /*****************************************************************************/ |
837 | /*****************************************************************************/ |
838 | /* work around various missing functions */ |
838 | /* work around various missing functions */ |
|
|
839 | |
|
|
840 | #if _POSIX_VERSION < 200809L |
|
|
841 | # define realpath(path,resolved_path) (errno = ENOSYS, 0) |
|
|
842 | #endif |
839 | |
843 | |
840 | #if !HAVE_PREADWRITE |
844 | #if !HAVE_PREADWRITE |
841 | # undef pread |
845 | # undef pread |
842 | # undef pwrite |
846 | # undef pwrite |
843 | # define pread eio__pread |
847 | # define pread eio__pread |
… | |
… | |
1774 | case EIO_RENAME: req->result = rename (req->ptr1, req->ptr2); break; |
1778 | case EIO_RENAME: req->result = rename (req->ptr1, req->ptr2); break; |
1775 | case EIO_LINK: req->result = link (req->ptr1, req->ptr2); break; |
1779 | case EIO_LINK: req->result = link (req->ptr1, req->ptr2); break; |
1776 | case EIO_SYMLINK: req->result = symlink (req->ptr1, req->ptr2); break; |
1780 | case EIO_SYMLINK: req->result = symlink (req->ptr1, req->ptr2); break; |
1777 | case EIO_MKNOD: req->result = mknod (req->ptr1, (mode_t)req->int2, (dev_t)req->offs); break; |
1781 | case EIO_MKNOD: req->result = mknod (req->ptr1, (mode_t)req->int2, (dev_t)req->offs); break; |
1778 | |
1782 | |
|
|
1783 | case EIO_REALPATH: req->flags |= EIO_FLAG_PTR2_FREE; |
|
|
1784 | req->ptr2 = realpath (req->ptr1, 0); |
|
|
1785 | req->result = req->ptr2 ? strlen (req->ptr2) : -1; |
|
|
1786 | break; |
|
|
1787 | |
1779 | case EIO_READLINK: ALLOC (PATH_MAX); |
1788 | case EIO_READLINK: ALLOC (PATH_MAX); |
1780 | req->result = readlink (req->ptr1, req->ptr2, PATH_MAX); break; |
1789 | req->result = readlink (req->ptr1, req->ptr2, PATH_MAX); break; |
1781 | |
1790 | |
1782 | case EIO_SYNC: req->result = 0; sync (); break; |
1791 | case EIO_SYNC: req->result = 0; sync (); break; |
1783 | case EIO_FSYNC: req->result = fsync (req->int1); break; |
1792 | case EIO_FSYNC: req->result = fsync (req->int1); break; |
… | |
… | |
2000 | eio_req *eio_readlink (const char *path, int pri, eio_cb cb, void *data) |
2009 | eio_req *eio_readlink (const char *path, int pri, eio_cb cb, void *data) |
2001 | { |
2010 | { |
2002 | return eio__1path (EIO_READLINK, path, pri, cb, data); |
2011 | return eio__1path (EIO_READLINK, path, pri, cb, data); |
2003 | } |
2012 | } |
2004 | |
2013 | |
|
|
2014 | eio_req *eio_realpath (const char *path, int pri, eio_cb cb, void *data) |
|
|
2015 | { |
|
|
2016 | return eio__1path (EIO_REALPATH, path, pri, cb, data); |
|
|
2017 | } |
|
|
2018 | |
2005 | eio_req *eio_stat (const char *path, int pri, eio_cb cb, void *data) |
2019 | eio_req *eio_stat (const char *path, int pri, eio_cb cb, void *data) |
2006 | { |
2020 | { |
2007 | return eio__1path (EIO_STAT, path, pri, cb, data); |
2021 | return eio__1path (EIO_STAT, path, pri, cb, data); |
2008 | } |
2022 | } |
2009 | |
2023 | |