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; }
/* 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; }
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; }