void CueSheet::parse_index(const std::string *args) { if (!m_tracks.size()) die("INDEX command before TRACK"); if (m_cur_file.empty()) die("INDEX command before FILE"); unsigned no, mm, ss, ff, nframes; if (std::sscanf(args[1].c_str(), "%u", &no) != 1) die("Invalid INDEX number"); if (std::sscanf(args[2].c_str(), "%u:%u:%u", &mm, &ss, &ff) != 3) die("Invalid INDEX time format"); if (ss > 59 || ff > 74) die("Invalid INDEX time format"); nframes = msf2frames(mm, ss, ff); CueSegment *lastseg = last_segment(); if (lastseg && lastseg->m_filename == m_cur_file) { lastseg->m_end = nframes; if (lastseg->m_begin >= nframes) die("INDEX time must be in ascending order"); } CueSegment segment(m_cur_file, no); segment.m_begin = nframes; if (no > 0) m_tracks.back().add_segment(segment); else { if (m_tracks.size() == 1) { /* HTOA */ m_tracks.insert(m_tracks.begin(), CueTrack(this, 0)); m_tracks[0].set_meta("title", "(HTOA)"); segment.m_index = 1; } else segment.m_index = 0x7fffffff; m_tracks[m_tracks.size() - 2].add_segment(segment); } }
static void udisks_client_get_object_info_for_loop (UDisksClient *client, UDisksLoop *loop, UDisksBlock *block, UDisksPartition *partition, UDisksObjectInfo *info) { guint64 size = 0; gchar *size_str = NULL; gchar *s; size = udisks_block_get_size (block); if (size > 0) size_str = udisks_client_get_size_for_display (client, size, FALSE, FALSE); info->icon = g_themed_icon_new_with_default_fallbacks ("drive-removable-media"); info->icon_symbolic = g_themed_icon_new_with_default_fallbacks ("drive-removable-media-symbolic"); info->name = udisks_loop_dup_backing_file (loop); if (size_str != NULL) { info->description = g_strdup_printf (_("%s Loop Device"), size_str); } else { info->description = g_strdup (_("Loop Device")); } if (partition != NULL) { /* Translators: Used to describe a partition of a loop device. * The %d is the partition number. * The %s is the description for the loop device (e.g. "5 GB Loop Device"). */ s = g_strdup_printf (C_("part-loop", "Partition %d of %s"), udisks_partition_get_number (partition), info->description); g_free (info->description); info->description = s; } /* Translators: String used for one-liner description of a loop device. * The first %s is the description of the object (e.g. "2 GB Loop Device"). * The second %s is the name of the backing file (e.g. "/home/davidz/file.iso"). * The third %s is the special device file (e.g. "/dev/loop2"). */ info->one_liner = g_strdup_printf (C_("one-liner-loop", "%s — %s (%s)"), info->description, info->name, udisks_block_get_preferred_device (block)); info->sort_key = g_strdup_printf ("03_loop_%s_%d", last_segment (g_dbus_object_get_object_path (G_DBUS_OBJECT (info->object))), partition != NULL ? udisks_partition_get_number (partition) : 0); }