Re: [AppDB] How to deal with hardware/driver dependent test result?

2013-08-27 Thread Austin English
On Tue, Aug 27, 2013 at 8:57 PM, Felix Yan  wrote:
> Hi,
>
> I'm maintaining Spore 1.0, and it works correctly in wine for over a year on 
> Nvidia video card with closed-source nvidia driver - but I do noticed with 
> Intel cards with open source drivers, the game is nearly not playable - 
> missing texture and more problems.
>
> Today comes in a new test result that mark the game as "Garbage", while the 
> description is exactly what happened on my laptop with Intel chip. What 
> should I do about this? To proceed with the test result and change the game 
> to "Garbage" stage, or reject with "Nvidia cards works fine"? I don't think 
> either is fine, so I come to the list for help.
>
> Thanks!
>
> Regards,
> Felix Yan

It's a valid report. Submitting more up to date results with Nvidia so
users know it works there would be helpful (as well as a note in the
HowTo section, for example).

-- 
-Austin




Re: kernel32/tests: Remove a useless trace.

2013-08-27 Thread Marvin
Hi,

While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
http://testbot.winehq.org/JobDetails.pl?Key=26897

Your paranoid android.


=== WVISTAX64 (64 bit comm) ===
comm.c:835: Test failed: WriteFile took 16 ms to write 0 Bytes at 150 Baud
comm.c:1445: test_AbortWaitCts timeout 500 handle 003C
comm.c:1412:  Changing CommMask on the fly for handle 003C after 
timeout 500




[AppDB] How to deal with hardware/driver dependent test result?

2013-08-27 Thread Felix Yan
Hi,

I'm maintaining Spore 1.0, and it works correctly in wine for over a year on 
Nvidia video card with closed-source nvidia driver - but I do noticed with 
Intel cards with open source drivers, the game is nearly not playable - missing 
texture and more problems.

Today comes in a new test result that mark the game as "Garbage", while the 
description is exactly what happened on my laptop with Intel chip. What should 
I do about this? To proceed with the test result and change the game to 
"Garbage" stage, or reject with "Nvidia cards works fine"? I don't think either 
is fine, so I come to the list for help.

Thanks!

Regards,
Felix Yan

signature.asc
Description: This is a digitally signed message part.



Re: [4/4] ntdll: Properly set flag which indicates buffer empty state.

2013-08-27 Thread Dmitry Timoshkov
Dmitry Timoshkov  wrote:

> Alexandre Julliard  wrote:
> 
> > It doesn't work here:
> > 
> > ../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p 
> > kernel32_test.exe.so comm.c && touch comm.ok
> > comm.c:835: Test failed: WriteFile took 1 ms to write 17 Bytes at 150 Baud
> > comm.c:848: Test failed: WaitCommEvent failed with a timeout
> > comm.c:859: Test failed: WaitCommEvent error 997
> > comm.c:860: Test failed: WaitCommEvent: expected EV_TXEMPTY, got 0
> > comm.c:865: Test failed: WaitCommEvent used 1000 ms for waiting
> > comm.c:1895: Tests skipped: interactive tests (set WINETEST_INTERACTIVE=1)
> > make: *** [comm.ok] Error 5
> 
> I assume it's a real hardware and not a VM? Is this with a real COM port,
> or USB-serial cable? If the latter one what driver is it using?

Looking at the failure messages above once again, I can say that WriteFile
failure is definitely not caused by this patch. Does running the test several
times cause the same failures? In any case it would be interesting to see
the +comm log with "ntdll: Add a trace for transmitter's buffer empty flag."
applied.

And current logic of setting the empty buffer flag is really broken, it
always sets the flag to a not zero value if ioctl(TIOCOUTQ) succeeds.

-- 
Dmitry.




Re: RFC: Mark dylib/mach-o on Mac OS X

2013-08-27 Thread Charles Davis

On Aug 27, 2013, at 3:08 PM, André Hentschel wrote:

