diff options
author | woro <woro@e10066b5-e1e2-0310-b819-94efdf66514b> | 2008-02-10 11:04:42 +0000 |
---|---|---|
committer | woro <woro@e10066b5-e1e2-0310-b819-94efdf66514b> | 2008-02-10 11:04:42 +0000 |
commit | 43ae8b875fb3cd299c59efd42aeb0aefb499f8cf (patch) | |
tree | b393b203d570d57f5af5a71bb4968fb771de8993 | |
parent | ab310f72f3b0b2ff8c2f39ee87a9ed6b6fb930d6 (diff) | |
download | vdr-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.c | 24 | ||||
-rw-r--r-- | mg_db_gd_mysql.c | 4 | ||||
-rw-r--r-- | mg_db_gd_pg.c | 2 | ||||
-rw-r--r-- | mg_db_gd_sqlite.c | 4 | ||||
-rw-r--r-- | mg_image_provider.c | 4 | ||||
-rw-r--r-- | mg_item_gd.c | 4 | ||||
-rw-r--r-- | mg_setup.c | 2 | ||||
-rw-r--r-- | mg_tools.c | 14 | ||||
-rw-r--r-- | mg_tools.h | 1 | ||||
-rw-r--r-- | vdr_actions.c | 22 | ||||
-rw-r--r-- | vdr_menu.c | 12 | ||||
-rw-r--r-- | vdr_player.c | 32 | ||||
-rw-r--r-- | vdr_stream.c | 2 |
13 files changed, 70 insertions, 57 deletions
@@ -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; @@ -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; @@ -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, ...) @@ -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(); @@ -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); } |