Пример #1
0
int FileList::ReadList(const char *name)
{
	FILE *f;
	int i;
	char *p;
	int size=file_size(name);
	bool in_line;
	if (size<0) return -1;
	m_NameBuffer=new char[size];
	f=fopen(name,"rb");
	fread(m_NameBuffer,1,size,f);
	fclose(f);

	m_FileNumber=0;	
	for (in_line=false,i=0;i<size;i++) {
		if (in_line) {
			if (m_NameBuffer[i]<=32 && m_NameBuffer[i]>=0) {
				m_NameBuffer[i]=0;

				FILE_LST fl;

				fl.size=file_size(p);
				fl.name=p;
				fl.uid=string_id(string_adjust(p));
				fl.space=0;
				fl.offset=0;

				if (fl.size>0) {
					m_List.push_back(fl);
					m_FileNumber++;
				}
				else {
					printf("%s can't open.\n",p);
				}
				in_line=false;
			}
		}
		else {
			if (m_NameBuffer[i]>32 || m_NameBuffer[i]<0) {
				p=&m_NameBuffer[i];
				in_line=true;
			}
		}
	}
	return m_FileNumber;
} 
Пример #2
0
static  int _cb_iq(xmpp_conn_t * const conn,
	xmpp_stanza_t * const stanza,
	void * const userdata)
{
	WaitForSingleObject(_mutex_4_conn, INFINITE);
	conn_ua_map::iterator iter = _conn_map.find(conn);
	if (iter == _conn_map.end())
	{
		ReleaseMutex(_mutex_4_conn);
		return 1;
	}
	xmpp_ua_t *ua= iter->second;
	ReleaseMutex(_mutex_4_conn);
	char *id = xmpp_stanza_get_id(stanza);
	WaitForSingleObject(ua->mutex_4_ua, INFINITE);
	if (id)
	{
		std::string string_id(id);
		map_id_cb::iterator cb_iter = ua->id_cb_map.find(string_id);
		if (cb_iter != ua->id_cb_map.end())
		{
			cb_iter->second.cb(ua, stanza, cb_iter->second.userdata);
			ua->id_cb_map.erase(cb_iter);
			ReleaseMutex(ua->mutex_4_ua);
			return 1;
		}
	}
	xmpp_ua_cb_list *current = ua->iq_head;
	while (current)
	{
		if (current->data.cb(ua, stanza, current->data.userdata))
		{
			ReleaseMutex(ua->mutex_4_ua);
			return 1;
		}
		current = current->next;
	}

	_respond_iq_with_error(ua->conn, stanza, "cancel", "service-unavailable");
	ReleaseMutex(ua->mutex_4_ua);
	return 1;
}