Lines Matching refs:ptr
283 node_trav(EditLine *el, keymacro_node_t *ptr, Char *ch, keymacro_value_t *val) in node_trav() argument
287 if (ptr->ch == *ch) { in node_trav()
289 if (ptr->next) { in node_trav()
297 return node_trav(el, ptr->next, ch, val); in node_trav()
299 *val = ptr->val; in node_trav()
300 if (ptr->type != XK_CMD) in node_trav()
302 return ptr->type; in node_trav()
306 if (ptr->sibling) { in node_trav()
308 return node_trav(el, ptr->sibling, ch, val); in node_trav()
322 node__try(EditLine *el, keymacro_node_t *ptr, const Char *str, in node__try() argument
326 if (ptr->ch != *str) { in node__try()
329 for (xm = ptr; xm->sibling != NULL; xm = xm->sibling) in node__try()
334 ptr = xm->sibling; in node__try()
338 if (ptr->next != NULL) { in node__try()
339 node__put(el, ptr->next); in node__try()
341 ptr->next = NULL; in node__try()
343 switch (ptr->type) { in node__try()
349 if (ptr->val.str) in node__try()
350 el_free(ptr->val.str); in node__try()
354 ptr->type)); in node__try()
358 switch (ptr->type = ntype) { in node__try()
360 ptr->val = *val; in node__try()
364 if ((ptr->val.str = Strdup(val->str)) == NULL) in node__try()
373 if (ptr->next == NULL) in node__try()
374 ptr->next = node__get(*str); /* setup new node */ in node__try()
375 (void) node__try(el, ptr->next, str, val, ntype); in node__try()
387 keymacro_node_t *ptr; in node__delete() local
390 ptr = *inptr; in node__delete()
392 if (ptr->ch != *str) { in node__delete()
395 for (xm = ptr; xm->sibling != NULL; xm = xm->sibling) in node__delete()
401 ptr = xm->sibling; in node__delete()
406 *inptr = ptr->sibling; in node__delete()
408 prev_ptr->sibling = ptr->sibling; in node__delete()
409 ptr->sibling = NULL; in node__delete()
410 node__put(el, ptr); in node__delete()
412 } else if (ptr->next != NULL && in node__delete()
413 node__delete(el, &ptr->next, str) == 1) { in node__delete()
414 if (ptr->next != NULL) in node__delete()
417 *inptr = ptr->sibling; in node__delete()
419 prev_ptr->sibling = ptr->sibling; in node__delete()
420 ptr->sibling = NULL; in node__delete()
421 node__put(el, ptr); in node__delete()
433 node__put(EditLine *el, keymacro_node_t *ptr) in node__put() argument
435 if (ptr == NULL) in node__put()
438 if (ptr->next != NULL) { in node__put()
439 node__put(el, ptr->next); in node__put()
440 ptr->next = NULL; in node__put()
442 node__put(el, ptr->sibling); in node__put()
444 switch (ptr->type) { in node__put()
450 if (ptr->val.str != NULL) in node__put()
451 el_free(ptr->val.str); in node__put()
454 EL_ABORT((el->el_errfile, "Bad XK_ type %d\n", ptr->type)); in node__put()
457 el_free(ptr); in node__put()
467 keymacro_node_t *ptr; in node__get() local
469 ptr = el_malloc(sizeof(*ptr)); in node__get()
470 if (ptr == NULL) in node__get()
472 ptr->ch = (Char)ch; in node__get()
473 ptr->type = XK_NOD; in node__get()
474 ptr->val.str = NULL; in node__get()
475 ptr->next = NULL; in node__get()
476 ptr->sibling = NULL; in node__get()
477 return ptr; in node__get()
495 node_lookup(EditLine *el, const Char *str, keymacro_node_t *ptr, size_t cnt) in node_lookup() argument
499 if (ptr == NULL) in node_lookup()
504 (void) node_enum(el, ptr, cnt); in node_lookup()
508 if (ptr->ch == *str) { in node_lookup()
511 KEY_BUFSIZ - cnt, ptr->ch); in node_lookup()
514 if (ptr->next != NULL) in node_lookup()
516 return (node_lookup(el, str + 1, ptr->next, in node_lookup()
525 &ptr->val, ptr->type); in node_lookup()
533 if (ptr->sibling) in node_lookup()
534 return (node_lookup(el, str, ptr->sibling, in node_lookup()
547 node_enum(EditLine *el, keymacro_node_t *ptr, size_t cnt) in node_enum() argument
560 if (ptr == NULL) { in node_enum()
569 ptr->ch); in node_enum()
570 if (ptr->next == NULL) { in node_enum()
574 keymacro_kprint(el, el->el_keymacro.buf, &ptr->val, ptr->type); in node_enum()
576 (void) node_enum(el, ptr->next, cnt + (size_t)used); in node_enum()
579 if (ptr->sibling) in node_enum()
580 (void) node_enum(el, ptr->sibling, cnt); in node_enum()