File 60-bplay_in_gramo.dpatch of Package gramofile
# Call bplay and brec from dedicated locations rather than from the standard
# path. Good for the Debian package, maybe not that desirable for the
# upstream package. [dk]
--- playwav.c 2011-08-14 13:27:14.941717336 +0200
+++ playwav.c 2011-08-14 13:27:16.193217596 +0200
@@ -32,23 +32,47 @@
#include <curses.h>
#endif
+#define BPLAYCMD "/usr/lib/bplay_gramo"
void
playwav_playit (char *filename, int usebeginendtime, double begintime,
double endtime)
{
- char shellcmd[500];
-
+ char shellcmd[500], *tmp;
+ int len, ret;
+
switch (checkfile (filename))
{
case FILE_EXISTS:
-
+
+ tmp = shellcmd;
+ len = 500;
+retry:
if (usebeginendtime)
- sprintf (shellcmd, "bplay_gramo -S -s 44100 -b 16 -J %ld -T %ld \"%s\"",
+ ret = snprintf (tmp, len,
+ BPLAYCMD " -S -s 44100 -b 16 -J %ld -T %ld \"%s\"",
(long) (begintime * 44100),
(long) ((endtime - begintime) * 44100), filename);
else
- sprintf (shellcmd, "bplay_gramo -S -s 44100 -b 16 \"%s\"", filename);
+ ret = snprintf (tmp, len,
+ BPLAYCMD " -S -s 44100 -b 16 \"%s\"", filename);
+
+ if (ret > len)
+ {
+ tmp = alloca(ret);
+ len = ret;
+ if (tmp)
+ goto retry;
+ error_window ("The system ran out of memory");
+ break;
+ }
+
+ if (ret == -1)
+ {
+ error_window ("Cannot handle file names this long. Sorry.");
+ break;
+ }
+
/* defaults for raw files (but no -r, so .wav's supply their own
parameters) - you can even listen to executables in CD quality (: */
--- reclp_main.c 2011-08-14 13:27:14.941717336 +0200
+++ reclp_main.c 2011-08-14 13:27:16.193217596 +0200
@@ -18,20 +18,39 @@
#include <curses.h>
#endif
+#define BRECCMD "/usr/lib/brec_gramo"
void
record_from_lp (char *startdir)
{
char filename[250];
- char shellcmd[500];
+ char shellcmd[500], *tmp;
+ int ret, len;
if (!record_from_lp_get_filename (startdir, filename))
return;
def_prog_mode (); /* save terminal state */
- sprintf (shellcmd, "brec_gramo -S -s 44100 -b 16 -t 6000 -w \"%s\"",
- filename);
+ tmp = shellcmd;
+ len = 500;
+
+retry:
+ ret = snprintf (tmp, 500, BRECCMD " -S -s 44100 -b 16 -t 6000 -w \"%s\"",
+ filename);
+
+ if (ret > len)
+ {
+ tmp = alloca(ret);
+ len = ret;
+ if (tmp)
+ goto retry;
+ return;
+ }
+
+ if (ret == -1)
+ return;
+
system (shellcmd);
reset_prog_mode (); /* reset terminal state */