/**
  * Pede uma palavra e pega a man_pages_positions(palavra) a lista de
  * de índices que possuem a palavra pesquisada.
  * Traduz os índices para o nome das manpages acessando "manpages.dat" e
  * pegando o nome dos registros de índice respectivos.
  */
void search_by_one_word(){
    //Pede a palavra a ser pesquisada
    char palavra[100];
    scanf("%s",palavra);
    //Pega a lista de índices que possuem a palavra
    ListaDupla<int> indices = man_pages_positions(palavra);
    FILE* manPagesDat;
    manPagesDat = fopen("..\\manpages.dat", "rb");

    printf("\n\n");
    //Pega o nome dos registros a partir dos índices
    while (!indices.listaVazia()) {
        fseek(manPagesDat, indices.primeiro()*(size_max_command+size_max_content), SEEK_SET);
        char comando[100];
        fgets(comando, 100, manPagesDat);
        printf("%d - %s\n",indices.primeiro(), comando);
        indices.retiraDoInicioDuplo();
    }
    fclose(manPagesDat);
}
/**
 * Pede as duas palavras, e obtem os indices de modo semelhante a
 * search_by_one_word, realiza as intersecção entre as listas de índices
 * Traduz os índices para o nome das manpages consultando "manpages.dat"
 */
void search_by_two_words() {
    //Pede a primeira palavra
    char palavra1[100];
    scanf("%s", palavra1);
    //Pega a lista de índices que possuem a primeira palavra
    ListaDupla<int> indices1 = man_pages_positions(palavra1);
    //Pede a segunda palavra
    char palavra2[100];
    scanf("%s", palavra2);
    //Pega índices da segunda palavra
    ListaDupla<int> indices2 = man_pages_positions(palavra2);

    //Intersecção de indices1 e indices2
    ListaDupla<int> indices;
    while (!indices2.listaVazia()) {
        int atual = indices2.primeiro();
        bool achou = false;
        for(int i = 0; i < indices1.verUltimo() && !achou; i++) {
            if(indices1.mostra(i) == atual) achou = true;
        }
        if(achou) indices.adicionaDuplo(atual);
        indices2.retiraDoInicioDuplo();
    }

    FILE* manPagesDat;
    manPagesDat = fopen("..\\manpages.dat", "rb");
    printf("\n\n");

    while (!indices.listaVazia()) {
        fseek(manPagesDat, indices.primeiro()*(size_max_command+size_max_content), SEEK_SET);
        char comando[100];
        fgets(comando, 100, manPagesDat);
        printf("%d - %s\n", indices.primeiro(), comando);
        indices.retiraDoInicioDuplo();
    }

    fclose(manPagesDat);
}