mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-12-26 11:52:25 +01:00
139 lines
4.4 KiB
Diff
139 lines
4.4 KiB
Diff
--- 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;
|