> Hi,
> at [1] i noticed that dylibs are printed as PEs.
> This intents to fix that, but i have no Mac, could someone please review/test?
> 
> [1] 
> http://test.winehq.org/data/8ef3a142263e6db11f1514f77b3de84c8b08d7a0/mac_fg-snow-macdrv/advapi32:cred.html
I generally agree with Ken's comments. In addition:
> 
> diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
> index 6bea436..41fa7e6 100644
> --- a/dlls/dbghelp/module.c
> +++ b/dlls/dbghelp/module.c
> @@ -33,6 +33,7 @@
> WINE_DEFAULT_DEBUG_CHANNEL(dbghelp);
> 
> const WCHARS_ElfW[] = {'<','e','l','f','>','\0'};
> +const WCHARS_MachoW[]   = {'<','m','a','c','h','o','>','\0'};
Personally, I'd prefer:
const WCHARS_MachOW[]   = {'<','m','a','c','h','-','o','>','\0'};
> diff --git a/programs/winedbg/info.c b/programs/winedbg/info.c
> index c0b86ba..c2c7c08 100644
> --- a/programs/winedbg/info.c
> +++ b/programs/winedbg/info.c
> @@ -253,8 +258,11 @@ void info_win32_module(DWORD64 base)
> break;
> }
> if (j < im.num_used) continue;
> -if (strstr(im.mi[i].ModuleName, ".so") || 
> strchr(im.mi[i].ModuleName, '<'))
> +if (strstr(im.mi[i].ModuleName, ".so") || 
> strstr(im.mi[i].ModuleName, "") ||
> +strstr(im.mi[i].ModuleName, ""))
The 'wine' binary (the module whose name is "") is a Mach-O file, 
too, on Mac OS.

Chip





Re: [4/4] ntdll: Properly set flag which indicates buffer empty state.

2013-08-27 Thread Dmitry Timoshkov
Alexandre Julliard  wrote:

> It doesn't work here:
> 
> ../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p 
> kernel32_test.exe.so comm.c && touch comm.ok
> comm.c:835: Test failed: WriteFile took 1 ms to write 17 Bytes at 150 Baud
> comm.c:848: Test failed: WaitCommEvent failed with a timeout
> comm.c:859: Test failed: WaitCommEvent error 997
> comm.c:860: Test failed: WaitCommEvent: expected EV_TXEMPTY, got 0
> comm.c:865: Test failed: WaitCommEvent used 1000 ms for waiting
> comm.c:1895: Tests skipped: interactive tests (set WINETEST_INTERACTIVE=1)
> make: *** [comm.ok] Error 5

I assume it's a real hardware and not a VM? Is this with a real COM port,
or USB-serial cable? If the latter one what driver is it using?

-- 
Dmitry.




Re: msvcr90/tests: Add more ARM forwards and use them in tests

2013-08-27 Thread Marvin
Hi,

While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
http://testbot.winehq.org/JobDetails.pl?Key=26894

Your paranoid android.


=== WXPX64 (32 bit msvcr90) ===
No test summary line found




Re: RFC: Mark dylib/mach-o on Mac OS X

2013-08-27 Thread Ken Thomases
Hi,

On Aug 27, 2013, at 4:08 PM, André Hentschel wrote:

> @@ -94,6 +95,9 @@ static void module_fill_module(const WCHAR* in, WCHAR* out, 
> size_t size)
> if (len > 3 && !strcmpiW(&out[len - 3], S_DotSoW) &&
> (l = match_ext(out, len - 3)))
> strcpyW(&out[len - l - 3], S_ElfW);
> +else if (len > 6 && !strcmpiW(&out[len - 6], S_DotDylibW) &&
> +(l = match_ext(out, len - 6)))
> +strcpyW(&out[len - l - 6], S_MachoW);

This isn't sufficient.  Even though the native dynamic library extension is 
.dylib on Mac OS X, Wine actually still uses .so as the extension for its 
libraries.  For example, kernel32.dll.so.

So, you have to change the earlier branch matching S_DotSoW, too.  Probably, it 
should just use "#ifdef __APPLE__" to pick the tag to apply, as 
module_get_type_by_name() does in a similar situation.

You do still need the test for .dylib for platform libraries.


> +dbg_printf("MACH-O\t");

I think it should be "Mach-O", not "MACH-O".

> +dbg_printf("MACH-O\t");

Same here.

I believe you missed a check for "" in symbols_info_cb() in symbol.c.  I'm 
not sure under what circumstances that would be important, though.

-Ken





Re: [4/4] ntdll: Properly set flag which indicates buffer empty state.

