Miten tarkistus file vai directory?

ohjelmoijaaaa

Hei, kysyisin miten pystyn tarkistamaan kun luen kansion sisältöä ja haluan vain tarkistella tiedostoja, eli kansioita ei huomioitaisi, olen kirjoittanut tämmöisen ohjelman ja muuten se toimii, mutta jos joku idiootti menee laittaa kansion nimeksi xxxxx.tar, niin se lukee senki sisään:

//Kayttaa opendir, closedir ja readdir kansion
//avaamiseen virrasta. Lukee ja tallentaa tiedoston nimet
int read_directory(char *directory_name)
{
DIR *dip;
struct dirent *dit;
      struct stat statbuf;
int i = 0;
      number_of_soft = 0;

// Katsotaan onko kansion nimi annettu
if (*directory_name < 2)
{
printf("%s \n", directory_name);
            fflush(stdout);
return 0;
}

// DIR *opendir(const char *name)
       //Avataan kansio
if ((dip = opendir(directory_name)) == NULL)
{
printf("Directory stream ei aukea");
fflush(stdout);
            return 0;
}

printf("Directory stream is nyt auki\n");

//struct dirent *readdir(DIR *dir)
      //Luetaan kansion tiedostot ja tallennetaan jos tiedosto
      while ((dit = readdir(dip)) != NULL)
{
         int length=0;
         
         //   stat(dit->d_name, &statbuf);
         length=strlen(dit->d_name);
         //hyvaksytaan vain .tar tai .d nimiset tiedostot
         if((strncmp(&(dit->d_name[length-4]), ".tar", 4))==0)
         {
            printf("\nTiedosto loytyi: %s ", dit->d_name);   //debug
            fflush(stdout);
            swprintf((wchar_t*)nodes[i 2].str,30,L"%s",dit->d_name);
            strcpy(nodes[i].tiedostot,dit->d_name);
            i ;
         }
         
         
         
      }
      number_of_soft = i;

      //int closedir(DIR *dir);
      //Suljetaan virta ja katsotaan onko erroria
if (closedir(dip) == -1)
{
perror("closedir");
fflush(stdout);
return 0;
}

printf("\nDirectory stream on suljettu\n");
      fflush(stdout);
      return 1;
}

1

373

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • man fstat

      man 2 stat, katso makro S_ISREG.

      Hakemiston lisäksi se saattaa olla character device, block device, fifo tai socket. Kannattaa myös miettiä, mitä haluat linkeille tehtävän...

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Janne Ahonen E R O A A

      Taas 2 lasta jää vaille ehjää perhettä!
      Kotimaiset julkkisjuorut
      147
      2589
    2. En kai koskaan saa sinua

      Koska et usko että riitäisit minulle. Olet aina pitänyt itseäsi liian risana ja heikkona. Katkot korkeutesi, ja poraat k
      Ikävä
      154
      1659
    3. Terveystalon lääkärit ylilaskuttaneet

      Tämän pörriäiset osaavat, laskuttamisen. Terveystalo myöntää asian. https://www.hs.fi/suomi/art-2000011134269.html "K
      Maailman menoa
      133
      1633
    4. Saran ökytyyli käänsi katseita.

      On nyt kyllä Sara kasvoistaan, kuvan perusteella todellakin pyöristynyt ainakin kuvan perusteella.
      Kotimaiset julkkisjuorut
      149
      1358
    5. Nyt on aika laittaa parit selkoon.

      Onko pareja täällä. Laita kirjaimet kuka tykkää kenestäkin ?
      Ikävä
      66
      1338
    6. The Summit Suomi: Maxie avaa hyytävästä tilanteesta kuvauksissa: "Veri roiskui ja tajusi, että..."

      Oletko seurannut The Summit Suomea? Tykkäätkö vai et tai mitä mieltä ylipäätään olet sarjasta? Moni katsoja on kaikonnut
      Tv-sarjat
      13
      1180
    7. Työttömille lusmuille luvassa lisää keppiä

      Hallitus aikoo kiristää velvoitteiden laiminlyönnistä seuraavia työttömyysturvan karensseja ensi vuodesta alkaen. Hall
      Maailman menoa
      282
      1165
    8. Ootko huomannut miten

      pursuat joka puolelta. Sille joka luulee itsestään liikoja 🫵🙋🏻‍♂️
      Ikävä
      156
      976
    9. Miksi ihmeessä?

      Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek
      Ateismi
      22
      924
    10. Tiedän kaiken sinusta ja kaikesta

      Tiedän miten kärsit. Tiedän millanen oikeesti oot. Tiedän miksi valehtelit, tiedän miksi satutit mua. Tiedän mitä tapaht
      Ikävä
      58
      889
    Aihe