CC=gcc-4.0
LD=gcc-4.0
-CFLAGS=-O2 -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes -Wundef -Wredundant-decls -std=gnu99
+#CFLAGS=-O2 -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes -Wundef -Wredundant-decls -std=gnu99
+CFLAGS=-O0 -g -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes -Wundef -Wredundant-decls -std=gnu99
all: vorbiscut
oggtest: LDFLAGS+=-logg
vorbistest: LDFLAGS+=-lvorbisfile -logg -lvorbis
-vorbiscut: LDFLAGS+=-L/opt/lib -lvorbisfile -logg -lvorbis -lasound -lsndfile
+#vorbiscut: LDFLAGS+=-L/opt/lib -static -lvorbisfile -dynamic -logg -lvorbis -lasound -lsndfile
+vorbiscut: vorbiscut.o /tmp/libvorbis-1.0rc3/lib/.libs/libvorbisfile.a /tmp/libvorbis-1.0rc3/lib/.libs/libvorbis.a
+vorbiscut: LDFLAGS+=-L/opt/lib -logg -lasound -lsndfile
vorbiscut.o: CFLAGS+=-I/opt/include
clean:
#include <alsa/asoundlib.h>
#include <sndfile.h>
+static void key_cleanup(void);
+
static void __attribute__((noreturn)) die(char *msg, ...)
{
va_list args;
va_start(args, msg);
vfprintf(stderr, msg, args);
fputc('\n', stderr);
+ key_cleanup();
exit(1);
}
#define TRIPLE(pos) (int)(((pos)/rate)/60), (int)(((pos)/rate)%60), (int)((pos)%rate)
static struct termios tios, tios_old;
+static int tios_inited;
static void key_init(void)
{
if (tcsetattr(0, 0, &tios) < 0)
die("tcsetattr failed: %m");
fcntl(0, F_SETFL, O_NONBLOCK);
+ tios_inited = 1;
}
static void key_cleanup(void)
{
- tcsetattr(0, 0, &tios_old);
+ if (tios_inited)
+ {
+ tcsetattr(0, 0, &tios_old);
+ tios_inited = 0;
+ }
}
static int key_get(void)
if (start_pos < 0)
{
if (find_title)
- printf("WARNING: Title not found, marking whole file");
+ printf("WARNING: Title not found, marking whole file\n");
start_pos = 0;
end_pos = total_samples;
}
SF_INFO si;
bzero(&si, sizeof(si));
lseek(fileno(infile), 0, SEEK_SET);
- sndf = sf_open_fd(fileno(infile), O_RDONLY, &si, 0);
+ sndf = sf_open_fd(fileno(infile), SFM_READ, &si, 0);
if (!sndf)
die("sf_open_fd() failed: %s", sf_strerror(NULL));
total_samples = si.frames;
{
if (ov_pcm_tell(&vf) != pos)
{
- printf("!!! CONFUSED POSITION\n");
- ov_pcm_seek(&vf, pos);
- if (ov_pcm_tell(&vf) != pos)
- printf(">>> unable to correct :(\n");
+ printf("\n!!! CONFUSED POSITION\n");
+ //ov_pcm_seek(&vf, pos);
+ //if (ov_pcm_tell(&vf) != pos)
+ //printf(">>> unable to correct :(\n");
}
for (;;)
{
else
*f = MAX(*f - fst, 0);
recalc_faders();
- if (mode == 1)
+ if (mode == M_PRE)
go = start_pos;
else
go = CLAMP(end_pos - lback);
else
{
nsamp = sizeof(buf)/4;
- if (pos + nsamp > pos)
+ if (pos + nsamp > end)
nsamp = end - pos;
nsamp = cooked_read(buf, pos, nsamp, (mode == M_PRE), (mode == M_POST));
nread = nsamp;
for (;;)
{
int n = sizeof(buf) / 4;
- if (pos + n > end_pos)
+ if (end_pos - pos < n)
n = end_pos - pos;
if (!n)
break;