#include "queue.h" #include void w_queue_clear(struct w_queue *q) { struct word_item *tmp; while(q->first) { tmp = q->first; q->first = q->first->next; free(tmp); } q->last = NULL; } int w_queue_get_word_count(const struct w_queue *q) { struct word_item *tmp; int counter; for(counter = 0, tmp = q->first; tmp; tmp = tmp->next, ++counter) {} return counter; } void w_queue_copy_words_to_args(const struct w_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; } void c_queue_init(struct c_queue *q) { q->first = NULL; q->last = NULL; q->last_extracted_item = NULL; } int c_queue_is_empty(struct c_queue *q) { return q->last_extracted_item->next == NULL; } char** c_queue_pop(struct c_queue *q) { if(!q->last_extracted_item) { if(q->first) { q->last_extracted_item = q->first; return q->last_extracted_item->cmdline; } return NULL; } else { if(q->last_extracted_item->next) { q->last_extracted_item = q->last_extracted_item->next; return q->last_extracted_item->cmdline; } return NULL; } } void c_queue_clear(struct c_queue *q) { struct cmdline_item *tmp = NULL; while(q->first) { int i; for(i = 0; q->first->cmdline[i]; ++i) free(q->first->cmdline[i]); free(q->first->cmdline); tmp = q->first; q->first = q->first->next; free(tmp); } q->last = NULL; q->last_extracted_item = NULL; } int p_queue_find_pid(struct p_queue *q, int pid) { struct pid_item *tmp = q->first; while(tmp) { if(tmp->pid == pid) return 1; tmp = tmp->next; } return 0; } int p_queue_get_process_quantity(struct p_queue *q) { int counter = 0; struct pid_item *tmp = q->first; while(tmp) { ++counter; tmp = tmp->next; } return counter; } void p_queue_clear(struct p_queue *q) { struct pid_item *tmp = NULL; while(q->first) { tmp = q->first; q->first = q->first->next; free(tmp); } q->last = NULL; }