Changes in uspace/lib/posix/sys/stat.c [9b1503e:ec18957a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/posix/sys/stat.c
r9b1503e rec18957a 36 36 #define LIBPOSIX_INTERNAL 37 37 38 #include "../internal/common.h" 38 39 #include "stat.h" 39 #include "../internal/common.h" 40 #include <mem.h> 40 41 #include "../errno.h" 42 #include "../libc/mem.h" 41 43 42 44 /** 43 * Convert HelenOS stat struct into POSIX stat struct (if possible) 45 * Convert HelenOS stat struct into POSIX stat struct (if possible). 44 46 * 45 * @param dest 46 * @param src 47 * @param dest POSIX stat struct. 48 * @param src HelenOS stat struct. 47 49 */ 48 50 static void stat_to_posix(struct posix_stat *dest, struct stat *src) … … 66 68 67 69 /** 70 * Retrieve file status for file associated with file descriptor. 68 71 * 69 * @param fd 70 * @param st 71 * @return 72 * @param fd File descriptor of the opened file. 73 * @param st Status structure to be filled with information. 74 * @return Zero on success, -1 otherwise. 72 75 */ 73 76 int posix_fstat(int fd, struct posix_stat *st) 74 77 { 75 78 struct stat hst; 76 if (fstat(fd, &hst) == -1) { 77 // TODO: propagate a POSIX compatible errno 79 int rc = fstat(fd, &hst); 80 if (rc < 0) { 81 /* fstat() returns negative error code instead of using errno. 82 */ 83 errno = -rc; 78 84 return -1; 79 85 } … … 83 89 84 90 /** 91 * Retrieve file status for symbolic link. 85 92 * 86 * @param path 87 * @param st 88 * @return 93 * @param path Path to the symbolic link. 94 * @param st Status structure to be filled with information. 95 * @return Zero on success, -1 otherwise. 89 96 */ 90 int posix_lstat(const char * restrict path, struct posix_stat *restrictst)97 int posix_lstat(const char *path, struct posix_stat *st) 91 98 { 92 / / TODO93 not_implemented();99 /* There are currently no symbolic links in HelenOS. */ 100 return posix_stat(path, st); 94 101 } 95 102 96 103 /** 104 * Retrieve file status for regular file (or symbolic link target). 97 105 * 98 * @param path 99 * @param st 100 * @return 106 * @param path Path to the file/link. 107 * @param st Status structure to be filled with information. 108 * @return Zero on success, -1 otherwise. 101 109 */ 102 110 int posix_stat(const char *path, struct posix_stat *st) 103 111 { 104 112 struct stat hst; 105 if (stat(path, &hst) == -1) { 106 // TODO: propagate a POSIX compatible errno 113 int rc = stat(path, &hst); 114 if (rc < 0) { 115 /* stat() returns negative error code instead of using errno. 116 */ 117 errno = -rc; 107 118 return -1; 108 119 } … … 112 123 113 124 /** 125 * Change permission bits for the file if possible. 114 126 * 115 * @param path 116 * @param mode 117 * @return 127 * @param path Path to the file. 128 * @param mode Permission bits to be set. 129 * @return Zero on success, -1 otherwise. 118 130 */ 119 131 int posix_chmod(const char *path, mode_t mode) 120 132 { 121 / / TODO122 not_implemented();133 /* HelenOS doesn't support permissions, return success. */ 134 return 0; 123 135 } 124 136 125 137 /** 138 * Set the file mode creation mask of the process. 126 139 * 127 * @param mask 128 * @return 140 * @param mask Set permission bits are cleared in the related creation 141 * functions. Non-permission bits are ignored. 142 * @return Previous file mode creation mask. 129 143 */ 130 144 mode_t posix_umask(mode_t mask) 131 145 { 132 / / TODO133 not_implemented();146 /* HelenOS doesn't support permissions, return empty mask. */ 147 return 0; 134 148 } 135 149
Note:
See TracChangeset
for help on using the changeset viewer.