emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] master 085c7f6 2/2: Test format-time-string with zone


From: Bruno Haible
Subject: Re: [Emacs-diffs] master 085c7f6 2/2: Test format-time-string with zone arg
Date: Tue, 02 May 2017 23:55:50 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-75-generic; KDE/5.18.0; x86_64; ; )

Paul Eggert wrote:
> I'd like Bruno's opinion on the macro clash

The common idiom is "#define WINDOWS_LEAN_AND_MEAN". This can be seen by 
comparing
the number of hits of two web searches:
  https://www.google.de/search?q=%22define+windows_lean_and_mean%22
  https://www.google.de/search?q=%22define+windows_lean_and_mean+1%22

> and on the attached patch for the 
> msvc-nothrow.h issue, a patch that I installed into Gnulib and into Emacs 
> master 

The patch is fine with me: it has no drawbacks for other packages.

However, it would be good to know what qualms you have with the msvc-nothrow
module. Should Emacs be built with mingw, not MSVC? Is an EBADF situation never
going to occur in Emacs anyway? Are the portability efforts for mingw and MSVC
in Gnulib useless for Emacs, because on native Windows Emacs uses its own w32.c
instead anyway? Does Emacs have other requirements I don't know about?

Eli Zaretskii wrote:
> That "other way" is the implementation of fdutimens in Emacs's w32.c.
> Perhaps Bruno could look at that implementation and comment on its
> merits and demerits vs the Gnulib implementation

1) The Emacs w32.c ports to Windows98 as well, whereas Gnulib currently assumes
Windows XP at least (and will soon move to Windows 7, I guess - namely when
no one has a test machine with Windows XP any more). Merit or demerit? Opinion?

2) The Emacs w32.c has an option to use the "W" suffixed Windows APIs by 
default.
Clearly a merit, because it allows to use file names that are not contained in
the "ANSI codepage". Nowadays users can use (type, display, manipulate) such
file names in the cmd.exe windows; any program which is not on par with this
ability is deficient.
Gnulib still uses the "A" suffixed Windows APIs; clearly a demerit.

3) The Emacs w32.c fdutimens function handles only 1 second resolution; the
Gnulib fdutimens supports sub-second resolution.

4) Different errno mapping:

Filename                            GetLastError()           errno in Emacs   
errno in Gnulib

'\\server'                          ERROR_BAD_PATHNAME       EINVAL           
ENOENT
'\\server\nonexistentshare\'        ERROR_BAD_NET_NAME       EINVAL           
ENOENT
 ?                                  ERROR_INVALID_DRIVE      ENOENT           
EINVAL
 ?                                  ERROR_BAD_NETPATH        ENOENT           
EINVAL
 ?                                  ERROR_DEV_NOT_EXIST      ENOENT           
EINVAL
'C:\System Volume Information\foo'  ERROR_ACCESS_DENIED      EACCES           
EACCESS or EPERM (*)
'C:\pagefile.sys'                   ERROR_SHARING_VIOLATION  EACCES           
EACCESS or EPERM (*)

(*) According to POSIX: 
http://pubs.opengroup.org/onlinepubs/9699919799/functions/utime.html

Can you tell me how to provoke a ERROR_INVALID_DRIVE, ERROR_BAD_NETPATH, or
ERROR_DEV_NOT_EXIST error code?

5) Anything else?

Bruno




reply via email to

[Prev in Thread] Current Thread [Next in Thread]