Ejemplo n.º 1
0
int a_delitem(MENU *pm,int index){
    if(index<0||!(index<pm->num))
        return -1;
    I_FREE(M_ITEM(pm,index));
    M_ITEM(pm,index)=NULL;
    pm->num--;
    memmove(&pm->p_item[index],&pm->p_item[index+1],((pm->num-index)*sizeof(ITEM**)));
    return 0;
}
Ejemplo n.º 2
0
/* etnlegend, 2006.10.14, 精华区 .Names 文件相关操作修正... */
void a_freenames(MENU *pm){
    if(!pm)
        return;
    while(pm->total){
        pm->total--;
        I_FREE(pm->pool[pm->total]);
    }
    pm->num=0;
    return;
}
Ejemplo n.º 3
0
int main(int argc, char **argv)
{
	int i;
	struct i *h = NULL;

	/* fill list
	 */

	for (i=1; i<argc; i++) {
		I_NEW(h);
		s_copyz(&h->tag, argv[i]);
	}

	if (h == NULL) {
		/* no arguments
		 */
		printf("no arguments supplied\n");
		exit(0);
	}

	/* reverse
	 */

	struct i **r;
	I_REVERSED(r, h);

	/* traverse in original order
	 */

	for (i=0; i<=h->pos; i++) {
		struct i *tmp = r[i];

		fwrite("[", 1, 1, stdout);
		fwrite(tmp->tag.s, tmp->tag.len, 1, stdout);
		fwrite("]\n", 2, 1, stdout);
	}

        /* cleanup
	 */

	{
		struct i *t0=h;
		while (t0) {
			struct i *t1 = t0->tail;
			I_FREE(t0);
			t0 = t1;
		}
		HC_FREE(r);
	}

	return 0;
}