No description
Find a file
Ruslan Garipov 2d4c7a720d
Fix initialization of the handler_fd_ops
This lists all fields of the `struct fd_ops' when object of that type --
handler_fd_ops in server/signal.c -- is being initialized.

It looks like field list in initialization of the handler_fd_ops in
server/signal.c was out-of-sync for a long time.  Take a look, for
example, on patches ad1e0609a0 (server: Get rid of no loner used
cancel_async from fd_ops., 2016-12-01) (which removed "reference" to the
cancel_async field correctly, but did not add "references" to the read
and write fields, for example), or 837b39b202 (server: Add read and
write fd member functions., 2015-05-05) (which updated `struct fd_ops'
but did not change initialization of the handler_fd_ops at all).

Because the main purpose of initialization of the handler_fd_ops made in
server/signal.c is to assign address of the handler_poll_event()
function to the poll_event field, while making all other fields NULLed,
lacking some fields in that initialization is not an error according to
C standard:

> 6.7.11 Initialization
>
> 11 ... If an object that has static or thread storage duration is not
> initialized explicitly, or any object is initialized with an empty
> initializer, then it is subject to default initialization, which
> initializes an object as follows:
>
>   - if it has pointer type, it is initialized to a null pointer;
> ...
> 22 If there are fewer initializers in a brace-enclosed list than there
> are elements or members of an aggregate, or fewer characters in a
> string literal used to initialize an array of known size than there
> are elements in the array, the remainder of the aggregate is subject
> to default initialization.

