@@ -285,7 +285,7 @@ static void add_tag(char *tags, u16 code)
285
285
}
286
286
#endif
287
287
288
- static void add_info (char * table_xml , char * folder_name , u8 roms_index , char * filename , char * title_id , u8 f0 , u8 f1 , u8 s )
288
+ static int add_info (char * table_xml , char * folder_name , u8 roms_index , char * filename , char * title_id , u8 f0 , u8 f1 , u8 s )
289
289
{
290
290
char tags [20 ]; * tags = '\0' ; u8 info = webman_config -> info & 0xF ;
291
291
@@ -391,25 +391,28 @@ static void add_info(char *table_xml, char *folder_name, u8 roms_index, char *fi
391
391
}
392
392
#endif
393
393
394
+ int len = 0 ;
395
+
394
396
// info level: 0=Path, 1=Path | titleid, 2=titleid | drive, 3=none, 0x10 = tags, 0x20 = version
395
397
if (info <= INFO_PATH_ID )
396
398
{
397
399
if ((info == INFO_PATH_ID ) & HAS_TITLE_ID ) {strcat (folder_name , " | " ); strcat (folder_name , title_id );}
398
- sprintf (table_xml , XML_PAIR ("info" ,"%s/%s%s%s" ), drives [f0 ] + s , (f1 == id_NPDRM ) ? "game" : paths [f1 ], folder_name , tags );
400
+ len = sprintf (table_xml , XML_PAIR ("info" ,"%s/%s%s%s" ), drives [f0 ] + s , (f1 == id_NPDRM ) ? "game" : paths [f1 ], folder_name , tags );
399
401
}
400
402
else if (info == INFO_ID )
401
403
{
402
404
if (HAS_TITLE_ID )
403
- sprintf (table_xml , XML_PAIR ("info" ,"%s%s" ), title_id , tags );
405
+ len = sprintf (table_xml , XML_PAIR ("info" ,"%s%s" ), title_id , tags );
404
406
else
405
- sprintf (table_xml , XML_PAIR ("info" ,"%s" ), tags );
407
+ len = sprintf (table_xml , XML_PAIR ("info" ,"%s" ), tags );
406
408
}
407
409
else if (webman_config -> info & INFO_TAGS_ONLY )
408
410
{
409
- sprintf (table_xml , XML_PAIR ("info" ,"%s" ), tags );
411
+ len = sprintf (table_xml , XML_PAIR ("info" ,"%s" ), tags );
410
412
}
411
413
412
414
strcat (table_xml , "</T>" );
415
+ return (len + 4 );
413
416
}
414
417
415
418
static char * eject_table (char * buffer , char * table_xml )
@@ -595,41 +598,41 @@ static void add_group_tables(char *buffer, char *table_xml, t_string *myxml)
595
598
#endif
596
599
}
597
600
598
- static bool add_xmb_entry (u8 f0 , u8 f1 , const char * table_xml , char * title , char * skey , u16 key , t_string * myxml_ps3 , t_string * myxml_ps2 , t_string * myxml_psx , t_string * myxml_psp , t_string * myxml_dvd , char * entry_name , u8 subfolder )
601
+ static bool add_xmb_entry (u8 f0 , u8 f1 , u32 table_size , const char * table_xml , char * title , char * skey , u16 key , t_string * myxml_ps3 , t_string * myxml_ps2 , t_string * myxml_psx , t_string * myxml_psp , t_string * myxml_dvd , char * entry_name , u8 subfolder )
599
602
{
600
603
set_sort_key (skey , title , key , subfolder , f1 );
601
604
602
605
if ( !scanning_roms && XMB_GROUPS )
603
606
{
604
607
#ifdef COBRA_ONLY
605
608
const char * ext = get_ext (entry_name );
606
- if ((( IS_PS3_TYPE ) || (( IS_NTFS ) && IS (ext , ".ntfs[PS3ISO]" ))) && (myxml_ps3 -> size < ( BUFFER_SIZE - _4KB_ ) ))
609
+ if ((IS_PS3_TYPE || (IS_NTFS && IS (ext , ".ntfs[PS3ISO]" ))) && (( myxml_ps3 -> size + table_size ) < BUFFER_SIZE_PS3 ))
607
610
{_concat (myxml_ps3 , table_xml ); * skey = PS3 , ++ item_count [gPS3 ];}
608
611
else
609
- if ((( IS_PS2ISO ) || (( IS_NTFS ) && IS (ext , ".ntfs[PS2ISO]" ))) && (myxml_ps2 -> size < BUFFER_SIZE_PS2 ))
612
+ if ((IS_PS2ISO || (IS_NTFS && IS (ext , ".ntfs[PS2ISO]" ))) && (( myxml_ps2 -> size + table_size ) < BUFFER_SIZE_PS2 ))
610
613
{_concat (myxml_ps2 , table_xml ); * skey = PS2 , ++ item_count [gPS2 ];}
611
614
else
612
- if ((( IS_PSXISO ) || (( IS_NTFS ) && IS (ext , ".ntfs[PSXISO]" ))) && (myxml_psx -> size < BUFFER_SIZE_PSX ))
615
+ if ((IS_PSXISO || (IS_NTFS && IS (ext , ".ntfs[PSXISO]" ))) && (( myxml_psx -> size + table_size ) < BUFFER_SIZE_PSX ))
613
616
{_concat (myxml_psx , table_xml ); * skey = PS1 , ++ item_count [gPSX ];}
614
617
else
615
- if ((( IS_PSPISO ) || (( IS_NTFS ) && IS (ext , ".ntfs[PSPISO]" ))) && (myxml_psp -> size < BUFFER_SIZE_PSP ))
618
+ if ((IS_PSPISO || (IS_NTFS && IS (ext , ".ntfs[PSPISO]" ))) && (( myxml_psp -> size + table_size ) < BUFFER_SIZE_PSP ))
616
619
{_concat (myxml_psp , table_xml ); * skey = PSP , ++ item_count [gPSP ];}
617
620
else
618
- if ((( IS_BDISO ) || ( IS_DVDISO ) || (( IS_NTFS ) && (IS (ext , ".ntfs[DVDISO]" ) || IS (ext , ".ntfs[BDISO]" ) || IS (ext , ".ntfs[BDFILE]" )))) && (myxml_dvd -> size < BUFFER_SIZE_DVD ))
621
+ if ((IS_BDISO || IS_DVDISO || (IS_NTFS && (IS (ext , ".ntfs[DVDISO]" ) || IS (ext , ".ntfs[BDISO]" ) || IS (ext , ".ntfs[BDFILE]" )))) && (( myxml_dvd -> size + table_size ) < BUFFER_SIZE_DVD ))
619
622
{_concat (myxml_dvd , table_xml ); * skey = BLU , ++ item_count [gDVD ];}
620
623
#else
621
- if (( IS_PS3_TYPE ) & & myxml_ps3 -> size < ( BUFFER_SIZE - _4KB_ ))
624
+ if (IS_PS3_TYPE && (( myxml_ps3 -> size + table_size ) < BUFFER_SIZE_PS3 ))
622
625
{_concat (myxml_ps3 , table_xml ); * skey = PS3 , ++ item_count [gPS3 ];}
623
626
else
624
- if (( IS_PS2ISO ) & & myxml_ps2 -> size < BUFFER_SIZE_PS2 )
627
+ if (IS_PS2ISO && (( myxml_ps2 -> size + table_size ) < BUFFER_SIZE_PS2 ) )
625
628
{_concat (myxml_ps2 , table_xml ); * skey = PS2 , ++ item_count [gPS2 ];}
626
629
#endif
627
630
else
628
631
return (false );
629
632
}
630
633
else
631
634
{
632
- if (myxml_ps3 -> size < ( BUFFER_SIZE - _4KB_ ) )
635
+ if (( myxml_ps3 -> size + table_size ) < BUFFER_SIZE_PS3 )
633
636
{_concat (myxml_ps3 , table_xml ); ++ item_count [gPS3 ];}
634
637
else
635
638
return (false);
@@ -706,10 +709,10 @@ static bool scan_mygames_xml(u64 conn_s_p)
706
709
707
710
if (!sysmem ) return false; // recheck
708
711
709
- sys_addr_t sysmem_psx = sysmem + (BUFFER_SIZE );
710
- sys_addr_t sysmem_psp = sysmem + (BUFFER_SIZE ) + (BUFFER_SIZE_PSX );
711
- sys_addr_t sysmem_ps2 = sysmem + (BUFFER_SIZE ) + (BUFFER_SIZE_PSX ) + (BUFFER_SIZE_PSP );
712
- sys_addr_t sysmem_dvd = sysmem + (BUFFER_SIZE ) + (BUFFER_SIZE_PSX ) + (BUFFER_SIZE_PSP ) + (BUFFER_SIZE_PS2 );
712
+ sys_addr_t sysmem_psx = sysmem + (BUFFER_SIZE ); //BUFFER_SIZE_PSX
713
+ sys_addr_t sysmem_psp = sysmem + (BUFFER_SIZE ) + (BUFFER_SIZE_PSX ); //BUFFER_SIZE_PSP
714
+ sys_addr_t sysmem_ps2 = sysmem + (BUFFER_SIZE ) + (BUFFER_SIZE_PSX ) + (BUFFER_SIZE_PSP ); //BUFFER_SIZE_PS2
715
+ sys_addr_t sysmem_dvd = sysmem + (BUFFER_SIZE ) + (BUFFER_SIZE_PSX ) + (BUFFER_SIZE_PSP ) + (BUFFER_SIZE_PS2 ); // BUFFER_SIZE_DVD
713
716
714
717
char * ignore_files = NULL ;
715
718
if (webman_config -> ignore && file_exists (WM_IGNORE_FILES ))
@@ -722,6 +725,13 @@ static bool scan_mygames_xml(u64 conn_s_p)
722
725
}
723
726
}
724
727
728
+ // set boundary margins
729
+ if (XMB_GROUPS )
730
+ {
731
+ BUFFER_SIZE_PSX -= 0x10 , BUFFER_SIZE_PSP -= 0x10 ;
732
+ BUFFER_SIZE_PS2 -= 0x10 , BUFFER_SIZE_DVD -= 0x10 ;
733
+ }
734
+
725
735
#if defined(LAUNCHPAD ) || defined(MOUNT_ROMS )
726
736
char * sysmem_buf = (char * )sysmem ;
727
737
#endif
@@ -1051,9 +1061,9 @@ static bool scan_mygames_xml(u64 conn_s_p)
1051
1061
1052
1062
if (* app_ver ) {strcat (title_id , " | v" ); strcat (title_id , app_ver );}
1053
1063
1054
- add_info (table_xml + read_e , folder_name , roms_index , enc_dir_name , title_id , f0 , f1 , 1 );
1064
+ read_e += add_info (table_xml + read_e , folder_name , roms_index , enc_dir_name , title_id , f0 , f1 , 1 );
1055
1065
1056
- if (add_xmb_entry (f0 , f1 , table_xml , title , skey [key ].value , key , & myxml_ps3 , & myxml_ps2 , & myxml_psx , & myxml_psp , & myxml_dvd , data [v3_entry ].name , 0 )) key ++ ;
1066
+ if (add_xmb_entry (f0 , f1 , read_e , table_xml , title , skey [key ].value , key , & myxml_ps3 , & myxml_ps2 , & myxml_psx , & myxml_psp , & myxml_dvd , data [v3_entry ].name , 0 )) key ++ ; else break ;
1057
1067
1058
1068
v3_entry ++ ;
1059
1069
}
@@ -1220,24 +1230,24 @@ static bool scan_mygames_xml(u64 conn_s_p)
1220
1230
1221
1231
if (* app_ver ) {strcat (title_id , " | v" ); strcat (title_id , app_ver );}
1222
1232
1223
- add_info (table_xml + read_e , folder_name , roms_index , enc_dir_name , title_id , f0 , is_game_dir ? id_NPDRM : f1 , 5 );
1233
+ read_e += add_info (table_xml + read_e , folder_name , roms_index , enc_dir_name , title_id , f0 , is_game_dir ? id_NPDRM : f1 , 5 );
1224
1234
1225
- if (add_xmb_entry (f0 , _f1_ , table_xml , title , skey [key ].value , key , & myxml_ps3 , & myxml_ps2 , & myxml_psx , & myxml_psp , & myxml_dvd , entry .entry_name .d_name , subfolder )) key ++ ;
1235
+ if (add_xmb_entry (f0 , _f1_ , read_e , table_xml , title , skey [key ].value , key , & myxml_ps3 , & myxml_ps2 , & myxml_psx , & myxml_psp , & myxml_dvd , entry .entry_name .d_name , subfolder )) key ++ ; else break ;
1226
1236
}
1227
1237
//////////////////////////////
1228
- continue_loop :
1238
+ continue_loop :
1229
1239
if (subfolder ) goto next_xml_entry ;
1230
1240
//////////////////////////////
1231
1241
}
1232
- }
1242
+ } //while
1233
1243
1234
1244
if (!is_net ) cellFsClosedir (fd ); cellFsClosedir (fd2 );
1235
1245
1236
1246
#ifdef NET_SUPPORT
1237
1247
if (data2 ) {sys_memory_free (data2 ); data2 = NULL ;}
1238
1248
#endif
1239
1249
}
1240
- //
1250
+ //
1241
1251
continue_reading_folder_xml :
1242
1252
if (IS_ROMS_FOLDER || (f1 < id_ISO && !IS_NTFS ))
1243
1253
{
@@ -1247,12 +1257,12 @@ static bool scan_mygames_xml(u64 conn_s_p)
1247
1257
if (ls && (li < 27 )) {li ++ ; goto subfolder_letter_xml ;} else if (li < LANG_CUSTOM ) {li = LANG_CUSTOM ; goto subfolder_letter_xml ;}
1248
1258
}
1249
1259
}
1250
- //
1251
- }
1260
+ //
1261
+ } //f1
1252
1262
#ifdef NET_SUPPORT
1253
1263
if (is_net && (ns >= 0 ) && (ns != g_socket )) sclose (& ns );
1254
1264
#endif
1255
- }
1265
+ } //f0
1256
1266
1257
1267
drives [NTFS ][10 ] = ':' ;
1258
1268
0 commit comments