[Lugge] Re: [Lugge] [c/c++] funzione che ritorna true se è una cartella

  • From: asettico <asettico@xxxxxxxxxxxxxxx>
  • To: LUGGe <lugge@xxxxxxxxx>
  • Date: Sat, 08 Oct 2005 23:47:04 +0200

Marco Antonietti wrote:

mi servirebbe una funzione del tipo
isFolder("/home/marco"); che ritorna true
isFolder("/home/marco/file.txt"); che ritorna false...

ma non so come farla...

non è che magari esiste già ? :)

Devi usare una syscall del gruppo *stat* (stat, fstat, lstat).
Passi il pathname e l'indirizzo di una *struct stat*, poi controlli il valore del campo st_mode con la macro *S_ISDIR* .
Riassumendo (senza controlli di errore vari):


#include <sys/stat.h>
#include <unistd.h>

char pathname[] = "il-path-da-testare";
struct stat fstatus;

stat(pathname, &fstatus);
if (S_ISDIR(fstatus.st_mode))
        printf("%s e' una directory\n", pathname);

Okkio, perché non è codice portabile, o, meglio, lo è su tutte le piattaforme GNU e Unix.
--
,= ,-_-. =. asettico ~ [ http://rossomaltese.it/ ]
((_/)o o(\_)) OpenPGP ~~ [ 1024D/1CB926BA 2003-11-29 ]
`-'(. .)`-'
\_/ http://keyserver.linux.it/pks/lookup?exact=on&search=asettico


========----------

Archivio delle e-mail postate in lista
http://www.freelists.org/archives/lugge/

Prima di scrivere in m-list per favore leggi il regolamento
http://www.lugge.net/index.php?mod=cosa_facciamo/gruppo_di_discussione

Modifica dell'account sulla lista LUGGe
http://www.lugge.net/index.php?mod=cosa_facciamo/gruppo_di_discussione#list



Other related posts:

  • » [Lugge] Re: [Lugge] [c/c++] funzione che ritorna true se è una cartella