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:

)
)
Rispondi quotando

