LINUX.ORG.RU

простой вариант ls


0

0

Нужна простая версия ls для системы unix. Чтоб можно было посмотреть содержимое папки и для каждого каталога выдавать список всех файлов, содержащихся в этом каталоге. По одной строке на файл.Каждое поле должно форматироваться в соответствии с его типом.


так в чём проблема? напишите.

asgard
()

посмотрите на readdir и оттуда уже можно начинать :)

luch
()
Ответ на: комментарий от bigbit

А ты неможеш подсказать как можно все это дело проверить. ну тоесть проверить работуспособность этого исходника?

Den
() автор топика

Если совсем просто, то начни с этого:

#include <sys/types.h>
#include <dirent.h>
#include <limits.h>
#include <stdio.h>
#include <string.h>

void list(char *dir)
{
	struct dirent *dp;
	DIR *dirp = opendir(dir);

	while ((dp = readdir(dirp)) != NULL) {
		if (strcmp(dp->d_name, ".") && strcmp(dp->d_name, "..")) {
			printf("%s/%s", dir, dp->d_name);
			if (dp->d_type == DT_DIR) {
				puts("/");
				char cur_dir[PATH_MAX];
				strcpy(cur_dir, dir);
				strcat(cur_dir, "/");
				strcat(cur_dir, dp->d_name);
				list(cur_dir);
			} else {
				putchar('\n');
			}
		}
	}
	closedir(dirp);
}

int main(int argc, char *argv[])
{
	if (argc < 2) {
		list(".");
	} else {
		int last = strlen(argv[1]) - 1;
		if (last > 0 && argv[1][last] == '/')
			argv[1][last] = '\0';
		list(argv[1]);
	}

	return 0;
}

bbk123 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.