Changeset 0b97336 in mainline for uspace/lib/c/generic/vfs/vfs.c
- Timestamp:
- 2017-03-18T15:13:28Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 38aaf005
- Parents:
- c725619
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/vfs/vfs.c
rc725619 r0b97336 395 395 assert((((oflag & O_RDONLY) != 0) + ((oflag & O_WRONLY) != 0) + ((oflag & O_RDWR) != 0)) == 1); 396 396 397 int ret = vfs_lookup(path, walk_flags(oflag) | WALK_REGULAR); 398 if (ret < 0) { 399 return ret; 397 int fd = vfs_lookup(path, walk_flags(oflag) | WALK_REGULAR); 398 if (fd < 0) { 399 errno = fd; 400 return -1; 400 401 } 401 402 … … 406 407 ((oflag & O_APPEND) ? MODE_APPEND : 0); 407 408 408 int rc = _vfs_open( ret, mode);409 int rc = _vfs_open(fd, mode); 409 410 if (rc < 0) { 410 // _vfs_put(ret);411 close(ret);412 return rc;411 close(fd); 412 errno = rc; 413 return -1; 413 414 } 414 415 … … 417 418 assert(!(oflag & O_APPEND)); 418 419 419 // _vfs_resize 420 (void) ftruncate(ret, 0); 421 } 422 423 return ret; 420 (void) ftruncate(fd, 0); 421 } 422 423 return fd; 424 424 } 425 425 … … 723 723 int fd = vfs_lookup(path, 0); 724 724 if (fd < 0) { 725 return fd; 725 errno = fd; 726 return -1; 726 727 } 727 728 728 729 int rc = fstat(fd, stat); 729 close(fd); 730 if (rc != EOK) { 731 close(fd); 732 errno = rc; 733 rc = -1; 734 } else 735 rc = close(fd); 736 730 737 return rc; 731 738 } … … 745 752 } 746 753 747 int ret= vfs_lookup(dirname, WALK_DIRECTORY);748 if ( ret< 0) {754 int fd = vfs_lookup(dirname, WALK_DIRECTORY); 755 if (fd < 0) { 749 756 free(dirp); 750 errno = ret;757 errno = fd; 751 758 return NULL; 752 759 } 753 760 754 int rc = _vfs_open( ret, MODE_READ);761 int rc = _vfs_open(fd, MODE_READ); 755 762 if (rc < 0) { 756 763 free(dirp); 757 close( ret);764 close(fd); 758 765 errno = rc; 759 766 return NULL; 760 767 } 761 768 762 dirp->fd = ret;769 dirp->fd = fd; 763 770 return dirp; 764 771 } … … 818 825 int mkdir(const char *path, mode_t mode) 819 826 { 820 int ret= vfs_lookup(path, WALK_MUST_CREATE | WALK_DIRECTORY);821 if ( ret< 0) {822 return ret;823 }824 825 close(ret);826 return EOK;827 int fd = vfs_lookup(path, WALK_MUST_CREATE | WALK_DIRECTORY); 828 if (fd < 0) { 829 errno = fd; 830 return -1; 831 } 832 833 return close(fd); 827 834 } 828 835 … … 858 865 char *pa = vfs_absolutize(path, &pa_size); 859 866 if (!pa) { 860 return ENOMEM; 867 errno = ENOMEM; 868 return -1; 861 869 } 862 870 … … 864 872 if (root < 0) { 865 873 free(pa); 866 return ENOENT; 874 errno = ENOENT; 875 return -1; 867 876 } 868 877 869 878 int rc = _vfs_unlink2(root, pa, -1, 0); 870 879 880 if (rc != EOK) { 881 errno = rc; 882 rc = -1; 883 } 884 871 885 free(pa); 872 886 close(root); … … 884 898 char *pa = vfs_absolutize(path, &pa_size); 885 899 if (!pa) { 886 return ENOMEM; 900 errno = ENOMEM; 901 return -1; 887 902 } 888 903 … … 890 905 if (root < 0) { 891 906 free(pa); 892 return ENOENT; 907 errno = ENOENT; 908 return -1; 893 909 } 894 910 895 911 int rc = _vfs_unlink2(root, pa, -1, WALK_DIRECTORY); 912 913 if (rc != EOK) { 914 errno = rc; 915 rc = -1; 916 } 896 917 897 918 free(pa); … … 933 954 free(olda); 934 955 free(newa); 935 return ENOENT; 956 errno = ENOENT; 957 return -1; 936 958 } 937 959 … … 1000 1022 size_t abs_size; 1001 1023 char *abs = vfs_absolutize(path, &abs_size); 1002 if (!abs) 1003 return ENOMEM; 1024 if (!abs) { 1025 errno = ENOMEM; 1026 return -1; 1027 } 1004 1028 1005 1029 int fd = vfs_lookup(abs, WALK_DIRECTORY); … … 1134 1158 dir = opendir(path); 1135 1159 if (!dir) 1136 return -1;1160 return ENOENT; 1137 1161 1138 1162 while ((dirent = readdir(dir)) != NULL) { … … 1144 1168 if (rc < 0) { 1145 1169 closedir(dir); 1146 errno = rc; 1147 return -1; 1170 return rc; 1148 1171 } 1149 1172 … … 1152 1175 free(child); 1153 1176 closedir(dir); 1154 errno = rc; 1155 return -1; 1177 return rc; 1156 1178 } 1157 1179
Note:
See TracChangeset
for help on using the changeset viewer.