Witam,
Napisałem program, który działa bez problemów na moim systemie. Gdy wrzuciłem go na uczelniany serwer przestał jednak działać:/ Niżej umieszczam kodzik. Nie wiem dlaczego tak się dzieje. Prosiłbym o pomoc w znalezieniu błędu, którego kompilator na uczelnianym serwerze nie akceptuje. Dodam, że kompiluje z -pedantic -Wall i nie wyświetla błędów :/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
void listdir( char * path, int level )
{
char namebuf[1024]; /* bufor do tworzenia nazw podkatalogow */
struct dirent *entry; /* zm. robocza do iteracji po pozycjach w katalogu */
char tmp[80];
DIR *thisdir= opendir( path ); /* proba otwarcia */
if( thisdir == NULL ) { /* nie udalo sie otworzyc path jako katalogu*/
if( errno != ENOTDIR ) /* ignorujemy blad ENOTDIR (nie-katalog)
- inne bledy zglaszamy */
printf("Blad - %s.\n", strerror(errno) );
return;
}
while( (entry= readdir( thisdir )) != NULL ) { /* czytamy kolejne pozycje */
if( !strcmp( entry->d_name,"." ) )
break;
printf("Plik %s\n", entry->d_name ); /* wypisanie nazwy */
strcpy(tmp,"cat ");
strcat(tmp,path);
strcat(tmp,"/");
strcat(tmp,entry->d_name);
system(tmp);
printf("\n");
if( strcmp( entry->d_name, "." ) != 0
&& strcmp( entry->d_name, ".." ) != 0 ) {
strcpy( namebuf, path ); /* tworzymy nazwe */
strcat( namebuf, "/" );
strcat( namebuf, entry->d_name );
listdir( namebuf, level+1 ); /* i wywolujemy rekurencyjnie listdir */
}
}
closedir( thisdir ); /* na koniec zamykamy katalog */
}
int
main( int argc, char **argv )
{
if( argc == 2 ) {
listdir( argv[1], 1 );
}
return 0;
}
Z góry za pomoc będę bardzo wdzięczny.