Commit Graph

105 Commits

Author SHA1 Message Date
Tor Lillqvist
b5456a91d7 Remove two duplicated lines. Thanks to Benoît Carpentier.
2004-05-10  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c (g_win32_print_gioflags): Remove two duplicated
	lines. Thanks to Benoît Carpentier.
2004-05-09 23:48:57 +00:00
Tor Lillqvist
9b4080611a glib/giowin32.c glib/gmain.c glib/gstrfuncs.c Decorating variable
2004-04-10  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c
	* glib/gmain.c
	* glib/gstrfuncs.c
	* glib/gthread.c: Decorating variable definitions with
	__declspec(dllexport) causes problems on Cygwin build, and isn't
	really needed for a native Win32 build with mingw or MSVC, so
	remove. (#138402, Roger Leigh)

	* glib/libcharset/localcharset.c: Use Win32-specific code also on
	Cygwin.
	* tests/uri-test.c: Don't assume that local filenames are in UTF-8
	on Cygwin, either. (#138412, Roger Leigh)
2004-04-10 01:55:57 +00:00
15 2003 Andrew Lanoix
94d79f087b Bind inter-thread comminication sockets to INADDR_LOOPBACK instead of
Sat Nov 22 14:16:51.15 2003  Andrew Lanoix  <alanoix@umich.edu>

* glib/giowin32.c: Bind inter-thread comminication
sockets to INADDR_LOOPBACK instead of INADDR_ANY.
2003-11-22 19:28:04 +00:00
Tor Lillqvist
e2797b3525 Avoid UNLOCKing the critical section twice, which might cause a hang.
2003-08-25  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c (read_thread): Avoid UNLOCKing the critical
	section twice, which might cause a hang. (#120653)

	* glib/giowin32.c (g_io_channel_unix_new): Warn if fd is both a
	valid file descriptor and socket.
2003-08-25 21:37:57 +00:00
Tor Lillqvist
98ba2b5ee3 Pass real &optval and &optlen to getsockopt() instead of NULL. Don't
2003-06-25  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c (g_io_channel_unix_new): Pass real &optval and
	&optlen to getsockopt() instead of NULL. Don't remember why I
	thought that NULL could be used (as we don't actually use the
	returned value for anything), the Platform SDK documentation
	doesn't imply so.
2003-06-25 03:06:24 +00:00
Tor Lillqvist
51704100d0 Fix indentation and spacing. Use INADDR_LOOPBACK instead of
2003-06-08  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c: Fix indentation and spacing. Use
	INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and
	gethostbyaddr().
2003-06-08 01:38:13 +00:00
Andy Lanoix
be76dd63f9 Resolved thread deadlocks in socket ichannel code to support
* glib/giowin32.c: Resolved thread deadlocks in socket
	ichannel code to support Add-Cancel-Add watch functionality
	on windows. Also cleaned up socket error handling to not
	segfault and do the right thing.
2003-06-07 20:31:28 +00:00
Tor Lillqvist
5d48d565e3 Fix typo: Should be SOCKET_ERROR, not SO_ERROR. Noticed by Daniel
2003-02-04  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c (g_io_channel_unix_new): Fix typo: Should be
	SOCKET_ERROR, not SO_ERROR. Noticed by Daniel Kaufmann.

	Merge from stable branch:

	Fix for bug #104014, reported by Alex Shaduri:

	* glib/gspawn-win32.c (protect_argv): New function. Add
	double-quotes around argv elements that need it, and escape
	embedded double-quotes with backslash.
	(do_spawn_with_pipes) Call protect_argv().

	* glib/gspawn-win32-helper.c (WinMain): Call protect_argv().

	* glib/gspawn.c (g_spawn_async_with_pipes): Document argument
	vector vs. command line details on Win32.
	(g_spawn_command_line_sync): Improve documentation about
	backslashes in the command line on Windows.
2003-02-04 23:37:04 +00:00
Tor Lillqvist
a0821bd753 Don't claim broken pipes are unreadable. (Well, they are, but read()
2003-01-04  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c (g_io_win32_fd_get_flags_internal): Don't claim
	broken pipes are unreadable. (Well, they are, but read() handles
	it, and treats it like EOF.)
2003-01-04 05:43:06 +00:00
Tor Lillqvist
54cadf4528 Correct the comment telling what headers have the declarations of some
2003-01-02  Tor Lillqvist  <tml@iki.fi>

	* glib/gwin32.h: Correct the comment telling what headers have
	the declarations of some POSIXish functions.

	* glib/giowin32.c (g_io_win32_fd_get_flags_internal): Fix braino:
	The checks for readability/writeability were backwards.
2003-01-02 00:30:22 +00:00
Tor Lillqvist
10d5085cde Improvement based on suggestion by Thorsten Maerz:
2002-12-17  Tor Lillqvist  <tml@iki.fi>

	Improvement based on suggestion by Thorsten Maerz:

	* glib/giowin32.c (struct _GIOWin32Channel): Don't need thread_handle.

	(create_thread): We can close thread handle right away, it isn't
	used for anything.

	(read_thread, select_thread): Thus, don't close it here.

	Fix #57690, partial fix for #57689:

	* glib/giowin32.c (g_io_win32_set_flags): Don't set the GError,
	instead call g_warning().

	(g_io_win32_fd_get_flags_internal): New function, sets the
	is_readable, is_writeable and is_seekable flags based on the
	actual access modes of the underlying Win32 HANDLE, by trying
	Win32 ReadFile() and WriteFile() of zero bytes, and
	PeekNamedPipe(). Should work for disk files and pipes. For devices
	(consoles) unfortunately not.

	(g_io_win32_fd_get_flags): Don't set the
	G_IO_FLAG_IS_{READ,WRITE}ABLE flags, g_io_channel_get_flags()
	already does. Call g_io_win32_fd_get_flags_internal() to set the
	is_* flags.

	(g_io_win32_msg_get_flags, g_io_win32_sock_get_flags): Splice the
	generic g_io_win32_get_flags() into these specific functions, as
	they need to do different things. Not implemented yet, though.

	(g_io_channel_win32_new_fd_internal): New function, to avoid
	duplicate fstat() calls. Most code from g_io_channel_win32_new_fd()
	moved here. Call g_io_win32_fd_get_flags_internal() to set the
	is_* flags.

	(g_io_channel_win32_new_fd, g_io_channel_unix_new): Call
	g_io_channel_win32_new_fd_internal().

	(g_io_win32_no_seek): Remove. Don't set is_seekable for those
	channel types.
2002-12-17 04:48:03 +00:00
Tor Lillqvist
1c653e3635 glib/giowin32.c (g_io_win32_dispatch): Check buffer condition here, too.
2002-03-16  Tor Lillqvist  <tml@iki.fi>

	glib/giowin32.c (g_io_win32_dispatch): Check buffer condition
	here, too.
2002-03-15 23:34:53 +00:00
Tor Lillqvist
2c8e0c8d40 Some debugging output formatting changes. The following two changes fixes
2002-03-16  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c: Some debugging output formatting changes. The
	following two changes fixes a problem with buffered GIOChannels,
	noticed with the help of Owen's test program, thanks!
	(g_io_win32_prepare): Return value that takes the buffer condition
	into account, like g_io_unix_prepare() does.
	(g_io_win32_check): Ditto, like g_io_unix_check().
2002-03-15 23:01:55 +00:00
Owen Taylor
cef5d28c89 Final updates for 2.0.0
Fri Mar  8 10:20:46 2002  Owen Taylor  <otaylor@redhat.com>

        * NEWS: Final updates for 2.0.0

        * glib/gstrfuncs.c: Convert the results of strerror()
        and strsignal() to UTF-8.

        * glib/gconvert.c glib/gdir.c glib/giochannel.c glib/giounix.c
        glib/giowin32.c: Use g_strerror(), not strerror().
2002-03-08 15:50:54 +00:00
Tor Lillqvist
c7e635a922 Include <config.h> first here, too. Use g_io_channel_read_chars() instead
2002-02-19  Tor Lillqvist  <tml@iki.fi>

	* glib/gspawn-win32.c: Include <config.h> first here, too. Use
	g_io_channel_read_chars() instead of (deprecated)
	g_io_channel_read(). Set encoding to NULL for the channels used
	for the pipes from the child.

	* glib/giowin32.c (buffer_read): Do return G_IO_STATUS_EOF when
	EOF has been reached. Otherwise, with the above change to
	gspawn-win32.c, spawn-test hangs.
2002-02-19 09:08:24 +00:00
Owen Taylor
5d43b9ade4 Updated.
Fri Feb 15 10:41:51 2002  Owen Taylor  <otaylor@redhat.com>

        * NEWS: Updated.

        * configure.in: Require autoconf-2.52, run AC_SYS_LARGEFILE.
        (#71410, Sven Neumann)

        * glib/giounix.c glib/giowin32.c glib/giochannel.[ch]:
        Change offset type for g_io_channel_seek[_position] to
        gint64.
2002-02-15 16:41:54 +00:00
Tor Lillqvist
c2794647a4 Add (undefined) HAVE_C99_VSNPRINTF.
2001-12-21  Tor Lillqvist  <tml@iki.fi>

	* config.h.win32.in: Add (undefined) HAVE_C99_VSNPRINTF.

	* glibconfig.h.win32.in: Add definition of G_HAVE_GROWING_STACK.

	* tests/Makefile.am: Rename the progs_LDADD, thread_LDADD and
	module_LDADD Make macros to progs_ldadd, thread_ldadd and
	module_ldadd. Newer automakes reserve macros named *_LDADD for
	the use as LDADDs for targets it knows.

	* glib/giowin32.c: (struct _GIOWin32Watch): 'callback' wasn't used
	here, either.

2001-12-21  Tor Lillqvist  <tml@iki.fi>

	* gobject.def: Add g_signal_get_invocation_hint.
2001-12-22 08:29:06 +00:00
Hans Breuer
5981d6fe6b static correctness
2001-11-03  Hans Breuer  <hans@breuer.org>

	* glib/giowin32.c : static correctness

	* glib/gwin32.c : some more #if defined (SUBLANG_* ...
	(g_win32_get_package_installation_subdirectory) use g_build_filename
	instead of duplicating its logic

	* glib/glib.def : removed duplicates, added mising, removed
	compat cruft
2001-11-03 16:51:10 +00:00
Bruno Haible
34462896a0 When the sublangid is SUBLANG_DEFAULT, return the locale of the language's
2001-09-24  Bruno Haible  <haible@clisp.cons.org>

	* glib/gwin32.c (g_win32_getlocale): When the sublangid is
	SUBLANG_DEFAULT, return the locale of the language's main country,
	not a country-neutral locale. E.g. "en_US" instead of "en". Add
	handling of LANG_SORBIAN. Fix typo for SUBLANG_CHINESE_SIMPLIFIED
	(China == CN, CH == Switzerland). Ignore empty environment
	variable values.

2001-09-28  Tor Lillqvist  <tml@iki.fi>

	* glib/makefile.{mingw,msc}.in: Add localcharset.o. Just copy the
	source file from libcharset and compile in this directory.

	* glib/giochannel.c: Mark rest of g_set_error strings for
	translation, too.

	* glib/giowin32.c: Add some debugging output functions, call them
	when debugging.
	(create_events, g_io_win32_msg_write): Free message fetched with
	g_win32_error_message ().
	(g_io_win32_check): Indentation fixes.
	(g_io_win32_fd_read,g_io_win32_sock_read): Don't always return
	G_IO_STATUS_NORMAL. Do return G_IO_STATUS_EOF if we got 0 bytes,
	like on Unix. This helps making the test programs run
	successfully.

	* glib/gmain.c (g_poll): Return the code ifdeffed out with
	TEST_WITHOUT_THIS. Can't remember why it was ifdeffed out. Things
	seem to work as previously with the code in place. Especially
	spawn-test didn't work with the code ifdeffed out (Bug#61067).

	* glib/grand.c (g_rand_new): Don't try to use /dev/urandom unless
	on Unix.

	* glib/gspawn-win32-helper.c (WinMain): Remove Sleep(10000)
	accidentally left in.

gthread:

2001-09-28  Tor Lillqvist  <tml@iki.fi>

	* gthread-win32.c: Use an extra level of indirection for GMutex.
	It is now a pointer either to a pointer to a CRITICAL_SECTION
	struct, or to a mutex HANDLE. This is needed in case the user
	defines G_ERRORCHECK_MUTEXES. G_MUTEX_SIZE must correctly reflect
	the size of *GMutex, but this used to vary depending on whether we
	at run-time chose to use CRITICAL_SECTIONs or mutexes.
	(g_mutex_free_win32_cs_impl, g_cond_free_win32_impl): Call
	DeleteCriticalSection() when done with it.

	* gthread-impl.c (g_thread_init_with_errorcheck_mutexes): Call
	g_thread_impl_init() before accessing
	g_thread_functions_for_glib_use_default, as the
	g_thread_impl_init() function might modify it.

po:

2001-09-28  Tor Lillqvist  <tml@iki.fi>

	* POTFILES.in: Add iochannel.c and giowin32.c.

	* sv.po: Remove a bogus fuzziness indicator.
2001-09-27 22:07:00 +00:00
Hans Breuer
f664bba3d4 simply setting is_readable and is_writeable to TRUE does make Gimp
2001-09-22  Hans Breuer  <hans@breuer.org>

	* glib/giowin32.c : simply setting is_readable and is_writeable
	to TRUE does make Gimp plug-ins work again. Still no API known
	to request this info on Win32 (see #57690)
2001-09-22 19:40:58 +00:00
Hans Breuer
fdc27bb82c added rule for glibconfig.h
2001-09-21  Hans Breuer  <hans@breuer.org>

	* makefile.msc : added rule for glibconfig.h

	* glib/giowin32.c (g_io_channel_new_file) : always open
	in binary mode

	* glib/glib.def : updated externals

	* glib/gwin32.c : re-added LANG_* and SUBLANG_* definitions,
	which are missing from the msvc 5.0 win32 sdk

	* glib/makefile.msc.in : added gbsearcharry
2001-09-21 19:48:59 +00:00
Tor Lillqvist
812b4b00af glib/gmain.c Mark the _funcs tables for export.
2001-09-18  Tor Lillqvist  <tml@iki.fi>

	* glib/gmain.c
	* glib/giowin32.c: Mark the _funcs tables for export.

	* glib/glib.def: Add here, too.

	* glib/gwin32.c (get_package_directory_from_module): No reason to
	check for the module being in a bin or lib directory only when
	module_name is non-NULL.

	* glib/gwin32.c (g_win32_get_package_installation_directory):
	Check first in HKEY_CURRENT_USER, then in HKEY_LOCAL_MACHINE.

	* gmodule/Makefile.am: On Win32, pass a dummy -rpath flag to
	libtool when building libgplugin_[ab].la, otherwise libtool
	doesn't create a DLL, but a static archive.
2001-09-17 22:39:57 +00:00
Tor Lillqvist
07741c07d8 Update. Don't mention pthreads.
2001-09-04  Tor Lillqvist  <tml@iki.fi>

	* README.win32: Update. Don't mention pthreads.

	* build-dll: Remove, moved to the build module.

	* glibconfig.h.win32.in: Don't mention pthreds here, either.

	* glib/gstrfuncs.c: Mark the correct variable for export from DLL.

	* glib/giowin32.c (g_io_win32_msg_create_watch): Owen forgot to
	rename the win32_watch_funcs variable here, too.

	* */makefile.mingw.in: Don't use version number in import library
	name. Use whole version number in DLL name. Use build-dll from the
	build module.
2001-09-04 05:09:35 +00:00
Owen Taylor
b4c3107c7a Add closure_marshal/closure_callback fields to GSourceFuncs for use by
Mon Aug 27 14:56:12 2001  Owen Taylor  <otaylor@redhat.com>

	* glib/gmain.h: Add closure_marshal/closure_callback
	fields to GSourceFuncs for use by g_source_set_closure().

	* glib/gmain.c glib/giounix.c glib/giowin32.c
	  glib/gmain.h: Export the SourceFuncs vtables so GObject
	can use them to figure out closure callbacks/marshallers
	for the default source types.

Mon Aug 27 14:55:27 2001  Owen Taylor  <otaylor@redhat.com>

	* gsourceclosure.[ch] (g_source_set_closure): Implement.

	* gsourceclosure.[ch]: Add GType's for GIOChannel, GIOCondition.
2001-09-03 22:12:51 +00:00
Hans Breuer
371fe04203 make the code actually have an effect (Use |= to set bits). Not absolutely
2001-07-22  Hans Breuer  <hans@breuer.org>

	* glib/giochannel.c (g_io_channel_get_buffer_condition) : make
	the code actually have an effect (Use |= to set bits). Not
	absolutely sure if is the right one.

	* glib/giowin32.c (g_io_win32_<check|prepare>) : don't modify
	watch->condition but restored the previous behaviour.
	Now gio-test as well as The Gimp work again ...
2001-07-22 21:15:22 +00:00
Hans Breuer
838ed39262 set the corresponding p(ermission)mode of the file when creating,
2001-07-21  Hans Breuer  <hans@breuer.org>

	* glib/giowin32.c (g_io_channel_new_file) : set the
	corresponding p(ermission)mode of the file when creating,
	otherwise a wronly file couldn't be overwritten (at least
	not on Win9x).
2001-07-21 17:26:01 +00:00
Hans Breuer
35923250d4 intial implementation of new API functions. Not sure if it behaves as
2001-07-21  Hans Breuer  <hans@breuer.org>

	* glib/giowin32.c : intial implementation of new API functions.
	Not sure if it behaves as intended ...

	* glib.def : removed, glib/glib.def is the file used since moved
	* glib/glib.def : updated

	* tests/makefile.msc : added iochannel-test
2001-07-21 13:15:58 +00:00
Ron Steinke
e070fdea39 Modified Files: glib/ChangeLog glib/glib.def glib/glib/giochannel.c
Modified Files:
 	glib/ChangeLog glib/glib.def glib/glib/giochannel.c
 	glib/glib/giochannel.h glib/glib/giounix.c
 	glib/glib/giowin32.c
 	glib/docs/reference/glib/glib-sections.txt
 	glib/tests/iochannel-test.c glib/tests/unicode-collate.c
 	glib/tests/unicode-normalize.c
     Added Files:
 	glib/tests/iochannel-test-infile

        * glib/giochannel.c: API changes, fixes to
        error handling, some internal restructuring
        * glib/giochannel.h: API changes, documentation for
        elements in GIOChannel structure
        * glib/giounix.c: Matched API changes, implemented
        backend to set is_readable, is_writeable, is_seekable
        flags, added a test to catch large values of count
        for which the behavior of write() is undefined
        * glib/giowin32.c: Changed to match new prototypes for
        io_close() and io_seek(), removed references to
        G_IO_STATUS_INTR, set is_seekable flag in channel
        creation functions
        * glib.def: Renamed g_channel_error_quark() and
        g_channel_error_from_errno() to g_io_channel_error_quark() and
        g_io_channel_error_from_errno(); added new functions
        g_io_channel_get_buffered() and g_io_channel_set_buffered()
        * docs/reference/glib/glib-sections.txt: Modified iochannel
        section to reflect new functions and API changes
        * tests/iochannel-test.c: Fixed to work with API changes
        * tests/iochannel-test-infile: New file; input file
        for iochannel-test
        * tests/unicode-collate.c tests/unicode-normalize.c:
        Changed G_IO_FILE_MODE_READ to "r" to match API change
2001-07-20 20:14:37 +00:00
Hans Breuer
847d8e9212 make it compile again
2001-07-20  Hans Breuer  <hans@breuer.org>

	* glib/glib/giowin32.c : make it compile again

	* glib/glib.def : updated exports

	* glib/makefile.msc.in :
	* glib/makefile.mingw.in :
	* tests/makefile.msc.in : reflect glib move

	* tests/mainloop-test.c : #include <io.h> for _pipe()

	* tests/gio-test.c : casts for strict compiler settings

	* makefile.msc.in : new master makefile reflecting the glib
	move. The '.in' isn't really needed anymore, because there
	is no version number in it
2001-07-20 17:13:52 +00:00
Andy Lanoix
527a422493 *giowin32.c: g_source_remove()ing an socket iochannel closes
the socket when it should not. Patch by Peter Zelezny
<zed@linux.com>
*giowin32.c: Fix a few typos
2001-07-02 23:57:19 +00:00
Owen Taylor
b37e7bbb53 Rename GSourceFuncs::destroy to GSourceFuncs::finalize. (#56858)
Sat Jun 30 16:03:16 2001  Owen Taylor  <otaylor@redhat.com>

	* glib/giowin32.c glib/giounix.c glib/gmain.[ch]:
	Rename GSourceFuncs::destroy to GSourceFuncs::finalize.
	(#56858)
2001-06-30 20:06:16 +00:00
Owen Taylor
42a23950f5 Jun 29 13:36:39 2001 Owen Taylor <otaylor@redhat.com>
* glib/gstring.[ch] (g_string_set_size): Add function to
        allow setting the length of a string greater than the
        current length (for buffering usage)

        * glib/gstring.[ch]: Expose string->allocated_len, since
        that is useful when using GString simply as a buffer.
        (Renamed from string->alloc)

        * glib/giochannel.[ch] glib/giounix.c glib/giowin32.c:
        Major patch from Hidetoshi Tajima and Ron Steinke
        reworking GIOChannel to have:

         - Buffering
         - Sane and useful error reporting
         - Streaming encoding conversion with iconv
         - Convenience functions to read by lines or
           an entire file.

        Also fix remaining 64 bit cleanliness issues.

        * tests/iochannel-test.c tests/Makefile.am: Test case
        for IO channel streaming conversion. Still needs
        some fixing up.
2001-06-30 15:22:13 +00:00
Andy Lanoix
a7bd3d0d5e *giowin32.c: Debug and partial rewrite of async socket code
on windows, which fixes major MT issues. Some test code kindly
provided by wroberts1@home.com.
2001-06-22 15:44:44 +00:00
Andy Lanoix
4cebfd6349 *giowin32.c: G_IO_WIN32_WINDOWS_MESSAGES channels
not handled correctly in g_io_win32_check()
2001-05-22 01:10:19 +00:00
Tor Lillqvist
c2bd295c57 giochannel.h giowin32.c Stylistic cleanups. Use G_STRLOC in g_warning()
2001-02-02  Tor Lillqvist  <tml@iki.fi>

	* giochannel.h
	* giowin32.c
	* gmain.c: Stylistic cleanups. Use G_STRLOC in g_warning() calls.

	* glib.def: Add missing functions.

2001-01-31  Tor Lillqvist  <tml@iki.fi>

	* glibconfig.h.win32.in: Corresponding change as below to
	GStaticMutex.
2001-02-01 22:28:48 +00:00
Tor Lillqvist
8a0df0a71c Socket support rewritten. It was utterly broken, and untested in fact. We
2001-01-25  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c: Socket support rewritten. It was utterly broken, and
	untested in fact. We still do use a thread for each socket being
	watched, but instead of blocking in recv() (which of course was
	plain stupid for sockets being liste()ed on), we block in
	select(). The read method for sockets calls recv(). It is now
	possible for the application to call accept(), recv() or send() in
	the callback, just like on Unix. Tested with code kindly provided
	by Andrew Lanoix.

	Rename g_io_channel_win32_new_stream_socket() to
	g_io_channel_win32_new_socket() as it isn't restricted to stream
	sockets.

	* gmain.c (g_poll): Related changes in the Win32 version of
	g_poll(). When polling for messages, always do a PeekMessage()
	first. We used to miss messages if several were posted between
	calls to g_poll().

	* giochannel.h: Improve Win32-related comments.

	* gutf8.c: (Win32) Include <stdio.h> for sprintf.

	* tests/gio-test.c: (Win32) Add tests for polling for Windows
	messages.

	* tests/makefile.mingw.in: Remove superfluous compilation command
	line.
2001-01-25 21:16:46 +00:00
Tor Lillqvist
9d27e6b7d5 Rework the changes to needed to pass mainloop-test. Now we don't need to
2001-01-09  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c (create_reader_thread): Rework the changes to
	needed to pass mainloop-test. Now we don't need to call
	TerminateThread() after all, which is a relief, as the docs
	have a BIG RED WARNING SIGN about using that API. Instead,
	when closing a fd channel that has a reader thread running,
	just mark it as non-running and additionally mark the fd as
	ripe for closing. When the reader thread hopefully eventually
	gets something (and EOF or some actual data), it will note
	that it shouldn't be running, break out of the loop, and close
	the fd.

	The socket channel closing code should probably be changed
	similarily, but that will have to wait until I have a test case.

	(g_pipe_readable_msg, g_io_channel_win32_new_pipe,
	g_io_channel_win32_new_pipe_with_wakeups,
	g_io_channel_win32_pipe_request_wakeups,
	g_io_channel_win32_pipe_readable): Remove these, have been
	obsolete for some time.

	* glib.def: Update.
2001-01-09 20:46:49 +00:00
Tor Lillqvist
deb68e1592 Get len using strlen() if arg is negative in the Win32 code, too.
2001-01-06  Tor Lillqvist  <tml@iki.fi>

	* gconvert.c (g_locale_to_utf8, g_locale_from_utf8): Get len using
	strlen() if arg is negative in the Win32 code, too.

	* giowin32.c: Changes necessary to be able to run
	mainloop-test. We can't close the fd that our (internal) reader
	thread is sitting doing a blocking read() from. We must terminate
	the thread first. Keep track of thread handle, and close it when
	thread is dying. Start reader thread with the lower-level
	CreateThread() instead of _beginthreadex() from the C runtime, in
	order to be able to use TerminateThread(). Hopefuly this isn't
	harmful.

	* glib.def: Update.

	* tests/makefile.{mingw,msc}.in (TESTS): Add mainloop-test and
	unicode-encoding.

	* tests/mainloop-test.c: Portability: <unistd.h>, need <fcntl.h>
	on Win32.

	* tests/unicode-encoding.c (process): Add missing "line" argument
	to fail(). On Win32, convert UTF-16LE, as libiconv'c ivonf always
	converts to UTF-16BE if we ask for unspecific UTF-16.
	(main) Handle also '\r'.
2001-01-06 03:09:46 +00:00
Tor Lillqvist
b74e7d2f47 Warn if no callback. Call callback correctly. (g_io_win32_create_watch):
2000-12-14  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c (g_io_win32_dispatch): Warn if no callback. Call
	callback correctly.
	(g_io_win32_create_watch): Fix typo.
	(g_io_win32_fd_create_watch): Ditto.
	(g_io_channel_unix_new): If it is a file descriptor (i.e., a Unix
	fd lookalike provided by the C library), call
	g_io_channel_win32_new_fd(). If it is a socket (from WinSock),
	call g_io_cahnnel_win32_new_stream_socket(). Hopefully sockets and
	fds don't overlap. TODO: Implement also datagram sockets.
	(g_io_channel_win32_poll): Call g_main_context_get_poll_func().

	* gcompletion.h: Include <unistd.h> only on Unix. Is this
	inclusion really needed here? OTOH, do include <stddef.h>, for
	size_t.

	* gmessages.c: (Win32) Don't define a function called "write" that
	might clash with the prototype from <io.h>, use a #define.

	* glib.def: Update.

	* gmain.c (g_source_add_poll): Don't return a value from void
	function.
	(g_main_context_get_poll_func): Compile also for non-Win32, as
	presumably was intended. The result var is a GPollFunc, not a
	GPollFunc*. Return the result!

gobject:

 2000-12-14  Tor Lillqvist  <tml@iki.fi>

	* makefile.mingw.in: Update, include parts from Makefile.am to
	build gmarshal.[ch]. Some day, we won't need these separate
	makefiles for Win32 compilation. I hope.

	* makefile.msc.in: Update. No use trying to build gmarshal.[ch]
	here, it would require Unixish tools. MSVC users building from CVS
	sources are out of luck.

	* gobject.def: Update.
2000-12-14 21:02:20 +00:00
Owen Taylor
e2fd4e2bd0 Major change in API for creating sources to handle multiple main loops
Tue Dec  5 12:23:04 2000  Owen Taylor  <otaylor@redhat.com>

        * gmain.[hc]: Major change in API for creating sources
	to handle multiple main loops (GMainContext *).

	GSources are now exposed as GSource * and implemented
	with structure derivation.

	* giochannel.[ch]: Changed vtable for GIOChannel to correspond
	to the new mainloop API, add g_io_channel_create_watch().

	* gtypes.h: Move GTimeVal here.

	* gthread.h: Remove gmain.h include to avoid circularity.

        * giounix.c: Update for new GMain API.

	* giowin32.c: Update for new GMain API. (No check for
	proper compilation or working.)

	* timeloop.c timeloop-basic.c: A benchmarking program for
	the main loop comparing the main loop against a
	hand-written (timeloop-basic.c) variant.

	* tests/mainloop-test.c: New torture test of mainloop.

	* docs/Changes-2.0.txt: Started. Added text about
	changes to GMain.

	* gmain.c (g_main_add_poll_unlocked): Initial fd->revents
	to zero. (#8482, Benjamin Kahn)
2000-12-05 20:45:33 +00:00
Tor Lillqvist
fb4de1c50d Some more debugging output. (g_io_channel_win32_poll): Remove unused vars.
2000-10-16  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c (reader_thread): Some more debugging output.
	(g_io_channel_win32_poll): Remove unused vars.

	* gfileutils.c: Changes for Win32, with no unistd.h and no
	S_ISLNK().

	* gspawn-win32.c: Implementation of the g_spwan_* functions for
	Win32. Due to the general non-Unixness of Win32, much of the
	functionality that is relatively clean to implement on Unix, is
	hard to do on Win32. We must use a separate helper program to
	change directory, close extra file descriptors, redirect the std
	ones, as needed, and only then start the child process. No child
	process pid can be returned, unfortunately. Or if we used
	CreateProcess directly, it probably could. (Now we use the spawnv*
	functions from msvcrt.)

	* glib.def: Add new entry points.

	* glib.def
	* giowin32.c: Remove g_io_channel_win32_wait_for_condition(),
	g_io_channel_win32_poll() subsumes it.

	* gbacktrace.h: G_BREAKPOINT for MSVC (on the ix86).

	* gwin32.c (g_win32_getlocale): Use "sp" for
	LANG_CROATIAN+SUBLANG_SERBIAN_LATIN.

	* makefile.{mingw,msc}.in (glib_OBJECTS): Add new files.
	Add gspawn-win32-helper.exe rule.

	* tests/makefile.{mingw,msc}.in (TESTS): Add shell-test and
	spawn-test.

	* tests/spawn-test.c: (run_tests): On Win32, don't try to run
	/bin/sh, but ipconfig (no special significance in choosing that,
	just a program that outputs something to stdout).
2000-10-16 18:54:29 +00:00
Tor Lillqvist
8e847255e8 Revamp to be like makefile.mingw.in, make the MSVC build actually work
2000-10-06  Tor Lillqvist  <tml@iki.fi>

	* makefile.msc.in: Revamp to be like makefile.mingw.in, make
	the MSVC build actually work again.

	* gmodule/makefile.msc.in
	* gobject/makefile.msc.in
	* gthread/makefile.msc.in: New files, like their mingw counterparts.

	* gmodule/Makefile.am
	* gobject/Makefile.am
	* gthread/Makefile.am: Make and distribute them.

	* */makefile.mingw.in: Allow override of GLib version number from
	the build/win32/module.defs file.

	* glib.def: Add new entry point.

	Fixes from Hans Breuer:

	* glib.h (struct DIR): Keep the last readdir result cached inside
	the DIR struct, to enable several DIRs being open simultaneously.

	* gwin32.c (g_win32_readdir): Use the above instead of static.

	* giowin32.c (g_io_channel_win32_make_pollfd): Insert cast to keep
	MSVC happy.
2000-10-06 21:32:59 +00:00
Tor Lillqvist
3dcf39eb77 glib.h glib.def New function, to make a GPollFD from a GIOChannel. Creates
2000-08-31  Tor Lillqvist  <tml@iki.fi>

	* glib.h
	* glib.def
	* giowin32.c (g_io_channel_win32_make_pollfd): New function, to
	make a GPollFD from a GIOChannel. Creates the events and starts
	the reader thread if necessary.
2000-08-31 22:47:24 +00:00
Tor Lillqvist
ba8a71589d glib.h No use for separate condition parameter.
2000-08-31  Tor Lillqvist  <tml@iki.fi>

	* glib.h
	* giowin32.c (g_io_channel_win32_poll): No use for separate
	condition parameter.
2000-08-31 21:58:59 +00:00
Tor Lillqvist
55cd16c993 Hmm, the parameter to g_io_channel_win32_poll() should be a GPollFD array,
2000-08-27  Tor Lillqvist  <tml@iki.fi>

Hmm, the parameter to g_io_channel_win32_poll() should be
a GPollFD array, not GIOChannel. That way the caller can know which
channels cause the callback.
2000-08-27 15:33:15 +00:00
Tor Lillqvist
3d0a1b3b22 New function, otherwise like g_io_channel_win32_wait_for_condition(), but
2000-08-27  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c (g_io_channel_win32_poll): New function, otherwise
	like g_io_channel_win32_wait_for_condition(), but accept several
	GIOChannels.
	(g_io_channel_win32_wait_for_condition): Call
	g_io_channel_win32_poll().

	* glib.h: Declare g_io_channel_win32_poll().

	* gwin32.c (g_win32_error_message): Don't believe return value
	from FormatMessage.
2000-08-27 10:53:36 +00:00
Tor Lillqvist
f17ed7ee26 Some indentation and spacing fixes. Add some more logging.
2000-08-12  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c: Some indentation and spacing fixes. Add some more
	logging.
	(g_io_win32_add_watch): New function, with common code from
	g_io_win32_fd_add_watch and g_io_win32_sock_add_watch. Don't start
	more than one reader thread for a GIOChannel. We should obviously
	have just one reader thread reading a file descriptor or socket.
2000-08-11 21:36:00 +00:00
Tor Lillqvist
c58440ecfc Drop a few unused variables. 2000-07-31 15:12:21 +00:00
Tor Lillqvist
beed3997ab The code didn't compile (must have been sleepy when committing). "return"
2000-07-31  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c (buffer_read): The code didn't compile (must
	have been sleepy when committing). "return" instead of "break"

	(g_io_win32_fd_add_watch): Cannot check if the file descriptor is
	readable by calling ReadFile to read zero bytes. ReadFile blocks
	on NT even if trying to read nothing at all. So, don't check if
	file descriptor is readable; assume this function isn't called
	otherwise.
2000-07-31 15:11:02 +00:00
Tor Lillqvist
1860151db0 Compile in the debugging code all the time, but only output debug messages
2000-07-30  Tor Lillqvist  <tml@iki.fi>

	* giowin32.c: Compile in the debugging code all the time, but only
	output debug messages if told so. Add (unadvertised) function to
	turn on/off debug messages for a channel.

	(buffer_read): Don't loop. It is expected behaviour to return a
	short read occasionally, for instance when reading from
	pipes. It's the calling code that should loop if it *knows* how
	much the writer has written.

	* tests/gio-test.c: Correct the program's name in the output.
	(recv_message): Loop calling g_io_channel_read() (in a new
	function read_all()) until we have all the bytes we want (that we
	know the writer has written/will write).
2000-07-30 00:27:39 +00:00
Tor Lillqvist
b965bb5db1 Finally, a new and improved IO Channel and condition watch implementation
2000-07-30  Tor Lillqvist  <tml@iki.fi>

	Finally, a new and improved IO Channel and condition watch
	implementation for Win32. Based on code provided by Craig Setera.

	When watching file descriptors, for which there is no select()
	like functionality on Win32 that would work on all Win32 platforms
	for all types of file descriptors (including anonymous pipes), we
	start a new thread that blocks while trying to read from the file
	descriptor. When the read returns, a Win32 Event is signalled that
	the polling routine eventually notices. Meanwhile, the data being
	read is stored in a circular buffer, from where the IO channel's
	read() method picks it up.

	If the buffer fills up the reading thread has to wait for space
	becoming available. For this another Win32 Event is used. The IO
	Channel's read() method signals this when it has read some data
	out of the buffer.

	The separate reader thread(s), and the circular buffer(s) with
	associated events mean lots of possibilities for fun parallellism
	errors. But it seems to work OK, i.e. GIMP runs.

	* gmain.c: Small changes to the Win32 polling function.
	(g_main_win32_get_poll_func): New function. Perhaps it would be a
	good idea to provide this on all platforms.

	* giowin32.c: The bulk of the new implementation.
	(g_io_channel_win32_wait_for_condition): New function. To be used
	where on Unix one does a select() on the channel's fd, like
	libgimp's gimp_extension_process(). Could be provided on all
	platforms.

	* glib.h: Update documentation for IO Channels on Win32. Remove
	the declarations for the as of now obsolete old functions related
	to IO Channels for pipes with "wakeup" messages.

	* glib.def: Some new functions.

	* tests/gio-test.c: New file, to test GIOChannel and main loop.

	* tests/Makefile.am
	* tests/makefile.mingw.in: Add it.
2000-07-29 20:59:07 +00:00
Tim Janik
c9bd7542e1 applied patch from Andreas Persenius <ndap@swipnet.se> that updates the
Wed Jul 26 12:59:31 2000  Tim Janik  <timj@gtk.org>

        * *.[hc]: applied patch from Andreas Persenius <ndap@swipnet.se> that
        updates the license headers to the GNU Lesser General Public License,
        as well as updating the copyright year to 2000.
2000-07-26 11:02:02 +00:00
Tor Lillqvist
700b6e5ff2 If we are watching the same fd several times (for different conditions,
2000-06-06  Tor Lillqvist  <tml@iki.fi>

* giowin32.c (g_io_channel_win32_pipe_readable): If we are
watching the same fd several times (for different conditions, with
different callbacks), check them all. Only call the callback for
G_IO_IN from here. (This bug popped up when a watch for
G_IO_ERR|G_IO_HUP was added to gimplib.)
2000-06-06 06:56:03 +00:00
CST 1999 Shawn T. Amundson
b9ef2b41db inserted additional note to look for ChangeLog and AUTHORS file for a log
Wed Feb 24 00:08:42 CST 1999 Shawn T. Amundson <amundson@gtk.org>

        * *.[ch]: inserted additional note to look for ChangeLog and
	  AUTHORS file for a log of modifications.
1999-02-24 06:14:27 +00:00
Tor Lillqvist
f477518c3a Merge in current Win32 version. Almost no Unix code touched.
* README.win32: More text.

	* config.h.win32 glibconfig.h.win32: Update to match the
	corresponding generated files on Unix.

	* makefile.msc: Update with new source files, and gthread
 	library. Use the compiler flag -MD instead of using -D_DLL and
	"/nodefaultlib:libc msvcrt.lib" in the link phase.

	* glib.def: Include new functions, drop removed ones.

	* glib.h: Add comments about main loop and polling on Win32. (In
	general, it's only for the GIMP's use.) Add Win32 IO Channel
	functions. Remove the obsoleted old IO Channel stuff (which was
	in #if 0 already).

	* giowin32.c: New file.

	* gmain.c: Include config.h, conditionalize <sys/time.h>
 	inclusion.  Add g_poll implementation for Win32 (only for the
 	GIMP's needs for now, it's hard or even impossible to be as clean
 	and generic as on Unix). Implement g_get_current_time on Win32. If
 	threads aren't supported, don't try to wake up main thread's
 	loop. On Win32, use a semaphore and not a pipe to wake up the main
 	loop.

	* gmessages.c: On Win32, allocate a console window if the standard
	output handle is invalid before writing to stdout, and reopen stdout
	to that console window.

	* giochannel.c: Conditionalize unistd.h inclusion. Some indentation
	cleanup.

	* gstrfuncs.c: Include <signal.h>.

	* gutils.c: On Win32, also check the HOMEDRIVE and HOMEPATH
	environment variables.

	* gmodule-dl.c gmodule-dld.c: In
 	_g_module_build_path, don't add the "lib" prefix and
 	".so" or ".sl" suffix if already there.

	* gmodule-win32.c: Likewise for the ".dll" suffix.

	* gthread-posix.c: Conditionalize <sys/time.h> inclusion.
1999-01-16 23:46:42 +00:00