taken from http://vdr-portal.de/board/thread.php?threadid=38968 diff -Nur noad.old/svdrpc.cpp noad.new/svdrpc.cpp --- noad.old/svdrpc.cpp 2005-02-12 18:32:10.000000000 +0100 +++ noad.new/svdrpc.cpp 2005-09-13 12:52:08.000000000 +0200 @@ -250,13 +250,30 @@ { char *baseName = NULL; char *cp = NULL; - char *vend = strchr(filename,'/'); - if( vend ) + char *fname = NULL; + char *vend = NULL; + + asprintf(&fname, "%s", filename); + if(fname[strlen(fname) - 1] == '/') + fname[strlen(fname) - 1] = '\0'; + vend = strrchr(fname,'/'); + if(vend) { + *vend = '\0'; + vend = strrchr(fname,'/'); + } + + if( vend && vend[1] == '_') + { + *vend = '\0'; + vend = strrchr(fname,'/'); + } + + if( vend && strchr(vend+1, '/')) vend = strchr(vend+1,'/'); if( vend ) - asprintf(&baseName,"mesg %s %s",msg,vend+1); + asprintf(&baseName,"mesg %s '%s'",msg,vend+1); else - asprintf(&baseName,"mesg %s %s",msg, filename); + asprintf(&baseName,"mesg %s '%s'",msg, filename); if( baseName[strlen(baseName)-1] == '/' ) baseName[strlen(baseName)-1] = '\0'; vend = strrchr(baseName, '/'); @@ -268,6 +285,7 @@ free(baseName); free(cp); + free(fname); } void noadStartMessage( const char *s)