@@ -5951,6 +5951,34 @@ void main_exit(void *args)
59515951#endif
59525952}
59535953
5954+ #include <stdio.h>
5955+ #include <stdarg.h>
5956+
5957+ void retroarch_log2 (const char * fmt , ...)
5958+ {
5959+ va_list args ;
5960+
5961+ va_start (args , fmt );
5962+ vprintf (fmt , args );
5963+ fflush (stdout );
5964+ va_end (args );
5965+
5966+ FILE * f = fopen ("/tmp/retroarch.log" , "a" );
5967+ if (!f )
5968+ return ;
5969+
5970+ va_start (args , fmt );
5971+ vfprintf (f , fmt , args );
5972+ fflush (f );
5973+ va_end (args );
5974+
5975+ fclose (f );
5976+ }
5977+
5978+ #include <sys/stat.h>
5979+ #include <sys/types.h>
5980+
5981+
59545982/**
59555983 * main_entry:
59565984 *
@@ -5990,12 +6018,70 @@ int rarch_main(int argc, char *argv[], void *data)
59906018#if defined(WEBOS )
59916019 /* compatibility with webOS 1 */
59926020 const char * home = getenv ("HOME" );
6021+ const char * xdg_config_home = getenv ("XDG_CONFIG_HOME" );
6022+
6023+ retroarch_log2 ("rarch_main: BEFORE - HOME='%s', XDG_CONFIG_HOME='%s'\n" ,
6024+ home ? home : "(null)" ,
6025+ xdg_config_home ? xdg_config_home : "(null)" );
6026+
6027+ if (access ("/media/developer/apps/usr/palm/applications/com.retroarch.webos" , F_OK ) == 0 ) {
6028+
6029+ struct stat st ;
6030+ if (stat ("/media/developer/apps/usr/palm/applications/com.retroarch.webos" , & st ) == 0 ) {
6031+ retroarch_log2 ("rarch_main: '%s' exists, mode=%04o\n" ,
6032+ "/media/developer/apps/usr/palm/applications/com.retroarch.webos" , st .st_mode & 0777 );
6033+
6034+ char perms [10 ]; perms [0 ] = (st .st_mode & S_IRUSR ) ? 'r' : '-' ;
6035+ perms [1 ] = (st .st_mode & S_IWUSR ) ? 'w' : '-' ;
6036+ perms [2 ] = (st .st_mode & S_IXUSR ) ? 'x' : '-' ;
6037+ perms [3 ] = (st .st_mode & S_IRGRP ) ? 'r' : '-' ;
6038+ perms [4 ] = (st .st_mode & S_IWGRP ) ? 'w' : '-' ;
6039+ perms [5 ] = (st .st_mode & S_IXGRP ) ? 'x' : '-' ;
6040+ perms [6 ] = (st .st_mode & S_IROTH ) ? 'r' : '-' ;
6041+ perms [7 ] = (st .st_mode & S_IWOTH ) ? 'w' : '-' ;
6042+ perms [8 ] = (st .st_mode & S_IXOTH ) ? 'x' : '-' ;
6043+ perms [9 ] = '\0' ;
6044+ retroarch_log2 ("rarch_main: permissions: %s\n" , perms );
6045+ }
6046+ }
6047+
59936048 if (home == NULL || strcmp (home , "/media/developer/" ) == 0 )
59946049 {
59956050 char cwd [PATH_MAX ];
59966051 if (getcwd (cwd , sizeof (cwd )) != NULL )
59976052 setenv ("HOME" , cwd , 1 );
59986053 }
6054+
6055+ if (xdg_config_home == NULL || strcmp (xdg_config_home , "/media/developer/" ) == 0 )
6056+ {
6057+ char cwd2 [PATH_MAX ];
6058+ if (getcwd (cwd2 , sizeof (cwd2 )) != NULL )
6059+ {
6060+ char new_path [PATH_MAX + 16 ];
6061+ snprintf (new_path , sizeof (new_path ), "%s/.config" , cwd2 );
6062+ setenv ("XDG_CONFIG_HOME" , new_path , 1 );
6063+
6064+ if (access (new_path , F_OK ) == 0 )
6065+ {
6066+ retroarch_log2 ("rarch_main: '%s' exists\n" , new_path );
6067+ }
6068+ else {
6069+ retroarch_log2 ("rarch_main: '%s' does not exist, so creating it\n" , new_path );
6070+ if (mkdir (new_path , 0775 ) != 0 )
6071+ {
6072+ retroarch_log2 ("mkdir failed" );
6073+ }
6074+ }
6075+ }
6076+ }
6077+
6078+ home = getenv ("HOME" );
6079+ xdg_config_home = getenv ("XDG_CONFIG_HOME" );
6080+
6081+ retroarch_log2 ("rarch_main: NOW - HOME='%s', XDG_CONFIG_HOME='%s'\n" ,
6082+ home ? home : "(null)" ,
6083+ xdg_config_home ? xdg_config_home : "(null)" );
6084+
59996085 /* compatibility with webOS 3 - 5 */
60006086 if (getenv ("EGL_PLATFORM" ) == NULL )
60016087 setenv ("EGL_PLATFORM" , "wayland" , 0 );
0 commit comments