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; }
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; }