Changes in / [2afc54d:fd89cf9] in mainline


Ignore:
Location:
uspace/srv/devman
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/devman/devman.c

    r2afc54d rfd89cf9  
    266266        }
    267267       
    268         ssize_t read_bytes = safe_read(fd, buf, len);
    269         if (read_bytes <= 0) {
     268        if (read(fd, buf, len) <= 0) {
    270269                printf(NAME ": unable to read file '%s'.\n", conf_path);
    271270                goto cleanup;
    272271        }
    273         buf[read_bytes] = 0;
     272        buf[len] = 0;
    274273       
    275274        suc = parse_match_ids(buf, ids);
     
    11241123fun_node_t *find_fun_node_by_path(dev_tree_t *tree, char *path)
    11251124{
    1126         assert(path != NULL);
    1127 
    1128         bool is_absolute = path[0] == '/';
    1129         if (!is_absolute) {
    1130                 return NULL;
    1131         }
    1132 
    11331125        fibril_rwlock_read_lock(&tree->rwlock);
    11341126       
     
    11401132        char *rel_path = path;
    11411133        char *next_path_elem = NULL;
    1142         bool cont = true;
     1134        bool cont = (rel_path[0] == '/');
    11431135       
    11441136        while (cont && fun != NULL) {
  • uspace/srv/devman/main.c

    r2afc54d rfd89cf9  
    477477                dev = fun->dev;
    478478
    479         /*
    480          * For a valid function to connect to we need a device. The root
    481          * function, for example, has no device and cannot be connected to.
    482          * This means @c dev needs to be valid regardless whether we are
    483          * connecting to a device or to a function.
    484          */
    485         if (dev == NULL) {
     479        if (fun == NULL && dev == NULL) {
    486480                printf(NAME ": devman_forward error - no device or function with "
    487481                    "handle %" PRIun " was found.\n", handle);
  • uspace/srv/devman/util.c

    r2afc54d rfd89cf9  
    111111}
    112112
    113 ssize_t safe_read(int fd, void *buffer, size_t size)
    114 {
    115         if (size == 0) {
    116                 return 0;
    117         }
    118 
    119         uint8_t *buf_ptr = (uint8_t *) buffer;
    120 
    121         size_t total_read = 0;
    122         while (total_read < size) {
    123                 ssize_t bytes_read = read(fd, buf_ptr, size - total_read);
    124                 if (bytes_read < 0) {
    125                         /* Error. */
    126                         return bytes_read;
    127                 } else if (bytes_read == 0) {
    128                         /* Possibly end of file. */
    129                         break;
    130                 } else {
    131                         /* Read at least something. */
    132                         buf_ptr += bytes_read;
    133                         total_read += bytes_read;
    134                 }
    135         }
    136 
    137         return (ssize_t) total_read;
    138 }
    139 
    140113/** @}
    141114 */
  • uspace/srv/devman/util.h

    r2afc54d rfd89cf9  
    4747extern void replace_char(char *, char, char);
    4848
    49 extern ssize_t safe_read(int, void *, size_t);
    50 
    5149#endif
    5250
Note: See TracChangeset for help on using the changeset viewer.