亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sendfile.cpp

?? iptux是linux下面能實現類似windows里面飛鴿傳書的功能
?? CPP
字號:
//// C++ Implementation: SendFile//// Description:////// Author: Jally <jallyx@163.com>, (C) 2008//// Copyright: See COPYING file that comes with this distribution////#include "SendFile.h"#include "Command.h"#include "UdpData.h"#include "Transport.h"#include "DialogPeer.h"#include "baling.h"#include "utils.h" SendFile::SendFile():dirty(false), pbn(0),prn(MAX_SHAREDFILE), pblist(NULL), prlist(NULL){	pthread_mutex_init(&mutex, NULL);}SendFile::~SendFile(){	pthread_mutex_lock(&mutex);	g_slist_foreach(pblist, remove_foreach, GINT_TO_POINTER(FILEINFO));	g_slist_free(pblist);	g_slist_foreach(prlist, remove_foreach, GINT_TO_POINTER(FILEINFO));	g_slist_free(prlist);	pthread_mutex_unlock(&mutex);	pthread_mutex_destroy(&mutex);}void SendFile::InitSelf(){	GConfClient *client;	GSList *filelist, *tmp;	FileInfo *file;	struct stat64 st;	client = gconf_client_get_default();	filelist = gconf_client_get_list(client, GCONF_PATH "/shared_file_list",					 GCONF_VALUE_STRING, NULL);	g_object_unref(client);	pthread_mutex_lock(&mutex);	pblist = NULL, tmp = filelist;	while (tmp) {		if (Stat((const char *)tmp->data, &st) == -1 ||		    !S_ISREG(st.st_mode) && !S_ISDIR(st.st_mode)) {			free(tmp->data), tmp = tmp->next;			continue;		}		file =		    new FileInfo(pbn, (char *)tmp->data, (uint32_t) st.st_size,				 S_ISREG(st.st_mode) ? IPMSG_FILE_REGULAR :				 IPMSG_FILE_DIR);		pblist = g_slist_append(pblist, file);		tmp = tmp->next, pbn++;	}	pthread_mutex_unlock(&mutex);	g_slist_free(filelist);	dirty = true;}void SendFile::WriteShared(){	GConfClient *client;	GSList *filelist, *tmp;	pthread_mutex_lock(&mutex);	filelist = NULL, tmp = pblist;	while (tmp) {		filelist = g_slist_append(filelist,				   ((FileInfo *) tmp->data)->filename);		tmp = tmp->next;	}	if (filelist) {		client = gconf_client_get_default();		gconf_client_set_list(client, GCONF_PATH "/shared_file_list",				      GCONF_VALUE_STRING, filelist, NULL);		g_object_unref(client);	}	pthread_mutex_unlock(&mutex);	g_slist_free(filelist);	dirty = false;}void SendFile::SendRegular(gpointer data){	extern SendFile sfl;	sfl.PickFile(IPMSG_FILE_REGULAR, data);}void SendFile::SendFolder(gpointer data){	extern SendFile sfl;	sfl.PickFile(IPMSG_FILE_DIR, data);}void SendFile::RequestData(int sock, uint32_t fileattr, char *buf){	extern Transport trans;	extern UdpData udt;	const char *filename;	GdkPixbuf *pixbuf;	GtkTreeIter iter;	uint32_t fileid;	socklen_t len;	FileInfo *file;	char *ptr;	Pal *pal;	SI addr;	fileid = iptux_get_hex_number(buf, 6);	file = (FileInfo *) FindFileinfo(fileid);	if (!file || GET_MODE(file->fileattr) != GET_MODE(fileattr))		return;	len = sizeof(addr);	getpeername(sock, (SA *) & addr, &len);	if (!(pal = (Pal *) udt.Ipv4GetPal(addr.sin_addr.s_addr)))		return;	ptr = number_to_string(file->filesize);	filename = ipmsg_set_filename_self(file->filename);	gdk_threads_enter();	pixbuf = gdk_pixbuf_new_from_file(__TIP_DIR "/send.png", NULL);	gtk_list_store_append(GTK_LIST_STORE(trans.trans_model), &iter);	gtk_list_store_set(GTK_LIST_STORE(trans.trans_model), &iter,			   0, pixbuf, 1, _("send"), 2, filename, 3, pal->name,			   4, "0B", 5, ptr, 6, "0B/s", 7, 0, 8, 0, 9, 0,			   10, file->fileid, 11, file->filesize, 12,			   file->fileattr, 13, file->filename, 14, pal, -1);	if (pixbuf)		g_object_unref(pixbuf);	gdk_threads_leave();	if (filename != file->filename)		*(file->filename + strlen(file->filename)) = '/';	free(ptr);	Transport::SendFileEntry(sock, &iter, fileattr);}void SendFile::PickFile(uint32_t fileattr, gpointer data){	extern struct interactive inter;	GtkFileChooserAction action;	GtkWidget *dialog, *parent;	gchar *title;	GSList *list;	Pal *pal;	pal = (Pal *) data;	parent = pal->dialog ? ((DialogPeer *) pal->dialog)->dialog :	    inter.window;	title = (GET_MODE(fileattr) == IPMSG_FILE_REGULAR) ?	    _("Choose sending files") : _("Choose sending folders");	action = (GET_MODE(fileattr) == IPMSG_FILE_REGULAR) ?	    GTK_FILE_CHOOSER_ACTION_OPEN :	    GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;	dialog = gtk_file_chooser_dialog_new(title, GTK_WINDOW(parent), action,					     GTK_STOCK_OK, GTK_RESPONSE_OK,					     GTK_STOCK_CANCEL,					     GTK_RESPONSE_CANCEL, NULL);	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);	gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog),					    getenv("HOME"));	if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {		list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));		SendFileInfo(list, data);		g_slist_free(list);	//他處釋放	}	gtk_widget_destroy(dialog);}void SendFile::SendFileInfo(GSList * list, gpointer data){	extern struct interactive inter;	char buf[MAX_UDPBUF], *ptr, *filename;	struct stat64 st;	Command cmd;	FileInfo *file;	size_t len;	ptr = buf, len = 0, buf[0] = '\0';	pthread_mutex_lock(&mutex);	while (list) {		if (Stat((char *)list->data, &st) == -1) {			free(list->data), list = list->next;			continue;		}		filename = ipmsg_set_filename_pal((char *)list->data);		snprintf(ptr, MAX_UDPBUF - len, "%u:%s:%x:%x:%x\a:",			 prn, filename, (uint32_t) st.st_size, st.st_mtime,			 S_ISREG(st.st_mode) ? IPMSG_FILE_REGULAR :			 IPMSG_FILE_DIR);		free(filename), len += strlen(ptr), ptr = buf + len;		file =		    new FileInfo(prn, (char *)list->data, (uint32_t) st.st_size,				 S_ISREG(st.st_mode) ? IPMSG_FILE_REGULAR :				 IPMSG_FILE_DIR);		prlist = g_slist_prepend(prlist, file);		list = list->next, prn++;	}	pthread_mutex_unlock(&mutex);	cmd.SendSharedInfo(inter.udpsock, data, buf);}void SendFile::SendSharedInfo(gpointer data){	extern struct interactive inter;	extern SendFile sfl;	char buf[MAX_UDPBUF], *ptr, *filename;	GSList *tmp, *tmp1;	Command cmd;	FileInfo *file;	size_t len;	ptr = buf, len = 0, buf[0] = '\0';	pthread_mutex_lock(&sfl.mutex);	tmp = sfl.pblist;	while (tmp) {		file = (FileInfo *) tmp->data;		if (access(file->filename, F_OK) == -1) {			delete file, tmp1 = tmp->next;			sfl.pblist = g_slist_delete_link(sfl.pblist, tmp);			tmp = tmp1;			continue;		}		filename = ipmsg_set_filename_pal(file->filename);		snprintf(ptr, MAX_UDPBUF - len, "%u:%s:%x:%x:%x\a:",			 file->fileid, filename, file->filesize, 0,			 file->fileattr);		free(filename), len += strlen(ptr), ptr = buf + len;		tmp = tmp->next;	}	pthread_mutex_unlock(&sfl.mutex);	cmd.SendSharedInfo(inter.udpsock, data, buf);}pointer SendFile::FindFileinfo(uint32_t fileid){	GSList *tmp;	pthread_mutex_lock(&mutex);	tmp = (fileid < MAX_SHAREDFILE) ? pblist : prlist;	while (tmp) {		if (((FileInfo *) tmp->data)->fileid == fileid) {			pthread_mutex_unlock(&mutex);			return tmp->data;		}		tmp = tmp->next;	}	pthread_mutex_unlock(&mutex);	return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费看的视频| 久久精品在这里| 99综合影院在线| 狠狠色综合日日| 久久国产精品色| 麻豆国产91在线播放| 蜜臀久久久99精品久久久久久| 亚洲国产精品久久久久婷婷884 | 欧美激情一区二区在线| 久久亚洲精华国产精华液 | 色婷婷综合久久| 91亚洲午夜精品久久久久久| 97se亚洲国产综合在线| 色狠狠综合天天综合综合| 色综合久久中文字幕综合网| 欧美视频中文一区二区三区在线观看| 欧美又粗又大又爽| 欧美日本不卡视频| 欧美成人a∨高清免费观看| 久久影音资源网| 国产精品久久久久久久久图文区 | 国产不卡在线播放| www.日韩精品| 欧美手机在线视频| 日韩欧美亚洲另类制服综合在线| 欧美精品一区二区三区久久久 | 亚洲欧美另类在线| 日本va欧美va欧美va精品| 狠狠色2019综合网| 日本精品视频一区二区三区| 制服丝袜中文字幕一区| 国产网站一区二区| 亚洲一区在线电影| 国产美女久久久久| 在线视频中文字幕一区二区| 日韩欧美视频在线| 亚洲蜜臀av乱码久久精品| 美国欧美日韩国产在线播放| 懂色av一区二区在线播放| 色综合久久66| 久久综合狠狠综合久久综合88 | 欧美日本在线一区| 国产视频一区在线播放| 五月综合激情网| 国产成人自拍网| 制服丝袜激情欧洲亚洲| 国产精品九色蝌蚪自拍| 麻豆freexxxx性91精品| 91在线一区二区| 久久蜜臀精品av| 视频一区二区中文字幕| 91玉足脚交白嫩脚丫在线播放| 欧美一区二区观看视频| 亚洲黄色录像片| 国产在线看一区| 91精品国产色综合久久ai换脸 | 五月婷婷色综合| 粉嫩欧美一区二区三区高清影视| 91麻豆精品国产| 伊人婷婷欧美激情| 不卡高清视频专区| 欧美精品一区二区高清在线观看| 午夜久久福利影院| 在线看国产日韩| 国产精品日日摸夜夜摸av| 国产一区二区在线视频| 日韩欧美一区在线| 石原莉奈一区二区三区在线观看| 成人av动漫网站| 久久精品欧美一区二区三区麻豆| 另类的小说在线视频另类成人小视频在线 | 亚洲色图另类专区| 成人蜜臀av电影| 日本一区二区成人在线| 国产成人免费视频一区| 精品国产欧美一区二区| 精品一区二区三区在线观看国产| 日韩一区二区三区免费观看| 香港成人在线视频| 在线观看成人小视频| 亚洲一区二区三区四区五区黄| 欧洲国产伦久久久久久久| 尤物av一区二区| 欧美精品视频www在线观看 | 久久精品国产成人一区二区三区| 欧美高清精品3d| 日本vs亚洲vs韩国一区三区二区| 欧美精品一卡二卡| 精品一区二区三区免费视频| 精品成a人在线观看| 国产jizzjizz一区二区| 亚洲天天做日日做天天谢日日欢 | 91精品婷婷国产综合久久性色| 日韩中文字幕区一区有砖一区| 欧美日本高清视频在线观看| 蜜臀久久99精品久久久久久9 | 日韩一区二区电影在线| 国模一区二区三区白浆| 久久精品人人做人人爽97| 91论坛在线播放| 亚洲444eee在线观看| 精品久久一二三区| 成人av网站免费观看| 一区二区三区日本| 精品久久人人做人人爰| 丁香婷婷综合色啪| 亚洲h动漫在线| 久久视频一区二区| 一本到高清视频免费精品| 天堂精品中文字幕在线| 欧美精品一区二区三区高清aⅴ| 99国产精品久久久久久久久久 | 丝袜美腿成人在线| 久久精品免视看| 色哟哟一区二区在线观看| 久久精品99久久久| 亚洲另类春色国产| wwww国产精品欧美| 欧美色欧美亚洲另类二区| 国产麻豆精品一区二区| 一个色综合网站| 久久久.com| 欧美久久久一区| 91色porny在线视频| 日本91福利区| 一区二区在线观看免费| 国产人成一区二区三区影院| 欧美老肥妇做.爰bbww视频| 国产成人免费在线视频| 麻豆91免费看| 一区二区三区影院| 欧美激情中文字幕| 日韩精品资源二区在线| 日本精品一区二区三区高清| 丁香激情综合国产| 美女mm1313爽爽久久久蜜臀| 亚洲精品自拍动漫在线| 国产目拍亚洲精品99久久精品| 欧美挠脚心视频网站| 97aⅴ精品视频一二三区| 国产成人鲁色资源国产91色综| 亚洲成av人在线观看| 亚洲午夜免费视频| 亚洲人成小说网站色在线| 日本一区二区三区在线观看| 日韩欧美亚洲一区二区| 欧美精品自拍偷拍动漫精品| 欧洲一区二区三区在线| 在线看一区二区| 91啦中文在线观看| 99久久99久久精品免费看蜜桃| 国产999精品久久久久久绿帽| 九九精品一区二区| 理论电影国产精品| 另类小说图片综合网| 极品少妇xxxx偷拍精品少妇| 另类小说色综合网站| 日本不卡一区二区三区| 视频一区二区三区在线| 青青草91视频| 九九久久精品视频| 国产精品一区三区| 高清不卡在线观看| av在线综合网| 欧洲一区二区三区在线| 欧美影院精品一区| 欧美人xxxx| 欧美精品一区二区三区四区| 国产午夜久久久久| 亚洲精品欧美在线| 午夜激情一区二区| 蜜臀va亚洲va欧美va天堂| 精品一区二区三区免费毛片爱 | 欧美浪妇xxxx高跟鞋交| 7878成人国产在线观看| 日韩精品一区二区三区蜜臀| 久久婷婷国产综合精品青草| 中文字幕av一区二区三区免费看| 国产精品情趣视频| 亚洲成人一区二区在线观看| 麻豆精品一区二区| 成人a级免费电影| 欧美日韩一区在线观看| 日韩一级视频免费观看在线| 久久久久国产精品麻豆| 亚洲欧美激情插| 美女诱惑一区二区| 99精品视频在线观看免费| 欧美精品久久久久久久多人混战 | 一级女性全黄久久生活片免费| 亚洲不卡在线观看| 成人激情开心网| 欧美一区二区网站| 亚洲色图视频免费播放| 久久国产三级精品| 色偷偷久久一区二区三区| 26uuu欧美| 亚洲bt欧美bt精品| 成人av免费网站| 欧美成人精品1314www|