On 19. 5. 26 19:10, Timofei Zhakov wrote:
On Tue, May 19, 2026 at 5:02 PM Branko Čibej <[email protected]> wrote:
On 19. 5. 26 15:19, Timofei Zhakov wrote:
On Mon, May 18, 2026 at 11:20 PM Branko Čibej <[email protected]>
wrote:
On 18. 5. 26 22:27, Ivan Zhakov wrote:
On Mon, 18 May 2026 at 21:24, Timofei Zhakov
<[email protected]> wrote:
On Mon, May 18, 2026 at 5:22 PM Branko Čibej
<[email protected]> wrote:
On 18. 5. 26 17:04, Ivan Zhakov wrote:
[..]
Yes, especially because the Unix and Win32 versions
share a lot of things in common but sometimes need to do
it in a slightly different way.
Also what do you guys think about the fact that Win32
apr.h includes windows.h? It seems odd to me. APR
promises to eliminate platform dependence by wrapping
everything into POSIX-ish style API
Cross-platform API. I'm not sure what you mean by POSIX-ish,
but APR isn't that.
I mean that the API is similar. For example, apr_file_open() kind
of works almost like fopen(). Not exactly but in my head I have
this connection. Okay their signatures are very different and
even naming, but I think there is some pattern of doing the same
thing but in a slightly more modern way with a bit more control.
without extra unneeded junk and then all high level code
essentially has GetLastError in the scope. I think if
one wants to explicitly use win32 API, they should
include those headers themselves.
It's a good question. I agree that apr.h should not depend
on system headers like Windows.h. But one reason that
Windows error codes are used in apr_errno.h.
apr.h is a generated, /system-specific/ header. Of course it
can and should depend on system headers if it needs them. It
also includes sys/types.h and sys/socket.h and sys/wait.h and
os2.h and so on, depending on the target. That makes perfect
sense.
The question I have is whether we really want it or not.
In reality it's always included in every source file. Take
svn_wc.h for example:
[[[
#include <apr.h>
#include <apr_pools.h>
#include <apr_tables.h>
#include <apr_hash.h>
#include <apr_time.h>
#include <apr_file_io.h>
#include "svn_types.h"
#include "svn_string.h"
#include "svn_checksum.h"
#include "svn_io.h"
#include "svn_delta.h" /* for svn_stream_t */
#include "svn_opt.h"
#include "svn_ra.h" /* for svn_ra_reporter_t type */
]]]
You'll have to be more specific: what exactly is wrong with that?
apr.h uses symbols defined in windows.h, what else is it supposed
to do? I really don't understand your objections.
It shouldn't use any symbols from it. That's what I'm saying.
However, there are a few places that currently potentially do use it:
[[[
#if APR_HAS_UNICODE_FS
/* An arbitrary size that is digestable. True max is a bit less than
32000 */
#define APR_PATH_MAX 8192
#else /* !APR_HAS_UNICODE_FS */
#define APR_PATH_MAX MAX_PATH
#endif
]]]
and
[[[
/* Appears in later flavors, not the originals. */
#ifndef in_addr6
#define in6_addr in_addr6
#endif
#ifndef WS2TCPIP_INLINE
#define IN6_IS_ADDR_V4MAPPED(a) \
( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \
&& (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) ==
ntohl(0x0000ffff)))
#endif
]]]
(MAX_PATH, ntohl, in_addr6 are the ones affected)
I really think those should be somewhere in private headers or in the
sources. MAX_PATH is fine. But ipv6 magic - I don't like it.
I really don't know what to say (that isn't sarcastic or condescending).
Please take some time to research the consequences of what you're
suggesting and while you're doing that, think wider than just Windows.
I'll give you a hint: the key words are "APR" and "API".
I guess I didn't quite reach the !(sarcastic || condescending) goal. My
apologies.
Then we basically just have a header that nobody uses. It also brings
a lot of stuff into the autocomplete.
That's just about the worst argument for a wrong technical proposal that
I've ever seen. Get a better editor.
-- Brane