Changeset ff381a7 in mainline for uspace/lib/posix/source/unistd.c


Ignore:
Timestamp:
2015-11-02T20:54:19Z (8 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d8513177
Parents:
3feeab2 (diff), 5265eea4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/posix/source/unistd.c

    r3feeab2 rff381a7  
    105105char *posix_getcwd(char *buf, size_t size)
    106106{
    107         /* Native getcwd() does not set any errno despite the fact that general
    108          * usage pattern of this function depends on it (caller is repeatedly
    109          * guessing the required size of the buffer by checking for ERANGE on
    110          * failure). */
    111         if (size == 0) {
    112                 errno = EINVAL;
     107        char *p = getcwd(buf, size);
     108
     109        if (p == NULL) {
     110                errno = -errno;
    113111                return NULL;
    114112        }
    115        
    116         /* Save the original value to comply with the "no modification on
    117          * success" semantics.
    118          */
    119         int orig_errno = errno;
    120         errno = EOK;
    121        
    122         char *ret = getcwd(buf, size);
    123         if (ret == NULL) {
    124                 /* Check errno to avoid shadowing other possible errors. */
    125                 if (errno == EOK) {
    126                         errno = ERANGE;
    127                 }
    128         } else {
    129                 /* Success, restore previous errno value. */
    130                 errno = orig_errno;
    131         }
    132        
    133         return ret;
     113
     114        return p;
    134115}
    135116
     
    141122int posix_chdir(const char *path)
    142123{
    143         return errnify(chdir, path);
     124        return negerrno(chdir, path);
    144125}
    145126
     
    194175int posix_close(int fildes)
    195176{
    196         return errnify(close, fildes);
     177        return negerrno(close, fildes);
    197178}
    198179
     
    207188ssize_t posix_read(int fildes, void *buf, size_t nbyte)
    208189{
    209         return errnify(read, fildes, buf, nbyte);
     190        return negerrno(read, fildes, buf, nbyte);
    210191}
    211192
     
    220201ssize_t posix_write(int fildes, const void *buf, size_t nbyte)
    221202{
    222         return errnify(write, fildes, buf, nbyte);
     203        return negerrno(write, fildes, buf, nbyte);
    223204}
    224205
     
    234215posix_off_t posix_lseek(int fildes, posix_off_t offset, int whence)
    235216{
    236         return errnify(lseek, fildes, offset, whence);
     217        return negerrno(lseek, fildes, offset, whence);
    237218}
    238219
     
    245226int posix_fsync(int fildes)
    246227{
    247         return errnify(fsync, fildes);
     228        return negerrno(fsync, fildes);
    248229}
    249230
     
    257238int posix_ftruncate(int fildes, posix_off_t length)
    258239{
    259         return errnify(ftruncate, fildes, (aoff64_t) length);
     240        return negerrno(ftruncate, fildes, (aoff64_t) length);
    260241}
    261242
     
    268249int posix_rmdir(const char *path)
    269250{
    270         return errnify(rmdir, path);
     251        return negerrno(rmdir, path);
    271252}
    272253
     
    279260int posix_unlink(const char *path)
    280261{
    281         return errnify(unlink, path);
     262        return negerrno(unlink, path);
    282263}
    283264
     
    303284int posix_dup2(int fildes, int fildes2)
    304285{
    305         return errnify(dup2, fildes, fildes2);
     286        return negerrno(dup2, fildes, fildes2);
    306287}
    307288
     
    321302                 * Check file existence by attempting to open it.
    322303                 */
    323                 int fd = open(path, O_RDONLY);
     304                int fd = negerrno(open, path, O_RDONLY);
    324305                if (fd < 0) {
    325                         errno = -fd;
     306                        /* errno was set by open() */
    326307                        return -1;
    327308                }
Note: See TracChangeset for help on using the changeset viewer.