Package: shntool
Version: 3.0.7-1
Severity: normal
Tags: patch
I want to be able to use shntool split even if there is no split points
(i.e. there is only one track in cue sheet) but I can't. It's not so
pointless as it may seem to be - this may be useful when running
cue2tracks script for multiple albums and some of them may contain only
one track.
The patch introduces flag -F to force splitting:
--- src/mode_split.c 2008-02-19 02:25:14.000000000 +0300
+++ src/mode_split.c 2012-03-10 16:58:44.000000000 +0400
@@ -57,6 +57,7 @@
static char *leadout = NULL;
static char *extract_tracks = NULL;
static char *manipulate_chars = NULL;
+static int force_split = 0;
typedef struct _cue_info {
/* global */
@@ -101,6 +102,7 @@
st_info(" (%%p = performer, %%a = album, %%t = track title, %%n =
track number)\n");
st_info(" -u len postfix each track with len amount of lead-out from next
track (*)\n");
st_info(" -x list only extract tracks in list (comma-separated, may contain
ranges)\n");
+ st_info(" -F force split even if no split points are given (outputs one
file)\n");
st_info("\n");
st_info(" (*) len must be in bytes, m:ss, m:ss.ff or m:ss.nnn
format\n");
st_info("\n");
@@ -116,7 +118,7 @@
st_ops.output_prefix = SPLIT_PREFIX;
cueinfo.format = NULL;
- while ((c = st_getopt(argc,argv,"c:e:f:l:n:m:t:u:x:")) != -1) {
+ while ((c = st_getopt(argc,argv,"c:e:f:l:n:m:t:u:x:F")) != -1) {
switch (c) {
case 'c':
if (NULL == optarg)
@@ -168,6 +170,9 @@
st_error("missing track numbers to extract");
extract_tracks = optarg;
break;
+ case 'F':
+ force_split = 1;
+ break;
}
}
@@ -736,8 +741,14 @@
if (split_point_file)
fclose(fd);
- if (1 == numfiles)
- st_error("no split points given -- nothing to do");
+ if (1 == numfiles) {
+ if (force_split) {
+ st_warning("no split points given");
+ }
+ else {
+ st_error("no split points given -- nothing to do");
+ }
+ }
if (SPLIT_INPUT_CUE == input_type && cueinfo.format) {
if (cueinfo.trackno < numfiles)
@@ -860,16 +871,16 @@
else
read_split_points_file(info);
- if (files[numfiles-2]->beginning_byte > info->data_size)
+ if (numfiles > 1 && files[numfiles-2]->beginning_byte > info->data_size)
st_error("split points go beyond input file's data size");
- if (files[numfiles-2]->beginning_byte == info->data_size) {
+ if (numfiles > 1 && files[numfiles-2]->beginning_byte == info->data_size) {
st_free(files[numfiles-1]);
numfiles--;
}
else {
files[numfiles-1]->beginning_byte = info->data_size;
- files[numfiles-1]->data_size = info->data_size -
files[numfiles-2]->beginning_byte;
+ files[numfiles-1]->data_size = info->data_size - (numfiles > 1 ?
files[numfiles-2]->beginning_byte : 0);
adjust_splitfile(numfiles-1);
}
-- System Information:
Debian Release: 6.0.3
APT prefers stable
APT policy: (700, 'stable'), (400, 'testing'), (100, 'unstable'), (1,
'experimental')
Architecture: i386 (i686)
Kernel: Linux 3.1.0-1-686-pae (SMP w/2 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages shntool depends on:
ii libc6 2.13-21 Embedded GNU C Library: Shared lib
shntool recommends no packages.
Versions of packages shntool suggests:
ii cuetools 1.3.1-9 tools for manipulating CUE/TOC fil
ii flac 1.2.1-2+b1 Free Lossless Audio Codec - comman
ii sox 14.3.2-2+b1 Swiss army knife of sound processi
-- no debconf information
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]