}
}
+ // unique-id to use for the cache mount
+ char *uid = app -> unique_id;
+
+ if ( app -> appdata_dirname ) {
+ uid = app -> appdata_dirname;
+ }
+
// if we don't have a file path sorted out yet, means we need to mount and figure it
if ( ! filepath [ 0 ] ) {
sprintf ( fullpath, "%s/%s", app -> object_path, app -> object_filename );
- if ( ! pnd_pnd_mount ( pnd_run_script, fullpath, app -> unique_id ) ) {
+ if ( ! pnd_pnd_mount ( pnd_run_script, fullpath, uid ) ) {
pnd_log ( pndn_debug, "Couldn't mount '%s' for preview\n", fullpath );
return ( 0 ); // couldn't mount?!
}
- sprintf ( filepath, "%s/%s/%s", PND_MOUNT_PATH, app -> unique_id, app -> preview_pic1 );
+ sprintf ( filepath, "%s/%s/%s", PND_MOUNT_PATH, uid, app -> preview_pic1 );
}
// load whatever path we've got
if ( ! s ) {
// unmount it, if mounted
if ( fullpath [ 0 ] ) {
- pnd_pnd_unmount ( pnd_run_script, fullpath, app -> unique_id );
+ pnd_pnd_unmount ( pnd_run_script, fullpath, uid );
}
pnd_log ( pndn_debug, "Couldn't open image '%s' for preview\n", filepath );
return ( 0 );
} // ovr?
// if this is a real pnd file (dir-app or pnd-file-app), then try to pull icon from there
- if ( ! ( app -> object_flags & PND_DISCO_GENERATED ) ) {
+ if ( ! iconbuf ) {
+
+ if ( app -> object_flags & PND_DISCO_GENERATED ) {
+
+ // maybe we can discover this single-file and find an icon?
+ if ( strcasestr ( app -> object_filename, PND_PACKAGE_FILEEXT ) ) {
+
+ // looks like a pnd, now what do we do..
+ pnd_box_handle h = pnd_disco_file ( app -> object_path, app -> object_filename );
- // pull icon into buffer from .pnd if not already found an icon
- if ( ! iconbuf ) {
+ if ( h ) {
+ pnd_disco_t *d = pnd_box_get_head ( h );
+ iconbuf = pnd_emit_icon_to_buffer ( d, &buflen );
+ }
+
+ } // filename has .pnd?
+
+ } else {
+
+ // pull icon into buffer from .pnd if not already found an icon
iconbuf = pnd_emit_icon_to_buffer ( app, &buflen );
- }
- } // generated?
+ } // generated?
+
+ } // already got icon?
if ( ! iconbuf ) {
return ( 0 );