X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxboard.c;h=8179fa15831b1674b42b7b333cc89368405cf188;hb=6d626a70206cc3ad3f5ea665299c762e1013042e;hp=68d875730170c30849fedcbcad31b83d584a1675;hpb=b0cd2c1c921fde42bcacfd5363e3b319eada846c;p=xboard.git diff --git a/gtk/xboard.c b/gtk/xboard.c index 68d8757..8179fa1 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -2240,24 +2240,33 @@ FrameDelay (int time) #endif +static int +FindLogo (char *place, char *name, char *buf) +{ // check if file exists in given place + FILE *f; + if(!place) return 0; + snprintf(buf, MSG_SIZ, "%s/%s.png", place, name); + if(*place && strcmp(place, ".") && (f = fopen(buf, "r")) ) { + fclose(f); + return 1; + } + return 0; +} + static void LoadLogo (ChessProgramState *cps, int n, Boolean ics) { char buf[MSG_SIZ], *logoName = buf; - FILE *f; if(appData.logo[n][0]) { logoName = appData.logo[n]; } else if(appData.autoLogo) { if(ics) { // [HGM] logo: in ICS mode second can be used for ICS sprintf(buf, "%s/%s.png", appData.logoDir, appData.icsHost); - } else { // engine; look in engine-dir (if any) first - snprintf(buf, MSG_SIZ, "%s/logo.png", appData.directory[n]); - if(appData.directory[n] && appData.directory[n][0] - && strcmp(appData.directory[n], ".") && (f = fopen(buf, "r")) ) - fclose(f); - else // no engine dir or no logo.png in it: look in logo dir - if(appData.logoDir && appData.logoDir[0]) - sprintf(buf, "%s/%s.png", appData.logoDir, cps->tidy); + } else { // engine; cascade + if(!FindLogo(appData.logoDir, cps->tidy, buf) && // first try user log folder + !FindLogo(appData.directory[n], "logo", buf) && // then engine directory + !FindLogo("/usr/local/share/games/plugins/logos", cps->tidy, buf) ) // then system folders + FindLogo("/usr/share/games/plugins/logos", cps->tidy, buf); } } if(logoName[0])