// prelim .. if a pnd file, and no offset found, discovery code didn't locate icon.. so bail.
if ( ( p -> object_type == pnd_object_type_pnd ) &&
- ( ! p -> pnd_icon_pos ) )
+ ( ! p -> pnd_icon_pos64 ) )
{
return ( 0 ); // discover code didn't find it, so FAIL
}
return ( 0 );
}
- unsigned int len;
+ off_t len;
target = fopen ( buffer, "wb" );
return ( 0 );
}
- fseek ( pnd, 0, SEEK_END );
- len = ftell ( pnd );
- //fseek ( pnd, 0, SEEK_SET );
+ fseeko ( pnd, 0, SEEK_END );
+ len = ftello ( pnd );
- fseek ( pnd, p -> pnd_icon_pos, SEEK_SET );
+ fseeko ( pnd, p -> pnd_icon_pos64, SEEK_SET );
- len -= p -> pnd_icon_pos;
+ len -= p -> pnd_icon_pos64;
- pnd_log ( PND_LOG_DEFAULT, " Emit icon, length: %u\n", len );
+ if ( len <= 0 ) {
+ fclose ( pnd );
+ return ( 0 );
+ }
+
+ pnd_log ( PND_LOG_DEFAULT, " Emit icon, length: %u\n", (int)len );
while ( len ) {
// prelim .. if a pnd file, and no offset found, discovery code didn't locate icon.. so bail.
if ( ( p -> object_type == pnd_object_type_pnd ) &&
- ( ! p -> pnd_icon_pos ) )
+ ( ! p -> pnd_icon_pos64 ) )
{
return ( NULL ); // discover code didn't find it, so FAIL
}
}
// determine length of file, then adjust by icon position to find begin of icon
- unsigned int len;
+ off_t len;
- fseek ( pnd, 0, SEEK_END );
- len = ftell ( pnd );
- //fseek ( pnd, 0, SEEK_SET );
+ fseeko ( pnd, 0, SEEK_END );
+ len = ftello ( pnd );
- fseek ( pnd, p -> pnd_icon_pos, SEEK_SET );
+ fseeko ( pnd, p -> pnd_icon_pos64, SEEK_SET );
- len -= p -> pnd_icon_pos;
+ len -= p -> pnd_icon_pos64;
+
+ if ( len <= 0 ) {
+ fclose ( pnd );
+ return ( NULL );
+ }
// create target buffer
target = malloc ( len );
return ( NULL );
} else {
char hack [ 100 ];
- snprintf ( hack, 100, "inode-%lu", statbuf.st_ino );
+ snprintf ( hack, 100, "inode-%lu", (long)statbuf.st_ino );
p -> unique_id = strdup ( hack );
}
}