Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/posix/sys/stat.c

    reca52a8 r9b1503e  
    3636#define LIBPOSIX_INTERNAL
    3737
     38#include "stat.h"
    3839#include "../internal/common.h"
    39 #include "stat.h"
    40 
    41 #include "../errno.h"
    42 #include "../libc/mem.h"
     40#include <mem.h>
    4341
    4442/**
    45  * Convert HelenOS stat struct into POSIX stat struct (if possible).
     43 * Convert HelenOS stat struct into POSIX stat struct (if possible)
    4644 *
    47  * @param dest POSIX stat struct.
    48  * @param src HelenOS stat struct.
     45 * @param dest
     46 * @param src
    4947 */
    5048static void stat_to_posix(struct posix_stat *dest, struct stat *src)
     
    5351       
    5452        dest->st_dev = src->device;
    55         dest->st_ino = src->index;
    5653       
    5754        /* HelenOS doesn't support permissions, so we set them all */
     
    6966
    7067/**
    71  * Retrieve file status for file associated with file descriptor.
    7268 *
    73  * @param fd File descriptor of the opened file.
    74  * @param st Status structure to be filled with information.
    75  * @return Zero on success, -1 otherwise.
     69 * @param fd
     70 * @param st
     71 * @return
    7672 */
    7773int posix_fstat(int fd, struct posix_stat *st)
    7874{
    7975        struct stat hst;
    80         int rc = fstat(fd, &hst);
    81         if (rc < 0) {
    82                 /* fstat() returns negative error code instead of using errno.
    83                  */
    84                 errno = -rc;
     76        if (fstat(fd, &hst) == -1) {
     77                // TODO: propagate a POSIX compatible errno
    8578                return -1;
    8679        }
     
    9083
    9184/**
    92  * Retrieve file status for symbolic link.
    9385 *
    94  * @param path Path to the symbolic link.
    95  * @param st Status structure to be filled with information.
    96  * @return Zero on success, -1 otherwise.
     86 * @param path
     87 * @param st
     88 * @return
    9789 */
    98 int posix_lstat(const char *path, struct posix_stat *st)
     90int posix_lstat(const char *restrict path, struct posix_stat *restrict st)
    9991{
    100         /* There are currently no symbolic links in HelenOS. */
    101         return posix_stat(path, st);
     92        // TODO
     93        not_implemented();
    10294}
    10395
    10496/**
    105  * Retrieve file status for regular file (or symbolic link target).
    10697 *
    107  * @param path Path to the file/link.
    108  * @param st Status structure to be filled with information.
    109  * @return Zero on success, -1 otherwise.
     98 * @param path
     99 * @param st
     100 * @return
    110101 */
    111102int posix_stat(const char *path, struct posix_stat *st)
    112103{
    113104        struct stat hst;
    114         int rc = stat(path, &hst);
    115         if (rc < 0) {
    116                 /* stat() returns negative error code instead of using errno.
    117                  */
    118                 errno = -rc;
     105        if (stat(path, &hst) == -1) {
     106                // TODO: propagate a POSIX compatible errno
    119107                return -1;
    120108        }
     
    124112
    125113/**
    126  * Change permission bits for the file if possible.
    127114 *
    128  * @param path Path to the file.
    129  * @param mode Permission bits to be set.
    130  * @return Zero on success, -1 otherwise.
     115 * @param path
     116 * @param mode
     117 * @return
    131118 */
    132119int posix_chmod(const char *path, mode_t mode)
    133120{
    134         /* HelenOS doesn't support permissions, return success. */
    135         return 0;
     121        // TODO
     122        not_implemented();
    136123}
    137124
    138125/**
    139  * Set the file mode creation mask of the process.
    140126 *
    141  * @param mask Set permission bits are cleared in the related creation
    142  *     functions. Non-permission bits are ignored.
    143  * @return Previous file mode creation mask.
     127 * @param mask
     128 * @return
    144129 */
    145130mode_t posix_umask(mode_t mask)
    146131{
    147         /* HelenOS doesn't support permissions, return empty mask. */
    148         return 0;
     132        // TODO
     133        not_implemented();
    149134}
    150135
Note: See TracChangeset for help on using the changeset viewer.