From 7927966d8799ccceeee04d1e9e7119f0cac65d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz=20=28arab=2C=20vx?= =?UTF-8?q?p=29?= Date: Wed, 15 Jun 2016 16:01:06 +0000 Subject: Disable NLS for all packages minus the runtime components. Followup to <2696b7e8fb2972e72fab7ca8b5a3ab87022814af>: - Restore src/process/_execve.c NT_SEC_IMAGE vs. NT_SEC_RESERVE patch for builds on lucio-vm.local. to allow for running Midipix from a network share. Move previous psxscl patches into psxscl.local@lucio-vm.local.patch. Prevent Irssi from using g_child_watch_add_full() when resolving hostnames for testing purposes as clone(2) is not currently implemented. Updated Create `Midipix mintty shell' shortcut.vbs: - Always update the shortcut file. - Launch sh(1) instead of Mintty (via Elieux.) - Obtain the pathname to Cygwin from the command line, defaulting to `C:\cygwin64'. Updated midipix.sh: - Automatically determine ${MIDIPIX_DRIVE} and ${MIDIPIX_PNAME} via cygpath(1) (via Elieux.) - Export MSYS2_ARG_CONV_EXCL="*" when running within Msys (via Elieux.) - Prepend `/bin' to ${PATH} if not present (via Elieux.) - Set and restore the previous cygdrive prefix. - Use /proc/cygdrive instead of /cygdrive (via Elieux.) --- psxscl.local@lucio-vm.local.patch | 137 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 psxscl.local@lucio-vm.local.patch (limited to 'psxscl.local@lucio-vm.local.patch') diff --git a/psxscl.local@lucio-vm.local.patch b/psxscl.local@lucio-vm.local.patch new file mode 100644 index 00000000..1b3b9c02 --- /dev/null +++ b/psxscl.local@lucio-vm.local.patch @@ -0,0 +1,137 @@ +diff --git a/src/iofn/psx_iofn_fsdir.c b/src/iofn/psx_iofn_fsdir.c +index 53b3380..8bdd7d8 100644 +--- a/src/iofn/psx_iofn_fsdir.c ++++ b/src/iofn/psx_iofn_fsdir.c +@@ -52,10 +52,34 @@ static int32_t __fastcall __psx_iofn_fsdir_open_next( + path.buffer++; + } + ++ /* XXX */ ++ uint32_t status; ++ static char name_buffer[1024]; ++ nt_unicode_string * dev_name,full_path; ++ ++ iosb.info = 0; ++ if ((status = __ntapi->zw_query_object( ++ path_info->hat,NT_OBJECT_NAME_INFORMATION, ++ name_buffer,sizeof(name_buffer),(uint32_t *)&iosb.info))) ++ return status; ++ else { ++ dev_name = (nt_unicode_string *)name_buffer; ++ if ((dev_name->strlen > 2) && ++ (dev_name->buffer[(dev_name->strlen - 1) / 2] != '\\')) { ++ dev_name->buffer[dev_name->strlen / 2] = '\\'; ++ dev_name->strlen += 2; ++ } ++ __ntapi->tt_generic_memcpy(&dev_name->buffer[dev_name->strlen / 2], ++ path.buffer,path.strlen); ++ dev_name->strlen += path.strlen; ++ full_path.maxlen = (full_path.strlen = dev_name->strlen) + 2; ++ full_path.buffer = dev_name->buffer; ++ } ++ + /* oa */ + oa.len = sizeof(nt_oa); +- oa.root_dir = path_info->hat; +- oa.obj_name = &path; ++ oa.root_dir = 0; ++ oa.obj_name = &full_path; + oa.obj_attr = path_info->ntobjattr; + oa.sec_desc = 0; + oa.sec_qos = 0; +@@ -73,6 +97,45 @@ static int32_t __fastcall __psx_iofn_fsdir_open_next( + 0,0); + } + ++static int32_t __stdcall __psx_iofn_fsdir_open_parent_directory( ++ void ** hparent, ++ void * hdir, ++ uintptr_t * buffer, ++ uint32_t buffer_size, ++ uint32_t desired_access, ++ uint32_t open_options, ++ int32_t * type) ++{ ++ uint32_t status; ++ nt_io_status_block iosb; ++ nt_file_internal_information fii_hdir,fii_hroot; ++ struct __psx_tlca * tlca; ++ ++ tlca = __tlca_self(); ++ status = __ntapi->zw_query_information_file( ++ hdir,&iosb,&fii_hdir,sizeof(fii_hdir), ++ NT_FILE_INTERNAL_INFORMATION); ++ if (status) ++ return status; ++ status = __ntapi->zw_query_information_file( ++ tlca->ctx->root.hfile,&iosb,&fii_hroot,sizeof(fii_hroot), ++ NT_FILE_INTERNAL_INFORMATION); ++ if (status) ++ return status; ++ if (fii_hdir.index_number.quad == fii_hroot.index_number.quad) { ++ *hparent = hdir; ++ *type = PSX_FD_OS_FS_ROOT; ++ status = NT_STATUS_SUCCESS; ++ } else ++ status = __ntapi->tt_open_physical_parent_directory( ++ hparent,hdir, ++ buffer, ++ buffer_size, ++ desired_access, ++ open_options,type); ++ return status; ++} ++ + int32_t __stdcall __psx_iofn_fsdir_getvents( + void * hfile, + void * hevent, +@@ -133,6 +196,6 @@ void __fastcall __psx_iofn_fsdir_init(struct __iovtbl * iovtbl) + iovtbl->getdents = __ntapi->zw_query_directory_file; + iovtbl->getvents = __psx_iofn_fsdir_getvents; + +- iovtbl->open_logical_parent = __ntapi->tt_open_logical_parent_directory; +- iovtbl->open_physical_parent = __ntapi->tt_open_physical_parent_directory; ++ iovtbl->open_logical_parent = __psx_iofn_fsdir_open_parent_directory; ++ iovtbl->open_physical_parent = __psx_iofn_fsdir_open_parent_directory; + } +diff --git a/src/path/psx_path_parse.c b/src/path/psx_path_parse.c +index ff4d933..08431b6 100644 +--- a/src/path/psx_path_parse.c ++++ b/src/path/psx_path_parse.c +@@ -48,8 +48,8 @@ int32_t __fastcall __psx_parse_normalized_path_utf8( + ch, + ++(path_info->depth)); + +- if (*(++ch)=='/') { +- ch++; ++ if (ch[1]=='/') { ++ ch+=2; + } + } + +diff --git a/src/path/psx_path_resolve.c b/src/path/psx_path_resolve.c +index 2bd615c..705e646 100644 +--- a/src/path/psx_path_resolve.c ++++ b/src/path/psx_path_resolve.c +@@ -260,7 +260,7 @@ static int __fastcall __path_swap_at( + int32_t status; + + /* swap */ +- if (path_info->pathflags & PSX_PATH_CLOSE_AT) ++ if ((path_info->pathflags & PSX_PATH_CLOSE_AT) && (path_info->hat != path_info->hfile)) + if ((status = __iovtbl[path_info->fdtypeat].close(path_info->hat))) + return status; + +diff --git a/src/process/_execve.c b/src/process/_execve.c +index a623d2a..80dd4a9 100644 +--- a/src/process/_execve.c ++++ b/src/process/_execve.c +@@ -232,7 +232,7 @@ intptr_t __sys_execve(const unsigned char * path, const char ** argv, const char + NT_SECTION_QUERY|NT_SECTION_MAP_EXECUTE, + &oa,&ssize, + NT_PAGE_EXECUTE, +- NT_SEC_IMAGE, ++ NT_SEC_RESERVE, + image->info.hfile))) + return __execve_return(tlca,0,target,-ENOEXEC); + -- cgit v1.2.3