Prefs::Prefs(const String & name) : _name(name), _prefs(new Fl_Preferences( Fl_Preferences::USER, file_base().c_str(), _name.c_str())) {}
static char *get_display_name(struct song *song) { char *title = get_song_title(song); if (title) return title; const char *filename = get_song_filename(song); if (memcmp(filename, "http://", 7) == 0) return strdup(filename); return g_filename_to_utf8(file_base(filename), -1, NULL, NULL, NULL); }
file_entry file_storage::at(int index) const { TORRENT_ASSERT(index >= 0 && index < int(m_files.size())); file_entry ret; internal_file_entry const& ife = m_files[index]; ret.path = file_path(ife); ret.offset = ife.offset; ret.size = ife.size; ret.file_base = file_base(ife); ret.mtime = mtime(ife); ret.pad_file = ife.pad_file; ret.hidden_attribute = ife.hidden_attribute; ret.executable_attribute = ife.executable_attribute; ret.symlink_attribute = ife.symlink_attribute; if (ife.symlink_index >= 0) ret.symlink_path = symlink(ife); ret.filehash = hash(ife); return ret; }
std::vector<file_slice> file_storage::map_block(int piece, size_type offset , int size) const { TORRENT_ASSERT(num_files() > 0); std::vector<file_slice> ret; if (m_files.empty()) return ret; // find the file iterator and file offset internal_file_entry target; target.offset = piece * (size_type)m_piece_length + offset; TORRENT_ASSERT(target.offset + size <= m_total_size); TORRENT_ASSERT(!compare_file_offset(target, m_files.front())); std::vector<internal_file_entry>::const_iterator file_iter = std::upper_bound( begin(), end(), target, compare_file_offset); TORRENT_ASSERT(file_iter != begin()); --file_iter; size_type file_offset = target.offset - file_iter->offset; for (; size > 0; file_offset -= file_iter->size, ++file_iter) { TORRENT_ASSERT(file_iter != end()); if (file_offset < file_iter->size) { file_slice f; f.file_index = file_iter - begin(); f.offset = file_offset + file_base(*file_iter); f.size = (std::min)(file_iter->size - file_offset, (size_type)size); TORRENT_ASSERT(f.size <= size); size -= int(f.size); file_offset += f.size; ret.push_back(f); } TORRENT_ASSERT(size >= 0); } return ret; }