Пример #1
0
static int dir_recur(const char *basepath)
{
	// Goes 10 level deep
	Rdir_recur.verbose ("Doing a 10 levels test\n");
	dir_recur (basepath,"recur",Rdir_recur);
	dir_recur (basepath,"RECURSIVE",Rdir_recur);
	return Rdir_recur.getnberr();
}
Пример #2
0
void sys_find(int conn_fd)
{
	char important[SIZE];
	char filename[SIZE];
	int flag = 0;

	memset(filename, '\0', sizeof(filename));
	send(conn_fd, "y\n", strlen("y\n"), 0);
	recv(conn_fd, filename, sizeof(filename), 0);
	filename[strlen(filename)] = '\0';
	dir_recur(conn_fd, "/home/qiong/shujia/source/", filename, &flag);

	printf("flag = %d", flag);
	if (flag == 0)
	{
		send_data(conn_fd, "服务端无该资源\n");
	}
	send_data(conn_fd, "_ok");
}
Пример #3
0
void user_choose(int conn_fd)
{
	int flag;
	char path[SIZE];
	char filename[SIZE];
	char tmp[SIZE];

	sleep(1);
	system("clear");

	printf("\n\n\t\t1.浏览资源\n");
	printf("\t\t2.上传资源\n");
	printf("\t\t3.查找资源\n");

	scanf("%d", &flag);

	switch(flag)
	{
		case 1:
			user_browse(conn_fd);
			break;
		case 2:
			chdir("/home/");
			getcwd(path, sizeof(path));
			user_find(conn_fd, path);
			break;
		case 3:
			send_data(conn_fd, "d\n");
			printf("请输入文件名称:");
			memset(filename, '\0', sizeof(filename));
			scanf("%s", filename);
			dir_recur(conn_fd, filename);
			getchar();
			getch();
			user_choose(conn_fd);

	}
}
Пример #4
0
void dir_recur(int conn_fd, char* dir_path, char *filename, int * flag)
{
	
	int i;
	int j;
	char tmp1[1];
    struct dirent * ptr;
    struct stat buf;
    char dir_list[SIZE][SIZE];
	char pathname[SIZE];
	char string[SIZE];
	char important[SIZE];
    DIR * dir = NULL;

    chdir(dir_path);      
	memset(pathname, '\0',sizeof(pathname));
    getcwd((pathname), sizeof(pathname));
	pathname[strlen(pathname)]='/';
	pathname[strlen(pathname)+1]='\0';       
    memset(string, '\0', sizeof(string));
	memset(important, '\0', sizeof(important));
    if ((dir = opendir ("./")) == NULL)   
    {
        printf("null");
        return ;
    }

    while ((ptr = readdir(dir)) != NULL)
    {
        if (stat(ptr->d_name, &buf) == -1)
        {
            my_err("stat", __LINE__);
        }
       
        if (strcmp(ptr->d_name, ".") && strcmp(ptr->d_name, ".."))
        {
			if (strcmp(ptr->d_name, filename) == 0)
			{
				(*flag)++;
				strcpy(important, pathname);
				strcat(important, ptr->d_name);
				strcat(important, "\n");
				send(conn_fd, important, strlen(important), 0);

			}
            if (S_ISDIR(buf.st_mode))
            {
                strcpy(dir_list[i++], ptr->d_name);
            }
        }
    }


    for (j = 0; j < i; j++)
    {
        dir_recur(conn_fd, dir_list[j], filename, flag);
    }
    //回到上层目录,将其设置为工作目录
    chdir("..");
	closedir(dir);
}