2013-08-27 Thread Wolfgang Walter
On Tuesday 27 August 2013 21:14:05 Alexandre Julliard wrote:
> Dmitry Timoshkov  writes:
> > ---
> > 
> >  dlls/kernel32/tests/comm.c |  5 +
> >  dlls/ntdll/serial.c| 13 +
> >  2 files changed, 6 insertions(+), 12 deletions(-)
> 
> It doesn't work here:
> 
> ../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p
> kernel32_test.exe.so comm.c && touch comm.ok comm.c:835: Test failed:
> WriteFile took 1 ms to write 17 Bytes at 150 Baud comm.c:848: Test failed:
> WaitCommEvent failed with a timeout
> comm.c:859: Test failed: WaitCommEvent error 997
> comm.c:860: Test failed: WaitCommEvent: expected EV_TXEMPTY, got 0
> comm.c:865: Test failed: WaitCommEvent used 1000 ms for waiting
> comm.c:1895: Tests skipped: interactive tests (set WINETEST_INTERACTIVE=1)
> make: *** [comm.ok] Error 5

I think TIMEOUT (1s) in kernel32/tests/comm.c is too short and the test for < 
900, too.

Here it tooks often 1100 milliseconds and more (with vanilla 1.6). And I 
checked the actual git-tree: the test fails here, too (but not always).


Regards,
-- 
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Recht
Abteilungsleiter IT
Leopoldstraße 15
80802 München




RFC: Mark dylib/mach-o on Mac OS X

2013-08-27 Thread André Hentschel
Hi,
at [1] i noticed that dylibs are printed as PEs.
This intents to fix that, but i have no Mac, could someone please review/test?

[1] 
http://test.winehq.org/data/8ef3a142263e6db11f1514f77b3de84c8b08d7a0/mac_fg-snow-macdrv/advapi32:cred.html

diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
index 6bea436..41fa7e6 100644
--- a/dlls/dbghelp/module.c
+++ b/dlls/dbghelp/module.c
@@ -33,6 +33,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(dbghelp);
 
 const WCHARS_ElfW[] = {'<','e','l','f','>','\0'};
+const WCHARS_MachoW[]   = {'<','m','a','c','h','o','>','\0'};
 const WCHARS_WineLoaderW[]  = 
{'<','w','i','n','e','-','l','o','a','d','e','r','>','\0'};
 static const WCHAR S_DotSoW[]   = {'.','s','o','\0'};
 static const WCHAR S_DotDylibW[]= {'.','d','y','l','i','b','\0'};
@@ -94,6 +95,9 @@ static void module_fill_module(const WCHAR* in, WCHAR* out, 
size_t size)
 if (len > 3 && !strcmpiW(&out[len - 3], S_DotSoW) &&
 (l = match_ext(out, len - 3)))
 strcpyW(&out[len - l - 3], S_ElfW);
+else if (len > 6 && !strcmpiW(&out[len - 6], S_DotDylibW) &&
+(l = match_ext(out, len - 6)))
+strcpyW(&out[len - l - 6], S_MachoW);
 }
 while ((*out = tolowerW(*out))) out++;
 }
diff --git a/programs/winedbg/info.c b/programs/winedbg/info.c
index c0b86ba..c2c7c08 100644
--- a/programs/winedbg/info.c
+++ b/programs/winedbg/info.c
@@ -244,6 +244,11 @@ void info_win32_module(DWORD64 base)
 }
 }
 }
+else if (strstr(im.mi[i].ModuleName, ""))
+{
+dbg_printf("MACH-O\t");
+module_print_info(&im.mi[i], FALSE);
+}
 else
 {
 /* check module is not embedded in another module */
@@ -253,8 +258,11 @@ void info_win32_module(DWORD64 base)
 break;
 }
 if (j < im.num_used) continue;
-if (strstr(im.mi[i].ModuleName, ".so") || 
strchr(im.mi[i].ModuleName, '<'))
+if (strstr(im.mi[i].ModuleName, ".so") || 
strstr(im.mi[i].ModuleName, "") ||
+strstr(im.mi[i].ModuleName, ""))
 dbg_printf("ELF\t");
