summaryrefslogtreecommitdiffhomepage
path: root/psxscl.local@lucio-vm.local.patch
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz (arab, vxp) <l.illanes@gmx.de>2016-06-15 16:01:06 +0000
committerLucio Andrés Illanes Albornoz (arab, vxp) <l.illanes@gmx.de>2016-06-15 16:16:41 +0000
commit7927966d8799ccceeee04d1e9e7119f0cac65d7b (patch)
tree1ed6dafe26d90b7b9f712bcc2c220ceb16ed790d /psxscl.local@lucio-vm.local.patch
parentafcefa6fa131bbcca37337471be260e3f9f22bae (diff)
downloadmidipix_build-7927966d8799ccceeee04d1e9e7119f0cac65d7b.tar.bz2
midipix_build-7927966d8799ccceeee04d1e9e7119f0cac65d7b.tar.xz
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.)
Diffstat (limited to 'psxscl.local@lucio-vm.local.patch')
-rw-r--r--psxscl.local@lucio-vm.local.patch137
1 files changed, 137 insertions, 0 deletions
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);
+