But to maintain code consistency I believe initialization of the
handler_fd_ops object should enumerate all fields of the
`struct fd_ops' type.

No functional changes intended.

Signed-off-by: Ruslan Garipov <ruslanngaripov@gmail.com>
2024-08-09 06:15:52 +05:00
dlls win32u: Always enumerate the primary source first. 2024-08-08 21:54:22 +02:00
documentation readme: Convert to Markdown. 2024-01-03 13:56:21 +01:00
fonts makefiles: Always use the global SOURCES variable for .sfd files. 2023-10-12 10:59:29 +02:00
include include: Add DECLSPEC_CHPE_PATCHABLE definition. 2024-08-07 13:06:26 +02:00
libs faudio: Import upstream release 24.06. 2024-06-02 22:04:47 +02:00
loader ntdll: Use environ/_NSGetEnviron() directly rather than caching it in main_envp. 2024-07-31 21:07:14 +02:00
nls nls: Update locale data to CLDR version 45. 2024-05-04 09:56:23 +02:00
po cmd: Get rid of CTTY command. 2024-07-10 22:02:24 +02:00
programs cmd: Fix test failures for SET /P command. 2024-07-29 21:10:08 +02:00
server Fix initialization of the handler_fd_ops 2024-08-09 06:15:52 +05:00
tools makedep: Don't add empty cflags to a compile command. 2024-08-05 19:50:29 +02:00
.editorconfig .editorconfig: Remove the trim_trailing_whitespace setting. 2019-03-26 13:45:55 +01:00
.gitlab-ci.yml gitlab: Run tests on Debian after the daily commit round. 2022-09-08 21:48:33 +02:00
.mailmap maintainers: Change the full form of my name. 2024-05-08 22:39:44 +02:00
aclocal.m4 configure: Disable building programs for ARM64EC. 2023-12-08 15:07:17 +01:00
ANNOUNCE.md Release 9.14. 2024-07-28 22:02:13 +02:00
AUTHORS Release 9.14. 2024-07-28 22:02:13 +02:00
configure configure: Test PE compilers after setting their target argument. 2024-08-06 23:26:53 +02:00
configure.ac configure: Test PE compilers after setting their target argument. 2024-08-06 23:26:53 +02:00
COPYING.LIB
LICENSE Update copyright info for 2024. 2024-01-01 20:15:23 +01:00
LICENSE.OLD
MAINTAINERS maintainers: Remove shdocvw from WebBrowser control section. 2024-08-02 22:07:40 +02:00
README.md ntdll: Implement futex_wait() and futex_wake_one() on macOS. 2024-07-10 22:02:24 +02:00
VERSION Release 9.14. 2024-07-28 22:02:13 +02:00

INTRODUCTION

Wine is a program which allows running Microsoft Windows programs (including DOS, Windows 3.x, Win32, and Win64 executables) on Unix. It consists of a program loader which loads and executes a Microsoft Windows binary, and a library (called Winelib) that implements Windows API calls using their Unix, X11 or Mac equivalents. The library may also be used for porting Windows code into native Unix executables.

Wine is free software, released under the GNU LGPL; see the file LICENSE for the details.

QUICK START

From the top-level directory of the Wine source (which contains this file), run:

./configure
make

Then either install Wine:

make install

Or run Wine directly from the build directory:

./wine notepad

Run programs as wine program. For more information and problem resolution, read the rest of this file, the Wine man page, and especially the wealth of information found at https://www.winehq.org.

REQUIREMENTS

To compile and run Wine, you must have one of the following:

  • Linux version 2.6.22 or later
  • FreeBSD 12.4 or later
  • Solaris x86 9 or later
  • NetBSD-current
  • Mac OS X 10.12 or later

As Wine requires kernel-level thread support to run, only the operating systems mentioned above are supported. Other operating systems which support kernel threads may be supported in the future.

FreeBSD info: See https://wiki.freebsd.org/Wine for more information.

Solaris info: You will most likely need to build Wine with the GNU toolchain (gcc, gas, etc.). Warning : installing gas does not ensure that it will be used by gcc. Recompiling gcc after installing gas or symlinking cc, as and ld to the gnu tools is said to be necessary.

NetBSD info: Make sure you have the USER_LDT, SYSVSHM, SYSVSEM, and SYSVMSG options turned on in your kernel.

Mac OS X info: You need Xcode/Xcode Command Line Tools or Apple cctools. The minimum requirements for compiling Wine are clang 3.8 with the MacOSX10.10.sdk and mingw-w64 v8. The MacOSX10.14.sdk and later can only build wine64.

Supported file systems: Wine should run on most file systems. A few compatibility problems have also been reported using files accessed through Samba. Also, NTFS does not provide all the file system features needed by some applications. Using a native Unix file system is recommended.

Basic requirements: You need to have the X11 development include files installed (called xorg-dev in Debian and libX11-devel in Red Hat). Of course you also need make (most likely GNU make). You also need flex version 2.5.33 or later and bison.

Optional support libraries: Configure will display notices when optional libraries are not found on your system. See https://wiki.winehq.org/Recommended_Packages for hints about the packages you should install. On 64-bit platforms, you have to make sure to install the 32-bit versions of these libraries.

COMPILATION

To build Wine, do:

./configure
make

This will build the program "wine" and numerous support libraries/binaries. The program "wine" will load and run Windows executables. The library "libwine" ("Winelib") can be used to compile and link Windows source code under Unix.

To see compile configuration options, do ./configure --help.

For more information, see https://wiki.winehq.org/Building_Wine

SETUP

Once Wine has been built correctly, you can do make install; this will install the wine executable and libraries, the Wine man page, and other needed files.

Don't forget to uninstall any conflicting previous Wine installation first. Try either dpkg -r wine or rpm -e wine or make uninstall before installing.

Once installed, you can run the winecfg configuration tool. See the Support area at https://www.winehq.org/ for configuration hints.

RUNNING PROGRAMS

When invoking Wine, you may specify the entire path to the executable, or a filename only.

For example, to run Notepad:

wine notepad            (using the search Path as specified in
wine notepad.exe         the registry to locate the file)

wine c:\\windows\\notepad.exe      (using DOS filename syntax)

wine ~/.wine/drive_c/windows/notepad.exe  (using Unix filename syntax)

wine notepad.exe readme.txt          (calling program with parameters)

Wine is not perfect, so some programs may crash. If that happens you will get a crash log that you should attach to your report when filing a bug.

GETTING MORE INFORMATION

  • WWW: A great deal of information about Wine is available from WineHQ at https://www.winehq.org/ : various Wine Guides, application database, bug tracking. This is probably the best starting point.

  • FAQ: The Wine FAQ is located at https://www.winehq.org/FAQ

  • Wiki: The Wine Wiki is located at https://wiki.winehq.org

  • Gitlab: Wine development is hosted at https://gitlab.winehq.org

  • Mailing lists: There are several mailing lists for Wine users and developers; see https://www.winehq.org/forums for more information.

  • Bugs: Report bugs to Wine Bugzilla at https://bugs.winehq.org Please search the bugzilla database to check whether your problem is already known or fixed before posting a bug report.

  • IRC: Online help is available at channel #WineHQ on irc.libera.chat.