|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
[C Unix] ricerca file
Ciao a tutti, avrei bisogno di un piccolo aiuto per un problema di ricerca di un file con estensione .txt nella directory corrente su cui l'utente abbia diritti di scrittura.
Sono arrivata al punto in cui dopo aver esplorato la cartella corrente devo ricercare questo file...in che modo si specifica che tra quelli che vengono letti voglio quello di cui sopra? PORZIONE DI CODICE: Quote:
|
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Per il controllo dell'estensione, devi fare tu un filtro che le ricerchi in quanto non esistono primitive per l'estrazione dell'estensione (poiché non hanno alcun significato particolare sui sistemi unix). Volendo essere bravi, potresti definire la regular expression e usare le funzioni regex, ma il tuo problema è così semplice che puoi anche fare direttamente.
Per i controlli sul permesso in scrittura, ti consiglio di usare la (molto più sbrigativa di stat) funzione access (v. man access.). Per fare tutto ciò, invece di iterare direttamente con opendir/readdir, potresti considerare l'uso di scandir, fornendo la funzione di filtro da te realizzata.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
Grazie per i suggerimenti
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Un'alternativa poi sarebbe questa:
http://hostautomata.com/software/man/3/fts
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jan 2007
Messaggi: 112
|
utilizzi la funzione strstr in string.h
strstr(drn->d_name,",.txt"); all'interno del ciclo while quando scorri la directory con un controllo if ti accerti sel il file in questione contiene la sottostringa .txt poi per il controllo dei permessi c'è il campo st_mode della struct stat che con un and bit a bit con una costante per verivicare i diritti su quel file man 2 stat elenca tutte le cstanti per verificare i diritti sui file |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
E se il file si chiama inganno.txt.mp3?
![]() Comunque, per i permessi ha risposto ilsensine, con access probabilmente si evita di stat-are ogni file.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Invece è meglio usare, ora che ci penso, fnmatch, che accetta i caratteri jolly: if (fnmatch("*.txt", filename, 0)==0) { /* match */ }
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:15.