static int add_addrinfo_to_list (struct addrlist *lp, struct addrinfo *a, void (*freefn)(void *), void *data) { int err; dprint("\tadding %p=%A to %p (naddrs=%d space=%d)\n", a, a, lp, lp->naddrs, lp->space); if (lp->naddrs == lp->space) { err = grow_list (lp, 1); if (err) { Tprintf ("grow_list failed %d\n", err); return err; } } Tprintf("setting element %d\n", lp->naddrs); lp->addrs[lp->naddrs].ai = a; lp->addrs[lp->naddrs].freefn = freefn; lp->addrs[lp->naddrs].data = data; lp->naddrs++; Tprintf ("\tcount is now %d: ", lp->naddrs); print_addrlist(lp); Tprintf("\n"); return 0; }
HRESULT loEnum<BASE,ITEM,IFACE>::add_item(ITEM *src) { HRESULT hr; if (base || total > count) return E_FAIL; if (!src) return E_INVALIDARG; if (total >= count && !grow_list(total + 1)) return E_OUTOFMEMORY; if (S_OK == (hr = clone_item(&list[total], src))) total++; return hr; }
/* * prepend an item to the list -- i.e. add to beginning */ void alist::prepend(void *item) { grow_list(); if (num_items == 0) { items[num_items++] = item; return; } for (int i=num_items; i > 0; i--) { items[i] = items[i-1]; } items[0] = item; num_items++; }
void ev_arraylist_insert(ev_arraylist *al, size_t index, void *d) { assert(index < (al->top+1)); if( al->top >= al->len ) { grow_list(al); } memmove(al->buff + index + 1, al->buff + index, (al->top - index) * sizeof(void*)); al->buff[index] = d; al->top++; }
static int handle_dirent (dir_list * list, const char *fltr, struct dirent *dp, struct stat *buf1, int next_free, int *link_to_dir, int *stale_link) { vfs_path_t *vpath; if (dp->d_name[0] == '.' && dp->d_name[1] == 0) return 0; if (dp->d_name[0] == '.' && dp->d_name[1] == '.' && dp->d_name[2] == 0) return 0; if (!panels_options.show_dot_files && (dp->d_name[0] == '.')) return 0; if (!panels_options.show_backups && dp->d_name[NLENGTH (dp) - 1] == '~') return 0; vpath = vfs_path_from_str (dp->d_name); if (mc_lstat (vpath, buf1) == -1) { /* * lstat() fails - such entries should be identified by * buf1->st_mode being 0. * It happens on QNX Neutrino for /fs/cd0 if no CD is inserted. */ memset (buf1, 0, sizeof (*buf1)); } if (S_ISDIR (buf1->st_mode)) tree_store_mark_checked (dp->d_name); /* A link to a file or a directory? */ *link_to_dir = 0; *stale_link = 0; if (S_ISLNK (buf1->st_mode)) { struct stat buf2; if (mc_stat (vpath, &buf2) == 0) *link_to_dir = S_ISDIR (buf2.st_mode) != 0; else *stale_link = 1; } vfs_path_free (vpath); if (!(S_ISDIR (buf1->st_mode) || *link_to_dir) && (fltr != NULL) && !mc_search (fltr, dp->d_name, MC_SEARCH_T_GLOB)) return 0; /* Need to grow the *list? */ if (next_free == list->size && !grow_list (list)) return -1; return 1; }
gboolean set_zero_dir (dir_list * list) { /* Need to grow the *list? */ if (list->size == 0 && !grow_list (list)) return FALSE; memset (&(list->list)[0], 0, sizeof (file_entry)); list->list[0].fnamelen = 2; list->list[0].fname = g_strndup ("..", list->list[0].fnamelen); list->list[0].f.link_to_dir = 0; list->list[0].f.stale_link = 0; list->list[0].f.dir_size_computed = 0; list->list[0].f.marked = 0; list->list[0].st.st_mode = 040755; return TRUE; }
ev_err_t ev_arraylist_push_ex(ev_arraylist *al, void *d) { ev_err_t err; assert(al); if(al->top >= al->len) { err = grow_list(al); if(err) { return err; } } al->buff[al->top] = d; al->top++; return EV_OK; }
int handle_path (dir_list * list, const char *path, struct stat *buf1, int next_free, int *link_to_dir, int *stale_link) { vfs_path_t *vpath; if (path[0] == '.' && path[1] == 0) return 0; if (path[0] == '.' && path[1] == '.' && path[2] == 0) return 0; vpath = vfs_path_from_str (path); if (mc_lstat (vpath, buf1) == -1) { vfs_path_free (vpath); return 0; } if (S_ISDIR (buf1->st_mode)) tree_store_mark_checked (path); /* A link to a file or a directory? */ *link_to_dir = 0; *stale_link = 0; if (S_ISLNK (buf1->st_mode)) { struct stat buf2; if (mc_stat (vpath, &buf2) == 0) *link_to_dir = S_ISDIR (buf2.st_mode) != 0; else *stale_link = 1; } vfs_path_free (vpath); /* Need to grow the *list? */ if (next_free == list->size && !grow_list (list)) return -1; return 1; }
/* * Append an item to the list */ void alist::append(void *item) { grow_list(); items[num_items++] = item; }