+else if (strstr(im.mi[i].ModuleName, ".dylib") || 
strstr(im.mi[i].ModuleName, ""))
+dbg_printf("MACH-O\t");
 else
 dbg_printf("PE\t");
 module_print_info(&im.mi[i], FALSE);




Re: [4/4] ntdll: Properly set flag which indicates buffer empty state.

2013-08-27 Thread Alexandre Julliard
Dmitry Timoshkov  writes:

> ---
>  dlls/kernel32/tests/comm.c |  5 +
>  dlls/ntdll/serial.c| 13 +
>  2 files changed, 6 insertions(+), 12 deletions(-)

It doesn't work here:

../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p 
kernel32_test.exe.so comm.c && touch comm.ok
comm.c:835: Test failed: WriteFile took 1 ms to write 17 Bytes at 150 Baud
comm.c:848: Test failed: WaitCommEvent failed with a timeout
comm.c:859: Test failed: WaitCommEvent error 997
comm.c:860: Test failed: WaitCommEvent: expected EV_TXEMPTY, got 0
comm.c:865: Test failed: WaitCommEvent used 1000 ms for waiting
comm.c:1895: Tests skipped: interactive tests (set WINETEST_INTERACTIVE=1)
make: *** [comm.ok] Error 5

-- 
Alexandre Julliard
julli...@winehq.org




Re: [1/4] ntdll: Ignore ioctl(TIOCGICOUNT) failures.

2013-08-27 Thread Wolfgang Walter
Am Dienstag, 27. August 2013, 22:00:59 schrieben Sie:
> Wolfgang Walter  wrote:
> > > Wolfgang Walter  wrote:
> > > > I made similar changes so that several applications we use work. I
> > > > tested
> > > > your patches, all but one do work. I don't know why one does not,
> > > > though.
> > > 
> > > What patch doesn't work for you?
> > 
> > I tested all your patches together (indivually they will not really work
> > here).
> 
> Yeah, the patches need to be tested after applying all of them. They were
> broken into smaller parts in order to make regression test easier in case of
> a regression. If I don't know what doesn't work I can't make any
> improvement.

Yes, that's clear. I'll have a closer look what's the main difference. The 
problematic application uses asynchronous IO.

I wrote my patch 2009 (and earlier version 2008) so I have to rethink about 
it. I remember that TX_TXEMPTY detection was a problem, then. It could get 
lost.

The reason I moved the output buffer empty detection from get_irq_info() into 
check_events() was simply because I thought handling input queue in 
check_events() but ouput queue in get_irq_info() seems odd.

I also think that it's better to detect that get_irq_info() basicly does not 
work with drivers not supporting TIOCGICOUNT and it is good to have that 
information in the callers of get_irq_info(). So I return 
STATUS_NOT_IMPLEMENTED and handle the situation in the caller. And then it is 
better to move empty sending queue handling out of get_irq_info().

I handle the TIOCSERGETLSR wrong, as I see now (I should & with TIOCSER_TEMT).

Regards,
-- 
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Rechts
Abteilungsleiter IT
Leopoldstraße 15
80802 München




Retiring winetestbot

2013-08-27 Thread Jeremy White
Folks,

I am writing to announce that we will be retiring the original Wine Test
Bot, written by the late Ge van Geldorp, as of August 31, 2013.

We will switch over to the new test bot that Francois has been working
on at that time.  On September 1, we'll panic and fix everything that is
broken ).

I want to thank Ge's family, notably his brother Arno, for keeping the
servers running these years since Ge passed away.

It's also important to note how incredible a contribution the Wine Test
Bot has proven to be for the Wine project; Wine owes an incredible debt
to Ge, and I hope we can all collectively work to remember the great
gift he gave us and the world.

Cheers,

Jeremy




Re: Does auto-apt work to get wine dependencies in source code?

2013-08-27 Thread Susan Cragin
--Sorry about the HTML in the earlier message.

>> Was thinking of running some tests but the list of dependencies on the 
>> website seems outdated, apt-get build-dep does not work.
>Is that with the ubuntu-wine ppa enabled?

There are two answers to that question, surprisingly. 

(1) bitbox

In the instructions it looks like the wine ppa repository can be installed the 
Debian way. But I did that and here's the result. 


E: You must put some 'source' URIs in your sources.list


So, I had to add the wine-ppa by manually adding to the sources.list.

(2) non bitbox

This morning a new version of the i386 photo function was added, and now the 
depencencies install. 

Conclusion: 

This afternoon I was able to update all dependencies and compile without a 
problem using (with modifications above) the bitbox instructions. 

Compiled only. Did not install because I needed symlinks, but at least I know 
where I am and what I have to do. 

Susan







Re: ntdll: Implement job objects

2013-08-27 Thread Marvin
Hi,

While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
http://testbot.winehq.org/JobDetails.pl?Key=26885

Your paranoid android.


=== W2KPROSP4 (32 bit job) ===
job: unhandled exception c005 at 




Re: ntdll: Implement job objects

2013-08-27 Thread Dmitry Timoshkov
Andrew Cook  wrote:

> On 27/08/13 22:02, Dmitry Timoshkov wrote:
> > Andrew Cook  wrote:
> >> --- a/include/wine/server_protocol.h
> >> +++ b/include/wine/server_protocol.h
> > 
> > And don't include autogenerated stuff in the patch.
> > 
> 
> Is there anything about this on the wiki? i wasn't sure how
> autogenerated files are supposed to be handled.

http://wiki.winehq.org/SubmittingPatches#head-84da92180d7e348c42aa38456e4159769d12b11a

"Do not include diffs for files that are automatically generated..."

-- 
Dmitry.




Re: ntdll: Implement job objects

2013-08-27 Thread Andrew Cook
On 27/08/13 22:02, Dmitry Timoshkov wrote:
> Andrew Cook  wrote:
>> --- a/include/wine/server_protocol.h
>> +++ b/include/wine/server_protocol.h
> 
> And don't include autogenerated stuff in the patch.
> 

Is there anything about this on the wiki? i wasn't sure how
autogenerated files are supposed to be handled.




Re: ntdll: Implement job objects

2013-08-27 Thread Dmitry Timoshkov
Andrew Cook  wrote:

> +typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
> +  PVOID  CompletionKey;
> +  HANDLE CompletionPort;
> +} JOBOBJECT_ASSOCIATE_COMPLETION_PORT, *PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;

This needs to go into its owm header.

> +static DWORD getProcess(PHANDLE handle) {
> + STARTUPINFO startup = {};
> +PROCESS_INFORMATION info = {};
> +
> + if(!CreateProcessA(NULL, GetCommandLine(), NULL, NULL, FALSE, 0, NULL, 
> NULL, &startup, &info)) {
> +ok(FALSE, "CreateProcess: %x\n", GetLastError());
> + return 0;
> +}
> +
> + CloseHandle(info.hThread);
> +*handle = info.hProcess;
> +
> + return info.dwProcessId;
> +};

Indentation is completely messed up in the tests, please set tab size to 8
and even better avoid tabs at all. ';' at the end of function looks funny.

> +typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
> +  PVOID  CompletionKey;
> +  HANDLE CompletionPort;
> +} JOBOBJECT_ASSOCIATE_COMPLETION_PORT, *PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;

Same as above.

> +static NTSTATUS (WINAPI *pNtCreateJobObject)( PHANDLE handle, ACCESS_MASK 
> access, const OBJECT_ATTRIBUTES *attr );
> +static NTSTATUS (WINAPI *pNtSetInformationJobObject)( HANDLE handle, 
> JOBOBJECTINFOCLASS klass, PVOID info, ULONG len );
> +static NTSTATUS (WINAPI *pNtAssignProcessToJobObject)( HANDLE job, HANDLE 
> process );
> +static NTSTATUS (WINAPI *pNtIsProcessInJob)( HANDLE process, HANDLE job );
> +static NTSTATUS (WINAPI *pNtTerminateJobObject)( HANDLE job, NTSTATUS status 
> );

Please move it to the beginning of the file.

> --- a/include/wine/server_protocol.h
> +++ b/include/wine/server_protocol.h

And don't include autogenerated stuff in the patch.

-- 
Dmitry.




Re: [1/4] ntdll: Ignore ioctl(TIOCGICOUNT) failures.

2013-08-27 Thread Dmitry Timoshkov
Hi Wolfgang,

Wolfgang Walter  wrote:

> I made similar changes so that several applications we use work. I tested 
> your 
> patches, all but one do work. I don't know why one does not, though.

