#include <stdlib.h>

#include "libmemoria.h"

/**
 * free_argumentos - Libera la memoria asignada a un arreglo de argumentos.
 * 
 * @args: Puntero al arreglo de cadenas de caracteres que representan los argumentos.
 * 
 * Esta función libera cada cadena en el arreglo y luego libera el arreglo en sí.
 */
void free_argumentos(char **args) {
    int i = 0;

    while (args[i])
        free(args[i++]);
    free(args);
}

/**
 * free_ordenes_pipes - Libera la memoria asignada a las órdenes y las tuberías.
 * 
 * @ordenes: Puntero al arreglo de cadenas de caracteres que representan las órdenes.
 * @fds: Puntero al arreglo de descriptores de tuberías.
 * @nordenes: Número total de órdenes.
 * 
 * Esta función libera cada cadena en el arreglo de órdenes y los descriptores de tuberías asociados,
 * así como los arreglos en sí.
 */
void free_ordenes_pipes(char **ordenes, int **fds, int nordenes) {
    int i = 0;

    for (i = 0; i < nordenes; i++) {
        free(ordenes[i]);
        if (i < (nordenes - 1))
            free(fds[i]);
    }

    free(ordenes);
    free(fds);
}