#include "queue.h" #include void queue_init(struct queue *q) { q->first = NULL; q->last = NULL; } void queue_push(struct queue *q, char *word) { struct word_item *tmp = malloc(sizeof(struct word_item)); tmp->word = word; tmp->next = NULL; if(!q->first) { q->first = tmp; q->last = q->first; } else { q->last->next = tmp; q->last = q->last->next; } } void queue_clear(struct queue *q) { struct word_item *tmp; while(q->first) { tmp = q->first; q->first = q->first->next; free(tmp->word); free(tmp); } q->last = NULL; } #if 0 void queue_processing(const struct queue *q, void (*callback)(char*)) { struct word_item *tmp; tmp = q->first; while(tmp) { callback(tmp->word); tmp = tmp->next; } } #endif int queue_get_word_count(const struct queue *q) { struct word_item *tmp; int counter; for(counter = 0, tmp = q->first; tmp; tmp = tmp->next, ++counter) {} return counter; } void queue_copy_words_to_args(const struct queue *q, char **cmdline) { struct word_item *tmp; int mas_idx; for(tmp = q->first, mas_idx = 0; tmp; tmp = tmp->next, ++mas_idx) cmdline[mas_idx] = tmp->word; cmdline[mas_idx] = NULL; }