Ho bisogno di realizzare una funzione in C che "pulisca" un path passatogli restituendo la forma piu' "corretta" ed abbreviata per scriverlo...
Se ad esempio ho il path:
"/boh/..//../../..//qualcosa/..///qualcosa/altro//.///.////file.f"
Questa funzione dovrebbe pulirlo restituendo il path effettivo, in questo caso:
"/qualcosa/altro/file.f"
Ho gia' chiesto qualche giorno fa sul forum Programmazione se esistono gia' funzioni, macro o system call che se ne occpuano, ma nessuno ha risposto (se ovviamente ne conoscete qualcuna avvisatemi )
Perche' posto qui' invece che su programmazione? Perche' gia' che ci sono vorrei effettuare anche un controllo sul path per sapere se contiene degli errori e vorrei sapere quali errori puo' contenere un path...
Ad esempio:
- ...Un path puo' contenere tutti i 256 caratteri ascii? Compresi tutti quelli non alfanumerici o non stampabili? Suppongo di no: quali non possono venire usati?
- ...La lettera iniziale e finale di un file o directory puo' essere a sua volta un qualunque carattere?
Inoltre avete da darmi qualche informazione che potrebbe creare problemi? Ad esempio il fatto che se mi trovo in "/" e provo ad andare in ".." rimango in "/"... Oppure il fatto che se trovo piu' slash affiancate devo considerarne una sola...
Ho una seconda domanda che riguarda i parametri da passare ad un programma: se un programma accetta un parametro che richiede un argomento ( ad esempio "--size=$SIZE" ) e questo parametro venisse passato due volte ( ad esempio "./programma --size=100 --size=543" ), secondo voi (secondo logica o secondo le vostre conoscenze):
- dovrebbe venire segnalato un errore?
- il parametro non dovrebbe venire mai considerato?
- dovrebbe venire accettato uno dei valori? E quale? Il primo, l'ultimo, quello nel mezzo ... ?
- altro? (che so'... Dovrebbe venire calcolata una media? )
Mi sono riscontrato con questo problema e non so quale sia la soluzione piu' corretta... Come si comporterebbe un programma GNU? Non me ne sta venendo in mente nessuno che richieda un parametro con valore... :master: