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

403

    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. Kaipaamasi miehen nimi?

      Ja maakunta tai kaupunki?
      Ikävä
      43
      7515
    2. Oletko keskustellut kaivatustasi muiden

      Kanssa lähiaikoina? Jos, onko keskustelu ollut positiivista tai negatiivista? Vaikuttaako keskustelut mielipiteeseesi ka
      Ikävä
      54
      3723
    3. Ennen ei ollut persuja ja työttömyyttä, lääkäriinkin pääsi

      Ennen oli kaikilla töitä Kauppiaille kelpasi kun saivat voittoa Yritystukia ei ollut Lääkäriin pääsi kaikki haluklaat Nu
      Maailman menoa
      53
      3613
    4. Millaista läheisyyttä

      Toivoisit ikävästi kohteesi kanssa?
      Ikävä
      85
      3397
    5. Tulipalossa henkilövahinkoja, itsenäisyyspäivä alkoi huonosti, poliisi tiedottaa lisää

      Savonlinna https://www.como.fi/uutiset/savonlinna-henkilovahinkoja-tulipalossa-poliisi-tiedottaa-lisaa/
      Savonlinna
      53
      3361
    6. 51
      3044
    7. Kyllä on Vasemmistoliitosta Koskelan johdolla tullut todellinen ääripuolue

      se on niin tulipunainen kuin olla voi, ja selvästi haluaa jatkuvasti eripuraa, ja repiä kansaa kahtia. Siinä on jo vuod
      Maailman menoa
      36
      2842
    8. Antifasismi - mitä se on?

      Se on äärivasemmistolaista anarkistista toimintaa joka käyttää fasisminvastaisuutta keppihevosena oikeuttaakseen toimint
      Maailman menoa
      30
      2494
    9. IL- KELA:n pääjohtaja, lääke- ja oikeustieteen tohtori Lasse Lehtonen sekavassa tilassa Brysselissä!

      "Iltalehden tietojen mukaan Lehtosen käytös Brysselin lentokentällä on herättänyt huomiota, ja hänen olemuksensa on tulk
      Maailman menoa
      197
      1958
    10. Heräsin taas ikävään

      Ja aivan valtavaan haluun. Tahdon sinua R. ❤️
      Ikävä
      47
      1571
    Aihe