summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorworo <woro@e10066b5-e1e2-0310-b819-94efdf66514b>2008-02-10 11:04:42 +0000
committerworo <woro@e10066b5-e1e2-0310-b819-94efdf66514b>2008-02-10 11:04:42 +0000
commit43ae8b875fb3cd299c59efd42aeb0aefb499f8cf (patch)
treeb393b203d570d57f5af5a71bb4968fb771de8993
parentab310f72f3b0b2ff8c2f39ee87a9ed6b6fb930d6 (diff)
downloadvdr-plugin-muggle-43ae8b875fb3cd299c59efd42aeb0aefb499f8cf.tar.gz
vdr-plugin-muggle-43ae8b875fb3cd299c59efd42aeb0aefb499f8cf.tar.bz2
hide asprintf calls in msprintf, msprintf checks for
error results (happens especially with illegal UTF-8 characters) git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk/muggle-plugin@1013 e10066b5-e1e2-0310-b819-94efdf66514b
-rw-r--r--mg_db.c24
-rw-r--r--mg_db_gd_mysql.c4
-rw-r--r--mg_db_gd_pg.c2
-rw-r--r--mg_db_gd_sqlite.c4
-rw-r--r--mg_image_provider.c4
-rw-r--r--mg_item_gd.c4
-rw-r--r--mg_setup.c2
-rw-r--r--mg_tools.c14
-rw-r--r--mg_tools.h1
-rw-r--r--vdr_actions.c22
-rw-r--r--vdr_menu.c12
-rw-r--r--vdr_player.c32
-rw-r--r--vdr_stream.c2
13 files changed, 70 insertions, 57 deletions
diff --git a/mg_db.c b/mg_db.c
index 6a53454..995c15c 100644
--- a/mg_db.c
+++ b/mg_db.c
@@ -193,9 +193,7 @@ char*
mgSQLStringImp::quoted() const
{
if (!m_quoted)
- {
- asprintf(&m_quoted,"'%s'",unquoted());
- }
+ msprintf(&m_quoted,"'%s'",unquoted());
return m_quoted;
}
@@ -372,7 +370,7 @@ mgDb::Sync(char * const * path_argv)
if (!item->Valid(true))
{
char *b;
- asprintf(&b,"DELETE FROM tracks WHERE id=%ld",item->getItemid());
+ msprintf(&b,"DELETE FROM tracks WHERE id=%ld",item->getItemid());
count += Execute(b);
free(b);
}
@@ -1018,7 +1016,7 @@ mgSQLString
mgDb::Build_cddbid(const mgSQLString& artist) const
{
char *s;
- asprintf(&s,"%ld-%.9s",random(),artist.original());
+ msprintf(&s,"%ld-%.9s",random(),artist.original());
mgSQLString result = mgSQLString(s);
free(s);
return result;
@@ -1029,7 +1027,7 @@ mgDb::getAlbum(const char *filename,const mgSQLString& c_album,
const mgSQLString& c_artist)
{
char *b;
- asprintf(&b,"SELECT cddbid FROM album"
+ msprintf(&b,"SELECT cddbid FROM album"
" WHERE title=%s AND artist=%s",c_album.quoted(),c_artist.quoted());
mgSQLString result(get_col0(b));
free(b);
@@ -1044,13 +1042,13 @@ mgDb::getAlbum(const char *filename,const mgSQLString& c_album,
mgSQLString c_directory(directory);
free(directory);
char *where;
- asprintf(&where,"WHERE tracks.sourceid=album.cddbid "
+ msprintf(&where,"WHERE tracks.sourceid=album.cddbid "
"AND %s=%s "
"AND album.title=%s",
Directory().c_str(),c_directory.quoted(),
c_album.quoted());
// how many artists will the album have after adding this one?
- asprintf(&b,"SELECT distinct album.artist FROM album, tracks %s ",where);
+ msprintf(&b,"SELECT distinct album.artist FROM album, tracks %s ",where);
mgQuery q(DbHandle(),b);
free(b);
long new_album_artists = q.Rows();
@@ -1066,10 +1064,10 @@ mgDb::getAlbum(const char *filename,const mgSQLString& c_album,
if (new_album_artists>1 && strcmp(buf.original(),"Various Artists"))
// is the album multi artist and not yet marked as such?
{
- asprintf(&b,"SELECT album.cddbid FROM album, tracks %s",where);
+ msprintf(&b,"SELECT album.cddbid FROM album, tracks %s",where);
result=mgSQLString(get_col0(b));
free(b);
- asprintf(&b,"UPDATE album SET artist='Various Artists' WHERE cddbid=%s",result.quoted());
+ msprintf(&b,"UPDATE album SET artist='Various Artists' WHERE cddbid=%s",result.quoted());
Execute(b);
free(b);
// here we could change all tracks.sourceid to result and delete
@@ -1081,7 +1079,7 @@ mgDb::getAlbum(const char *filename,const mgSQLString& c_album,
{ // no usable album found
result=Build_cddbid(c_artist);
char *b;
- asprintf(&b,"INSERT INTO album (title,artist,cddbid) "
+ msprintf(&b,"INSERT INTO album (title,artist,cddbid) "
"VALUES(%s,%s,%s)",
c_album.quoted(),c_artist.quoted(),result.quoted());
int rows = Execute(b);
@@ -1142,7 +1140,7 @@ mgDb::DefineGenre(const string genre)
if (c!='a')
sprintf(strchr(g,0)," %c",c);
char *b;
- asprintf(&b,"INSERT INTO genre (id,genre) VALUES('z%c','%s')",c,g);
+ msprintf(&b,"INSERT INTO genre (id,genre) VALUES('z%c','%s')",c,g);
Execute(b);
free(b);
}
@@ -1169,7 +1167,7 @@ mgDb::DefineGenre(const string genre)
}
char *b;
mgSQLString c_genre(genre);
- asprintf(&b,"INSERT INTO genre (id,genre) VALUES('%s',%s)",newid,c_genre.quoted());
+ msprintf(&b,"INSERT INTO genre (id,genre) VALUES('%s',%s)",newid,c_genre.quoted());
Execute(b);
free(b);
m_Genres[genre]=newid;
diff --git a/mg_db_gd_mysql.c b/mg_db_gd_mysql.c
index 5c4dc46..1bc1c5a 100644
--- a/mg_db_gd_mysql.c
+++ b/mg_db_gd_mysql.c
@@ -198,7 +198,7 @@ mgDbServerMySQL::mgDbServerMySQL()
the_setup.DbDatadir,errno);
abort();
}
- asprintf(&mysql_embedded_args[1],"--datadir=%s",the_setup.DbDatadir);
+ msprintf(&mysql_embedded_args[1],"--datadir=%s",the_setup.DbDatadir);
mgDebug(1,"calling mysql_server_init for embedded in %s",the_setup.DbDatadir);
}
else
@@ -633,7 +633,7 @@ bool
mgDbGd::FieldExists(string table, string field)
{
char *b;
- asprintf(&b,"DESCRIBE %s %s",table.c_str(),field.c_str());
+ msprintf(&b,"DESCRIBE %s %s",table.c_str(),field.c_str());
mgQuery q(m_db,b);
free(b);
if (q.Next())
diff --git a/mg_db_gd_pg.c b/mg_db_gd_pg.c
index 05953d3..7cab534 100644
--- a/mg_db_gd_pg.c
+++ b/mg_db_gd_pg.c
@@ -323,7 +323,7 @@ bool
mgDbGd::FieldExists(string table, string field)
{
char *b;
- asprintf(&b,"SELECT COUNT(*) FROM information_schema.columns WHERE table_name='album' AND column_name='%s'",field.c_str());
+ msprintf(&b,"SELECT COUNT(*) FROM information_schema.columns WHERE table_name='album' AND column_name='%s'",field.c_str());
bool result = exec_count(b)==1;
free(b);
return result;
diff --git a/mg_db_gd_sqlite.c b/mg_db_gd_sqlite.c
index d5a6be1..edc7272 100644
--- a/mg_db_gd_sqlite.c
+++ b/mg_db_gd_sqlite.c
@@ -266,7 +266,7 @@ mgDecade(sqlite3_context *context, int argc, sqlite3_value **argv)
assert(argc==1);
unsigned int year=sqlite3_value_int(argv[0]);
char *buf;
- asprintf(&buf,"%02d",(year-year%10)%100);
+ msprintf(&buf,"%02d",(year-year%10)%100);
sqlite3_result_text(context,buf,2,free);
}
@@ -341,7 +341,7 @@ bool
mgDbGd::FieldExists(string table, string field)
{
char *b;
- asprintf(&b,"SELECT %s FROM %s LIMIT 1",field.c_str(),table.c_str());
+ msprintf(&b,"SELECT %s FROM %s LIMIT 1",field.c_str(),table.c_str());
mgQuery q(m_db,b,mgQuerySilent);
free(b);
return q.ErrorMessage().empty();
diff --git a/mg_image_provider.c b/mg_image_provider.c
index aeab5ec..801c504 100644
--- a/mg_image_provider.c
+++ b/mg_image_provider.c
@@ -362,7 +362,7 @@ void mgImageProvider::Action()
char *tmp;
- asprintf( &tmp, "muggle-image-convert \"%s\" \"%s\"", filename.c_str(), tmpFile.c_str() );
+ msprintf( &tmp, "muggle-image-convert \"%s\" \"%s\"", filename.c_str(), tmpFile.c_str() );
system( (const char*) tmp );
free(tmp);
@@ -406,7 +406,7 @@ void mgImageProvider::writeImage( TagLib::ByteVector &image, int num, string &im
// save image_data to temporary file
char *buf;
- asprintf( &buf, "%s/image-%d.jpg", image_cache.c_str(), num );
+ msprintf( &buf, "%s/image-%d.jpg", image_cache.c_str(), num );
FILE *f = fopen( buf, "w+" );
fwrite( image_data, sizeof(char), len, f );
diff --git a/mg_item_gd.c b/mg_item_gd.c
index 274f11e..2858cc2 100644
--- a/mg_item_gd.c
+++ b/mg_item_gd.c
@@ -185,7 +185,7 @@ mgItemGd::getSourceFile(bool AbsolutePath,bool Silent) const
{
struct stat stbuf;
char *dir;
- asprintf(&dir,"%s%02d",tld.c_str(),i);
+ msprintf(&dir,"%s%02d",tld.c_str(),i);
gd_music_dir_exists[i]=!stat(dir,&stbuf);
free(dir);
}
@@ -196,7 +196,7 @@ mgItemGd::getSourceFile(bool AbsolutePath,bool Silent) const
if (!gd_music_dir_exists[i])
continue;
char *file;
- asprintf(&file,"%02d/%s",i,m_mp3file.c_str());
+ msprintf(&file,"%02d/%s",i,m_mp3file.c_str());
if (readable(file))
{
m_mp3file = file;
diff --git a/mg_setup.c b/mg_setup.c
index 5b8d4d7..f139d84 100644
--- a/mg_setup.c
+++ b/mg_setup.c
@@ -44,7 +44,7 @@ mgSetup::mgSetup ()
DbName = strdup ("GiantDisc");
DbUser = 0;
DbPass = 0;
- asprintf(&DbDatadir,"%s/.muggle",getenv("HOME"));
+ msprintf(&DbDatadir,"%s/.muggle",getenv("HOME"));
ToplevelDir = strdup(MUSICDIR "/");
CreateMode = false;
DeleteStaleReferences = false;
diff --git a/mg_tools.c b/mg_tools.c
index 266dee2..056f6a8 100644
--- a/mg_tools.c
+++ b/mg_tools.c
@@ -31,6 +31,20 @@ mgSetDebugLevel (int new_level)
DEBUG_LEVEL = new_level;
}
+int
+msprintf(char **strp, const char *fmt, ...)
+{
+ va_list ap;
+ int res;
+ va_start (ap, fmt);
+ res=asprintf (strp, fmt, ap);
+ if (res<0)
+ {
+ mgError("asprintf(fmt=%s) returns %d. This probably means illformed UTF-8 characters."
+ " Please convert your file names to UTF-8",fmt,res);
+ }
+ va_end (ap);
+}
void
mgDebug (int level, const char *fmt, ...)
diff --git a/mg_tools.h b/mg_tools.h
index be2bf93..12cf432 100644
--- a/mg_tools.h
+++ b/mg_tools.h
@@ -31,6 +31,7 @@ void mgDebug (int level, const char *fmt, ...);
void mgDebug (const char *fmt, ...);
void mgWarning (const char *fmt, ...);
void mgError (const char *fmt, ...);
+int msprintf(char **strp, const char *fmt, ...);
//@}
#ifdef DEBUG
diff --git a/vdr_actions.c b/vdr_actions.c
index 41ffa95..70b3353 100644
--- a/vdr_actions.c
+++ b/vdr_actions.c
@@ -327,16 +327,16 @@ mgEntry::MenuName(const unsigned int idx,const mgListItem* item)
if (selection()->isCollectionlist())
{
if (item->value() == osd()->default_collection)
- asprintf(&result,"-> %s%s",ct,item->value().c_str());
+ msprintf(&result,"-> %s%s",ct,item->value().c_str());
else
- asprintf(&result," %s%s",ct,item->value().c_str());
+ msprintf(&result," %s%s",ct,item->value().c_str());
}
else if (selection()->inCollection())
- asprintf(&result,"%4d %s",idx,item->value().c_str());
+ msprintf(&result,"%4d %s",idx,item->value().c_str());
else if (selection()->isLanguagelist())
- asprintf(&result,"%s%s",ct,dgettext("iso_639",item->value().c_str()));
+ msprintf(&result,"%s%s",ct,dgettext("iso_639",item->value().c_str()));
else
- asprintf(&result,"%s%s",ct,item->value().c_str());
+ msprintf(&result,"%s%s",ct,item->value().c_str());
return result;
}
@@ -519,7 +519,7 @@ mgExternal::Execute()
if (command->Confirm ())
{
char *buffer;
- asprintf (&buffer, "%s?", command->Title ());
+ msprintf (&buffer, "%s?", command->Title ());
confirmed = Interface->Confirm (buffer);
free (buffer);
}
@@ -742,7 +742,7 @@ class mgSetDefaultCollection:public mgCommand
const char * mgSetDefaultCollection::MenuName(const unsigned int idx,const mgListItem* item)
{
char *b;
- asprintf (&b, tr("Set default to collection '%s'"),
+ msprintf (&b, tr("Set default to collection '%s'"),
selection ()->getCurrentValue().c_str());
return b;
}
@@ -828,7 +828,7 @@ mgAddAllToCollection::ExecuteMove()
if (osd() ->Menus.size()>1)
osd ()->CloseMenu(); // TODO Gebastel...
char *b;
- asprintf(&b,tr("'%s' to collection"),selection()->getCurrentValue().c_str());
+ msprintf(&b,tr("'%s' to collection"),selection()->getCurrentValue().c_str());
osd ()->newmenu = new mgTreeAddToCollSelector(string(b));
osd ()->collselection()->leave_all();
osd ()->newposition = osd()->collselection()->getPosition();
@@ -851,7 +851,7 @@ const char *
mgAddAllToDefaultCollection::MenuName (const unsigned int idx,const mgListItem* item)
{
char *b;
- asprintf (&b, tr ("Add all to '%s'"),
+ msprintf (&b, tr ("Add all to '%s'"),
osd ()->default_collection.c_str ());
return b;
}
@@ -957,7 +957,7 @@ const char *
mgAddThisToDefaultCollection::MenuName (const unsigned int idx,const mgListItem* item)
{
char *b;
- asprintf (&b, tr ("Add to '%s'"), osd ()->default_collection.c_str ());
+ msprintf (&b, tr ("Add to '%s'"), osd ()->default_collection.c_str ());
return b;
}
@@ -992,7 +992,7 @@ mgRemoveAllFromCollection::ExecuteRemove ()
if (osd() ->Menus.size()>1)
osd ()->CloseMenu(); // TODO Gebastel...
char *b;
- asprintf(&b,tr("Remove '%s' from collection"),osd()->moveselection->getListname().c_str());
+ msprintf(&b,tr("Remove '%s' from collection"),osd()->moveselection->getListname().c_str());
osd ()->newmenu = new mgTreeRemoveFromCollSelector(string(b));
osd ()->collselection()->leave_all();
osd ()->newposition = osd()->collselection()->getPosition();
diff --git a/vdr_menu.c b/vdr_menu.c
index 58508d7..82fa29a 100644
--- a/vdr_menu.c
+++ b/vdr_menu.c
@@ -260,9 +260,9 @@ mgMainMenu::SaveState()
mgValmap nmain("MainMenu");
mgValmap nsel("tree");
mgValmap ncol("collection");
- asprintf(&oldfile,"%s/muggle.state.old",cPlugin::ConfigDirectory ("muggle"));
- asprintf(&newfile,"%s/muggle.state.new",cPlugin::ConfigDirectory ("muggle"));
- asprintf(&statefile,"%s/muggle.state",cPlugin::ConfigDirectory ("muggle"));
+ msprintf(&oldfile,"%s/muggle.state.old",cPlugin::ConfigDirectory ("muggle"));
+ msprintf(&newfile,"%s/muggle.state.new",cPlugin::ConfigDirectory ("muggle"));
+ msprintf(&statefile,"%s/muggle.state",cPlugin::ConfigDirectory ("muggle"));
FILE *f = fopen(newfile,"w");
if (!f)
{
@@ -324,7 +324,7 @@ mgMainMenu::mgMainMenu ():cOsdMenu ("",25)
// load values from state file
char *b;
- asprintf(&b,"%s/muggle.state",cPlugin::ConfigDirectory ("muggle"));
+ msprintf(&b,"%s/muggle.state",cPlugin::ConfigDirectory ("muggle"));
FILE *f = fopen(b,"r");
free(b);
if (f) {
@@ -833,7 +833,7 @@ const char*
mgMainMenu::Message1(const char *msg, const string &arg)
{
if (strlen(msg)==0) return 0;
- asprintf(&m_message, tr(msg), arg.c_str());
+ msprintf(&m_message, tr(msg), arg.c_str());
return m_message;
}
@@ -1212,7 +1212,7 @@ bool
create_question()
{
char *b;
- asprintf(&b,tr("Create database %s?"),the_setup.DbName);
+ msprintf(&b,tr("Create database %s?"),the_setup.DbName);
bool result = Interface->Confirm(b);
free(b);
return result;
diff --git a/vdr_player.c b/vdr_player.c
index 9a87244..8297877 100644
--- a/vdr_player.c
+++ b/vdr_player.c
@@ -1349,35 +1349,35 @@ mgPlayerControl::ShowContents ()
char *buf;
if (num_items > 0)
{
- asprintf (&buf, "Title:\t%s",
+ msprintf (&buf, "Title:\t%s",
player->getCurrent ()->getTitle ().c_str ());
m_menu->SetItem (buf, 0, false, false);
free (buf);
}
if (num_items > 1)
{
- asprintf (&buf, "Artist:\t%s",
+ msprintf (&buf, "Artist:\t%s",
player->getCurrent ()->getArtist ().c_str ());
m_menu->SetItem (buf, 1, false, false);
free (buf);
}
if (num_items > 2)
{
- asprintf (&buf, "Album:\t%s",
+ msprintf (&buf, "Album:\t%s",
player->getCurrent ()->getAlbum ().c_str ());
m_menu->SetItem (buf, 2, false, false);
free (buf);
}
if (num_items > 3)
{
- asprintf (&buf, "Genre:\t%s",
+ msprintf (&buf, "Genre:\t%s",
player->getCurrent ()->getGenre ().c_str ());
m_menu->SetItem (buf, 3, false, false);
free (buf);
}
if( num_items > 4 )
{
- asprintf (&buf, "Year:\t%d",
+ msprintf (&buf, "Year:\t%d",
player->getCurrent ()->getYear () );
m_menu->SetItem (buf, 4, false, false);
free (buf);
@@ -1385,7 +1385,7 @@ mgPlayerControl::ShowContents ()
if (num_items > 5)
{
int len = player->getCurrent ()->getDuration ();
- asprintf (&buf, "Length:\t%s",
+ msprintf (&buf, "Length:\t%s",
#if VDRVERSNUM >= 10318
*IndexToHMSF (SecondsToFrames (len)));
#else
@@ -1396,7 +1396,7 @@ mgPlayerControl::ShowContents ()
}
if (num_items > 6)
{
- asprintf (&buf, "Bit rate:\t%s",
+ msprintf (&buf, "Bit rate:\t%s",
player->getCurrent ()->getBitrate ().c_str ());
m_menu->SetItem (buf, 6, false, false);
free (buf);
@@ -1405,14 +1405,14 @@ mgPlayerControl::ShowContents ()
{
int sr = player->getCurrent ()->getSampleRate ();
- asprintf (&buf, "Sampling rate:\t%d", sr);
+ msprintf (&buf, "Sampling rate:\t%d", sr);
m_menu->SetItem (buf, 7, false, false);
free (buf);
}
if (num_items > 8)
{
int t = player->getCurrent ()->getTrack();
- asprintf (&buf, "File name:\t%d", t);
+ msprintf (&buf, "File name:\t%d", t);
m_menu->SetItem (buf, 8, false, false);
free (buf);
}
@@ -1420,7 +1420,7 @@ mgPlayerControl::ShowContents ()
{
string sf = player->getCurrent ()->getSourceFile ();
char *p = strrchr(sf.c_str(),'/');
- asprintf (&buf, "File name:\t%s", p+1);
+ msprintf (&buf, "File name:\t%s", p+1);
m_menu->SetItem (buf, 9, false, false);
free (buf);
}
@@ -1442,7 +1442,7 @@ mgPlayerControl::ShowContents ()
if (item)
{
char *buf;
- asprintf (&buf, "%s\t%s", item->getTitle ().c_str (),
+ msprintf (&buf, "%s\t%s", item->getTitle ().c_str (),
item->getArtist ().c_str ());
m_menu->SetItem (buf, i, i == 0, i >= 0);
free (buf);
@@ -1474,7 +1474,7 @@ mgPlayerControl::ShowProgress ()
{
total_frames = SecondsToFrames (list->getLength ());
current_frame += SecondsToFrames (list->getCompletedLength ());
- asprintf (&buf, "(%d/%zd) %s:%s",
+ msprintf (&buf, "(%d/%zd) %s:%s",
list->getItemPosition () + 1, list->items().size(),
player->getCurrent ()->getArtist ().c_str (),
player->getCurrent ()->getTitle ().c_str ());
@@ -1482,7 +1482,7 @@ mgPlayerControl::ShowProgress ()
}
else
{ // track view
- asprintf (&buf, "%s: %s",
+ msprintf (&buf, "%s: %s",
player->getCurrent ()->getArtist ().c_str (),
player->getCurrent ()->getTitle ().c_str ());
}
@@ -1830,7 +1830,7 @@ mgPlayerControl::StatusMsgReplaying ()
if (item->getArtist ().length () > 0)
{
- asprintf (&szBuf, "[%c%c] (%d/%zd) %s - %s",
+ msprintf (&szBuf, "[%c%c] (%d/%zd) %s - %s",
cLoopMode,
cShuffle,
sel->getItemPosition () + 1,
@@ -1840,7 +1840,7 @@ mgPlayerControl::StatusMsgReplaying ()
}
else
{
- asprintf (&szBuf, "[%c%c] (%d/%zd) %s",
+ msprintf (&szBuf, "[%c%c] (%d/%zd) %s",
cLoopMode,
cShuffle,
sel->getItemPosition () + 1,
@@ -1850,7 +1850,7 @@ mgPlayerControl::StatusMsgReplaying ()
}
else
{
- asprintf (&szBuf, "[muggle]");
+ msprintf (&szBuf, "[muggle]");
}
//fprintf(stderr,"StatusMsgReplaying(%s)\n",szBuf);
diff --git a/vdr_stream.c b/vdr_stream.c
index cf3be99..8ec6caf 100644
--- a/vdr_stream.c
+++ b/vdr_stream.c
@@ -298,7 +298,7 @@ bool mgStream::fileinfo (bool log)
{
char *
tmpbuf;
- asprintf (&tmpbuf, "%llx:%llx", sfs.f_blocks, sfs.f_files);
+ msprintf (&tmpbuf, "%llx:%llx", sfs.f_blocks, sfs.f_files);
m_fsID = tmpbuf;
free (tmpbuf);
}