Commit 5a9af1f3 authored by Carlo Landmeter's avatar Carlo Landmeter

testing/mp3info: new aport

parent 10fd03a3
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
pkgname=mp3info
pkgver=0.8.5a
pkgrel=0
pkgdesc="An MP3 technical info viewer and ID3 1.x tag editor"
url="http://www.ibiblio.org/mp3info/"
license="GPL"
depends="uclibc ncurses"
makedepends="ncurses-dev"
subpackages=""
source="ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-0.8.5a.tgz
escape_chars.patch"
build() {
cd "$srcdir/$pkgname-$pkgver"
patch -p1 -i "$srcdir"/escape_chars.patch || return 1
make mp3info || return 1
install -Dm755 mp3info "$pkgdir"/usr/bin/mp3info
install -Dm644 mp3info.1 "$pkgdir"/usr/share/man/man1/mp3info.1
}
md5sums="cb7b619a10a40aaac2113b87bb2b2ea2 mp3info-0.8.5a.tgz
d0be1068503056b775bf10f05a8497b8 escape_chars.patch"
--- orig/mp3info-0.8.5a/mp3info.c Mon Nov 6 04:03:17 2006
+++ mp3info-0.8.5a/mp3info.c Thu Mar 19 12:33:27 2009
@@ -32,6 +32,7 @@
#undef __MAIN
#include <sys/stat.h>
+char *escape_chars=NULL;
char FILENAME_FORMAT_STRING[]="File: %F\n";
char ID3_FORMAT_STRING[]="Title: %-30t Track: %n\nArtist: %a\nAlbum: %-30l Year: %y\nComment: %-30c Genre: %g [%G]\n";
char TECH_FORMAT_STRING[]="Media Type: MPEG %2.1v Layer %L\nAudio: %r KB/s, %qKHz (%o)\nEmphasis: %e\nCRC: %E\nCopyright: %C\nOriginal: %O\nPadding: %p\nLength: %m:%02s\n";
@@ -66,7 +67,7 @@
- while ((c=getopt(argc,argv,"vhGidfxFt:a:l:y:c:n:g:p:r:"))!=-1) {
+ while ((c=getopt(argc,argv,"vhGidfxFmt:a:l:y:c:n:g:p:r:e:"))!=-1) {
switch(c) {
case 'v': /* View mode is now automatic when no changes are
@@ -159,6 +160,12 @@
}
break;
case 'F': quickscan=0; break;
+ case 'e':
+ escape_chars = optarg;
+ break;
+ case 'm':
+ escape_chars = "'\"\b\n\r\t\\";
+ break;
}
}
--- orig/mp3info-0.8.5a/mp3info.h Fri Nov 10 00:14:52 2006
+++ mp3info-0.8.5a/mp3info.h Thu Mar 19 10:42:07 2009
@@ -111,6 +111,7 @@
extern int galphagenreindex [MAXGENRE+2];
#endif
+extern char *escape_chars;
void tagedit_curs(char *filename, int filenum, int fileoutof, id3tag *tag);
--- orig/mp3info-0.8.5a/textfunc.c Mon Nov 6 08:59:12 2006
+++ mp3info-0.8.5a/textfunc.c Thu Mar 19 12:24:52 2009
@@ -24,6 +24,7 @@
*/
#include "mp3info.h"
+#include "libgen.h"
char *layer_text[] = {
"I", "II", "III"
@@ -70,6 +71,8 @@
"\t-n track\tSpecify ID3 v1.1 track number\n"\
"\t-t title\tSpecify ID3 track title\n"\
"\t-y year\t\tSpecify ID3 copyright year\n\n"\
+ "\t-m\t\tMySQL safe output\n"\
+ "\t-e\t\tCharacters to escape\n"\
"\t-G\t\tDisplay valid genres\n"\
"\t-h\t\tDisplay this help page\n"\
"\t-x\t\tDisplay technical attributes of the MP3 file\n"\
@@ -85,6 +88,7 @@
"\n\t\tConversion Specifiers\n\n"\
"\t\t%%f\tFilename without the path (string)\n"\
"\t\t%%F\tFilename with the path (string)\n"\
+ "\t\t%%d\tPath without filename (string)\n"\
"\t\t%%k\tFile size in KB (integer)\n"\
"\n\t\t%%a\tArtist (string)\n"\
"\t\t%%c\tComment (string)\n"\
@@ -217,7 +221,27 @@
}
}
+/* const char *escape_chars = "'\"\b\n\r\t\\%_"; */
+/* escape the chars so its sql safe */
+char *escape_string(char *str)
+{
+ static char buf[8192];
+ char *src = str;
+ char *dest = buf;
+ /* we might want a cmdline flag to enable escaping */
+ if (escape_chars == NULL || str == NULL)
+ return str;
+
+ while (*src && dest < (buf + sizeof(buf) - 1)) {
+ if (strchr(escape_chars, *src))
+ *dest++ = '\\';
+ *dest++ = *src++;
+ }
+ *dest = '\0';
+ return buf;
+}
+
void format_output (char *format_string,mp3info *mp3, int vbr_report) {
char genre[40]="";
@@ -242,16 +266,16 @@
mod[modlen]=0;
mod[modlen-1]='s';
switch (*code) {
- case 't': printf(mod,mp3->id3.title); break;
+ case 't': printf(mod,escape_string(mp3->id3.title)); break;
case 'f': pos = (pos=strrchr(mp3->filename,'/')) ?
pos+1 : mp3->filename;
- printf(mod,pos); break;
- case 'F': printf(mod,mp3->filename); break;
- case 'a': printf(mod,mp3->id3.artist); break;
- case 'l': printf(mod,mp3->id3.album); break;
+ printf(mod,escape_string(pos)); break;
+ case 'F': printf(mod,escape_string(mp3->filename)); break;
+ case 'a': printf(mod,escape_string(mp3->id3.artist)); break;
+ case 'l': printf(mod,escape_string(mp3->id3.album)); break;
case 'k': mod[modlen-1] = 'd'; printf(mod,mp3->datasize / 1024); break;
- case 'y': printf(mod,mp3->id3.year); break;
- case 'c': printf(mod,mp3->id3.comment); break;
+ case 'y': printf(mod,escape_string(mp3->id3.year)); break;
+ case 'c': printf(mod,escape_string(mp3->id3.comment)); break;
case 'n': if(mp3->id3_isvalid && mp3->id3.track[0]) {
mod[modlen-1]='d';
printf(mod, (int) mp3->id3.track[0]);
@@ -259,7 +283,7 @@
break;
case 'g': if(mp3->id3_isvalid) {
text_genre(mp3->id3.genre,genre);
- printf(mod,genre);
+ printf(mod,escape_string(genre));
}
break;
case 'G': if(mp3->id3_isvalid) {
@@ -348,6 +372,7 @@
}
break;
case '%': printf("%%"); break;
+ case 'd': printf(mod,escape_string(dirname(mp3->filename))); break;
default: printf("%%%c",*(code=percent+1)); break;
}
format=code+1;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment