winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
July 2006
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
5 participants
857 discussions
Start a n
N
ew thread
Alexandre Julliard : crypt32/tests: Clean up temp files.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: 37bf722401de695c0b87fa42a886496a818bd760 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=37bf722401de695c0b87fa4…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jul 26 14:51:10 2006 +0200 crypt32/tests: Clean up temp files. --- dlls/crypt32/tests/store.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/dlls/crypt32/tests/store.c b/dlls/crypt32/tests/store.c index d0186e2..6971d61 100644 --- a/dlls/crypt32/tests/store.c +++ b/dlls/crypt32/tests/store.c @@ -1356,6 +1356,7 @@ static void testFileNameStore(void) compareFile(filename, serializedStoreWithCertAndCRL, sizeof(serializedStoreWithCertAndCRL)); } + DeleteFileW(filename); } static void testCertOpenSystemStore(void)
1
0
0
0
Alexandre Julliard : server: Convert the server start time to the abs_time_t type.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: c627601c3bc2e09a413978819985c51048c20cca URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=c627601c3bc2e09a4139788…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jul 26 14:50:55 2006 +0200 server: Convert the server start time to the abs_time_t type. --- dlls/ntdll/nt.c | 2 +- dlls/ntdll/ntdll_misc.h | 2 +- dlls/ntdll/server.c | 2 +- dlls/ntdll/time.c | 6 ++++-- include/wine/server_protocol.h | 4 ++-- server/object.h | 2 +- server/protocol.def | 2 +- server/request.c | 7 ++++--- server/thread.c | 3 ++- server/trace.c | 4 +++- 10 files changed, 20 insertions(+), 14 deletions(-) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index fea63e3..8bc3ff8 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -683,7 +683,7 @@ NTSTATUS WINAPI NtQuerySystemInformation memset(&sti, 0 , sizeof(sti)); /* liKeSystemTime, liExpTimeZoneBias, uCurrentTimeZoneId */ - RtlSecondsSince1970ToTime( server_start_time, &sti.liKeBootTime ); + NTDLL_from_server_abstime( &sti.liKeBootTime, &server_start_time ); if (Length <= sizeof(sti)) { diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 0232086..03110a4 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -54,7 +54,7 @@ extern void virtual_init(void); extern void virtual_init_threading(void); /* server support */ -extern time_t server_start_time; +extern abs_time_t server_start_time; extern void server_init_process(void); extern size_t server_init_thread( int unix_pid, int unix_tid, void *entry_point ); extern void DECLSPEC_NORETURN server_protocol_error( const char *err, ... ); diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index d6d18e0..841604a 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -85,7 +85,7 @@ struct cmsg_fd }; #endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ -time_t server_start_time = 0; /* time of server startup */ +abs_time_t server_start_time = { 0, 0 }; /* time of server startup */ extern struct wine_pthread_functions pthread_functions; diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c index e83da76..54d4adc 100644 --- a/dlls/ntdll/time.c +++ b/dlls/ntdll/time.c @@ -874,7 +874,8 @@ NTSTATUS WINAPI NtQueryPerformanceCounte * to one of 1.193182 MHz, with some care for arithmetic * overflow ( will not overflow for 5000 years ) and * good accuracy ( 105/88 = 1.19318182) */ - Counter->QuadPart = (((now.tv_sec - server_start_time) * (ULONGLONG)1000000 + now.tv_usec) * 105) / 88; + Counter->QuadPart = (((now.tv_sec - server_start_time.sec) * (ULONGLONG)1000000 + + (now.tv_usec - server_start_time.usec)) * 105) / 88; if (Frequency) Frequency->QuadPart = 1193182; return STATUS_SUCCESS; } @@ -889,7 +890,8 @@ ULONG WINAPI NtGetTickCount(void) struct timeval current_time; gettimeofday(¤t_time, NULL); - return (current_time.tv_sec - server_start_time)*1000 + current_time.tv_usec/1000; + return (current_time.tv_sec - server_start_time.sec) * 1000 + + (current_time.tv_usec - server_start_time.usec) / 1000; } diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 1c128e2..15b18cd 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -299,7 +299,7 @@ struct init_thread_reply process_id_t pid; thread_id_t tid; data_size_t info_size; - time_t server_start; + abs_time_t server_start; int version; }; @@ -4385,6 +4385,6 @@ union generic_reply struct query_symlink_reply query_symlink_reply; }; -#define SERVER_PROTOCOL_VERSION 242 +#define SERVER_PROTOCOL_VERSION 243 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/object.h b/server/object.h index 46b34e1..1a75e4c 100644 --- a/server/object.h +++ b/server/object.h @@ -213,6 +213,6 @@ extern int foreground; extern const char *server_argv0; /* server start time used for GetTickCount() */ -extern time_t server_start_time; +extern struct timeval server_start_time; #endif /* __WINE_SERVER_OBJECT_H */ diff --git a/server/protocol.def b/server/protocol.def index 6910ed4..e64cf43 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -284,7 +284,7 @@ struct token_groups process_id_t pid; /* process id of the new thread's process */ thread_id_t tid; /* thread id of the new thread */ data_size_t info_size; /* total size of startup info */ - time_t server_start; /* server start time */ + abs_time_t server_start; /* server start time */ int version; /* protocol version */ @END diff --git a/server/request.c b/server/request.c index 6fc7fcb..d0e1a88 100644 --- a/server/request.c +++ b/server/request.c @@ -114,7 +114,7 @@ static const struct fd_ops master_socket struct thread *current = NULL; /* thread handling the current request */ unsigned int global_error = 0; /* global error code for when no thread is current */ -time_t server_start_time = 0; /* server startup time */ +struct timeval server_start_time = { 0, 0 }; /* server startup time */ static struct master_socket *master_socket; /* the master socket object */ @@ -465,7 +465,8 @@ unsigned int get_tick_count(void) { struct timeval t; gettimeofday( &t, NULL ); - return ((t.tv_sec - server_start_time) * 1000) + (t.tv_usec / 1000); + return ((t.tv_sec - server_start_time.tv_sec) * 1000) + + ((t.tv_usec - server_start_time.tv_usec) / 1000); } static void master_socket_dump( struct object *obj, int verbose ) @@ -798,7 +799,7 @@ void open_master_socket(void) msghdr.msg_iovlen = 1; /* init startup time */ - server_start_time = time(NULL); + gettimeofday( &server_start_time, NULL ); } /* master socket timer expiration handler */ diff --git a/server/thread.c b/server/thread.c index 23508d3..feb3259 100644 --- a/server/thread.c +++ b/server/thread.c @@ -889,7 +889,8 @@ DECL_HANDLER(init_thread) reply->pid = get_process_id( process ); reply->tid = get_thread_id( current ); reply->version = SERVER_PROTOCOL_VERSION; - reply->server_start = server_start_time; + reply->server_start.sec = server_start_time.tv_sec; + reply->server_start.usec = server_start_time.tv_usec; return; error: diff --git a/server/trace.c b/server/trace.c index ee3db8b..574943a 100644 --- a/server/trace.c +++ b/server/trace.c @@ -697,7 +697,9 @@ static void dump_init_thread_reply( cons fprintf( stderr, " pid=%04x,", req->pid ); fprintf( stderr, " tid=%04x,", req->tid ); fprintf( stderr, " info_size=%u,", req->info_size ); - fprintf( stderr, " server_start=%ld,", (long)req->server_start ); + fprintf( stderr, " server_start=" ); + dump_abs_time( &req->server_start ); + fprintf( stderr, "," ); fprintf( stderr, " version=%d", req->version ); }
1
0
0
0
Alexandre Julliard : server: Convert thread creation/ exit times to the abs_time_t type.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: 3095a48d6f2010d224affb276c4749afe3014b05 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=3095a48d6f2010d224affb2…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jul 26 14:49:55 2006 +0200 server: Convert thread creation/exit times to the abs_time_t type. --- dlls/ntdll/thread.c | 4 ++-- include/wine/server_protocol.h | 6 +++--- server/process.c | 1 + server/protocol.def | 4 ++-- server/thread.c | 13 ++++++++----- server/thread.h | 4 ++-- server/trace.c | 7 +++++-- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 91dbcd8..dbcc5a6 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -1077,8 +1077,8 @@ NTSTATUS WINAPI NtQueryInformationThread status = wine_server_call( req ); if (status == STATUS_SUCCESS) { - RtlSecondsSince1970ToTime( reply->creation_time, &kusrt.CreateTime ); - RtlSecondsSince1970ToTime( reply->exit_time, &kusrt.ExitTime ); + NTDLL_from_server_abstime( &kusrt.CreateTime, &reply->creation_time ); + NTDLL_from_server_abstime( &kusrt.ExitTime, &reply->exit_time ); } } SERVER_END_REQ; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index a51572c..1c128e2 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -386,8 +386,8 @@ struct get_thread_info_reply int exit_code; int priority; int affinity; - time_t creation_time; - time_t exit_time; + abs_time_t creation_time; + abs_time_t exit_time; }; @@ -4385,6 +4385,6 @@ union generic_reply struct query_symlink_reply query_symlink_reply; }; -#define SERVER_PROTOCOL_VERSION 241 +#define SERVER_PROTOCOL_VERSION 242 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/process.c b/server/process.c index 853700f..3e5ef97 100644 --- a/server/process.c +++ b/server/process.c @@ -256,6 +256,7 @@ struct thread *create_process( int fd, s list_init( &process->dlls ); gettimeofday( &process->start_time, NULL ); + process->end_time.tv_sec = process->end_time.tv_usec = 0; list_add_head( &process_list, &process->entry ); if (!(process->id = process->group_id = alloc_ptid( process ))) diff --git a/server/protocol.def b/server/protocol.def index 7fd045a..6910ed4 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -345,8 +345,8 @@ #define SET_PROCESS_INFO_AFFINITY 0x02 int exit_code; /* thread exit code */ int priority; /* thread priority level */ int affinity; /* thread affinity mask */ - time_t creation_time; /* thread creation time */ - time_t exit_time; /* thread exit time */ + abs_time_t creation_time; /* thread creation time */ + abs_time_t exit_time; /* thread exit time */ @END diff --git a/server/thread.c b/server/thread.c index 36b7309..23508d3 100644 --- a/server/thread.c +++ b/server/thread.c @@ -144,11 +144,12 @@ inline static void init_thread_structure thread->priority = THREAD_PRIORITY_NORMAL; thread->affinity = 1; thread->suspend = 0; - thread->creation_time = time(NULL); - thread->exit_time = 0; thread->desktop_users = 0; thread->token = NULL; + gettimeofday( &thread->creation_time, NULL ); + thread->exit_time.tv_sec = thread->exit_time.tv_usec = 0; + list_init( &thread->mutex_list ); list_init( &thread->system_apc ); list_init( &thread->user_apc ); @@ -737,7 +738,7 @@ void kill_thread( struct thread *thread, { if (thread->state == TERMINATED) return; /* already killed */ thread->state = TERMINATED; - thread->exit_time = time(NULL); + gettimeofday( &thread->exit_time, NULL ); if (current == thread) current = NULL; if (debug_level) fprintf( stderr,"%04x: *killed* exit_code=%d\n", @@ -946,8 +947,10 @@ DECL_HANDLER(get_thread_info) reply->exit_code = (thread->state == TERMINATED) ? thread->exit_code : STILL_ACTIVE; reply->priority = thread->priority; reply->affinity = thread->affinity; - reply->creation_time = thread->creation_time; - reply->exit_time = thread->exit_time; + reply->creation_time.sec = thread->creation_time.tv_sec; + reply->creation_time.usec = thread->creation_time.tv_usec; + reply->exit_time.sec = thread->exit_time.tv_sec; + reply->exit_time.usec = thread->exit_time.tv_usec; release_object( thread ); } diff --git a/server/thread.h b/server/thread.h index fdc69d4..61911cd 100644 --- a/server/thread.h +++ b/server/thread.h @@ -84,8 +84,8 @@ struct thread int suspend; /* suspend count */ obj_handle_t desktop; /* desktop handle */ int desktop_users; /* number of objects using the thread desktop */ - time_t creation_time; /* Thread creation time */ - time_t exit_time; /* Thread exit time */ + struct timeval creation_time; /* Thread creation time */ + struct timeval exit_time; /* Thread exit time */ struct token *token; /* security token associated with this thread */ }; diff --git a/server/trace.c b/server/trace.c index 0fe3a67..ee3db8b 100644 --- a/server/trace.c +++ b/server/trace.c @@ -766,8 +766,11 @@ static void dump_get_thread_info_reply( fprintf( stderr, " exit_code=%d,", req->exit_code ); fprintf( stderr, " priority=%d,", req->priority ); fprintf( stderr, " affinity=%d,", req->affinity ); - fprintf( stderr, " creation_time=%ld,", (long)req->creation_time ); - fprintf( stderr, " exit_time=%ld", (long)req->exit_time ); + fprintf( stderr, " creation_time=" ); + dump_abs_time( &req->creation_time ); + fprintf( stderr, "," ); + fprintf( stderr, " exit_time=" ); + dump_abs_time( &req->exit_time ); } static void dump_set_thread_info_request( const struct set_thread_info_request *req )
1
0
0
0
Alexandre Julliard : ntdll: Renamed the NTDLL_get/ from_server_timeout functions since they don't deal only with timeouts.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: 3ca608b1b325b82b4e550b45053699b15022b852 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=3ca608b1b325b82b4e550b4…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jul 26 14:49:13 2006 +0200 ntdll: Renamed the NTDLL_get/from_server_timeout functions since they don't deal only with timeouts. --- dlls/ntdll/ntdll_misc.h | 4 ++-- dlls/ntdll/process.c | 4 ++-- dlls/ntdll/sync.c | 8 ++++---- dlls/ntdll/time.c | 16 ++++++++-------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 3a872ca..0232086 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -39,8 +39,8 @@ extern void set_cpu_context( const CONTE extern LPCSTR debugstr_us( const UNICODE_STRING *str ); extern void dump_ObjectAttributes (const OBJECT_ATTRIBUTES *ObjectAttributes); -extern void NTDLL_get_server_timeout( abs_time_t *when, const LARGE_INTEGER *timeout ); -extern void NTDLL_from_server_timeout( LARGE_INTEGER *timeout, const abs_time_t *when ); +extern void NTDLL_get_server_abstime( abs_time_t *when, const LARGE_INTEGER *timeout ); +extern void NTDLL_from_server_abstime( LARGE_INTEGER *time, const abs_time_t *when ); extern NTSTATUS NTDLL_wait_for_multiple_objects( UINT count, const HANDLE *handles, UINT flags, const LARGE_INTEGER *timeout, HANDLE signal_object ); diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c index c187086..02e2b15 100644 --- a/dlls/ntdll/process.c +++ b/dlls/ntdll/process.c @@ -236,8 +236,8 @@ NTSTATUS WINAPI NtQueryInformationProces req->handle = ProcessHandle; if ((ret = wine_server_call( req )) == STATUS_SUCCESS) { - NTDLL_from_server_timeout(&pti.CreateTime, &reply->start_time); - NTDLL_from_server_timeout(&pti.ExitTime, &reply->end_time); + NTDLL_from_server_abstime(&pti.CreateTime, &reply->start_time); + NTDLL_from_server_abstime(&pti.ExitTime, &reply->end_time); } } SERVER_END_REQ; diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index 2c52fbc..106b187 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -484,7 +484,7 @@ NTSTATUS WINAPI NtSetTimer(IN HANDLE han req->expire.sec = 0; req->expire.usec = 0; } - else NTDLL_get_server_timeout( &req->expire, when ); + else NTDLL_get_server_abstime( &req->expire, when ); req->handle = handle; req->period = period; @@ -564,7 +564,7 @@ NTSTATUS WINAPI NtQueryTimer( status = wine_server_call(req); /* convert server time to absolute NTDLL time */ - NTDLL_from_server_timeout(&basic_info->RemainingTime, &reply->when); + NTDLL_from_server_abstime(&basic_info->RemainingTime, &reply->when); basic_info->TimerState = reply->signaled; } SERVER_END_REQ; @@ -721,7 +721,7 @@ NTSTATUS NTDLL_wait_for_multiple_objects req->flags = flags; req->cookie = &cookie; req->signal = signal_object; - NTDLL_get_server_timeout( &req->timeout, timeout ); + NTDLL_get_server_abstime( &req->timeout, timeout ); wine_server_add_data( req, handles, count * sizeof(HANDLE) ); ret = wine_server_call( req ); } @@ -819,7 +819,7 @@ NTSTATUS WINAPI NtDelayExecution( BOOLEA { abs_time_t when; - NTDLL_get_server_timeout( &when, timeout ); + NTDLL_get_server_abstime( &when, timeout ); /* Note that we yield after establishing the desired timeout */ NtYieldExecution(); diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c index 961ecad..e83da76 100644 --- a/dlls/ntdll/time.c +++ b/dlls/ntdll/time.c @@ -435,11 +435,11 @@ static inline int IsLeapYear(int Year) } /*********************************************************************** - * NTDLL_get_server_timeout + * NTDLL_get_server_abstime * - * Convert a NTDLL timeout into a timeval struct to send to the server. + * Convert a NTDLL time into an abs_time_t struct to send to the server. */ -void NTDLL_get_server_timeout( abs_time_t *when, const LARGE_INTEGER *timeout ) +void NTDLL_get_server_abstime( abs_time_t *when, const LARGE_INTEGER *timeout ) { UINT remainder; @@ -484,14 +484,14 @@ void NTDLL_get_server_timeout( abs_time_ /*********************************************************************** - * NTDLL_from_server_timeout + * NTDLL_from_server_abstime * - * Convert a timeval struct from the server into an NTDLL timeout. + * Convert a timeval struct from the server into an NTDLL time. */ -void NTDLL_from_server_timeout( LARGE_INTEGER *timeout, const abs_time_t *when ) +void NTDLL_from_server_abstime( LARGE_INTEGER *time, const abs_time_t *when ) { - timeout->QuadPart = when->sec * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970; - timeout->QuadPart += when->usec * 10; + time->QuadPart = when->sec * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970; + time->QuadPart += when->usec * 10; }
1
0
0
0
Alexandre Julliard : server: Rename the wait_input_idle request to better reflect what it does.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: ce40ef18df329567540169f2e51474a7258d0678 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=ce40ef18df329567540169f…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jul 26 11:48:25 2006 +0200 server: Rename the wait_input_idle request to better reflect what it does. Also get rid of the unused timeout field. --- dlls/user/message.c | 3 +-- include/wine/server_protocol.h | 13 ++++++------- server/process.c | 5 ++--- server/protocol.def | 5 ++--- server/request.h | 4 ++-- server/trace.c | 13 ++++++------- 6 files changed, 19 insertions(+), 24 deletions(-) diff --git a/dlls/user/message.c b/dlls/user/message.c index fd84ef0..6351ff3 100644 --- a/dlls/user/message.c +++ b/dlls/user/message.c @@ -3181,10 +3181,9 @@ DWORD WINAPI WaitForInputIdle( HANDLE hP DWORD start_time, elapsed, ret; HANDLE idle_event = (HANDLE)-1; - SERVER_START_REQ( wait_input_idle ) + SERVER_START_REQ( get_process_idle_event ) { req->handle = hProcess; - req->timeout = dwTimeOut; if (!(ret = wine_server_call_err( req ))) idle_event = reply->event; } SERVER_END_REQ; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 8e8a8c6..a51572c 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -2176,13 +2176,12 @@ struct get_queue_status_reply -struct wait_input_idle_request +struct get_process_idle_event_request { struct request_header __header; obj_handle_t handle; - int timeout; }; -struct wait_input_idle_reply +struct get_process_idle_event_reply { struct reply_header __header; obj_handle_t event; @@ -3853,7 +3852,7 @@ enum request REQ_get_msg_queue, REQ_set_queue_mask, REQ_get_queue_status, - REQ_wait_input_idle, + REQ_get_process_idle_event, REQ_send_message, REQ_post_quit_message, REQ_get_message, @@ -4073,7 +4072,7 @@ union generic_request struct get_msg_queue_request get_msg_queue_request; struct set_queue_mask_request set_queue_mask_request; struct get_queue_status_request get_queue_status_request; - struct wait_input_idle_request wait_input_idle_request; + struct get_process_idle_event_request get_process_idle_event_request; struct send_message_request send_message_request; struct post_quit_message_request post_quit_message_request; struct get_message_request get_message_request; @@ -4291,7 +4290,7 @@ union generic_reply struct get_msg_queue_reply get_msg_queue_reply; struct set_queue_mask_reply set_queue_mask_reply; struct get_queue_status_reply get_queue_status_reply; - struct wait_input_idle_reply wait_input_idle_reply; + struct get_process_idle_event_reply get_process_idle_event_reply; struct send_message_reply send_message_reply; struct post_quit_message_reply post_quit_message_reply; struct get_message_reply get_message_reply; @@ -4386,6 +4385,6 @@ union generic_reply struct query_symlink_reply query_symlink_reply; }; -#define SERVER_PROTOCOL_VERSION 240 +#define SERVER_PROTOCOL_VERSION 241 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/process.c b/server/process.c index e949b40..853700f 100644 --- a/server/process.c +++ b/server/process.c @@ -1040,9 +1040,8 @@ DECL_HANDLER(get_dll_info) } } -/* wait for a process to start waiting on input */ -/* FIXME: only returns event for now, wait is done in the client */ -DECL_HANDLER(wait_input_idle) +/* retrieve the process idle event */ +DECL_HANDLER(get_process_idle_event) { struct process *process; diff --git a/server/protocol.def b/server/protocol.def index 4cd8099..7fd045a 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -1554,10 +1554,9 @@ #define SNAP_MODULE 0x00000008 @END -/* Wait for a process to start waiting on input */ -@REQ(wait_input_idle) +/* Retrieve the process idle event */ +@REQ(get_process_idle_event) obj_handle_t handle; /* process handle */ - int timeout; /* timeout */ @REPLY obj_handle_t event; /* handle to idle event */ @END diff --git a/server/request.h b/server/request.h index bbe1a7c..a6d720a 100644 --- a/server/request.h +++ b/server/request.h @@ -230,7 +230,7 @@ DECL_HANDLER(init_atom_table); DECL_HANDLER(get_msg_queue); DECL_HANDLER(set_queue_mask); DECL_HANDLER(get_queue_status); -DECL_HANDLER(wait_input_idle); +DECL_HANDLER(get_process_idle_event); DECL_HANDLER(send_message); DECL_HANDLER(post_quit_message); DECL_HANDLER(get_message); @@ -449,7 +449,7 @@ static const req_handler req_handlers[RE (req_handler)req_get_msg_queue, (req_handler)req_set_queue_mask, (req_handler)req_get_queue_status, - (req_handler)req_wait_input_idle, + (req_handler)req_get_process_idle_event, (req_handler)req_send_message, (req_handler)req_post_quit_message, (req_handler)req_get_message, diff --git a/server/trace.c b/server/trace.c index cfa14ea..0fe3a67 100644 --- a/server/trace.c +++ b/server/trace.c @@ -2067,13 +2067,12 @@ static void dump_get_queue_status_reply( fprintf( stderr, " changed_bits=%08x", req->changed_bits ); } -static void dump_wait_input_idle_request( const struct wait_input_idle_request *req ) +static void dump_get_process_idle_event_request( const struct get_process_idle_event_request *req ) { - fprintf( stderr, " handle=%p,", req->handle ); - fprintf( stderr, " timeout=%d", req->timeout ); + fprintf( stderr, " handle=%p", req->handle ); } -static void dump_wait_input_idle_reply( const struct wait_input_idle_reply *req ) +static void dump_get_process_idle_event_reply( const struct get_process_idle_event_reply *req ) { fprintf( stderr, " event=%p", req->event ); } @@ -3389,7 +3388,7 @@ static const dump_func req_dumpers[REQ_N (dump_func)dump_get_msg_queue_request, (dump_func)dump_set_queue_mask_request, (dump_func)dump_get_queue_status_request, - (dump_func)dump_wait_input_idle_request, + (dump_func)dump_get_process_idle_event_request, (dump_func)dump_send_message_request, (dump_func)dump_post_quit_message_request, (dump_func)dump_get_message_request, @@ -3605,7 +3604,7 @@ static const dump_func reply_dumpers[REQ (dump_func)dump_get_msg_queue_reply, (dump_func)dump_set_queue_mask_reply, (dump_func)dump_get_queue_status_reply, - (dump_func)dump_wait_input_idle_reply, + (dump_func)dump_get_process_idle_event_reply, (dump_func)0, (dump_func)0, (dump_func)dump_get_message_reply, @@ -3821,7 +3820,7 @@ static const char * const req_names[REQ_ "get_msg_queue", "set_queue_mask", "get_queue_status", - "wait_input_idle", + "get_process_idle_event", "send_message", "post_quit_message", "get_message",
1
0
0
0
Alexandre Julliard : server: Make the create_async function take an absolute timeout.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: 40723f795ba390b70594f278106af637c9afb8d4 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=40723f795ba390b70594f27…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jul 26 11:47:42 2006 +0200 server: Make the create_async function take an absolute timeout. --- server/fd.c | 16 +++++----------- server/file.h | 5 +++-- server/mailslot.c | 12 ++++++++---- server/named_pipe.c | 16 ++++++++-------- server/serial.c | 6 ++++-- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/server/fd.c b/server/fd.c index 7806bae..319f55c 100644 --- a/server/fd.c +++ b/server/fd.c @@ -1116,8 +1116,8 @@ static void async_callback(void *private } /* create an async on a given queue of a fd */ -struct async *create_async(struct thread *thread, int* timeout, struct list *queue, - void *io_apc, void *io_user, void* io_sb) +struct async *create_async( struct thread *thread, const struct timeval *timeout, + struct list *queue, void *io_apc, void *io_user, void* io_sb ) { struct async *async = mem_alloc( sizeof(struct async) ); @@ -1130,14 +1130,7 @@ struct async *create_async(struct thread list_add_tail( queue, &async->entry ); - if (timeout) - { - struct timeval when; - - gettimeofday( &when, NULL ); - add_timeout( &when, *timeout ); - async->timeout = add_timeout_user( &when, async_callback, async ); - } + if (timeout) async->timeout = add_timeout_user( timeout, async_callback, async ); else async->timeout = NULL; return async; @@ -1583,7 +1576,8 @@ void default_poll_event( struct fd *fd, wake_up( fd->user, 0 ); } -void fd_queue_async_timeout( struct fd *fd, void *apc, void *user, void *io_sb, int type, int count, int *timeout ) +void fd_queue_async_timeout( struct fd *fd, void *apc, void *user, void *io_sb, int type, int count, + const struct timeval *timeout ) { struct list *queue; int events; diff --git a/server/file.h b/server/file.h index 6bbf9b0..68cbb3e 100644 --- a/server/file.h +++ b/server/file.h @@ -66,7 +66,8 @@ extern void default_fd_remove_queue( str extern int default_fd_signaled( struct object *obj, struct thread *thread ); extern int default_fd_get_poll_events( struct fd *fd ); extern void default_poll_event( struct fd *fd, int event ); -extern void fd_queue_async_timeout( struct fd *fd, void *apc, void *user, void *io_sb, int type, int count, int *timeout ); +extern void fd_queue_async_timeout( struct fd *fd, void *apc, void *user, void *io_sb, int type, + int count, const struct timeval *timeout ); extern void default_fd_queue_async( struct fd *fd, void *apc, void *user, void *io_sb, int type, int count ); extern void default_fd_cancel_async( struct fd *fd ); extern int no_flush( struct fd *fd, struct event **event ); @@ -117,7 +118,7 @@ extern int is_serial_fd( struct fd *fd ) extern struct object *create_serial( struct fd *fd, unsigned int options ); /* async I/O functions */ -extern struct async *create_async( struct thread *thread, int* timeout, +extern struct async *create_async( struct thread *thread, const struct timeval *timeout, struct list *queue, void *, void *, void *); extern void async_terminate_head( struct list *queue, int status ); diff --git a/server/mailslot.c b/server/mailslot.c index 3ff6b5c..57a15b5 100644 --- a/server/mailslot.c +++ b/server/mailslot.c @@ -249,7 +249,6 @@ static void mailslot_queue_async( struct void *iosb, int type, int count ) { struct mailslot *mailslot = get_fd_user( fd ); - int *timeout = NULL; assert(mailslot->obj.ops == &mailslot_ops); @@ -266,9 +265,14 @@ static void mailslot_queue_async( struct return; } - if (mailslot->read_timeout != -1) timeout = &mailslot->read_timeout; - - fd_queue_async_timeout( fd, apc, user, iosb, type, count, timeout ); + if (mailslot->read_timeout != -1) + { + struct timeval when; + gettimeofday( &when, NULL ); + add_timeout( &when, mailslot->read_timeout ); + fd_queue_async_timeout( fd, apc, user, iosb, type, count, &when ); + } + else fd_queue_async_timeout( fd, apc, user, iosb, type, count, NULL ); } static void mailslot_device_dump( struct object *obj, int verbose ) diff --git a/server/named_pipe.c b/server/named_pipe.c index 5c4da77..202cf68 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -868,18 +868,18 @@ DECL_HANDLER(wait_named_pipe) } else { - int timeout; - if (req->timeout == NMPWAIT_USE_DEFAULT_WAIT) - timeout = pipe->timeout; - else - timeout = req->timeout; - if (req->timeout == NMPWAIT_WAIT_FOREVER) create_async( current, NULL, &pipe->waiters, req->func, req->event, NULL ); else - create_async( current, &timeout, &pipe->waiters, - req->func, req->event, NULL ); + { + struct timeval when; + + gettimeofday( &when, NULL ); + if (req->timeout == NMPWAIT_USE_DEFAULT_WAIT) add_timeout( &when, pipe->timeout ); + else add_timeout( &when, req->timeout ); + create_async( current, &when, &pipe->waiters, req->func, req->event, NULL ); + } } release_object( pipe ); diff --git a/server/serial.c b/server/serial.c index 859202c..cc3086c 100644 --- a/server/serial.c +++ b/server/serial.c @@ -246,6 +246,7 @@ static void serial_queue_async( struct f { struct serial *serial = get_fd_user( fd ); struct list *queue; + struct timeval when; int timeout; int events; @@ -270,8 +271,9 @@ static void serial_queue_async( struct f return; } - if (!create_async( current, &timeout, queue, apc, user, iosb )) - return; + gettimeofday( &when, NULL ); + add_timeout( &when, timeout ); + if (!create_async( current, &when, queue, apc, user, iosb )) return; /* Check if the new pending request can be served immediately */ events = check_fd_events( fd, serial_get_poll_events( fd ) );
1
0
0
0
Michael Stefaniuc : server: Fix some comparisons between signed and unsigned.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: a624977f21a1a1668326882f84a47d3a7f5cb58d URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=a624977f21a1a1668326882…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Tue Jul 25 10:30:04 2006 +0200 server: Fix some comparisons between signed and unsigned. --- server/console.c | 2 +- server/ptrace.c | 2 +- server/queue.c | 2 +- server/registry.c | 4 ++-- server/token.c | 10 ++++------ 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/server/console.c b/server/console.c index 5e65704..f57e4fe 100644 --- a/server/console.c +++ b/server/console.c @@ -1021,7 +1021,7 @@ static int write_console_output( struct const void* data, enum char_info_mode mode, int x, int y, int wrap ) { - int i; + unsigned int i; char_info_t *end, *dest = screen_buffer->data + y * screen_buffer->width + x; if (y >= screen_buffer->height) return 0; diff --git a/server/ptrace.c b/server/ptrace.c index c84451b..4de242f 100644 --- a/server/ptrace.c +++ b/server/ptrace.c @@ -288,7 +288,7 @@ static int read_thread_int( struct threa static int write_thread_int( struct thread *thread, int *addr, int data, unsigned int mask ) { int res; - if (mask != ~0) + if (mask != ~0u) { if (read_thread_int( thread, addr, &res ) == -1) return -1; data = (data & mask) | (res & ~mask); diff --git a/server/queue.c b/server/queue.c index 965ede0..a292c80 100644 --- a/server/queue.c +++ b/server/queue.c @@ -1298,7 +1298,7 @@ static int check_hw_message_filter( user /* find a hardware message for the given queue */ -static int get_hardware_message( struct thread *thread, int hw_id, user_handle_t filter_win, +static int get_hardware_message( struct thread *thread, unsigned int hw_id, user_handle_t filter_win, unsigned int first, unsigned int last, struct get_message_reply *reply ) { struct thread_input *input = thread->queue->input; diff --git a/server/registry.c b/server/registry.c index f56051c..9251188 100644 --- a/server/registry.c +++ b/server/registry.c @@ -669,8 +669,8 @@ static void enum_key( const struct key * { int i; data_size_t len, namelen, classlen; - int max_subkey = 0, max_class = 0; - int max_value = 0, max_data = 0; + data_size_t max_subkey = 0, max_class = 0; + data_size_t max_value = 0, max_data = 0; char *data; if (index != -1) /* -1 means use the specified key directly */ diff --git a/server/token.c b/server/token.c index 1d08eeb..ce08e95 100644 --- a/server/token.c +++ b/server/token.c @@ -419,7 +419,7 @@ static struct token *create_token( unsig struct token *token = alloc_object( &token_ops ); if (token) { - int i; + unsigned int i; list_init( &token->privileges ); list_init( &token->groups ); @@ -623,8 +623,7 @@ static unsigned int token_adjust_privile unsigned int count, LUID_AND_ATTRIBUTES *mod_privs, unsigned int mod_privs_count ) { - int i; - unsigned int modified_count = 0; + unsigned int i, modified_count = 0; for (i = 0; i < count; i++) { @@ -669,8 +668,7 @@ int token_check_privileges( struct token const LUID_AND_ATTRIBUTES *reqprivs, unsigned int count, LUID_AND_ATTRIBUTES *usedprivs) { - int i; - unsigned int enabled_count = 0; + unsigned int i, enabled_count = 0; for (i = 0; i < count; i++) { @@ -944,7 +942,7 @@ DECL_HANDLER(adjust_token_privileges) if (req->get_modified_state && !req->disable_all) { - int i; + unsigned int i; /* count modified privs */ for (i = 0; i < priv_count; i++) {
1
0
0
0
Alexandre Julliard : server: Added data_size_t type to represent sizes in the server protocol.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: 0f273c17ff53423627cc404dc9ec6526c6b1a0cd URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=0f273c17ff53423627cc404…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jul 26 10:43:25 2006 +0200 server: Added data_size_t type to represent sizes in the server protocol. Make it an unsigned int to save some space on Win64, if we need to transfer more than 4Gb over the server pipe something is seriously wrong. --- include/wine/server.h | 8 ++- include/wine/server_protocol.h | 65 +++++++++++++------------ server/atom.c | 14 +++-- server/console.c | 14 +++-- server/debugger.c | 4 +- server/file.c | 2 - server/hook.c | 4 +- server/object.c | 6 +- server/object.h | 8 ++- server/process.c | 14 +++-- server/process.h | 10 ++-- server/protocol.def | 63 ++++++++++++------------ server/ptrace.c | 8 ++- server/queue.c | 8 ++- server/region.c | 6 +- server/registry.c | 36 +++++++------- server/request.c | 2 - server/request.h | 10 ++-- server/snapshot.c | 4 +- server/symlink.c | 2 - server/token.c | 8 ++- server/trace.c | 103 +++++++++++++++++++--------------------- server/user.h | 12 ++--- server/window.c | 10 ++-- server/winstation.c | 4 +- tools/make_requests | 1 26 files changed, 213 insertions(+), 213 deletions(-) Diff:
http://source.winehq.org/git/?p=wine.git;a=commitdiff;h=0f273c17ff53423627c…
1
0
0
0
Karsten Elfenbein : rsaenh: Fix the case when CPGetHashParam should return the size of the HASHVAL.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: dd6598b834d6e9f113f3c58dd84e778ae5583d4b URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=dd6598b834d6e9f113f3c58…
Author: Karsten Elfenbein <kelfe(a)gmx.de> Date: Tue Jul 25 20:59:12 2006 +0200 rsaenh: Fix the case when CPGetHashParam should return the size of the HASHVAL. --- dlls/rsaenh/rsaenh.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c index 7c9dcfb..d42face 100644 --- a/dlls/rsaenh/rsaenh.c +++ b/dlls/rsaenh/rsaenh.c @@ -2567,7 +2567,12 @@ BOOL WINAPI RSAENH_CPGetHashParam(HCRYPT return tls1_prf(hProv, pCryptHash->hKey, &pCryptHash->tpPRFParams.blobLabel, &pCryptHash->tpPRFParams.blobSeed, pbData, *pdwDataLen); } - + + if ( pbData == NULL ) { + *pdwDataLen = pCryptHash->dwHashSize; + return TRUE; + } + if (pCryptHash->dwState == RSAENH_HASHSTATE_IDLE) { SetLastError(NTE_BAD_HASH_STATE); return FALSE;
1
0
0
0
Andrew Talbot : winspool.drv/tests: Write-strings warnings fix.
by Alexandre Julliard
26 Jul '06
26 Jul '06
Module: wine Branch: refs/heads/master Commit: 4b792c6d56112bec8c9e3c59be00fd20e06b5593 URL:
http://source.winehq.org/git/?p=wine.git;a=commit;h=4b792c6d56112bec8c9e3c5…
Author: Andrew Talbot <Andrew.Talbot(a)talbotville.com> Date: Tue Jul 25 21:53:32 2006 +0100 winspool.drv/tests: Write-strings warnings fix. --- dlls/winspool.drv/tests/info.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c index 0420464..85a3353 100644 --- a/dlls/winspool.drv/tests/info.c +++ b/dlls/winspool.drv/tests/info.c @@ -42,7 +42,7 @@ static FARPROC pSetDefaultPrinterA; struct monitor_entry { LPSTR env; - LPSTR dllname; + CHAR dllname[32]; }; /* report common behavior only once */
1
0
0
0
← Newer
1
...
15
16
17
18
19
20
21
...
86
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Results per page:
10
25
50
100
200