What patch doesn't work for you? Do you have a test case or a specific
scenario which doesn't work? What hardware and driver are you using?

-- 
Dmitry.




Re: [1/4] ntdll: Ignore ioctl(TIOCGICOUNT) failures.

2013-08-27 Thread Wolfgang Walter
Hello,

I made similar changes so that several applications we use work. I tested your 
patches, all but one do work. I don't know why one does not, though.

I attached my patch, maybe it is usefull to you.

Regards,
-- 
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Rechts
Abteilungsleiter IT
Leopoldstraße 15
80802 München>From de0a36a35e36c3d5033fbf7c6593768a8f676844 Mon Sep 17 00:00:00 2001
From: Wolfgang Walter 
Date: Mon, 28 Sep 2009 15:52:32 +0200
Subject: [PATCH] improve handling of usb2serial adapters

wine does not handle most usb2serial adapters very well.

wine decides at compile time if it expects serial interfaces
to support TIOCGICOUNT and TIOCSERGETLSR.

On linux a lot of device drivers of serial use2serial-adapters
don't suport those ioctls.

This patch tries to handle those devices as if
TIOCGICOUNT and TIOCSERGETLSR were not supported by the OS.
---
 dlls/ntdll/serial.c |  132 +++
 1 file changed, 81 insertions(+), 51 deletions(-)

diff --git a/dlls/ntdll/serial.c b/dlls/ntdll/serial.c
index 5551b3c..c00b6a5 100644
--- a/dlls/ntdll/serial.c
+++ b/dlls/ntdll/serial.c
@@ -804,6 +804,7 @@ typedef struct async_commio
  */
 static NTSTATUS get_irq_info(int fd, serial_irq_info *irq_info)
 {
+NTSTATUS status = STATUS_NOT_IMPLEMENTED;
 #ifdef TIOCGICOUNT
 struct serial_icounter_struct einfo;
 if (!ioctl(fd, TIOCGICOUNT, &einfo))
@@ -815,47 +816,29 @@ static NTSTATUS get_irq_info(int fd, serial_irq_info *irq_info)
 irq_info->parity  = einfo.parity;
 irq_info->brk = einfo.brk;
 irq_info->buf_overrun = einfo.buf_overrun;
+return STATUS_SUCCESS;
 }
-else
-{
-TRACE("TIOCGICOUNT err %s\n", strerror(errno));
-memset(irq_info,0, sizeof(serial_irq_info));
-return FILE_GetNtStatus();
-}
-#else
-memset(irq_info,0, sizeof(serial_irq_info));
-return STATUS_NOT_IMPLEMENTED;
-#endif
-irq_info->temt = 0;
-/* Generate a single TX_TXEMPTY event when the TX Buffer turns empty*/
-#ifdef TIOCSERGETLSR  /* prefer to log the state TIOCSERGETLSR */
-if (ioctl(fd, TIOCSERGETLSR, &irq_info->temt))
-{
-TRACE("TIOCSERGETLSR err %s\n", strerror(errno));
-return FILE_GetNtStatus();
-}
-#elif defined(TIOCOUTQ)  /* otherwise we log when the out queue gets empty */
-if (ioctl(fd, TIOCOUTQ, &irq_info->temt))
-{
-TRACE("TIOCOUTQ err %s\n", strerror(errno));
-return FILE_GetNtStatus();
-}
-else
-{
-if (irq_info->temt == 0)
-irq_info->temt = 1;
-}
+TRACE("TIOCGICOUNT err %s\n", strerror(errno));
+/* EINVAL means: TIOCGICOUNT is not supported by serial driver
+ * in this case behave as if TIOCGICOUNT is not defined by OS
+ */
+if (errno != EINVAL)
+status = FILE_GetNtStatus();
 #endif
-return STATUS_SUCCESS;
+memset(irq_info,0, sizeof(serial_irq_info));
+return status;
 }
 
 
