Subversion Repositories HelenOS

Rev

Rev 4207 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4207 Rev 4220
Line 64... Line 64...
64
ofw_tree_getprop(const ofw_tree_node_t *node, const char *name)
64
ofw_tree_getprop(const ofw_tree_node_t *node, const char *name)
65
{
65
{
66
    unsigned int i;
66
    unsigned int i;
67
   
67
   
68
    for (i = 0; i < node->properties; i++) {
68
    for (i = 0; i < node->properties; i++) {
69
        if (strcmp(node->property[i].name, name) == 0)
69
        if (str_cmp(node->property[i].name, name) == 0)
70
            return &node->property[i];
70
            return &node->property[i];
71
    }
71
    }
72
 
72
 
73
    return NULL;
73
    return NULL;
74
}
74
}
Line 107... Line 107...
107
   
107
   
108
    /*
108
    /*
109
     * Try to find the disambigued name.
109
     * Try to find the disambigued name.
110
     */
110
     */
111
    for (cur = node->child; cur; cur = cur->peer) {
111
    for (cur = node->child; cur; cur = cur->peer) {
112
        if (strcmp(cur->da_name, name) == 0)
112
        if (str_cmp(cur->da_name, name) == 0)
113
            return cur;
113
            return cur;
114
    }
114
    }
115
   
115
   
116
    /*
116
    /*
117
     * Disambigued name not found.
117
     * Disambigued name not found.
Line 119... Line 119...
119
     *
119
     *
120
     * We need to do this because paths stored in "/aliases"
120
     * We need to do this because paths stored in "/aliases"
121
     * are not always fully-qualified.
121
     * are not always fully-qualified.
122
     */
122
     */
123
    for (cur = node->child; cur; cur = cur->peer) {
123
    for (cur = node->child; cur; cur = cur->peer) {
124
        if (strcmp(ofw_tree_node_name(cur), name) == 0)
124
        if (str_cmp(ofw_tree_node_name(cur), name) == 0)
125
            return cur;
125
            return cur;
126
    }
126
    }
127
       
127
       
128
    return NULL;
128
    return NULL;
129
}
129
}
Line 144... Line 144...
144
   
144
   
145
    for (cur = node->child; cur; cur = cur->peer) {
145
    for (cur = node->child; cur; cur = cur->peer) {
146
        prop = ofw_tree_getprop(cur, "device_type");
146
        prop = ofw_tree_getprop(cur, "device_type");
147
        if (!prop || !prop->value)
147
        if (!prop || !prop->value)
148
            continue;
148
            continue;
149
        if (strcmp(prop->value, name) == 0)
149
        if (str_cmp(prop->value, name) == 0)
150
            return cur;
150
            return cur;
151
    }
151
    }
152
           
152
           
153
    return NULL;
153
    return NULL;
154
}
154
}
Line 201... Line 201...
201
   
201
   
202
    for (cur = node->peer; cur; cur = cur->peer) {
202
    for (cur = node->peer; cur; cur = cur->peer) {
203
        prop = ofw_tree_getprop(cur, "device_type");
203
        prop = ofw_tree_getprop(cur, "device_type");
204
        if (!prop || !prop->value)
204
        if (!prop || !prop->value)
205
            continue;
205
            continue;
206
        if (strcmp(prop->value, name) == 0)
206
        if (str_cmp(prop->value, name) == 0)
207
            return cur;
207
            return cur;
208
    }
208
    }
209
           
209
           
210
    return NULL;
210
    return NULL;
211
}
211
}
Line 227... Line 227...
227
   
227
   
228
    for (cur = node->peer; cur; cur = cur->peer) {
228
    for (cur = node->peer; cur; cur = cur->peer) {
229
        prop = ofw_tree_getprop(cur, "name");
229
        prop = ofw_tree_getprop(cur, "name");
230
        if (!prop || !prop->value)
230
        if (!prop || !prop->value)
231
            continue;
231
            continue;
232
        if (strcmp(prop->value, name) == 0)
232
        if (str_cmp(prop->value, name) == 0)
233
            return cur;
233
            return cur;
234
    }
234
    }
235
           
235
           
236
    return NULL;
236
    return NULL;
237
}
237
}
Line 250... Line 250...
250
    index_t i, j;
250
    index_t i, j;
251
   
251
   
252
    if (path[0] != '/')
252
    if (path[0] != '/')
253
        return NULL;
253
        return NULL;
254
   
254
   
255
    for (i = 1; i < str_size(path) && node; i = j + 1) {
255
    for (i = 1; (i < str_size(path)) && (node); i = j + 1) {
256
        for (j = i; j < str_size(path) && path[j] != '/'; j++)
256
        for (j = i; (j < str_size(path)) && (path[j] != '/'); j++);
257
            ;
257
       
258
        if (i == j) /* skip extra slashes */
258
        /* Skip extra slashes */
-
 
259
        if (i == j)
259
            continue;
260
            continue;
260
           
261
       
261
        memcpy(buf, &path[i], j - i);
262
        memcpy(buf, &path[i], j - i);
262
        buf[j - i] = '\0';
263
        buf[j - i] = 0;
263
        node = ofw_tree_find_child(node, buf);
264
        node = ofw_tree_find_child(node, buf);
264
    }
265
    }
265
   
266
   
266
    return node;
267
    return node;
267
}
268
}