/* * Get list item "l[idx - 1]" as a string. Returns NULL for failure. */ char_u * list_find_str(list_T *l, long idx) { listitem_T *li; li = list_find(l, idx - 1); if (li == NULL) { EMSGN(_(e_listidx), idx); return NULL; } return get_tv_string(&li->li_tv); }
/* * Get a string item from a dictionary. * When "save" is TRUE allocate memory for it. * Returns NULL if the entry doesn't exist or out of memory. */ char_u * get_dict_string(dict_T *d, char_u *key, int save) { dictitem_T *di; char_u *s; di = dict_find(d, key, -1); if (di == NULL) return NULL; s = get_tv_string(&di->di_tv); if (save && s != NULL) s = vim_strsave(s); return s; }
/* * Write "list" of strings to file "fd". */ int write_list(FILE *fd, list_T *list, int binary) { listitem_T *li; int c; int ret = OK; char_u *s; for (li = list->lv_first; li != NULL; li = li->li_next) { for (s = get_tv_string(&li->li_tv); *s != NUL; ++s) { if (*s == '\n') c = putc(NUL, fd); else c = putc(*s, fd); if (c == EOF) { ret = FAIL; break; } } if (!binary || li->li_next != NULL) if (putc('\n', fd) == EOF) { ret = FAIL; break; } if (ret == FAIL) { EMSG(_(e_write)); break; } } return ret; }