-static DWORD check_events(int fd, DWORD mask,
+static NTSTATUS check_events(int fd, DWORD mask,
   const serial_irq_info *new,
   const serial_irq_info *old,
-  DWORD new_mstat, DWORD old_mstat)
+  DWORD new_mstat, DWORD old_mstat, DWORD *ret)
 {
-DWORD ret = 0, queue;
+DWORD queue;
+NTSTATUS status = STATUS_SUCCESS;
+
+*ret = 0;
 
 TRACE("mask 0x%08x\n", mask);
 TRACE("old->rx  0x%08x vs. new->rx  0x%08x\n", old->rx, new->rx);
@@ -866,28 +849,67 @@ static DWORD check_events(int fd, DWORD mask,
 TRACE("old->brk 0x%08x vs. new->brk 0x%08x\n", old->brk, new->brk);
 TRACE("old->buf_overrun 0x%08x vs. new->buf_overrun 0x%08x\n", old->buf_overrun, new->buf_overrun);
 
-if (old->brk != new->brk) ret |= EV_BREAK;
-if ((old_mstat & MS_CTS_ON ) != (new_mstat & MS_CTS_ON )) ret |= EV_CTS;
-if ((old_mstat & MS_DSR_ON ) != (new_mstat & MS_DSR_ON )) ret |= EV_DSR;
-if ((old_mstat & MS_RING_ON) != (new_mstat & MS_RING_ON)) ret |= EV_RING;
-if ((old_mstat & MS_RLSD_ON) != (new_mstat & MS_RLSD_ON)) ret |= EV_RLSD;
-if (old->frame != new->frame || old->overrun != new->overrun || old->parity != new->parity) ret |= EV_ERR;
+if (old->brk != new->brk) *ret |= EV_BREAK;
+if ((old_mstat & MS_CTS_ON ) != (new_mstat & MS_CTS_ON )) *ret |= EV_CTS;
+if ((old_mstat & MS_DSR_ON ) != (new_mstat & MS_DSR_ON )) *ret |= EV_DSR;
+if ((old_mstat & MS_RING_ON) != (new_mstat & MS_RING_ON)) *ret |= EV_RING;
+if ((old_mstat & MS_RLSD_ON) != (new_mstat & MS_RLSD_ON)) *ret |= EV_RLSD;
+if (old->frame != new->frame || old->overrun != new->overrun || old->parity != new->parity) *ret |= EV_ERR;
 if (mask & EV_RXCHAR)
 {
 	queue = 0;
 #ifdef TIOCINQ
 	if (ioctl(fd, TIOCINQ, &queue))
-	WARN("TIOCINQ returned error\n");
+{
+if (errno != EINVAL)
+{
+ 

Re: [4/4] ntdll: Properly set flag which indicates buffer empty state.

2013-08-27 Thread Dmitry Timoshkov
Marvin  wrote:

> === WVISTAX64 (32 bit comm) ===
> comm.c:835: Test failed: WriteFile took 16 ms to write 0 Bytes at 150 Baud

Failure is not caused by this patch, probably a VM is very slow.

-- 
Dmitry.




Re: ntdll: Store all 'comClass' attributes (try2)

2013-08-27 Thread Alexandre Julliard
Nikolay Sivov  writes:

> +static OLEMISC get_olemisc_value(const WCHAR *str, int len)
> +{
> +int min, max;
> +
> +min = 0;
> +max = ARRAY_SIZE(olemisc_values) - 1;
> +
> +while (min <= max)
> +{
> +int n, c;
> +
> +n = (min+max)/2;
> +
> +c = memcmp(olemisc_values[n].name, str, min(len, 
> olemisc_values[n].len)*sizeof(WCHAR));
> +if (!c)
> +{
> +if (olemisc_values[n].len < len)
> +c = -1;
> +else if (olemisc_values[n].len > len)
> +c = 1;
> +}

Actually, memcmp is not a good choice for comparing Unicode strings. It
doesn't make a difference for ASCII-only strings, but it would still be
cleaner to do it right. strncmpW is preferable (as long as you use it
correctly...)

-- 
Alexandre Julliard
julli...@winehq.org




Re: [4/4] ntdll: Properly set flag which indicates buffer empty state.

2013-08-27 Thread Marvin
Hi,

While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
http://testbot.winehq.org/JobDetails.pl?Key=26878

Your paranoid android.


=== WVISTAX64 (32 bit comm) ===
comm.c:835: Test failed: WriteFile took 16 ms to write 0 Bytes at 150 Baud
comm.c:1443: test_AbortWaitCts timeout 500 handle 00B4
comm.c:1410:  Changing CommMask on the fly for handle 00B4 after timeout 500