annotate netinstall/concat.cc @ 2500:3d8143fc88e1

[xemacs-hg @ 2005-01-24 23:33:30 by ben] get working with VC7 config.inc.samp: Declare OPTIONAL_LIBRARY_DIR as root of library directories. Redo all graphics library defaults to mirror the versions and directories in the current binary aux distribution on xemacs web site. Enable TIFF and COMPFACE by default since you can now compile with them and binary libs are provided. xemacs.mak: Put our own directories first in case of conflict (e.g. config.h in compface). xemacs.mak: Use MSVCRT to avoid link problems. s/windowsnt.h: bytecode.c, print.c: Add casts to avoid warning. compiler.h: Add MSC_VERSION and include definitions of DOESNT_RETURN and friends here, like for GCC. Need different definitions for VC7 and VC6. s/windowsnt.h: Remove stuff moved to compiler.h. Disable warning 4646 ("function declared with __declspec(noreturn) has non-void return type") on VC7 since lots of Lisp primitives trigger this and there is no easy way to kludge around the warning. glyphs-eimage.c: Some really nasty hacks to allow TIFF and JPEG to both be compiled. #### The better solution is to move the TIFF and JPEG code to different files. glyphs-msw.c: Define __STDC__ to avoid problems with compface.h. intl-auto-encap-win32.c, intl-auto-encap-win32.h, intl-encap-win32.c, syswindows.h: Those wankers at Microsoft cannot leave well enough alone. Various functions change parameter types semi-randomly between VC6 and VC7, so we need to include our own versions that can handle both kinds with appropriate casting. EmacsFrame.c, EmacsShell-sub.c, EmacsShell.c, alloc.c, alloca.c, buffer.c, bytecode.c, charset.h, chartab.c, cm.c, console-stream.c, console.c, data.c, debug.h, device-msw.c, device-tty.c, device-x.c, doprnt.c, dumper.c, dynarr.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, fns.c, font-lock.c, frame-gtk.c, frame-x.c, frame.c, free-hook.c, gccache-gtk.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-x.c, glyphs.c, gtk-glue.c, gutter.c, input-method-xlib.c, insdel.c, intl-win32.c, keymap.c, lisp.h, lread.c, lstream.c, macros.c, malloc.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, mule-coding.c, native-gtk-toolbar.c, number.c, objects-msw.c, objects.c, print.c, process-nt.c, process-unix.c, process.c, ralloc.c, rangetab.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, regex.c, scrollbar-gtk.c, scrollbar-x.c, search.c, select-x.c, signal.c, specifier.c, specifier.h, strftime.c, sunplay.c, symbols.c, sysdep.c, sysproc.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, ui-gtk.c, unexnt.c, unicode.c, win32.c, window.c, xgccache.c, s/windowsnt.h: abort() -> ABORT(). Eliminate preprocessor games with abort() since it creates huge problems in VC7, solvable only by including massive amounts of files in every compile (and not worth it).
author ben
date Mon, 24 Jan 2005 23:34:34 +0000
parents 3078fd1074e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 /*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 * Copyright (c) 2000, Red Hat, Inc.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 * (at your option) any later version.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 * A copy of the GNU General Public License can be found at
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 * http://www.gnu.org/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 * Written by DJ Delorie <dj@cygnus.com>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16 /* See concat.h. Note that we canonicalize the result, this avoids
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 multiple slashes being interpreted as UNCs. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 #include "win32.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20 #include <stdarg.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21 #include <stdlib.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22 #include <string.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24 char * CDECL
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 concat (char *s, ...)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27 int len;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
28 char *rv, *arg;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 va_list v;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31 if (!s)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 return 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34 len = strlen (s);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36 va_start (v, s);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37 while (1)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39 arg = va_arg (v, char *);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40 if (arg == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42 len += strlen (arg);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44 va_end (v);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46 rv = (char *) malloc (len+1);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47 strcpy (rv, s);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48 va_start (v, s);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49 while (1)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 arg = va_arg (v, char *);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52 if (arg == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
54 strcat (rv, arg);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
55 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
56 va_end (v);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
57
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
58 /* concat is only used for urls and files, so we can safely
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
59 canonicalize the results */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
60 char *d;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
61 for (s=rv; *s; s++)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
62 if (*s == '\\')
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
63 *s = '/';
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
64 for (s=d=rv; *s; s++)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
65 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
66 *d++ = *s;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
67 /* special case for URLs */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68 if (*s == ':' && s[1] == '/' && s[2] == '/' && s > rv+1)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
69 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70 *d++ = *++s;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 *d++ = *++s;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73 else if (*s == '/')
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74 while (s[1] == '/')
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75 s++;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
76 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
77 *d = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79 return rv;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 char *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 backslash (char *s)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85 for (char *t = s; *t; t++)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86 if (*t == '/')
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87 *t = '\\';
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
88 return s;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
89 }