Lines Matching refs:ptr

276 node_trav(EditLine *el, keymacro_node_t *ptr, wchar_t *ch,  in node_trav()  argument
280 if (ptr->ch == *ch) { in node_trav()
282 if (ptr->next) { in node_trav()
286 return node_trav(el, ptr->next, ch, val); in node_trav()
288 *val = ptr->val; in node_trav()
289 if (ptr->type != XK_CMD) in node_trav()
291 return ptr->type; in node_trav()
295 if (ptr->sibling) { in node_trav()
297 return node_trav(el, ptr->sibling, ch, val); in node_trav()
311 node__try(EditLine *el, keymacro_node_t *ptr, const wchar_t *str, in node__try() argument
315 if (ptr->ch != *str) { in node__try()
318 for (xm = ptr; xm->sibling != NULL; xm = xm->sibling) in node__try()
323 ptr = xm->sibling; in node__try()
327 if (ptr->next != NULL) { in node__try()
328 node__put(el, ptr->next); in node__try()
330 ptr->next = NULL; in node__try()
332 switch (ptr->type) { in node__try()
337 if (ptr->val.str) in node__try()
338 free(ptr->val.str); in node__try()
342 ptr->type)); in node__try()
346 switch (ptr->type = ntype) { in node__try()
348 ptr->val = *val; in node__try()
351 if ((ptr->val.str = wcsdup(val->str)) == NULL) in node__try()
360 if (ptr->next == NULL) in node__try()
361 ptr->next = node__get(*str); /* setup new node */ in node__try()
362 (void) node__try(el, ptr->next, str, val, ntype); in node__try()
374 keymacro_node_t *ptr; in node__delete() local
377 ptr = *inptr; in node__delete()
379 if (ptr->ch != *str) { in node__delete()
382 for (xm = ptr; xm->sibling != NULL; xm = xm->sibling) in node__delete()
388 ptr = xm->sibling; in node__delete()
393 *inptr = ptr->sibling; in node__delete()
395 prev_ptr->sibling = ptr->sibling; in node__delete()
396 ptr->sibling = NULL; in node__delete()
397 node__put(el, ptr); in node__delete()
399 } else if (ptr->next != NULL && in node__delete()
400 node__delete(el, &ptr->next, str) == 1) { in node__delete()
401 if (ptr->next != NULL) in node__delete()
404 *inptr = ptr->sibling; in node__delete()
406 prev_ptr->sibling = ptr->sibling; in node__delete()
407 ptr->sibling = NULL; in node__delete()
408 node__put(el, ptr); in node__delete()
420 node__put(EditLine *el, keymacro_node_t *ptr) in node__put() argument
422 if (ptr == NULL) in node__put()
425 if (ptr->next != NULL) { in node__put()
426 node__put(el, ptr->next); in node__put()
427 ptr->next = NULL; in node__put()
429 node__put(el, ptr->sibling); in node__put()
431 switch (ptr->type) { in node__put()
436 if (ptr->val.str != NULL) in node__put()
437 free(ptr->val.str); in node__put()
440 EL_ABORT((el->el_errfile, "Bad XK_ type %d\n", ptr->type)); in node__put()
443 free(ptr); in node__put()
453 keymacro_node_t *ptr; in node__get() local
455 ptr = malloc(sizeof(*ptr)); in node__get()
456 if (ptr == NULL) in node__get()
458 ptr->ch = ch; in node__get()
459 ptr->type = XK_NOD; in node__get()
460 ptr->val.str = NULL; in node__get()
461 ptr->next = NULL; in node__get()
462 ptr->sibling = NULL; in node__get()
463 return ptr; in node__get()
481 node_lookup(EditLine *el, const wchar_t *str, keymacro_node_t *ptr, in node_lookup() argument
486 if (ptr == NULL) in node_lookup()
491 (void) node_enum(el, ptr, cnt); in node_lookup()
495 if (ptr->ch == *str) { in node_lookup()
498 KEY_BUFSIZ - cnt, ptr->ch); in node_lookup()
501 if (ptr->next != NULL) in node_lookup()
503 return (node_lookup(el, str + 1, ptr->next, in node_lookup()
511 &ptr->val, ptr->type); in node_lookup()
519 if (ptr->sibling) in node_lookup()
520 return (node_lookup(el, str, ptr->sibling, in node_lookup()
533 node_enum(EditLine *el, keymacro_node_t *ptr, size_t cnt) in node_enum() argument
546 if (ptr == NULL) { in node_enum()
555 ptr->ch); in node_enum()
556 if (ptr->next == NULL) { in node_enum()
560 keymacro_kprint(el, el->el_keymacro.buf, &ptr->val, ptr->type); in node_enum()
562 (void) node_enum(el, ptr->next, cnt + used); in node_enum()
565 if (ptr->sibling) in node_enum()
566 (void) node_enum(el, ptr->sibling, cnt); in node_enum()