Пример #1
0
void downDir(int fd_client, char *dir_name)
{
	DIR *pdir = opendir(dir_name);
	if(pdir == NULL){
		perror("opedir!\n");
		send(fd_client, "over", 8, 0);
		return ;
	}
	chdir(dir_name);
	struct dirent* mydirent;
	struct stat mystat;
	while((mydirent = readdir(pdir)) != NULL){
		send(fd_client, "continue", 8, 0);
		stat(mydirent->d_name, &mystat);
		if(S_ISDIR(mystat.st_mode)){
			if(strncmp(mydirent->d_name, ".", 1) == 0){
				send(fd_client, "nodir", 8, 0);
				continue;
			}
			else{
				send(fd_client, "dir", 8, 0);
				send(fd_client, mydirent->d_name, sizeof(mydirent->d_name), 0);
				//printf("%s: %d\n", mydirent->d_name, sizeof(mydirent->d_name));
				downDir(fd_client, mydirent->d_name);	
			}
		}
		else{
			downFile(fd_client, (mydirent->d_name));
		}
	}
	send(fd_client, "over", 8, 0);
	chdir("..");
	closedir(pdir);
}
Пример #2
0
//do_gets
void do_gets(int fd_client, int role)
{
	if(role == 3){
		return ;
	}
	else{
		struct stat mystat;
		int send_len;
		char file_name[256] = "0";

		memset(&file_name, 0 , 256);
		recv_buf(fd_client, (char*)&send_len, 4);
		recv_buf(fd_client, file_name, send_len);

		file_name[strlen(file_name) - 1] = '\0';

		lstat(file_name, &mystat);
		if(S_ISDIR(mystat.st_mode)){
			send(fd_client, "dir", 8, 0);
			downDir(fd_client, file_name);		
		}
		else{
			downFile(fd_client, file_name);
		}

		printf("send complient!\n");
	}
}
Пример #3
0
void on_btnupdate_clicked(GtkButton *button) {
	//down em all
	GSList *lurl = NULL;
	GSList *ldest = NULL;
	for(gint i=0;i<num_of_lines;++i) {
		gchar trainfolder[512];
		g_snprintf(trainfolder,512,"%s/%s",getProgData("trains"),lines[i].line);
		g_mkdir_with_parents(trainfolder,0755);
		for(gint j=0;j<lines[i].num;++j) {
			gchar url[200];
			gchar dest[512];
			g_snprintf(dest,512,"%s/%s.pdf",trainfolder,lines[i].stations[j].name);
			g_snprintf(url,200,"http://transitchicago.com/maps/rail/%s/%s.pdf\n",lines[i].line,lines[i].stations[j].name);
			lurl = g_slist_prepend(lurl,url);
			ldest = g_slist_prepend(ldest,dest);
		}
	}
	if(!downFile(lurl,ldest)) goto died;
	load_trains();
	return;
died:
	//TODO: delete train info already dled
	return;
}