Chciałem napisać sobie programik pod linucha. Co będzie mi znajdował, jakiś poszukiwany pliczek na dysku. Postanowiłem, że zapisze tych parę linijek i się czegoś nauczę, a nie skorzystam z system("tu funkcja z basha").
No to co? wrzuce se napotkane folderki do vectora a potem bede je bral pokoleii i przegladal. jak wewnatrz kolejna ścierzka to znowu wrzucam.
Jedyne co musze zrobić to rozpoznać że coś jest directory. mam przecierz fajne macra do tego, proste nie?
Nie. Bo te makra nie rozpoznają directory i to takiego jak np. "/home".
Sprawdziłem. #file /home => directory.
Wtf?
Wczoraj zmarnowałem 2 h myśląc co mam źle aż uruchomiłem drugi program i wyszło mi, że po prostu /home nie jest żadnym znanym typem pliku.
Czy ktoś może mi podpowiedzieć jak rozpoznać na 100% że coś jest plikiem typu directory? I czemu biblioteka która jest w standardzie jest takim crapem albo też ja jestem jełop i czegoś nie rozumiem?
pierwszy program wyszukiwareczka:
http://ideone.com/u6xaLYdrugi(taki bardziej do nauki co napisałem by mieć do czego wrócić jakbym w przyszłości potrzebował), sprawdzian:
http://ideone.com/CgSCuFPozdrawiam i z góry dziękuję za odpowiedzi i pomoc.
EDIT: nie wiem czy to ma znaczenie używam Debiana Wheezy 7.
EDIT2: Małą ilość plików typu directory rozpoznaje ale naprawdę małą.
EDIT3: Włączam to oczywiście jako root.
EDIT4: Wniosek jest taki że trzeba więcej warunków na to czy coś jets plikiem typu directory
EDIT5:!!!!!!
http://ideone.com/rxIuPlprogram działa ale wywala mi czasem naruszenie pamięci - jakby próbował wejść w regular file
EDIT6: poprawiłem swój program tak aby uniknąć segfal czyli wejścia w plik typu directory który nie istnieje bądź go nie ma.
Podstawowe problemy to:
-foldery procesu PID które są kasowane gdy proces przestaje działać
-folder Trash gdzie znajdują się uszkodzone pliki które mogą zostać rozpoznane jako folder (uszkodzony hard link).
Pozostał mi ostatni problem gdy wyszukuję na całym dysku czegoś dostaje segmentation fault (Naruszenie pamięci) na pewnym folderze. Ale gdy przeszukuję folder w którym znajduje się tamten folder to wszystko działa. Co może to powodować??
Plik directory został skopiowany z windowsa
Program:
http://ideone.com/0czTwkEDIT 7 (~ostatni)
Rozwiązałem problem - zapomniałem o closedir();

)))
działający program

:
[jego wada to to że nie sprawdza czy lower case nie ma ale chrzanić:)))]
http://ideone.com/6GyOcqEDIT 8
Wersja kolejna lekko poprawiona (pojawily sie uwagi). Nie ostatnia bo nadal sypie sie na pewnych plikach i wpada w "deadlocki" ale do sprawdzania home/user/dokumenty. Jak znalazł
http://ideone.com/IzugPZ