sources/server.c
static char* findOldFile(hashtable_t* hasht, int ignoreEmptyFiles) {
	hash_elem_it it = HT_ITERATOR(hasht);

	char* currentKey = ht_iterate_keys(&it);
    File* currentElem;

    char* oldKey = currentKey;
    File* oldElem = NULL;

    do {
        currentElem = (File *)ht_get(hasht, currentKey);

        if(oldElem == NULL) {
            oldElem = malloc(sizeof(File));
            *oldElem = *currentElem;
        }

        if(currentElem->updatedDate < oldElem->updatedDate) {
            // salvo il "nuovo" vecchio elemento solo se non sto ignorando i file vuoti oppure se li sto ignorando e la dimensione è diversa da 0
            if(!ignoreEmptyFiles || (ignoreEmptyFiles && currentElem->data_length != 0)) {
                *oldElem = *currentElem;
                *oldKey = *currentKey;
            }
        }

        currentKey = ht_iterate_keys(&it);
    } while(currentKey != NULL);

    // se sto ignorando i file vuoti e la dimensione del vecchio elemento è 0 allora ritorno NULL perché non lo dovrei considerare
    if(ignoreEmptyFiles && oldElem->data_length == 0) {
        free(oldElem);
        return NULL;
    }

    free(oldElem);
    return oldKey;
}
/**
 * @brief   Trova un file da sostituire.
 * 
 * @param   hasht               Tabella su cui cercare file
 * @param   ignoreEmptyFiles    Specifica se ignorare file senza contenuto (solo creati) o meno
 *                              0 -> considera i file vuoti
 *                              1 -> non considerare i file vuoti (usato per quando si ha troppo spazio occupato)
 * 
 * @returns la chiave dell'elemento da rimuovere
*/
@brief   Trova un file da sostituire.

@param   hasht               Tabella su cui cercare file
@param   ignoreEmptyFiles    Specifica se ignorare file senza contenuto (solo creati) o meno
0 -> considera i file vuoti
1 -> non considerare i file vuoti (usato per quando si ha troppo spazio occupato)

@returns la chiave dell'elemento da rimuovere
@brief Trova un file da sostituire . @param hasht Tabella su cui cercare file @param ignoreEmptyFiles Specifica se ignorare file senza contenuto ( solo creati ) o meno 0 - > considera i file vuoti 1 - > non considerare i file vuoti ( usato per quando si ha troppo spazio occupato ) @returns la chiave dell ' elemento da rimuovere
static char* findOldFile(hashtable_t* hasht, int ignoreEmptyFiles) {
	hash_elem_it it = HT_ITERATOR(hasht);
	char* currentKey = ht_iterate_keys(&it);
    File* currentElem;
    char* oldKey = currentKey;
    File* oldElem = NULL;
    do {
        currentElem = (File *)ht_get(hasht, currentKey);
        if(oldElem == NULL) {
            oldElem = malloc(sizeof(File));
            *oldElem = *currentElem;
        }
        if(currentElem->updatedDate < oldElem->updatedDate) {
            if(!ignoreEmptyFiles || (ignoreEmptyFiles && currentElem->data_length != 0)) {
                *oldElem = *currentElem;
                *oldKey = *currentKey;
            }
        }
        currentKey = ht_iterate_keys(&it);
    } while(currentKey != NULL);
    if(ignoreEmptyFiles && oldElem->data_length == 0) {
        free(oldElem);
        return NULL;
    }
    free(oldElem);
    return oldKey;
}
static char * findOldFile ( hashtable_t * hasht , int ignoreEmptyFiles ) { hash_elem_it it = HT_ITERATOR ( hasht ) ; char * currentKey = ht_iterate_keys ( & it ) ; File * currentElem ; char * oldKey = currentKey ; File * oldElem = NULL ; do { currentElem = ( File * ) ht_get ( hasht , currentKey ) ; if ( oldElem == NULL ) { oldElem = malloc ( sizeof ( File ) ) ; * oldElem = * currentElem ; } if ( currentElem -> updatedDate < oldElem -> updatedDate ) { if ( ! ignoreEmptyFiles || ( ignoreEmptyFiles && currentElem -> data_length != 0 ) ) { * oldElem = * currentElem ; * oldKey = * currentKey ; } } currentKey = ht_iterate_keys ( & it ) ; } while ( currentKey != NULL ) ; if ( ignoreEmptyFiles && oldElem -> data_length == 0 ) { free ( oldElem ) ; return NULL ; } free ( oldElem ) ; return oldKey ; }
@brief   Trova un file da sostituire.
@brief Trova un file da sostituire .
// salvo il "nuovo" vecchio elemento solo se non sto ignorando i file vuoti oppure se li sto ignorando e la dimensione è diversa da 0 // se sto ignorando i file vuoti e la dimensione del vecchio elemento è 0 allora ritorno NULL perché non lo dovrei considerare