Beispiel #1
0
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;
}
Beispiel #3
0
/*
 * 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++;
}
Beispiel #4
0
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++;
}
Beispiel #5
0
Datei: dir.c Projekt: Chainie/mc
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;
}
Beispiel #6
0
Datei: dir.c Projekt: Chainie/mc
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;
}
Beispiel #7
0
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;
}
Beispiel #8
0
Datei: dir.c Projekt: Chainie/mc
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;
}
Beispiel #9
0
/*
 * Append an item to the list
 */
void alist::append(void *item) {
   grow_list();
   items[num_items++] = item;
}