1 diff -urN apr-0.9.4.org/build/make_exports.awk apr/build/make_exports.awk
2 --- apr-0.9.4.org/build/make_exports.awk 2003-11-14 15:29:26.000000000 +0100
3 +++ apr/build/make_exports.awk 2003-09-26 09:25:59.000000000 +0200
8 -/^[ \t]*AP[RU]?_(CORE_)?DECLARE[^(]*[(][^)]*[)]([^ ]* )*[^(]+[(]/ {
9 - sub("[ \t]*AP[RU]?_(CORE_)?DECLARE[^(]*[(][^)]*[)][ \t]*", "")
10 +/^[ \t]*AP[RUI]?_(CORE_)?DECLARE[^(]*[(][^)]*[)]([^ ]* )*[^(]+[(]/ {
11 + sub("[ \t]*AP[RUI]?_(CORE_)?DECLARE[^(]*[(][^)]*[)][ \t]*", "")
13 sub("([^ ]* (^([ \t]*[(])))+", "")
15 diff -urN apr-0.9.4.org/build/make_nw_export.awk apr/build/make_nw_export.awk
16 --- apr-0.9.4.org/build/make_nw_export.awk 2003-11-14 15:29:26.000000000 +0100
17 +++ apr/build/make_nw_export.awk 2003-09-26 09:25:59.000000000 +0200
22 -/^[ \t]*AP[RU]?_DECLARE[^(]*[(][^)]*[)]([^ ]* )*[^(]+[(]/ {
23 - sub("[ \t]*AP[RU]?_DECLARE[^(]*[(][^)]*[)][ \t]*", "")
24 +/^[ \t]*AP[RUI]?_DECLARE[^(]*[(][^)]*[)]([^ ]* )*[^(]+[(]/ {
25 + sub("[ \t]*AP[RUI]?_DECLARE[^(]*[(][^)]*[)][ \t]*", "")
27 sub("([^ ]* (^([ \t]*[(])))+", "")
33 -/^[ \t]*AP[RU]?_DECLARE_DATA .*;$/ {
34 +/^[ \t]*AP[RUI]?_DECLARE_DATA .*;$/ {
36 gsub( /[*;]/, "", varname);
37 gsub( /\[.*\]/, "", varname);
38 diff -urN apr-0.9.4.org/build/make_var_export.awk apr/build/make_var_export.awk
39 --- apr-0.9.4.org/build/make_var_export.awk 2003-11-14 15:29:26.000000000 +0100
40 +++ apr/build/make_var_export.awk 2003-09-26 09:25:59.000000000 +0200
42 # Based on apr's make_export.awk, which is
43 # based on Ryan Bloom's make_export.pl
45 -/^#[ \t]*if(def)? (AP[RU]?_|!?defined).*/ {
46 +/^#[ \t]*if(def)? (AP[RUI]?_|!?defined).*/ {
47 if (old_filename != FILENAME) {
48 if (old_filename != "") printf("%s", line)
54 -/^[ \t]*(extern[ \t]+)?AP[RU]?_DECLARE_DATA .*;$/ {
55 +/^[ \t]*(extern[ \t]+)?AP[RUI]?_DECLARE_DATA .*;$/ {
57 gsub( /[*;]/, "", varname);
58 gsub( /\[.*\]/, "", varname);
59 diff -urN apr-0.9.4.org/CHANGES apr/CHANGES
60 --- apr-0.9.4.org/CHANGES 2003-11-14 15:29:26.000000000 +0100
61 +++ apr/CHANGES 2003-10-24 18:35:15.000000000 +0200
63 +Changes with APR 0.9.5
65 + *) Add apr_os_pipe_put_ex(), which allows the caller to tell APR
66 + to establish a cleanup on the pipe. [Jeff Trawick, Brad Nicholes]
68 + *) Fix make_exports.awk to work with apr-iconv. [Justin Erenkrantz]
70 Changes with APR 0.9.4
72 *) win32: fix apr_file_dup() and apr_file_dup2() to dup the
73 diff -urN apr-0.9.4.org/configure.in apr/configure.in
74 --- apr-0.9.4.org/configure.in 2003-11-14 15:29:26.000000000 +0100
75 +++ apr/configure.in 2003-10-17 00:13:01.000000000 +0200
97 AC_SUBST(sys_sendfileh)
100 +AC_SUBST(sys_sockioh)
104 diff -urN apr-0.9.4.org/file_io/netware/pipe.c apr/file_io/netware/pipe.c
105 --- apr-0.9.4.org/file_io/netware/pipe.c 2003-11-14 15:29:26.000000000 +0100
106 +++ apr/file_io/netware/pipe.c 2003-10-24 18:35:15.000000000 +0200
111 -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
112 - apr_os_file_t *thefile,
114 +APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
115 + apr_os_file_t *thefile,
116 + int register_cleanup,
119 int *dafile = thefile;
121 @@ -150,14 +151,28 @@
122 (*file)->timeout = -1;
123 (*file)->ungetchar = -1; /* no char avail */
124 (*file)->filedes = *dafile;
125 - (*file)->flags = APR_FILE_NOCLEANUP;
126 + if (!register_cleanup) {
127 + (*file)->flags = APR_FILE_NOCLEANUP;
129 (*file)->buffered = 0;
131 (*file)->thlock = NULL;
133 + if (register_cleanup) {
134 + apr_pool_cleanup_register((*file)->pool, (void *)(*file),
135 + apr_unix_file_cleanup,
136 + apr_pool_cleanup_null);
141 +APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
142 + apr_os_file_t *thefile,
145 + return apr_os_pipe_put_ex(file, thefile, 0, pool);
148 APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
151 diff -urN apr-0.9.4.org/file_io/os2/pipe.c apr/file_io/os2/pipe.c
152 --- apr-0.9.4.org/file_io/os2/pipe.c 2003-11-14 15:29:26.000000000 +0100
153 +++ apr/file_io/os2/pipe.c 2003-10-24 18:35:15.000000000 +0200
158 -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
159 - apr_os_file_t *thefile,
161 +APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
162 + apr_os_file_t *thefile,
163 + int register_cleanup,
166 (*file) = apr_pcalloc(pool, sizeof(apr_file_t));
167 (*file)->pool = pool;
169 (*file)->timeout = -1;
170 (*file)->filedes = *thefile;
172 + if (register_cleanup) {
173 + apr_pool_cleanup_register(pool, *file, apr_file_cleanup,
174 + apr_pool_cleanup_null);
182 +APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
183 + apr_os_file_t *thefile,
186 + return apr_os_pipe_put_ex(file, thefile, 0, pool);
188 diff -urN apr-0.9.4.org/file_io/unix/pipe.c apr/file_io/unix/pipe.c
189 --- apr-0.9.4.org/file_io/unix/pipe.c 2003-11-14 15:29:26.000000000 +0100
190 +++ apr/file_io/unix/pipe.c 2003-10-24 18:35:16.000000000 +0200
195 -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
196 - apr_os_file_t *thefile,
198 +APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
199 + apr_os_file_t *thefile,
200 + int register_cleanup,
203 int *dafile = thefile;
205 @@ -185,14 +186,28 @@
206 (*file)->timeout = -1;
207 (*file)->ungetchar = -1; /* no char avail */
208 (*file)->filedes = *dafile;
209 - (*file)->flags = APR_FILE_NOCLEANUP;
210 + if (!register_cleanup) {
211 + (*file)->flags = APR_FILE_NOCLEANUP;
213 (*file)->buffered = 0;
215 (*file)->thlock = NULL;
217 + if (register_cleanup) {
218 + apr_pool_cleanup_register((*file)->pool, (void *)(*file),
219 + apr_unix_file_cleanup,
220 + apr_pool_cleanup_null);
225 +APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file,
226 + apr_os_file_t *thefile,
229 + return apr_os_pipe_put_ex(file, thefile, 0, pool);
232 APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
235 diff -urN apr-0.9.4.org/include/apr.h.in apr/include/apr.h.in
236 --- apr-0.9.4.org/include/apr.h.in 2003-11-14 15:29:26.000000000 +0100
237 +++ apr/include/apr.h.in 2003-10-17 00:13:02.000000000 +0200
239 #define APR_HAVE_STDLIB_H @stdlibh@
240 #define APR_HAVE_STRING_H @stringh@
241 #define APR_HAVE_STRINGS_H @stringsh@
242 +#define APR_HAVE_SYS_IOCTL_H @sys_ioctlh@
243 #define APR_HAVE_SYS_SENDFILE_H @sys_sendfileh@
244 #define APR_HAVE_SYS_SIGNAL_H @sys_signalh@
245 #define APR_HAVE_SYS_SOCKET_H @sys_socketh@
246 +#define APR_HAVE_SYS_SOCKIO_H @sys_sockioh@
247 #define APR_HAVE_SYS_SYSLIMITS_H @sys_syslimitsh@
248 #define APR_HAVE_SYS_TIME_H @sys_timeh@
249 #define APR_HAVE_SYS_TYPES_H @sys_typesh@
250 diff -urN apr-0.9.4.org/include/apr.hnw apr/include/apr.hnw
251 --- apr-0.9.4.org/include/apr.hnw 2003-11-14 15:29:26.000000000 +0100
252 +++ apr/include/apr.hnw 2003-10-17 00:13:02.000000000 +0200
254 #define APR_HAVE_SYS_SENDFILE_H 0
255 #define APR_HAVE_SYS_SIGNAL_H 0
256 #define APR_HAVE_SYS_SOCKET_H 0
257 +#define APR_HAVE_SYS_SOCKIO_H 0
258 #define APR_HAVE_SYS_SYSLIMITS_H 0
259 #define APR_HAVE_SYS_TIME_H 0
260 #define APR_HAVE_SYS_TYPES_H 1
261 diff -urN apr-0.9.4.org/include/apr.hw apr/include/apr.hw
262 --- apr-0.9.4.org/include/apr.hw 2003-11-14 15:29:26.000000000 +0100
263 +++ apr/include/apr.hw 2003-10-17 00:13:02.000000000 +0200
265 #define APR_HAVE_SYS_SENDFILE_H 0
266 #define APR_HAVE_SYS_SIGNAL_H 0
267 #define APR_HAVE_SYS_SOCKET_H 0
268 +#define APR_HAVE_SYS_SOCKIO_H 0
269 #define APR_HAVE_SYS_SYSLIMITS_H 0
270 #define APR_HAVE_SYS_TIME_H 0
271 #define APR_HAVE_SYS_TYPES_H 1
272 diff -urN apr-0.9.4.org/include/apr_network_io.h apr/include/apr_network_io.h
273 --- apr-0.9.4.org/include/apr_network_io.h 2003-11-14 15:29:26.000000000 +0100
274 +++ apr/include/apr_network_io.h 2003-10-17 00:13:02.000000000 +0200
276 apr_interval_time_t *t);
279 + * Query the specified socket if at the OOB/Urgent data mark
280 + * @param sock The socket to query
281 + * @param atmark Is set to true if socket is at the OOB/urgent mark,
282 + * otherwise is set to false.
284 +APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock,
288 * Return an apr_sockaddr_t from an apr_socket_t
289 * @param sa The returned apr_sockaddr_t.
290 * @param which Which interface do we want the apr_sockaddr_t for?
291 diff -urN apr-0.9.4.org/include/apr_pools.h apr/include/apr_pools.h
292 --- apr-0.9.4.org/include/apr_pools.h 2003-11-14 15:29:26.000000000 +0100
293 +++ apr/include/apr_pools.h 2003-09-26 21:12:32.000000000 +0200
294 @@ -481,10 +481,12 @@
296 * Users of APR must take EXTREME care when choosing a key to
297 * use for their data. It is possible to accidentally overwrite
298 - * data by choosing a key that another part of the program is using
299 - * It is advised that steps are taken to ensure that a unique
300 - * key is used at all times.
301 - * @bug Specify how to ensure this uniqueness!
302 + * data by choosing a key that another part of the program is using.
303 + * Therefore it is advised that steps are taken to ensure that unique
304 + * keys are used for all of the userdata objects in a particular pool
305 + * (the same key in two different pools or a pool and one of its
306 + * subpools is okay) at all times. Careful namespace prefixing of
307 + * key names is a typical way to help ensure this uniqueness.
309 APR_DECLARE(apr_status_t) apr_pool_userdata_set(
311 diff -urN apr-0.9.4.org/include/apr_portable.h apr/include/apr_portable.h
312 --- apr-0.9.4.org/include/apr_portable.h 2003-11-14 15:29:26.000000000 +0100
313 +++ apr/include/apr_portable.h 2003-10-24 18:35:16.000000000 +0200
318 + * convert the file from os specific type to apr type.
319 + * @param file The apr file we are converting to.
320 + * @param thefile The os specific pipe to convert
321 + * @param register_cleanup A cleanup will be registered on the apr_file_t
322 + * to issue apr_file_close().
323 + * @param cont The pool to use if it is needed.
324 + * @remark On Unix, it is only possible to put a file descriptor into
325 + * an apr file type.
327 +APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file,
328 + apr_os_file_t *thefile,
329 + int register_cleanup,
333 * convert the dir from os specific type to apr type.
334 * @param dir The apr dir we are converting to.
335 * @param thedir The os specific dir to convert
336 diff -urN apr-0.9.4.org/include/apr_version.h apr/include/apr_version.h
337 --- apr-0.9.4.org/include/apr_version.h 2003-11-14 15:29:26.000000000 +0100
338 +++ apr/include/apr_version.h 2003-09-26 07:27:22.000000000 +0200
340 #define APR_MINOR_VERSION 9
343 -#define APR_PATCH_VERSION 4
344 +#define APR_PATCH_VERSION 5
348 * This symbol is defined for internal, "development" copies of APR. This
349 * symbol will be #undef'd for releases.
351 -/* #undef APR_IS_DEV_VERSION */
352 +#define APR_IS_DEV_VERSION
354 /** The formatted string of APR's version */
355 #define APR_VERSION_STRING \
356 diff -urN apr-0.9.4.org/include/arch/netware/apr_arch_file_io.h apr/include/arch/netware/apr_arch_file_io.h
357 --- apr-0.9.4.org/include/arch/netware/apr_arch_file_io.h 2003-11-14 15:29:26.000000000 +0100
358 +++ apr/include/arch/netware/apr_arch_file_io.h 2003-10-02 16:49:33.000000000 +0200
363 -extern apr_int32_t CpuCurrentProcessor; /* system variable */
365 #define MAX_SERVER_NAME 64
366 #define MAX_VOLUME_NAME 64
367 #define MAX_PATH_NAME 256
368 diff -urN apr-0.9.4.org/include/arch/unix/apr_arch_networkio.h apr/include/arch/unix/apr_arch_networkio.h
369 --- apr-0.9.4.org/include/arch/unix/apr_arch_networkio.h 2003-11-14 15:29:26.000000000 +0100
370 +++ apr/include/arch/unix/apr_arch_networkio.h 2003-10-17 00:13:02.000000000 +0200
372 #if APR_HAVE_SYS_SOCKET_H
373 #include <sys/socket.h>
375 +#if APR_HAVE_SYS_SOCKIO_H
376 +#include <sys/sockio.h>
382 #if APR_HAVE_SYS_SENDFILE_H
383 #include <sys/sendfile.h>
385 +#if APR_HAVE_SYS_IOCTL_H
386 +#include <sys/ioctl.h>
388 /* End System Headers */
391 diff -urN apr-0.9.4.org/include/arch/unix/apr_private.h.in apr/include/arch/unix/apr_private.h.in
392 --- apr-0.9.4.org/include/arch/unix/apr_private.h.in 2003-11-14 15:29:26.000000000 +0100
393 +++ apr/include/arch/unix/apr_private.h.in 2003-10-24 19:50:58.000000000 +0200
395 /* Define to 1 if you have the <ctype.h> header file. */
398 -/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
400 -#undef HAVE_DECL_SYS_SIGLIST
402 /* Define to 1 if you have the <dirent.h> header file. */
406 /* Define to 1 if you have the <sys/file.h> header file. */
407 #undef HAVE_SYS_FILE_H
409 +/* Define to 1 if you have the <sys/ioctl.h> header file. */
410 +#undef HAVE_SYS_IOCTL_H
412 /* Define to 1 if you have the <sys/ipc.h> header file. */
413 #undef HAVE_SYS_IPC_H
416 /* Define to 1 if you have the <sys/socket.h> header file. */
417 #undef HAVE_SYS_SOCKET_H
419 +/* Define to 1 if you have the <sys/sockio.h> header file. */
420 +#undef HAVE_SYS_SOCKIO_H
422 /* Define to 1 if you have the <sys/stat.h> header file. */
423 #undef HAVE_SYS_STAT_H
426 /* Define if SysV semaphores affect threads within the process */
427 #undef SYSVSEM_IS_GLOBAL
429 +/* Define to 1 if `sys_siglist' is declared by <signal.h> or <unistd.h>. */
430 +#undef SYS_SIGLIST_DECLARED
432 /* Define if APR supports threads */
435 diff -urN apr-0.9.4.org/memory/unix/apr_pools.c apr/memory/unix/apr_pools.c
436 --- apr-0.9.4.org/memory/unix/apr_pools.c 2003-11-14 15:29:26.000000000 +0100
437 +++ apr/memory/unix/apr_pools.c 2003-09-28 19:14:21.000000000 +0200
440 #include "apr_private.h"
442 +#include "apr_atomic.h"
443 #include "apr_portable.h" /* for get_os_proc */
444 #include "apr_strings.h"
445 #include "apr_general.h"
448 apr_pool_tag(global_pool, "apr_global_pool");
450 + /* This has to happen here because mutexes might be backed by
451 + * atomics. It used to be snug and safe in apr_initialize().
453 + if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) {
459 apr_thread_mutex_t *mutex;
460 @@ -1266,6 +1274,13 @@
462 apr_pools_initialized = 1;
464 + /* This has to happen here because mutexes might be backed by
465 + * atomics. It used to be snug and safe in apr_initialize().
467 + if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) {
471 #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL)
472 apr_file_open_stderr(&file_stderr, global_pool);
474 diff -urN apr-0.9.4.org/misc/netware/aprlib.def apr/misc/netware/aprlib.def
475 --- apr-0.9.4.org/misc/netware/aprlib.def 2003-11-14 15:29:26.000000000 +0100
476 +++ apr/misc/netware/aprlib.def 2003-10-02 16:49:33.000000000 +0200
480 -IMPORT CpuCurrentProcessor
482 diff -urN apr-0.9.4.org/misc/unix/start.c apr/misc/unix/start.c
483 --- apr-0.9.4.org/misc/unix/start.c 2003-11-14 15:29:26.000000000 +0100
484 +++ apr/misc/unix/start.c 2003-09-28 01:58:23.000000000 +0200
487 apr_pool_tag(pool, "apr_initialize");
489 - if ((status = apr_atomic_init(pool)) != APR_SUCCESS) {
492 + /* apr_atomic_init() used to be called from here aswell.
493 + * Pools rely on mutexes though, which can be backed by
494 + * atomics. Due to this circular dependency
495 + * apr_pool_initialize() is taking care of calling
496 + * apr_atomic_init() at the correct time.
499 apr_signal_init(pool);
501 diff -urN apr-0.9.4.org/network_io/os2/sockopt.c apr/network_io/os2/sockopt.c
502 --- apr-0.9.4.org/network_io/os2/sockopt.c 2003-11-14 15:29:26.000000000 +0100
503 +++ apr/network_io/os2/sockopt.c 2003-10-17 00:13:02.000000000 +0200
508 +APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark)
512 + if (ioctl(sock->socketdes, SIOCATMARK, (void*)&oobmark, sizeof(oobmark)) < 0) {
513 + return APR_OS2_STATUS(sock_errno());
516 + *atmark = (oobmark != 0);
518 + return APR_SUCCESS;
522 APR_DECLARE(apr_status_t) apr_gethostname(char *buf, apr_int32_t len,
525 diff -urN apr-0.9.4.org/network_io/unix/sockaddr.c apr/network_io/unix/sockaddr.c
526 --- apr-0.9.4.org/network_io/unix/sockaddr.c 2003-11-14 15:29:26.000000000 +0100
527 +++ apr/network_io/unix/sockaddr.c 2003-09-29 21:08:15.000000000 +0200
529 memset(&hints, 0, sizeof(hints));
530 hints.ai_family = family;
531 hints.ai_socktype = SOCK_STREAM;
532 -#ifdef AI_ADDRCONFIG
533 - if (family == AF_UNSPEC) {
534 - /* By default, only look up addresses using address types for
535 - * which a local interface is configured, i.e. no IPv6 if no
536 - * IPv6 interfaces configured. */
537 - hints.ai_flags = AI_ADDRCONFIG;
540 if(hostname == NULL) {
542 /* If hostname is NULL, assume we are trying to bind to all
544 servname = apr_itoa(p, port);
546 error = getaddrinfo(hostname, servname, &hints, &ai_list);
547 -#ifdef AI_ADDRCONFIG
548 - if (error == EAI_BADFLAGS && family == AF_UNSPEC) {
549 - /* Retry with no flags if AI_ADDRCONFIG was rejected. */
550 - hints.ai_flags = 0;
551 - error = getaddrinfo(hostname, servname, &hints, &ai_list);
556 if (error == EAI_SYSTEM) {
557 diff -urN apr-0.9.4.org/network_io/unix/sockopt.c apr/network_io/unix/sockopt.c
558 --- apr-0.9.4.org/network_io/unix/sockopt.c 2003-11-14 15:29:26.000000000 +0100
559 +++ apr/network_io/unix/sockopt.c 2003-10-17 00:13:02.000000000 +0200
561 #include "apr_arch_networkio.h"
562 #include "apr_strings.h"
565 static apr_status_t soblock(int sd)
567 /* BeOS uses setsockopt at present for non blocking... */
572 +apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark)
574 +/* In 1.0 we rely on compile failure to assure all platforms grabbed
575 + * the correct header file support for SIOCATMARK, but we don't want
576 + * to fail the build of 0.9. Keep things good for the released branch.
581 + if (ioctl(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0)
582 + return apr_get_netos_error();
584 + *atmark = (oobmark != 0);
586 + return APR_SUCCESS;
588 + return APR_ENOTIMPL;
594 apr_status_t apr_setsocketopt(apr_socket_t *sock,
595 apr_int32_t opt, apr_int32_t on)
596 diff -urN apr-0.9.4.org/network_io/win32/sockopt.c apr/network_io/win32/sockopt.c
597 --- apr-0.9.4.org/network_io/win32/sockopt.c 2003-11-14 15:29:26.000000000 +0100
598 +++ apr/network_io/win32/sockopt.c 2003-10-17 00:13:03.000000000 +0200
603 +APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark)
607 + if (ioctlsocket(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0)
608 + return apr_get_netos_error();
610 + *atmark = (oobmark != 0);
612 + return APR_SUCCESS;
616 APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len,
619 diff -urN apr-0.9.4.org/NWGNUmakefile apr/NWGNUmakefile
620 --- apr-0.9.4.org/NWGNUmakefile 2003-11-14 15:29:26.000000000 +0100
621 +++ apr/NWGNUmakefile 2003-10-02 16:49:33.000000000 +0200
626 - CpuCurrentProcessor \