annotate src/mac.c @ 64256:f83907a4c795

(blink-cursor-mode): Revert to previous implementation of its defcustom. Update.comment.
author Luc Teirlinck <teirllm@auburn.edu>
date Tue, 12 Jul 2005 20:13:23 +0000
parents e55c855616f5
children a673f66d6156 fbb2bea03df9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1 /* Unix emulation routines for GNU Emacs on the Mac OS.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2 Copyright (C) 2000, 2001 Free Software Foundation, Inc.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4 This file is part of GNU Emacs.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
5
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
9 any later version.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
10
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
14 GNU General Public License for more details.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
15
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
64084
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62283
diff changeset
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62283
diff changeset
19 Boston, MA 02110-1301, USA. */
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
20
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
21 /* Contributed by Andrew Choi (akochoi@mac.com). */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
22
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
23 #include <config.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
24
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
25 #include <stdio.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
26 #include <errno.h>
60360
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
27
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
28 #include "lisp.h"
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
29 #include "process.h"
62054
fd9250f00dae * mac.c: #undef init_process so not to conflict with system headers.
Jan Djärv <jan.h.d@swipnet.se>
parents: 61925
diff changeset
30 #undef init_process
61925
e3bedede9b3f Don't include time.h. Include sysselect.h after systime.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61785
diff changeset
31 #include "systime.h"
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
32 #include "sysselect.h"
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
33 #include "blockinput.h"
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
34
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
35 #include "macterm.h"
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
36
61572
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
37 #include "charset.h"
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
38 #include "coding.h"
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
39 #if !TARGET_API_MAC_CARBON
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
40 #include <Files.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
41 #include <MacTypes.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
42 #include <TextUtils.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
43 #include <Folders.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
44 #include <Resources.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
45 #include <Aliases.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
46 #include <FixMath.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
47 #include <Timer.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
48 #include <OSA.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
49 #include <AppleScript.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
50 #include <Scrap.h>
60360
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
51 #include <Events.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
52 #include <Processes.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
53 #include <EPPC.h>
61553
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
54 #include <MacLocales.h>
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
55 #include <Endian.h>
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
56 #endif /* not TARGET_API_MAC_CARBON */
60360
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
57
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
58 #include <utime.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
59 #include <dirent.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
60 #include <sys/types.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
61 #include <sys/stat.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
62 #include <string.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
63 #include <pwd.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
64 #include <grp.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
65 #include <sys/param.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
66 #include <stdlib.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
67 #include <fcntl.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
68 #if __MWERKS__
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
69 #include <unistd.h>
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
70 #endif
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
71
61553
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
72 /* The system script code. */
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
73 static int mac_system_script_code;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
74
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
75 /* The system locale identifier string. */
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
76 static Lisp_Object Vmac_system_locale;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
77
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
78 /* An instance of the AppleScript component. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
79 static ComponentInstance as_scripting_component;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
80 /* The single script context used for all script executions. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
81 static OSAID as_script_context;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
82
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
83
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
84 /* When converting from Mac to Unix pathnames, /'s in folder names are
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
85 converted to :'s. This function, used in copying folder names,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
86 performs a strncat and converts all character a to b in the copy of
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
87 the string s2 appended to the end of s1. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
88
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
89 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
90 string_cat_and_replace (char *s1, const char *s2, int n, char a, char b)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
91 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
92 int l1 = strlen (s1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
93 int l2 = strlen (s2);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
94 char *p = s1 + l1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
95 int i;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
96
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
97 strncat (s1, s2, n);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
98 for (i = 0; i < l2; i++)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
99 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
100 if (*p == a)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
101 *p = b;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
102 p++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
103 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
104 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
105
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
106
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
107 /* Convert a Mac pathname to Posix form. A Mac full pathname is one
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
108 that does not begin with a ':' and contains at least one ':'. A Mac
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
109 full pathname causes a '/' to be prepended to the Posix pathname.
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
110 The algorithm for the rest of the pathname is as follows:
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
111 For each segment between two ':',
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
112 if it is non-null, copy as is and then add a '/' at the end,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
113 otherwise, insert a "../" into the Posix pathname.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
114 Returns 1 if successful; 0 if fails. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
115
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
116 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
117 mac_to_posix_pathname (const char *mfn, char *ufn, int ufnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
118 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
119 const char *p, *q, *pe;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
120
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
121 strcpy (ufn, "");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
122
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
123 if (*mfn == '\0')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
124 return 1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
125
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
126 p = strchr (mfn, ':');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
127 if (p != 0 && p != mfn) /* full pathname */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
128 strcat (ufn, "/");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
129
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
130 p = mfn;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
131 if (*p == ':')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
132 p++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
133
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
134 pe = mfn + strlen (mfn);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
135 while (p < pe)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
136 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
137 q = strchr (p, ':');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
138 if (q)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
139 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
140 if (q == p)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
141 { /* two consecutive ':' */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
142 if (strlen (ufn) + 3 >= ufnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
143 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
144 strcat (ufn, "../");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
145 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
146 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
147 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
148 if (strlen (ufn) + (q - p) + 1 >= ufnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
149 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
150 string_cat_and_replace (ufn, p, q - p, '/', ':');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
151 strcat (ufn, "/");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
152 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
153 p = q + 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
154 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
155 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
156 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
157 if (strlen (ufn) + (pe - p) >= ufnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
158 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
159 string_cat_and_replace (ufn, p, pe - p, '/', ':');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
160 /* no separator for last one */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
161 p = pe;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
162 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
163 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
164
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
165 return 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
166 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
167
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
168
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
169 extern char *get_temp_dir_name ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
170
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
171
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
172 /* Convert a Posix pathname to Mac form. Approximately reverse of the
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
173 above in algorithm. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
174
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
175 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
176 posix_to_mac_pathname (const char *ufn, char *mfn, int mfnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
177 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
178 const char *p, *q, *pe;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
179 char expanded_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
180
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
181 strcpy (mfn, "");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
182
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
183 if (*ufn == '\0')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
184 return 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
185
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
186 p = ufn;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
187
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
188 /* Check for and handle volume names. Last comparison: strangely
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
189 somewhere "/.emacs" is passed. A temporary fix for now. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
190 if (*p == '/' && strchr (p+1, '/') == NULL && strcmp (p, "/.emacs") != 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
191 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
192 if (strlen (p) + 1 > mfnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
193 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
194 strcpy (mfn, p+1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
195 strcat (mfn, ":");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
196 return 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
197 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
198
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
199 /* expand to emacs dir found by init_emacs_passwd_dir */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
200 if (strncmp (p, "~emacs/", 7) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
201 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
202 struct passwd *pw = getpwnam ("emacs");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
203 p += 7;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
204 if (strlen (pw->pw_dir) + strlen (p) > MAXPATHLEN)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
205 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
206 strcpy (expanded_pathname, pw->pw_dir);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
207 strcat (expanded_pathname, p);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
208 p = expanded_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
209 /* now p points to the pathname with emacs dir prefix */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
210 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
211 else if (strncmp (p, "/tmp/", 5) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
212 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
213 char *t = get_temp_dir_name ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
214 p += 5;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
215 if (strlen (t) + strlen (p) > MAXPATHLEN)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
216 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
217 strcpy (expanded_pathname, t);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
218 strcat (expanded_pathname, p);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
219 p = expanded_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
220 /* now p points to the pathname with emacs dir prefix */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
221 }
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
222 else if (*p != '/') /* relative pathname */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
223 strcat (mfn, ":");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
224
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
225 if (*p == '/')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
226 p++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
227
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
228 pe = p + strlen (p);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
229 while (p < pe)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
230 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
231 q = strchr (p, '/');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
232 if (q)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
233 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
234 if (q - p == 2 && *p == '.' && *(p+1) == '.')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
235 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
236 if (strlen (mfn) + 1 >= mfnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
237 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
238 strcat (mfn, ":");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
239 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
240 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
241 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
242 if (strlen (mfn) + (q - p) + 1 >= mfnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
243 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
244 string_cat_and_replace (mfn, p, q - p, ':', '/');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
245 strcat (mfn, ":");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
246 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
247 p = q + 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
248 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
249 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
250 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
251 if (strlen (mfn) + (pe - p) >= mfnbuflen)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
252 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
253 string_cat_and_replace (mfn, p, pe - p, ':', '/');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
254 p = pe;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
255 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
256 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
257
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
258 return 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
259 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
260
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
261
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
262 /***********************************************************************
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
263 Conversion between Lisp and Core Foundation objects
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
264 ***********************************************************************/
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
265
58752
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
266 #if TARGET_API_MAC_CARBON
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
267 static Lisp_Object Qstring, Qnumber, Qboolean, Qdate, Qdata;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
268 static Lisp_Object Qarray, Qdictionary;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
269 #define DECODE_UTF_8(str) code_convert_string_norecord (str, Qutf_8, 0)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
270
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
271 struct cfdict_context
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
272 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
273 Lisp_Object *result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
274 int with_tag, hash_bound;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
275 };
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
276
61572
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
277 /* C string to CFString. */
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
278
58752
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
279 CFStringRef
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
280 cfstring_create_with_utf8_cstring (c_str)
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
281 const char *c_str;
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
282 {
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
283 CFStringRef str;
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
284
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
285 str = CFStringCreateWithCString (NULL, c_str, kCFStringEncodingUTF8);
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
286 if (str == NULL)
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
287 /* Failed to interpret as UTF 8. Fall back on Mac Roman. */
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
288 str = CFStringCreateWithCString (NULL, c_str, kCFStringEncodingMacRoman);
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
289
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
290 return str;
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
291 }
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
292
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
293
61572
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
294 /* Lisp string to CFString. */
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
295
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
296 CFStringRef
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
297 cfstring_create_with_string (s)
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
298 Lisp_Object s;
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
299 {
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
300 CFStringRef string = NULL;
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
301
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
302 if (STRING_MULTIBYTE (s))
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
303 {
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
304 char *p, *end = SDATA (s) + SBYTES (s);
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
305
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
306 for (p = SDATA (s); p < end; p++)
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
307 if (!isascii (*p))
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
308 {
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
309 s = ENCODE_UTF_8 (s);
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
310 break;
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
311 }
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
312 string = CFStringCreateWithBytes (NULL, SDATA (s), SBYTES (s),
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
313 kCFStringEncodingUTF8, false);
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
314 }
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
315
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
316 if (string == NULL)
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
317 /* Failed to interpret as UTF 8. Fall back on Mac Roman. */
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
318 string = CFStringCreateWithBytes (NULL, SDATA (s), SBYTES (s),
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
319 kCFStringEncodingMacRoman, false);
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
320
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
321 return string;
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
322 }
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
323
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
324
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
325 /* From CFData to a lisp string. Always returns a unibyte string. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
326
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
327 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
328 cfdata_to_lisp (data)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
329 CFDataRef data;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
330 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
331 CFIndex len = CFDataGetLength (data);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
332 Lisp_Object result = make_uninit_string (len);
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
333
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
334 CFDataGetBytes (data, CFRangeMake (0, len), SDATA (result));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
335
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
336 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
337 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
338
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
339
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
340 /* From CFString to a lisp string. Never returns a unibyte string
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
341 (even if it only contains ASCII characters).
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
342 This may cause GC during code conversion. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
343
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
344 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
345 cfstring_to_lisp (string)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
346 CFStringRef string;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
347 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
348 Lisp_Object result = Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
349 const char *s = CFStringGetCStringPtr (string, kCFStringEncodingUTF8);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
350
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
351 if (s)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
352 result = make_unibyte_string (s, strlen (s));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
353 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
354 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
355 CFDataRef data =
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
356 CFStringCreateExternalRepresentation (NULL, string,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
357 kCFStringEncodingUTF8, '?');
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
358
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
359 if (data)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
360 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
361 result = cfdata_to_lisp (data);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
362 CFRelease (data);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
363 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
364 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
365
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
366 if (!NILP (result))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
367 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
368 result = DECODE_UTF_8 (result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
369 /* This may be superfluous. Just to make sure that the result
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
370 is a multibyte string. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
371 result = string_to_multibyte (result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
372 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
373
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
374 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
375 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
376
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
377
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
378 /* CFNumber to a lisp integer or a lisp float. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
379
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
380 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
381 cfnumber_to_lisp (number)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
382 CFNumberRef number;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
383 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
384 Lisp_Object result = Qnil;
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
385 #if BITS_PER_EMACS_INT > 32
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
386 SInt64 int_val;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
387 CFNumberType emacs_int_type = kCFNumberSInt64Type;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
388 #else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
389 SInt32 int_val;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
390 CFNumberType emacs_int_type = kCFNumberSInt32Type;
58752
4ad0594e1ac4 * macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents: 57425
diff changeset
391 #endif
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
392 double float_val;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
393
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
394 if (CFNumberGetValue (number, emacs_int_type, &int_val)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
395 && !FIXNUM_OVERFLOW_P (int_val))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
396 result = make_number (int_val);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
397 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
398 if (CFNumberGetValue (number, kCFNumberDoubleType, &float_val))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
399 result = make_float (float_val);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
400 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
401 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
402
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
403
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
404 /* CFDate to a list of three integers as in a return value of
61338
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
405 `current-time'. */
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
406
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
407 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
408 cfdate_to_lisp (date)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
409 CFDateRef date;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
410 {
61338
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
411 static const CFGregorianDate epoch_gdate = {1970, 1, 1, 0, 0, 0.0};
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
412 static CFAbsoluteTime epoch = 0.0, sec;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
413 int high, low;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
414
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
415 if (epoch == 0.0)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
416 epoch = CFGregorianDateGetAbsoluteTime (epoch_gdate, NULL);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
417
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
418 sec = CFDateGetAbsoluteTime (date) - epoch;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
419 high = sec / 65536.0;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
420 low = sec - high * 65536.0;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
421
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
422 return list3 (make_number (high), make_number (low), make_number (0));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
423 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
424
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
425
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
426 /* CFBoolean to a lisp symbol, `t' or `nil'. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
427
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
428 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
429 cfboolean_to_lisp (boolean)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
430 CFBooleanRef boolean;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
431 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
432 return CFBooleanGetValue (boolean) ? Qt : Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
433 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
434
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
435
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
436 /* Any Core Foundation object to a (lengthy) lisp string. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
437
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
438 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
439 cfobject_desc_to_lisp (object)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
440 CFTypeRef object;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
441 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
442 Lisp_Object result = Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
443 CFStringRef desc = CFCopyDescription (object);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
444
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
445 if (desc)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
446 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
447 result = cfstring_to_lisp (desc);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
448 CFRelease (desc);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
449 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
450
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
451 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
452 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
453
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
454
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
455 /* Callback functions for cfproperty_list_to_lisp. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
456
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
457 static void
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
458 cfdictionary_add_to_list (key, value, context)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
459 const void *key;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
460 const void *value;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
461 void *context;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
462 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
463 struct cfdict_context *cxt = (struct cfdict_context *)context;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
464
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
465 *cxt->result =
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
466 Fcons (Fcons (cfstring_to_lisp (key),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
467 cfproperty_list_to_lisp (value, cxt->with_tag,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
468 cxt->hash_bound)),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
469 *cxt->result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
470 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
471
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
472 static void
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
473 cfdictionary_puthash (key, value, context)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
474 const void *key;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
475 const void *value;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
476 void *context;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
477 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
478 Lisp_Object lisp_key = cfstring_to_lisp (key);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
479 struct cfdict_context *cxt = (struct cfdict_context *)context;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
480 struct Lisp_Hash_Table *h = XHASH_TABLE (*(cxt->result));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
481 unsigned hash_code;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
482
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
483 hash_lookup (h, lisp_key, &hash_code);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
484 hash_put (h, lisp_key,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
485 cfproperty_list_to_lisp (value, cxt->with_tag, cxt->hash_bound),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
486 hash_code);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
487 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
488
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
489
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
490 /* Convert CFPropertyList PLIST to a lisp object. If WITH_TAG is
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
491 non-zero, a symbol that represents the type of the original Core
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
492 Foundation object is prepended. HASH_BOUND specifies which kinds
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
493 of the lisp objects, alists or hash tables, are used as the targets
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
494 of the conversion from CFDictionary. If HASH_BOUND is negative,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
495 always generate alists. If HASH_BOUND >= 0, generate an alist if
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
496 the number of keys in the dictionary is smaller than HASH_BOUND,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
497 and a hash table otherwise. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
498
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
499 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
500 cfproperty_list_to_lisp (plist, with_tag, hash_bound)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
501 CFPropertyListRef plist;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
502 int with_tag, hash_bound;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
503 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
504 CFTypeID type_id = CFGetTypeID (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
505 Lisp_Object tag = Qnil, result = Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
506 struct gcpro gcpro1, gcpro2;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
507
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
508 GCPRO2 (tag, result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
509
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
510 if (type_id == CFStringGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
511 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
512 tag = Qstring;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
513 result = cfstring_to_lisp (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
514 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
515 else if (type_id == CFNumberGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
516 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
517 tag = Qnumber;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
518 result = cfnumber_to_lisp (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
519 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
520 else if (type_id == CFBooleanGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
521 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
522 tag = Qboolean;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
523 result = cfboolean_to_lisp (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
524 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
525 else if (type_id == CFDateGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
526 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
527 tag = Qdate;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
528 result = cfdate_to_lisp (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
529 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
530 else if (type_id == CFDataGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
531 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
532 tag = Qdata;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
533 result = cfdata_to_lisp (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
534 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
535 else if (type_id == CFArrayGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
536 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
537 CFIndex index, count = CFArrayGetCount (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
538
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
539 tag = Qarray;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
540 result = Fmake_vector (make_number (count), Qnil);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
541 for (index = 0; index < count; index++)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
542 XVECTOR (result)->contents[index] =
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
543 cfproperty_list_to_lisp (CFArrayGetValueAtIndex (plist, index),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
544 with_tag, hash_bound);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
545 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
546 else if (type_id == CFDictionaryGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
547 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
548 struct cfdict_context context;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
549 CFIndex count = CFDictionaryGetCount (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
550
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
551 tag = Qdictionary;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
552 context.result = &result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
553 context.with_tag = with_tag;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
554 context.hash_bound = hash_bound;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
555 if (hash_bound < 0 || count < hash_bound)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
556 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
557 result = Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
558 CFDictionaryApplyFunction (plist, cfdictionary_add_to_list,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
559 &context);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
560 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
561 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
562 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
563 result = make_hash_table (Qequal,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
564 make_number (count),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
565 make_float (DEFAULT_REHASH_SIZE),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
566 make_float (DEFAULT_REHASH_THRESHOLD),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
567 Qnil, Qnil, Qnil);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
568 CFDictionaryApplyFunction (plist, cfdictionary_puthash,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
569 &context);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
570 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
571 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
572 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
573 abort ();
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
574
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
575 UNGCPRO;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
576
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
577 if (with_tag)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
578 result = Fcons (tag, result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
579
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
580 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
581 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
582 #endif
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
583
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
584
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
585 /***********************************************************************
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
586 Emulation of the X Resource Manager
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
587 ***********************************************************************/
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
588
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
589 /* Parser functions for resource lines. Each function takes an
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
590 address of a variable whose value points to the head of a string.
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
591 The value will be advanced so that it points to the next character
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
592 of the parsed part when the function returns.
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
593
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
594 A resource name such as "Emacs*font" is parsed into a non-empty
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
595 list called `quarks'. Each element is either a Lisp string that
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
596 represents a concrete component, a Lisp symbol LOOSE_BINDING
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
597 (actually Qlambda) that represents any number (>=0) of intervening
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
598 components, or a Lisp symbol SINGLE_COMPONENT (actually Qquote)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
599 that represents as any single component. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
600
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
601 #define P (*p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
602
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
603 #define LOOSE_BINDING Qlambda /* '*' ("L"oose) */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
604 #define SINGLE_COMPONENT Qquote /* '?' ("Q"uestion) */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
605
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
606 static void
60640
7dd25916c6bb Fix typo (skip_while_space -> skip_white_space).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60632
diff changeset
607 skip_white_space (p)
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
608 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
609 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
610 /* WhiteSpace = {<space> | <horizontal tab>} */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
611 while (*P == ' ' || *P == '\t')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
612 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
613 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
614
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
615 static int
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
616 parse_comment (p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
617 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
618 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
619 /* Comment = "!" {<any character except null or newline>} */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
620 if (*P == '!')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
621 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
622 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
623 while (*P)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
624 if (*P++ == '\n')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
625 break;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
626 return 1;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
627 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
628 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
629 return 0;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
630 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
631
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
632 /* Don't interpret filename. Just skip until the newline. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
633 static int
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
634 parse_include_file (p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
635 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
636 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
637 /* IncludeFile = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
638 if (*P == '#')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
639 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
640 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
641 while (*P)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
642 if (*P++ == '\n')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
643 break;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
644 return 1;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
645 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
646 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
647 return 0;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
648 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
649
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
650 static char
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
651 parse_binding (p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
652 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
653 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
654 /* Binding = "." | "*" */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
655 if (*P == '.' || *P == '*')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
656 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
657 char binding = *P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
658
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
659 while (*P == '.' || *P == '*')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
660 if (*P++ == '*')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
661 binding = '*';
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
662 return binding;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
663 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
664 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
665 return '\0';
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
666 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
667
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
668 static Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
669 parse_component (p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
670 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
671 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
672 /* Component = "?" | ComponentName
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
673 ComponentName = NameChar {NameChar}
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
674 NameChar = "a"-"z" | "A"-"Z" | "0"-"9" | "_" | "-" */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
675 if (*P == '?')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
676 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
677 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
678 return SINGLE_COMPONENT;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
679 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
680 else if (isalnum (*P) || *P == '_' || *P == '-')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
681 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
682 char *start = P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
683
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
684 while (isalnum (*P) || *P == '_' || *P == '-')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
685 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
686
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
687 return make_unibyte_string (start, P - start);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
688 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
689 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
690 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
691 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
692
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
693 static Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
694 parse_resource_name (p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
695 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
696 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
697 Lisp_Object result = Qnil, component;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
698 char binding;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
699
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
700 /* ResourceName = [Binding] {Component Binding} ComponentName */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
701 if (parse_binding (p) == '*')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
702 result = Fcons (LOOSE_BINDING, result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
703
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
704 component = parse_component (p);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
705 if (NILP (component))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
706 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
707
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
708 result = Fcons (component, result);
61338
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
709 while ((binding = parse_binding (p)) != '\0')
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
710 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
711 if (binding == '*')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
712 result = Fcons (LOOSE_BINDING, result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
713 component = parse_component (p);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
714 if (NILP (component))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
715 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
716 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
717 result = Fcons (component, result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
718 }
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
719
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
720 /* The final component should not be '?'. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
721 if (EQ (component, SINGLE_COMPONENT))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
722 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
723
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
724 return Fnreverse (result);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
725 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
726
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
727 static Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
728 parse_value (p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
729 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
730 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
731 char *q, *buf;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
732 Lisp_Object seq = Qnil, result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
733 int buf_len, total_len = 0, len, continue_p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
734
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
735 q = strchr (P, '\n');
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
736 buf_len = q ? q - P : strlen (P);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
737 buf = xmalloc (buf_len);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
738
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
739 while (1)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
740 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
741 q = buf;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
742 continue_p = 0;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
743 while (*P)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
744 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
745 if (*P == '\n')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
746 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
747 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
748 break;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
749 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
750 else if (*P == '\\')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
751 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
752 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
753 if (*P == '\0')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
754 break;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
755 else if (*P == '\n')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
756 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
757 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
758 continue_p = 1;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
759 break;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
760 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
761 else if (*P == 'n')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
762 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
763 *q++ = '\n';
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
764 P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
765 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
766 else if ('0' <= P[0] && P[0] <= '7'
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
767 && '0' <= P[1] && P[1] <= '7'
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
768 && '0' <= P[2] && P[2] <= '7')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
769 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
770 *q++ = (P[0] - '0' << 6) + (P[1] - '0' << 3) + (P[2] - '0');
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
771 P += 3;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
772 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
773 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
774 *q++ = *P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
775 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
776 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
777 *q++ = *P++;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
778 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
779 len = q - buf;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
780 seq = Fcons (make_unibyte_string (buf, len), seq);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
781 total_len += len;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
782
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
783 if (continue_p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
784 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
785 q = strchr (P, '\n');
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
786 len = q ? q - P : strlen (P);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
787 if (len > buf_len)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
788 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
789 xfree (buf);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
790 buf_len = len;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
791 buf = xmalloc (buf_len);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
792 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
793 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
794 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
795 break;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
796 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
797 xfree (buf);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
798
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
799 if (SBYTES (XCAR (seq)) == total_len)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
800 return make_string (SDATA (XCAR (seq)), total_len);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
801 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
802 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
803 buf = xmalloc (total_len);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
804 q = buf + total_len;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
805 for (; CONSP (seq); seq = XCDR (seq))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
806 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
807 len = SBYTES (XCAR (seq));
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
808 q -= len;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
809 memcpy (q, SDATA (XCAR (seq)), len);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
810 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
811 result = make_string (buf, total_len);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
812 xfree (buf);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
813 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
814 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
815 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
816
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
817 static Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
818 parse_resource_line (p)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
819 char **p;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
820 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
821 Lisp_Object quarks, value;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
822
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
823 /* ResourceLine = Comment | IncludeFile | ResourceSpec | <empty line> */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
824 if (parse_comment (p) || parse_include_file (p))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
825 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
826
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
827 /* ResourceSpec = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value */
60640
7dd25916c6bb Fix typo (skip_while_space -> skip_white_space).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60632
diff changeset
828 skip_white_space (p);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
829 quarks = parse_resource_name (p);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
830 if (NILP (quarks))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
831 goto cleanup;
60640
7dd25916c6bb Fix typo (skip_while_space -> skip_white_space).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60632
diff changeset
832 skip_white_space (p);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
833 if (*P != ':')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
834 goto cleanup;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
835 P++;
60640
7dd25916c6bb Fix typo (skip_while_space -> skip_white_space).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60632
diff changeset
836 skip_white_space (p);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
837 value = parse_value (p);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
838 return Fcons (quarks, value);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
839
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
840 cleanup:
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
841 /* Skip the remaining data as a dummy value. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
842 parse_value (p);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
843 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
844 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
845
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
846 #undef P
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
847
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
848 /* Equivalents of X Resource Manager functions.
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
849
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
850 An X Resource Database acts as a collection of resource names and
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
851 associated values. It is implemented as a trie on quarks. Namely,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
852 each edge is labeled by either a string, LOOSE_BINDING, or
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
853 SINGLE_COMPONENT. Each node has a node id, which is a unique
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
854 nonnegative integer, and the root node id is 0. A database is
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
855 implemented as a hash table that maps a pair (SRC-NODE-ID .
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
856 EDGE-LABEL) to DEST-NODE-ID. It also holds a maximum node id used
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
857 in the table as a value for HASHKEY_MAX_NID. A value associated to
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
858 a node is recorded as a value for the node id. */
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
859
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
860 #define HASHKEY_MAX_NID (make_number (0))
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
861
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
862 static XrmDatabase
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
863 xrm_create_database ()
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
864 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
865 XrmDatabase database;
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
866
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
867 database = make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE),
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
868 make_float (DEFAULT_REHASH_SIZE),
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
869 make_float (DEFAULT_REHASH_THRESHOLD),
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
870 Qnil, Qnil, Qnil);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
871 Fputhash (HASHKEY_MAX_NID, make_number (0), database);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
872
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
873 return database;
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
874 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
875
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
876 static void
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
877 xrm_q_put_resource (database, quarks, value)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
878 XrmDatabase database;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
879 Lisp_Object quarks, value;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
880 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
881 struct Lisp_Hash_Table *h = XHASH_TABLE (database);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
882 unsigned hash_code;
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
883 int max_nid, i;
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
884 Lisp_Object node_id, key;
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
885
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
886 max_nid = XINT (Fgethash (HASHKEY_MAX_NID, database, Qnil));
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
887
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
888 XSETINT (node_id, 0);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
889 for (; CONSP (quarks); quarks = XCDR (quarks))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
890 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
891 key = Fcons (node_id, XCAR (quarks));
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
892 i = hash_lookup (h, key, &hash_code);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
893 if (i < 0)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
894 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
895 max_nid++;
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
896 XSETINT (node_id, max_nid);
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
897 hash_put (h, key, node_id, hash_code);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
898 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
899 else
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
900 node_id = HASH_VALUE (h, i);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
901 }
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
902 Fputhash (node_id, value, database);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
903
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
904 Fputhash (HASHKEY_MAX_NID, make_number (max_nid), database);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
905 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
906
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
907 /* Merge multiple resource entries specified by DATA into a resource
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
908 database DATABASE. DATA points to the head of a null-terminated
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
909 string consisting of multiple resource lines. It's like a
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
910 combination of XrmGetStringDatabase and XrmMergeDatabases. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
911
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
912 void
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
913 xrm_merge_string_database (database, data)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
914 XrmDatabase database;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
915 char *data;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
916 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
917 Lisp_Object quarks_value;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
918
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
919 while (*data)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
920 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
921 quarks_value = parse_resource_line (&data);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
922 if (!NILP (quarks_value))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
923 xrm_q_put_resource (database,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
924 XCAR (quarks_value), XCDR (quarks_value));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
925 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
926 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
927
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
928 static Lisp_Object
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
929 xrm_q_get_resource_1 (database, node_id, quark_name, quark_class)
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
930 XrmDatabase database;
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
931 Lisp_Object node_id, quark_name, quark_class;
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
932 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
933 struct Lisp_Hash_Table *h = XHASH_TABLE (database);
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
934 Lisp_Object key, labels[3], value;
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
935 int i, k;
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
936
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
937 if (!CONSP (quark_name))
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
938 return Fgethash (node_id, database, Qnil);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
939
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
940 /* First, try tight bindings */
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
941 labels[0] = XCAR (quark_name);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
942 labels[1] = XCAR (quark_class);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
943 labels[2] = SINGLE_COMPONENT;
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
944
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
945 key = Fcons (node_id, Qnil);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
946 for (k = 0; k < sizeof (labels) / sizeof (*labels); k++)
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
947 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
948 XSETCDR (key, labels[k]);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
949 i = hash_lookup (h, key, NULL);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
950 if (i >= 0)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
951 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
952 value = xrm_q_get_resource_1 (database, HASH_VALUE (h, i),
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
953 XCDR (quark_name), XCDR (quark_class));
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
954 if (!NILP (value))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
955 return value;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
956 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
957 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
958
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
959 /* Then, try loose bindings */
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
960 XSETCDR (key, LOOSE_BINDING);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
961 i = hash_lookup (h, key, NULL);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
962 if (i >= 0)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
963 {
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
964 value = xrm_q_get_resource_1 (database, HASH_VALUE (h, i),
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
965 quark_name, quark_class);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
966 if (!NILP (value))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
967 return value;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
968 else
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
969 return xrm_q_get_resource_1 (database, node_id,
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
970 XCDR (quark_name), XCDR (quark_class));
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
971 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
972 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
973 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
974 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
975
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
976 static Lisp_Object
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
977 xrm_q_get_resource (database, quark_name, quark_class)
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
978 XrmDatabase database;
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
979 Lisp_Object quark_name, quark_class;
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
980 {
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
981 return xrm_q_get_resource_1 (database, make_number (0),
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
982 quark_name, quark_class);
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
983 }
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
984
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
985 /* Retrieve a resource value for the specified NAME and CLASS from the
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
986 resource database DATABASE. It corresponds to XrmGetResource. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
987
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
988 Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
989 xrm_get_resource (database, name, class)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
990 XrmDatabase database;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
991 char *name, *class;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
992 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
993 Lisp_Object quark_name, quark_class, tmp;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
994 int nn, nc;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
995
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
996 quark_name = parse_resource_name (&name);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
997 if (*name != '\0')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
998 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
999 for (tmp = quark_name, nn = 0; CONSP (tmp); tmp = XCDR (tmp), nn++)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1000 if (!STRINGP (XCAR (tmp)))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1001 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1002
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1003 quark_class = parse_resource_name (&class);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1004 if (*class != '\0')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1005 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1006 for (tmp = quark_class, nc = 0; CONSP (tmp); tmp = XCDR (tmp), nc++)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1007 if (!STRINGP (XCAR (tmp)))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1008 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1009
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1010 if (nn != nc)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1011 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1012 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1013 return xrm_q_get_resource (database, quark_name, quark_class);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1014 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1015
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1016 #if TARGET_API_MAC_CARBON
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1017 static Lisp_Object
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1018 xrm_cfproperty_list_to_value (plist)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1019 CFPropertyListRef plist;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1020 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1021 CFTypeID type_id = CFGetTypeID (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1022
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1023 if (type_id == CFStringGetTypeID ())
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
1024 return cfstring_to_lisp (plist);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1025 else if (type_id == CFNumberGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1026 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1027 CFStringRef string;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1028 Lisp_Object result = Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1029
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1030 string = CFStringCreateWithFormat (NULL, NULL, CFSTR ("%@"), plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1031 if (string)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1032 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1033 result = cfstring_to_lisp (string);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1034 CFRelease (string);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1035 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1036 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1037 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1038 else if (type_id == CFBooleanGetTypeID ())
60660
40fe172d199c (HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60640
diff changeset
1039 return build_string (CFBooleanGetValue (plist) ? "true" : "false");
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1040 else if (type_id == CFDataGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1041 return cfdata_to_lisp (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1042 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1043 return Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1044 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1045 #endif
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1046
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1047 /* Create a new resource database from the preferences for the
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1048 application APPLICATION. APPLICATION is either a string that
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1049 specifies an application ID, or NULL that represents the current
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1050 application. */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1051
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1052 XrmDatabase
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1053 xrm_get_preference_database (application)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1054 char *application;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1055 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1056 #if TARGET_API_MAC_CARBON
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1057 CFStringRef app_id, *keys, user_doms[2], host_doms[2];
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1058 CFMutableSetRef key_set = NULL;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1059 CFArrayRef key_array;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1060 CFIndex index, count;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1061 char *res_name;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1062 XrmDatabase database;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1063 Lisp_Object quarks = Qnil, value = Qnil;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1064 CFPropertyListRef plist;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1065 int iu, ih;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1066 struct gcpro gcpro1, gcpro2, gcpro3;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1067
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1068 user_doms[0] = kCFPreferencesCurrentUser;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1069 user_doms[1] = kCFPreferencesAnyUser;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1070 host_doms[0] = kCFPreferencesCurrentHost;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1071 host_doms[1] = kCFPreferencesAnyHost;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1072
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1073 database = xrm_create_database ();
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1074
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1075 GCPRO3 (database, quarks, value);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1076
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1077 BLOCK_INPUT;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1078
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1079 app_id = kCFPreferencesCurrentApplication;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1080 if (application)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1081 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1082 app_id = cfstring_create_with_utf8_cstring (application);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1083 if (app_id == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1084 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1085 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1086
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1087 key_set = CFSetCreateMutable (NULL, 0, &kCFCopyStringSetCallBacks);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1088 if (key_set == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1089 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1090 for (iu = 0; iu < sizeof (user_doms) / sizeof (*user_doms) ; iu++)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1091 for (ih = 0; ih < sizeof (host_doms) / sizeof (*host_doms); ih++)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1092 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1093 key_array = CFPreferencesCopyKeyList (app_id, user_doms[iu],
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1094 host_doms[ih]);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1095 if (key_array)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1096 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1097 count = CFArrayGetCount (key_array);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1098 for (index = 0; index < count; index++)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1099 CFSetAddValue (key_set,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1100 CFArrayGetValueAtIndex (key_array, index));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1101 CFRelease (key_array);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1102 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1103 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1104
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1105 count = CFSetGetCount (key_set);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1106 keys = xmalloc (sizeof (CFStringRef) * count);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1107 if (keys == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1108 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1109 CFSetGetValues (key_set, (const void **)keys);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1110 for (index = 0; index < count; index++)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1111 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1112 res_name = SDATA (cfstring_to_lisp (keys[index]));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1113 quarks = parse_resource_name (&res_name);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1114 if (!(NILP (quarks) || *res_name))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1115 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1116 plist = CFPreferencesCopyAppValue (keys[index], app_id);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1117 value = xrm_cfproperty_list_to_value (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1118 CFRelease (plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1119 if (!NILP (value))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1120 xrm_q_put_resource (database, quarks, value);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1121 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1122 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1123
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1124 xfree (keys);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1125 out:
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1126 if (key_set)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1127 CFRelease (key_set);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1128 CFRelease (app_id);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1129
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1130 UNBLOCK_INPUT;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1131
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1132 UNGCPRO;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1133
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1134 return database;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1135 #else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1136 return xrm_create_database ();
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1137 #endif
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1138 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1139
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
1140
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1141 #ifndef MAC_OSX
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1142
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1143 /* The following functions with "sys_" prefix are stubs to Unix
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1144 functions that have already been implemented by CW or MPW. The
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1145 calls to them in Emacs source course are #define'd to call the sys_
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1146 versions by the header files s-mac.h. In these stubs pathnames are
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1147 converted between their Unix and Mac forms. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1148
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1149
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1150 /* Unix epoch is Jan 1, 1970 while Mac epoch is Jan 1, 1904: 66 years
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1151 + 17 leap days. These are for adjusting time values returned by
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1152 MacOS Toolbox functions. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1153
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1154 #define MAC_UNIX_EPOCH_DIFF ((365L * 66 + 17) * 24 * 60 * 60)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1155
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1156 #ifdef __MWERKS__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1157 #if __MSL__ < 0x6000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1158 /* CW Pro 5 epoch is Jan 1, 1900 (aaarghhhhh!); remember, 1900 is not
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1159 a leap year! This is for adjusting time_t values returned by MSL
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1160 functions. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1161 #define CW_OR_MPW_UNIX_EPOCH_DIFF ((365L * 70 + 17) * 24 * 60 * 60)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1162 #else /* __MSL__ >= 0x6000 */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1163 /* CW changes Pro 6 to follow Unix! */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1164 #define CW_OR_MPW_UNIX_EPOCH_DIFF ((365L * 66 + 17) * 24 * 60 * 60)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1165 #endif /* __MSL__ >= 0x6000 */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1166 #elif __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1167 /* MPW library functions follow Unix (confused?). */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1168 #define CW_OR_MPW_UNIX_EPOCH_DIFF ((365L * 66 + 17) * 24 * 60 * 60)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1169 #else /* not __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1170 You lose!!!
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1171 #endif /* not __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1172
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1173
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1174 /* Define our own stat function for both MrC and CW. The reason for
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1175 doing this: "stat" is both the name of a struct and function name:
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1176 can't use the same trick like that for sys_open, sys_close, etc. to
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1177 redirect Emacs's calls to our own version that converts Unix style
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1178 filenames to Mac style filename because all sorts of compilation
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1179 errors will be generated if stat is #define'd to be sys_stat. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1180
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1181 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1182 stat_noalias (const char *path, struct stat *buf)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1183 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1184 char mac_pathname[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1185 CInfoPBRec cipb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1186
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1187 if (posix_to_mac_pathname (path, mac_pathname, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1188 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1189
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1190 c2pstr (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1191 cipb.hFileInfo.ioNamePtr = mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1192 cipb.hFileInfo.ioVRefNum = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1193 cipb.hFileInfo.ioDirID = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1194 cipb.hFileInfo.ioFDirIndex = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1195 /* set to 0 to get information about specific dir or file */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1196
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1197 errno = PBGetCatInfo (&cipb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1198 if (errno == -43) /* -43: fnfErr defined in Errors.h */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1199 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1200 if (errno != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1201 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1202
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1203 if (cipb.hFileInfo.ioFlAttrib & 0x10) /* bit 4 = 1 for directories */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1204 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1205 buf->st_mode = S_IFDIR | S_IREAD | S_IEXEC;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1206
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1207 if (!(cipb.hFileInfo.ioFlAttrib & 0x1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1208 buf->st_mode |= S_IWRITE; /* bit 1 = 1 for locked files/directories */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1209 buf->st_ino = cipb.dirInfo.ioDrDirID;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1210 buf->st_dev = cipb.dirInfo.ioVRefNum;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1211 buf->st_size = cipb.dirInfo.ioDrNmFls;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1212 /* size of dir = number of files and dirs */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1213 buf->st_atime
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1214 = buf->st_mtime
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1215 = cipb.dirInfo.ioDrMdDat - MAC_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1216 buf->st_ctime = cipb.dirInfo.ioDrCrDat - MAC_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1217 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1218 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1219 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1220 buf->st_mode = S_IFREG | S_IREAD;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1221 if (!(cipb.hFileInfo.ioFlAttrib & 0x1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1222 buf->st_mode |= S_IWRITE; /* bit 1 = 1 for locked files/directories */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1223 if (cipb.hFileInfo.ioFlFndrInfo.fdType == 'APPL')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1224 buf->st_mode |= S_IEXEC;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1225 buf->st_ino = cipb.hFileInfo.ioDirID;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1226 buf->st_dev = cipb.hFileInfo.ioVRefNum;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1227 buf->st_size = cipb.hFileInfo.ioFlLgLen;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1228 buf->st_atime
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1229 = buf->st_mtime
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1230 = cipb.hFileInfo.ioFlMdDat - MAC_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1231 buf->st_ctime = cipb.hFileInfo.ioFlCrDat - MAC_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1232 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1233
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1234 if (cipb.hFileInfo.ioFlFndrInfo.fdFlags & 0x8000)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1235 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1236 /* identify alias files as symlinks */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1237 buf->st_mode &= ~S_IFREG;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1238 buf->st_mode |= S_IFLNK;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1239 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1240
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1241 buf->st_nlink = 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1242 buf->st_uid = getuid ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1243 buf->st_gid = getgid ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1244 buf->st_rdev = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1245
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1246 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1247 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1248
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1249
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1250 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1251 lstat (const char *path, struct stat *buf)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1252 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1253 int result;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1254 char true_pathname[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1255
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1256 /* Try looking for the file without resolving aliases first. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1257 if ((result = stat_noalias (path, buf)) >= 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1258 return result;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1259
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1260 if (find_true_pathname (path, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1261 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1262
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1263 return stat_noalias (true_pathname, buf);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1264 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1265
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1266
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1267 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1268 stat (const char *path, struct stat *sb)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1269 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1270 int result;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1271 char true_pathname[MAXPATHLEN+1], fully_resolved_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1272 int len;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1273
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1274 if ((result = stat_noalias (path, sb)) >= 0 &&
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1275 ! (sb->st_mode & S_IFLNK))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1276 return result;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1277
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1278 if (find_true_pathname (path, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1279 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1280
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1281 len = readlink (true_pathname, fully_resolved_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1282 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1283 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1284 fully_resolved_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1285 /* in fact our readlink terminates strings */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1286 return lstat (fully_resolved_name, sb);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1287 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1288 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1289 return lstat (true_pathname, sb);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1290 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1291
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1292
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1293 #if __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1294 /* CW defines fstat in stat.mac.c while MPW does not provide this
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1295 function. Without the information of how to get from a file
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1296 descriptor in MPW StdCLib to a Mac OS file spec, it should be hard
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1297 to implement this function. Fortunately, there is only one place
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1298 where this function is called in our configuration: in fileio.c,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1299 where only the st_dev and st_ino fields are used to determine
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1300 whether two fildes point to different i-nodes to prevent copying
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1301 a file onto itself equal. What we have here probably needs
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1302 improvement. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1303
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1304 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1305 fstat (int fildes, struct stat *buf)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1306 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1307 buf->st_dev = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1308 buf->st_ino = fildes;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1309 buf->st_mode = S_IFREG; /* added by T.I. for the copy-file */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1310 return 0; /* success */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1311 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1312 #endif /* __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1313
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1314
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1315 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1316 mkdir (const char *dirname, int mode)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1317 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1318 #pragma unused(mode)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1319
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1320 HFileParam hfpb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1321 char true_pathname[MAXPATHLEN+1], mac_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1322
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1323 if (find_true_pathname (dirname, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1324 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1325
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1326 if (posix_to_mac_pathname (true_pathname, mac_pathname, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1327 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1328
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1329 c2pstr (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1330 hfpb.ioNamePtr = mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1331 hfpb.ioVRefNum = 0; /* ignored unless name is invalid */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1332 hfpb.ioDirID = 0; /* parent is the root */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1333
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1334 errno = PBDirCreate ((HParmBlkPtr) &hfpb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1335 /* just return the Mac OSErr code for now */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1336 return errno == noErr ? 0 : -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1337 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1338
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1339
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1340 #undef rmdir
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1341 sys_rmdir (const char *dirname)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1342 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1343 HFileParam hfpb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1344 char mac_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1345
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1346 if (posix_to_mac_pathname (dirname, mac_pathname, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1347 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1348
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1349 c2pstr (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1350 hfpb.ioNamePtr = mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1351 hfpb.ioVRefNum = 0; /* ignored unless name is invalid */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1352 hfpb.ioDirID = 0; /* parent is the root */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1353
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1354 errno = PBHDelete ((HParmBlkPtr) &hfpb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1355 return errno == noErr ? 0 : -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1356 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1357
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1358
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1359 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1360 /* No implementation yet. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1361 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1362 execvp (const char *path, ...)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1363 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1364 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1365 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1366 #endif /* __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1367
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1368
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1369 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1370 utime (const char *path, const struct utimbuf *times)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1371 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1372 char true_pathname[MAXPATHLEN+1], fully_resolved_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1373 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1374 char mac_pathname[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1375 CInfoPBRec cipb;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1376
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1377 if (find_true_pathname (path, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1378 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1379
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1380 len = readlink (true_pathname, fully_resolved_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1381 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1382 fully_resolved_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1383 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1384 strcpy (fully_resolved_name, true_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1385
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1386 if (!posix_to_mac_pathname (fully_resolved_name, mac_pathname, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1387 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1388
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1389 c2pstr (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1390 cipb.hFileInfo.ioNamePtr = mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1391 cipb.hFileInfo.ioVRefNum = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1392 cipb.hFileInfo.ioDirID = 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1393 cipb.hFileInfo.ioFDirIndex = 0;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1394 /* set to 0 to get information about specific dir or file */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1395
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1396 errno = PBGetCatInfo (&cipb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1397 if (errno != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1398 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1399
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1400 if (cipb.hFileInfo.ioFlAttrib & 0x10) /* bit 4 = 1 for directories */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1401 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1402 if (times)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1403 cipb.dirInfo.ioDrMdDat = times->modtime + MAC_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1404 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1405 GetDateTime (&cipb.dirInfo.ioDrMdDat);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1406 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1407 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1408 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1409 if (times)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1410 cipb.hFileInfo.ioFlMdDat = times->modtime + MAC_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1411 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1412 GetDateTime (&cipb.hFileInfo.ioFlMdDat);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1413 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1414
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1415 errno = PBSetCatInfo (&cipb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1416 return errno == noErr ? 0 : -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1417 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1418
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1419
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1420 #ifndef F_OK
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1421 #define F_OK 0
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1422 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1423 #ifndef X_OK
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1424 #define X_OK 1
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1425 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1426 #ifndef W_OK
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1427 #define W_OK 2
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1428 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1429
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1430 /* Like stat, but test for access mode in hfpb.ioFlAttrib */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1431 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1432 access (const char *path, int mode)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1433 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1434 char true_pathname[MAXPATHLEN+1], fully_resolved_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1435 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1436 char mac_pathname[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1437 CInfoPBRec cipb;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1438
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1439 if (find_true_pathname (path, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1440 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1441
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1442 len = readlink (true_pathname, fully_resolved_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1443 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1444 fully_resolved_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1445 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1446 strcpy (fully_resolved_name, true_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1447
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1448 if (!posix_to_mac_pathname (fully_resolved_name, mac_pathname, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1449 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1450
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1451 c2pstr (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1452 cipb.hFileInfo.ioNamePtr = mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1453 cipb.hFileInfo.ioVRefNum = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1454 cipb.hFileInfo.ioDirID = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1455 cipb.hFileInfo.ioFDirIndex = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1456 /* set to 0 to get information about specific dir or file */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1457
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1458 errno = PBGetCatInfo (&cipb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1459 if (errno != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1460 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1461
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1462 if (mode == F_OK) /* got this far, file exists */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1463 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1464
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1465 if (mode & X_OK)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1466 if (cipb.hFileInfo.ioFlAttrib & 0x10) /* path refers to a directory */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1467 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1468 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1469 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1470 if (cipb.hFileInfo.ioFlFndrInfo.fdType == 'APPL')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1471 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1472 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1473 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1474 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1475
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1476 if (mode & W_OK)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1477 return (cipb.hFileInfo.ioFlAttrib & 0x1) ? -1 : 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1478 /* don't allow if lock bit is on */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1479
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1480 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1481 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1482
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1483
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1484 #define DEV_NULL_FD 0x10000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1485
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1486 #undef open
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1487 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1488 sys_open (const char *path, int oflag)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1489 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1490 char true_pathname[MAXPATHLEN+1], fully_resolved_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1491 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1492 char mac_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1493
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1494 if (strcmp (path, "/dev/null") == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1495 return DEV_NULL_FD; /* some bogus fd to be ignored in write */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1496
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1497 if (find_true_pathname (path, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1498 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1499
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1500 len = readlink (true_pathname, fully_resolved_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1501 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1502 fully_resolved_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1503 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1504 strcpy (fully_resolved_name, true_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1505
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1506 if (!posix_to_mac_pathname (fully_resolved_name, mac_pathname, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1507 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1508 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1509 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1510 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1511 int res = open (mac_pathname, oflag);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1512 /* if (oflag == O_WRONLY || oflag == O_RDWR) */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1513 if (oflag & O_CREAT)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1514 fsetfileinfo (mac_pathname, 'EMAx', 'TEXT');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1515 return res;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1516 #else /* not __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1517 return open (mac_pathname, oflag);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1518 #endif /* not __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1519 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1520 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1521
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1522
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1523 #undef creat
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1524 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1525 sys_creat (const char *path, mode_t mode)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1526 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1527 char true_pathname[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1528 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1529 char mac_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1530
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1531 if (find_true_pathname (path, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1532 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1533
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1534 if (!posix_to_mac_pathname (true_pathname, mac_pathname, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1535 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1536 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1537 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1538 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1539 int result = creat (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1540 fsetfileinfo (mac_pathname, 'EMAx', 'TEXT');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1541 return result;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1542 #else /* not __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1543 return creat (mac_pathname, mode);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1544 #endif /* not __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1545 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1546 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1547
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1548
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1549 #undef unlink
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1550 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1551 sys_unlink (const char *path)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1552 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1553 char true_pathname[MAXPATHLEN+1], fully_resolved_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1554 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1555 char mac_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1556
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1557 if (find_true_pathname (path, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1558 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1559
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1560 len = readlink (true_pathname, fully_resolved_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1561 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1562 fully_resolved_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1563 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1564 strcpy (fully_resolved_name, true_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1565
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1566 if (!posix_to_mac_pathname (fully_resolved_name, mac_pathname, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1567 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1568 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1569 return unlink (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1570 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1571
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1572
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1573 #undef read
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1574 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1575 sys_read (int fildes, char *buf, int count)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1576 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1577 if (fildes == 0) /* this should not be used for console input */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1578 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1579 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1580 #if __MSL__ >= 0x6000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1581 return _read (fildes, buf, count);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1582 #else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1583 return read (fildes, buf, count);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1584 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1585 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1586
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1587
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1588 #undef write
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1589 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1590 sys_write (int fildes, const char *buf, int count)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1591 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1592 if (fildes == DEV_NULL_FD)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1593 return count;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1594 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1595 #if __MSL__ >= 0x6000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1596 return _write (fildes, buf, count);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1597 #else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1598 return write (fildes, buf, count);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1599 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1600 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1601
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1602
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1603 #undef rename
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1604 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1605 sys_rename (const char * old_name, const char * new_name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1606 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1607 char true_old_pathname[MAXPATHLEN+1], true_new_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1608 char fully_resolved_old_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1609 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1610 char mac_old_name[MAXPATHLEN+1], mac_new_name[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1611
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1612 if (find_true_pathname (old_name, true_old_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1613 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1614
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1615 len = readlink (true_old_pathname, fully_resolved_old_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1616 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1617 fully_resolved_old_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1618 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1619 strcpy (fully_resolved_old_name, true_old_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1620
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1621 if (find_true_pathname (new_name, true_new_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1622 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1623
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1624 if (strcmp (fully_resolved_old_name, true_new_pathname) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1625 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1626
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1627 if (!posix_to_mac_pathname (fully_resolved_old_name,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1628 mac_old_name,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1629 MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1630 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1631
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1632 if (!posix_to_mac_pathname(true_new_pathname, mac_new_name, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1633 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1634
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1635 /* If a file with new_name already exists, rename deletes the old
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1636 file in Unix. CW version fails in these situation. So we add a
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1637 call to unlink here. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1638 (void) unlink (mac_new_name);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1639
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1640 return rename (mac_old_name, mac_new_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1641 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1642
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1643
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1644 #undef fopen
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1645 extern FILE *fopen (const char *name, const char *mode);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1646 FILE *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1647 sys_fopen (const char *name, const char *mode)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1648 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1649 char true_pathname[MAXPATHLEN+1], fully_resolved_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1650 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1651 char mac_pathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1652
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1653 if (find_true_pathname (name, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1654 return 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1655
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1656 len = readlink (true_pathname, fully_resolved_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1657 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1658 fully_resolved_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1659 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1660 strcpy (fully_resolved_name, true_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1661
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1662 if (!posix_to_mac_pathname (fully_resolved_name, mac_pathname, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1663 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1664 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1665 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1666 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1667 if (mode[0] == 'w' || mode[0] == 'a')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1668 fsetfileinfo (mac_pathname, 'EMAx', 'TEXT');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1669 #endif /* not __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1670 return fopen (mac_pathname, mode);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1671 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1672 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1673
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1674
62283
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1675 #include "keyboard.h"
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1676 extern Boolean mac_wait_next_event (EventRecord *, UInt32, Boolean);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1677
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1678 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1679 select (n, rfds, wfds, efds, timeout)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1680 int n;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1681 SELECT_TYPE *rfds;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1682 SELECT_TYPE *wfds;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1683 SELECT_TYPE *efds;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1684 struct timeval *timeout;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1685 {
62283
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1686 OSErr err;
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1687 #if TARGET_API_MAC_CARBON
60360
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
1688 EventTimeout timeout_sec =
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
1689 (timeout
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
1690 ? (EMACS_SECS (*timeout) * kEventDurationSecond
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
1691 + EMACS_USECS (*timeout) * kEventDurationMicrosecond)
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
1692 : kEventDurationForever);
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
1693
62283
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1694 BLOCK_INPUT;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1695 err = ReceiveNextEvent (0, NULL, timeout_sec, kEventLeaveInQueue, NULL);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1696 UNBLOCK_INPUT;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1697 #else /* not TARGET_API_MAC_CARBON */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1698 EventRecord e;
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1699 UInt32 sleep_time = EMACS_SECS (*timeout) * 60 +
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1700 ((EMACS_USECS (*timeout) * 60) / 1000000);
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1701
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1702 /* Can only handle wait for keyboard input. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1703 if (n > 1 || wfds || efds)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1704 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1705
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1706 /* Also return true if an event other than a keyDown has occurred.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1707 This causes kbd_buffer_get_event in keyboard.c to call
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1708 read_avail_input which in turn calls XTread_socket to poll for
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1709 these events. Otherwise these never get processed except but a
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
1710 very slow poll timer. */
62283
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1711 if (mac_wait_next_event (&e, sleep_time, false))
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1712 err = noErr;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1713 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1714 err = -9875; /* eventLoopTimedOutErr */
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1715 #endif /* not TARGET_API_MAC_CARBON */
62283
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1716
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1717 if (FD_ISSET (0, rfds))
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1718 if (err == noErr)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1719 return 1;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1720 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1721 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1722 FD_ZERO (rfds);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1723 return 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1724 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1725 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1726 if (err == noErr)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1727 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1728 if (input_polling_used ())
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1729 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1730 /* It could be confusing if a real alarm arrives while
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1731 processing the fake one. Turn it off and let the
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1732 handler reset it. */
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1733 extern void poll_for_input_1 P_ ((void));
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1734 int old_poll_suppress_count = poll_suppress_count;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1735 poll_suppress_count = 1;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1736 poll_for_input_1 ();
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1737 poll_suppress_count = old_poll_suppress_count;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1738 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1739 errno = EINTR;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1740 return -1;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1741 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1742 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1743 return 0;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1744 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1745
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1746
62283
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1747 /* Simulation of SIGALRM. The stub for function signal stores the
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1748 signal handler function in alarm_signal_func if a SIGALRM is
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1749 encountered. */
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1750
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1751 #include <signal.h>
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1752 #include "syssignal.h"
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1753
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1754 static TMTask mac_atimer_task;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1755
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1756 static QElemPtr mac_atimer_qlink = (QElemPtr) &mac_atimer_task;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1757
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1758 static int signal_mask = 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1759
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1760 #ifdef __MRC__
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1761 __sigfun alarm_signal_func = (__sigfun) 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1762 #elif __MWERKS__
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1763 __signal_func_ptr alarm_signal_func = (__signal_func_ptr) 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1764 #else /* not __MRC__ and not __MWERKS__ */
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1765 You lose!!!
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1766 #endif /* not __MRC__ and not __MWERKS__ */
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1767
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1768 #undef signal
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1769 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1770 extern __sigfun signal (int signal, __sigfun signal_func);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1771 __sigfun
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1772 sys_signal (int signal_num, __sigfun signal_func)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1773 #elif __MWERKS__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1774 extern __signal_func_ptr signal (int signal, __signal_func_ptr signal_func);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1775 __signal_func_ptr
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1776 sys_signal (int signal_num, __signal_func_ptr signal_func)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1777 #else /* not __MRC__ and not __MWERKS__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1778 You lose!!!
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1779 #endif /* not __MRC__ and not __MWERKS__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1780 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1781 if (signal_num != SIGALRM)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1782 return signal (signal_num, signal_func);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1783 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1784 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1785 #ifdef __MRC__
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1786 __sigfun old_signal_func;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1787 #elif __MWERKS__
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1788 __signal_func_ptr old_signal_func;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1789 #else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1790 You lose!!!
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1791 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1792 old_signal_func = alarm_signal_func;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1793 alarm_signal_func = signal_func;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1794 return old_signal_func;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1795 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1796 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1797
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1798
62283
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1799 static pascal void
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1800 mac_atimer_handler (qlink)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1801 TMTaskPtr qlink;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1802 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1803 if (alarm_signal_func)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1804 (alarm_signal_func) (SIGALRM);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1805 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1806
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1807
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1808 static void
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1809 set_mac_atimer (count)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1810 long count;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1811 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1812 static TimerUPP mac_atimer_handlerUPP = NULL;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1813
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1814 if (mac_atimer_handlerUPP == NULL)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1815 mac_atimer_handlerUPP = NewTimerUPP (mac_atimer_handler);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1816 mac_atimer_task.tmCount = 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1817 mac_atimer_task.tmAddr = mac_atimer_handlerUPP;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1818 mac_atimer_qlink = (QElemPtr) &mac_atimer_task;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1819 InsTime (mac_atimer_qlink);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1820 if (count)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1821 PrimeTime (mac_atimer_qlink, count);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1822 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1823
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1824
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1825 int
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1826 remove_mac_atimer (remaining_count)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1827 long *remaining_count;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1828 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1829 if (mac_atimer_qlink)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1830 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1831 RmvTime (mac_atimer_qlink);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1832 if (remaining_count)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1833 *remaining_count = mac_atimer_task.tmCount;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1834 mac_atimer_qlink = NULL;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1835
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1836 return 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1837 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1838 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1839 return -1;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1840 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1841
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1842
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1843 int
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1844 sigblock (int mask)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1845 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1846 int old_mask = signal_mask;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1847
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1848 signal_mask |= mask;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1849
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1850 if ((old_mask ^ signal_mask) & sigmask (SIGALRM))
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1851 remove_mac_atimer (NULL);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1852
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1853 return old_mask;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1854 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1855
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1856
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1857 int
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1858 sigsetmask (int mask)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1859 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1860 int old_mask = signal_mask;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1861
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1862 signal_mask = mask;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1863
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1864 if ((old_mask ^ signal_mask) & sigmask (SIGALRM))
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1865 if (signal_mask & sigmask (SIGALRM))
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1866 remove_mac_atimer (NULL);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1867 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1868 set_mac_atimer (mac_atimer_task.tmCount);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1869
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1870 return old_mask;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1871 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1872
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1873
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1874 int
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1875 alarm (int seconds)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1876 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1877 long remaining_count;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1878
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1879 if (remove_mac_atimer (&remaining_count) == 0)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1880 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1881 set_mac_atimer (seconds * 1000);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1882
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1883 return remaining_count / 1000;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1884 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1885 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1886 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1887 mac_atimer_task.tmCount = seconds * 1000;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1888
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1889 return 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1890 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1891 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1892
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1893
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1894 int
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1895 setitimer (which, value, ovalue)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1896 int which;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1897 const struct itimerval *value;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1898 struct itimerval *ovalue;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1899 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1900 long remaining_count;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1901 long count = (EMACS_SECS (value->it_value) * 1000
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1902 + (EMACS_USECS (value->it_value) + 999) / 1000);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1903
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1904 if (remove_mac_atimer (&remaining_count) == 0)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1905 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1906 if (ovalue)
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1907 {
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1908 bzero (ovalue, sizeof (*ovalue));
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1909 EMACS_SET_SECS_USECS (ovalue->it_value, remaining_count / 1000,
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1910 (remaining_count % 1000) * 1000);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1911 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1912 set_mac_atimer (count);
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1913 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1914 else
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1915 mac_atimer_task.tmCount = count;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1916
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1917 return 0;
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1918 }
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1919
988827be383c [!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 62054
diff changeset
1920
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1921 /* gettimeofday should return the amount of time (in a timeval
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1922 structure) since midnight today. The toolbox function Microseconds
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1923 returns the number of microseconds (in a UnsignedWide value) since
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1924 the machine was booted. Also making this complicated is WideAdd,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1925 WideSubtract, etc. take wide values. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1926
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1927 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1928 gettimeofday (tp)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1929 struct timeval *tp;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1930 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1931 static inited = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1932 static wide wall_clock_at_epoch, clicks_at_epoch;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1933 UnsignedWide uw_microseconds;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1934 wide w_microseconds;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1935 time_t sys_time (time_t *);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1936
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1937 /* If this function is called for the first time, record the number
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1938 of seconds since midnight and the number of microseconds since
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1939 boot at the time of this first call. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1940 if (!inited)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1941 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1942 time_t systime;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1943 inited = 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1944 systime = sys_time (NULL);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1945 /* Store microseconds since midnight in wall_clock_at_epoch. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1946 WideMultiply (systime, 1000000L, &wall_clock_at_epoch);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1947 Microseconds (&uw_microseconds);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1948 /* Store microseconds since boot in clicks_at_epoch. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1949 clicks_at_epoch.hi = uw_microseconds.hi;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1950 clicks_at_epoch.lo = uw_microseconds.lo;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1951 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1952
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1953 /* Get time since boot */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1954 Microseconds (&uw_microseconds);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1955
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1956 /* Convert to time since midnight*/
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1957 w_microseconds.hi = uw_microseconds.hi;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1958 w_microseconds.lo = uw_microseconds.lo;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1959 WideSubtract (&w_microseconds, &clicks_at_epoch);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1960 WideAdd (&w_microseconds, &wall_clock_at_epoch);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1961 tp->tv_sec = WideDivide (&w_microseconds, 1000000L, &tp->tv_usec);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1962
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1963 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1964 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1965
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1966
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1967 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1968 unsigned int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1969 sleep (unsigned int seconds)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1970 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1971 unsigned long time_up;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1972 EventRecord e;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1973
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1974 time_up = TickCount () + seconds * 60;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1975 while (TickCount () < time_up)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1976 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1977 /* Accept no event; just wait. by T.I. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1978 WaitNextEvent (0, &e, 30, NULL);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1979 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1980
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1981 return (0);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1982 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1983 #endif /* __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1984
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1985
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1986 /* The time functions adjust time values according to the difference
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1987 between the Unix and CW epoches. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1988
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1989 #undef gmtime
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1990 extern struct tm *gmtime (const time_t *);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1991 struct tm *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1992 sys_gmtime (const time_t *timer)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1993 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1994 time_t unix_time = *timer + CW_OR_MPW_UNIX_EPOCH_DIFF;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
1995
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1996 return gmtime (&unix_time);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1997 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1998
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
1999
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2000 #undef localtime
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2001 extern struct tm *localtime (const time_t *);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2002 struct tm *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2003 sys_localtime (const time_t *timer)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2004 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2005 #if __MSL__ >= 0x6000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2006 time_t unix_time = *timer;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2007 #else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2008 time_t unix_time = *timer + CW_OR_MPW_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2009 #endif
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2010
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2011 return localtime (&unix_time);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2012 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2013
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2014
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2015 #undef ctime
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2016 extern char *ctime (const time_t *);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2017 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2018 sys_ctime (const time_t *timer)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2019 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2020 #if __MSL__ >= 0x6000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2021 time_t unix_time = *timer;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2022 #else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2023 time_t unix_time = *timer + CW_OR_MPW_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2024 #endif
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2025
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2026 return ctime (&unix_time);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2027 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2028
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2029
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2030 #undef time
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2031 extern time_t time (time_t *);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2032 time_t
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2033 sys_time (time_t *timer)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2034 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2035 #if __MSL__ >= 0x6000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2036 time_t mac_time = time (NULL);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2037 #else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2038 time_t mac_time = time (NULL) - CW_OR_MPW_UNIX_EPOCH_DIFF;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2039 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2040
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2041 if (timer)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2042 *timer = mac_time;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2043
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2044 return mac_time;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2045 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2046
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2047
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2048 /* no subprocesses, empty wait */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2049
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2050 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2051 wait (int pid)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2052 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2053 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2054 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2055
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2056
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2057 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2058 croak (char *badfunc)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2059 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2060 printf ("%s not yet implemented\r\n", badfunc);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2061 exit (1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2062 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2063
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2064
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2065 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2066 mktemp (char *template)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2067 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2068 int len, k;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2069 static seqnum = 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2070
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2071 len = strlen (template);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2072 k = len - 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2073 while (k >= 0 && template[k] == 'X')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2074 k--;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2075
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2076 k++; /* make k index of first 'X' */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2077
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2078 if (k < len)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2079 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2080 /* Zero filled, number of digits equal to the number of X's. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2081 sprintf (&template[k], "%0*d", len-k, seqnum++);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2082
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2083 return template;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2084 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2085 else
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2086 return 0;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2087 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2088
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2089
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2090 /* Emulate getpwuid, getpwnam and others. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2091
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2092 #define PASSWD_FIELD_SIZE 256
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2093
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2094 static char my_passwd_name[PASSWD_FIELD_SIZE];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2095 static char my_passwd_dir[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2096
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2097 static struct passwd my_passwd =
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2098 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2099 my_passwd_name,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2100 my_passwd_dir,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2101 };
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2102
53122
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2103 static struct group my_group =
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2104 {
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2105 /* There are no groups on the mac, so we just return "root" as the
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2106 group name. */
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2107 "root",
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2108 };
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2109
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2110
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2111 /* Initialized by main () in macterm.c to pathname of emacs directory. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2112
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2113 char emacs_passwd_dir[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2114
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2115 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2116 getwd (char *);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2117
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2118 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2119 init_emacs_passwd_dir ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2120 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2121 int found = false;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2122
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2123 if (getwd (emacs_passwd_dir) && getwd (my_passwd_dir))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2124 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2125 /* Need pathname of first ancestor that begins with "emacs"
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2126 since Mac emacs application is somewhere in the emacs-*
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2127 tree. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2128 int len = strlen (emacs_passwd_dir);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2129 int j = len - 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2130 /* j points to the "/" following the directory name being
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2131 compared. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2132 int i = j - 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2133 while (i >= 0 && !found)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2134 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2135 while (i >= 0 && emacs_passwd_dir[i] != '/')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2136 i--;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2137 if (emacs_passwd_dir[i] == '/' && i+5 < len)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2138 found = (strncmp (&(emacs_passwd_dir[i+1]), "emacs", 5) == 0);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2139 if (found)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2140 emacs_passwd_dir[j+1] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2141 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2142 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2143 j = i;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2144 i = j - 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2145 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2146 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2147 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2148
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2149 if (!found)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2150 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2151 /* Setting to "/" probably won't work but set it to something
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2152 anyway. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2153 strcpy (emacs_passwd_dir, "/");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2154 strcpy (my_passwd_dir, "/");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2155 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2156 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2157
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2158
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2159 static struct passwd emacs_passwd =
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2160 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2161 "emacs",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2162 emacs_passwd_dir,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2163 };
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2164
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2165 static int my_passwd_inited = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2166
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2167
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2168 static void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2169 init_my_passwd ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2170 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2171 char **owner_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2172
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2173 /* Note: my_passwd_dir initialized in int_emacs_passwd_dir to
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2174 directory where Emacs was started. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2175
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2176 owner_name = (char **) GetResource ('STR ',-16096);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2177 if (owner_name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2178 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2179 HLock (owner_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2180 BlockMove ((unsigned char *) *owner_name,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2181 (unsigned char *) my_passwd_name,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2182 *owner_name[0]+1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2183 HUnlock (owner_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2184 p2cstr ((unsigned char *) my_passwd_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2185 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2186 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2187 my_passwd_name[0] = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2188 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2189
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2190
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2191 struct passwd *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2192 getpwuid (uid_t uid)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2193 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2194 if (!my_passwd_inited)
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2195 {
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2196 init_my_passwd ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2197 my_passwd_inited = 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2198 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2199
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2200 return &my_passwd;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2201 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2202
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2203
53122
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2204 struct group *
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2205 getgrgid (gid_t gid)
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2206 {
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2207 return &my_group;
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2208 }
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2209
5544010b4c66 (struct my_group): Added.
Lars Hansen <larsh@soem.dk>
parents: 52401
diff changeset
2210
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2211 struct passwd *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2212 getpwnam (const char *name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2213 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2214 if (strcmp (name, "emacs") == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2215 return &emacs_passwd;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2216
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2217 if (!my_passwd_inited)
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2218 {
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2219 init_my_passwd ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2220 my_passwd_inited = 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2221 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2222
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2223 return &my_passwd;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2224 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2225
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2226
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2227 /* The functions fork, kill, sigsetmask, sigblock, request_sigio,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2228 setpgrp, setpriority, and unrequest_sigio are defined to be empty
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2229 as in msdos.c. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2230
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2231
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2232 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2233 fork ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2234 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2235 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2236 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2237
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2238
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2239 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2240 kill (int x, int y)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2241 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2242 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2243 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2244
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2245
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2246 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2247 sys_subshell ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2248 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2249 error ("Can't spawn subshell");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2250 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2251
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2252
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2253 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2254 request_sigio (void)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2255 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2256 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2257
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2258
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2259 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2260 unrequest_sigio (void)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2261 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2262 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2263
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2264
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2265 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2266 setpgrp ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2267 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2268 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2269 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2270
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2271
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2272 /* No pipes yet. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2273
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2274 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2275 pipe (int _fildes[2])
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2276 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2277 errno = EACCES;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2278 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2279 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2280
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2281
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2282 /* Hard and symbolic links. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2283
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2284 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2285 symlink (const char *name1, const char *name2)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2286 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2287 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2288 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2289 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2290
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2291
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2292 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2293 link (const char *name1, const char *name2)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2294 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2295 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2296 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2297 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2298
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2299 #endif /* ! MAC_OSX */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2300
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2301 /* Determine the path name of the file specified by VREFNUM, DIRID,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2302 and NAME and place that in the buffer PATH of length
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2303 MAXPATHLEN. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2304 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2305 path_from_vol_dir_name (char *path, int man_path_len, short vol_ref_num,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2306 long dir_id, ConstStr255Param name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2307 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2308 Str255 dir_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2309 CInfoPBRec cipb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2310 OSErr err;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2311
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2312 if (strlen (name) > man_path_len)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2313 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2314
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2315 memcpy (dir_name, name, name[0]+1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2316 memcpy (path, name, name[0]+1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2317 p2cstr (path);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2318
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2319 cipb.dirInfo.ioDrParID = dir_id;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2320 cipb.dirInfo.ioNamePtr = dir_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2321
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2322 do
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2323 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2324 cipb.dirInfo.ioVRefNum = vol_ref_num;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2325 cipb.dirInfo.ioFDirIndex = -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2326 cipb.dirInfo.ioDrDirID = cipb.dirInfo.ioDrParID;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2327 /* go up to parent each time */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2328
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2329 err = PBGetCatInfo (&cipb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2330 if (err != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2331 return 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2332
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2333 p2cstr (dir_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2334 if (strlen (dir_name) + strlen (path) + 1 >= man_path_len)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2335 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2336
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2337 strcat (dir_name, ":");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2338 strcat (dir_name, path);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2339 /* attach to front since we're going up directory tree */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2340 strcpy (path, dir_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2341 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2342 while (cipb.dirInfo.ioDrDirID != fsRtDirID);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2343 /* stop when we see the volume's root directory */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2344
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2345 return 1; /* success */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2346 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2347
60360
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2348
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2349 OSErr
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2350 posix_pathname_to_fsspec (ufn, fs)
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2351 const char *ufn;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2352 FSSpec *fs;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2353 {
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2354 Str255 mac_pathname;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2355
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2356 if (posix_to_mac_pathname (ufn, mac_pathname, sizeof (mac_pathname)) == 0)
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2357 return fnfErr;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2358 else
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2359 {
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2360 c2pstr (mac_pathname);
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2361 return FSMakeFSSpec (0, 0, mac_pathname, fs);
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2362 }
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2363 }
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2364
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2365 OSErr
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2366 fsspec_to_posix_pathname (fs, ufn, ufnbuflen)
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2367 const FSSpec *fs;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2368 char *ufn;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2369 int ufnbuflen;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2370 {
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2371 char mac_pathname[MAXPATHLEN];
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2372
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2373 if (path_from_vol_dir_name (mac_pathname, sizeof (mac_pathname) - 1,
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2374 fs->vRefNum, fs->parID, fs->name)
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2375 && mac_to_posix_pathname (mac_pathname, ufn, ufnbuflen))
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2376 return noErr;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2377 else
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2378 return fnfErr;
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2379 }
86edfe26d552 [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59897
diff changeset
2380
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2381 #ifndef MAC_OSX
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2382
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2383 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2384 readlink (const char *path, char *buf, int bufsiz)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2385 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2386 char mac_sym_link_name[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2387 OSErr err;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2388 FSSpec fsspec;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2389 Boolean target_is_folder, was_aliased;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2390 Str255 directory_name, mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2391 CInfoPBRec cipb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2392
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2393 if (posix_to_mac_pathname (path, mac_sym_link_name, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2394 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2395
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2396 c2pstr (mac_sym_link_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2397 err = FSMakeFSSpec (0, 0, mac_sym_link_name, &fsspec);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2398 if (err != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2399 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2400 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2401 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2402 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2403
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2404 err = ResolveAliasFile (&fsspec, true, &target_is_folder, &was_aliased);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2405 if (err != noErr || !was_aliased)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2406 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2407 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2408 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2409 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2410
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2411 if (path_from_vol_dir_name (mac_pathname, 255, fsspec.vRefNum, fsspec.parID,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2412 fsspec.name) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2413 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2414 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2415 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2416 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2417
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2418 if (mac_to_posix_pathname (mac_pathname, buf, bufsiz) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2419 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2420 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2421 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2422 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2423
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2424 return strlen (buf);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2425 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2426
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2427
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2428 /* Convert a path to one with aliases fully expanded. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2429
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2430 static int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2431 find_true_pathname (const char *path, char *buf, int bufsiz)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2432 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2433 char *q, temp[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2434 const char *p;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2435 int len;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2436
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2437 if (bufsiz <= 0 || path == 0 || path[0] == '\0')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2438 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2439
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2440 buf[0] = '\0';
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2441
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2442 p = path;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2443 if (*p == '/')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2444 q = strchr (p + 1, '/');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2445 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2446 q = strchr (p, '/');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2447 len = 0; /* loop may not be entered, e.g., for "/" */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2448
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2449 while (q)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2450 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2451 strcpy (temp, buf);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2452 strncat (temp, p, q - p);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2453 len = readlink (temp, buf, bufsiz);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2454 if (len <= -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2455 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2456 if (strlen (temp) + 1 > bufsiz)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2457 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2458 strcpy (buf, temp);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2459 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2460 strcat (buf, "/");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2461 len++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2462 p = q + 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2463 q = strchr(p, '/');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2464 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2465
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2466 if (len + strlen (p) + 1 >= bufsiz)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2467 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2468
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2469 strcat (buf, p);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2470 return len + strlen (p);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2471 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2472
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2473
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2474 mode_t
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2475 umask (mode_t numask)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2476 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2477 static mode_t mask = 022;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2478 mode_t oldmask = mask;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2479 mask = numask;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2480 return oldmask;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2481 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2482
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2483
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2484 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2485 chmod (const char *path, mode_t mode)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2486 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2487 /* say it always succeed for now */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2488 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2489 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2490
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2491
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2492 int
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2493 fchmod (int fd, mode_t mode)
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2494 {
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2495 /* say it always succeed for now */
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2496 return 0;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2497 }
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2498
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2499
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2500 int
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2501 fchown (int fd, uid_t owner, gid_t group)
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2502 {
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2503 /* say it always succeed for now */
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2504 return 0;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2505 }
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2506
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2507
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
2508 int
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2509 dup (int oldd)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2510 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2511 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2512 return fcntl (oldd, F_DUPFD, 0);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2513 #elif __MWERKS__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2514 /* current implementation of fcntl in fcntl.mac.c simply returns old
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2515 descriptor */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2516 return fcntl (oldd, F_DUPFD);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2517 #else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2518 You lose!!!
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2519 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2520 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2521
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2522
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2523 /* This is from the original sysdep.c. Emulate BSD dup2. First close
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2524 newd if it already exists. Then, attempt to dup oldd. If not
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2525 successful, call dup2 recursively until we are, then close the
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2526 unsuccessful ones. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2527
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2528 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2529 dup2 (int oldd, int newd)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2530 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2531 int fd, ret;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2532
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2533 close (newd);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2534
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2535 fd = dup (oldd);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2536 if (fd == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2537 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2538 if (fd == newd)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2539 return newd;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2540 ret = dup2 (oldd, newd);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2541 close (fd);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2542 return ret;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2543 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2544
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2545
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2546 /* let it fail for now */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2547
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2548 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2549 sbrk (int incr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2550 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2551 return (char *) -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2552 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2553
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2554
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2555 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2556 fsync (int fd)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2557 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2558 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2559 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2560
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2561
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2562 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2563 ioctl (int d, int request, void *argp)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2564 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2565 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2566 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2567
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2568
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2569 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2570 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2571 isatty (int fildes)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2572 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2573 if (fildes >=0 && fildes <= 2)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2574 return 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2575 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2576 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2577 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2578
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2579
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2580 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2581 getgid ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2582 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2583 return 100;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2584 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2585
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2586
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2587 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2588 getegid ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2589 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2590 return 100;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2591 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2592
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2593
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2594 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2595 getuid ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2596 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2597 return 200;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2598 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2599
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2600
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2601 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2602 geteuid ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2603 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2604 return 200;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2605 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2606 #endif /* __MRC__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2607
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2608
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2609 #ifdef __MWERKS__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2610 #if __MSL__ < 0x6000
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2611 #undef getpid
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2612 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2613 getpid ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2614 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2615 return 9999;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2616 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2617 #endif
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2618 #endif /* __MWERKS__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2619
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2620 #endif /* ! MAC_OSX */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2621
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2622
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2623 /* Return the path to the directory in which Emacs can create
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2624 temporary files. The MacOS "temporary items" directory cannot be
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2625 used because it removes the file written by a process when it
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2626 exits. In that sense it's more like "/dev/null" than "/tmp" (but
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2627 again not exactly). And of course Emacs needs to read back the
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2628 files written by its subprocesses. So here we write the files to a
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2629 directory "Emacs" in the Preferences Folder. This directory is
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2630 created if it does not exist. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2631
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2632 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2633 get_temp_dir_name ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2634 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2635 static char *temp_dir_name = NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2636 short vol_ref_num;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2637 long dir_id;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2638 OSErr err;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2639 Str255 dir_name, full_path;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2640 CInfoPBRec cpb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2641 char unix_dir_name[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2642 DIR *dir;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2643
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2644 /* Cache directory name with pointer temp_dir_name.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2645 Look for it only the first time. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2646 if (!temp_dir_name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2647 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2648 err = FindFolder (kOnSystemDisk, kPreferencesFolderType, kCreateFolder,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2649 &vol_ref_num, &dir_id);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2650 if (err != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2651 return NULL;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2652
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2653 if (!path_from_vol_dir_name (full_path, 255, vol_ref_num, dir_id, "\p"))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2654 return NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2655
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2656 if (strlen (full_path) + 6 <= MAXPATHLEN)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2657 strcat (full_path, "Emacs:");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2658 else
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2659 return NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2660
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2661 if (!mac_to_posix_pathname (full_path, unix_dir_name, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2662 return NULL;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2663
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2664 dir = opendir (unix_dir_name); /* check whether temp directory exists */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2665 if (dir)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2666 closedir (dir);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2667 else if (mkdir (unix_dir_name, 0700) != 0) /* create it if not */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2668 return NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2669
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2670 temp_dir_name = (char *) malloc (strlen (unix_dir_name) + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2671 strcpy (temp_dir_name, unix_dir_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2672 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2673
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2674 return temp_dir_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2675 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2676
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2677 #ifndef MAC_OSX
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2678
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2679 /* Allocate and construct an array of pointers to strings from a list
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2680 of strings stored in a 'STR#' resource. The returned pointer array
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2681 is stored in the style of argv and environ: if the 'STR#' resource
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2682 contains numString strings, a pointer array with numString+1
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2683 elements is returned in which the last entry contains a null
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2684 pointer. The pointer to the pointer array is passed by pointer in
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2685 parameter t. The resource ID of the 'STR#' resource is passed in
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2686 parameter StringListID.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2687 */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2688
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2689 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2690 get_string_list (char ***t, short string_list_id)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2691 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2692 Handle h;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2693 Ptr p;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2694 int i, num_strings;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2695
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2696 h = GetResource ('STR#', string_list_id);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2697 if (h)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2698 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2699 HLock (h);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2700 p = *h;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2701 num_strings = * (short *) p;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2702 p += sizeof(short);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2703 *t = (char **) malloc (sizeof (char *) * (num_strings + 1));
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2704 for (i = 0; i < num_strings; i++)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2705 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2706 short length = *p++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2707 (*t)[i] = (char *) malloc (length + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2708 strncpy ((*t)[i], p, length);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2709 (*t)[i][length] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2710 p += length;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2711 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2712 (*t)[num_strings] = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2713 HUnlock (h);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2714 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2715 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2716 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2717 /* Return no string in case GetResource fails. Bug fixed by
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2718 Ikegami Tsutomu. Caused MPW build to crash without sym -on
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2719 option (no sym -on implies -opt local). */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2720 *t = (char **) malloc (sizeof (char *));
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2721 (*t)[0] = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2722 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2723 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2724
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2725
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2726 static char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2727 get_path_to_system_folder ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2728 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2729 short vol_ref_num;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2730 long dir_id;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2731 OSErr err;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2732 Str255 dir_name, full_path;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2733 CInfoPBRec cpb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2734 static char system_folder_unix_name[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2735 DIR *dir;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2736
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2737 err = FindFolder (kOnSystemDisk, kSystemFolderType, kDontCreateFolder,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2738 &vol_ref_num, &dir_id);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2739 if (err != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2740 return NULL;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2741
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2742 if (!path_from_vol_dir_name (full_path, 255, vol_ref_num, dir_id, "\p"))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2743 return NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2744
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2745 if (!mac_to_posix_pathname (full_path, system_folder_unix_name,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2746 MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2747 return NULL;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2748
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2749 return system_folder_unix_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2750 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2751
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2752
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2753 char **environ;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2754
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2755 #define ENVIRON_STRING_LIST_ID 128
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2756
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2757 /* Get environment variable definitions from STR# resource. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2758
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2759 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2760 init_environ ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2761 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2762 int i;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2763
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2764 get_string_list (&environ, ENVIRON_STRING_LIST_ID);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2765
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2766 i = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2767 while (environ[i])
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2768 i++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2769
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2770 /* Make HOME directory the one Emacs starts up in if not specified
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2771 by resource. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2772 if (getenv ("HOME") == NULL)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2773 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2774 environ = (char **) realloc (environ, sizeof (char *) * (i + 2));
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2775 if (environ)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2776 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2777 environ[i] = (char *) malloc (strlen (my_passwd_dir) + 6);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2778 if (environ[i])
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2779 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2780 strcpy (environ[i], "HOME=");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2781 strcat (environ[i], my_passwd_dir);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2782 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2783 environ[i+1] = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2784 i++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2785 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2786 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2787
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2788 /* Make HOME directory the one Emacs starts up in if not specified
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2789 by resource. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2790 if (getenv ("MAIL") == NULL)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2791 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2792 environ = (char **) realloc (environ, sizeof (char *) * (i + 2));
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2793 if (environ)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2794 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2795 char * path_to_system_folder = get_path_to_system_folder ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2796 environ[i] = (char *) malloc (strlen (path_to_system_folder) + 22);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2797 if (environ[i])
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2798 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2799 strcpy (environ[i], "MAIL=");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2800 strcat (environ[i], path_to_system_folder);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2801 strcat (environ[i], "Eudora Folder/In");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2802 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2803 environ[i+1] = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2804 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2805 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2806 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2807
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2808
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2809 /* Return the value of the environment variable NAME. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2810
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2811 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2812 getenv (const char *name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2813 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2814 int length = strlen(name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2815 char **e;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2816
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2817 for (e = environ; *e != 0; e++)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2818 if (strncmp(*e, name, length) == 0 && (*e)[length] == '=')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2819 return &(*e)[length + 1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2820
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2821 if (strcmp (name, "TMPDIR") == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2822 return get_temp_dir_name ();
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2823
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2824 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2825 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2826
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2827
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2828 #ifdef __MRC__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2829 /* see Interfaces&Libraries:Interfaces:CIncludes:signal.h */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2830 char *sys_siglist[] =
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2831 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2832 "Zero is not a signal!!!",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2833 "Abort", /* 1 */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2834 "Interactive user interrupt", /* 2 */ "?",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2835 "Floating point exception", /* 4 */ "?", "?", "?",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2836 "Illegal instruction", /* 8 */ "?", "?", "?", "?", "?", "?", "?",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2837 "Segment violation", /* 16 */ "?", "?", "?", "?", "?", "?", "?",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2838 "?", "?", "?", "?", "?", "?", "?", "?",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2839 "Terminal" /* 32 */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2840 };
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2841 #elif __MWERKS__
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2842 char *sys_siglist[] =
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2843 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2844 "Zero is not a signal!!!",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2845 "Abort",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2846 "Floating point exception",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2847 "Illegal instruction",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2848 "Interactive user interrupt",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2849 "Segment violation",
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2850 "Terminal"
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2851 };
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2852 #else /* not __MRC__ and not __MWERKS__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2853 You lose!!!
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2854 #endif /* not __MRC__ and not __MWERKS__ */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2855
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2856
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2857 #include <utsname.h>
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2858
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2859 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2860 uname (struct utsname *name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2861 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2862 char **system_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2863 system_name = GetString (-16413); /* IM - Resource Manager Reference */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2864 if (system_name)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2865 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2866 BlockMove (*system_name, name->nodename, (*system_name)[0]+1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2867 p2cstr (name->nodename);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2868 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2869 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2870 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2871 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2872 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2873
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2874
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2875 /* Event class of HLE sent to subprocess. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2876 const OSType kEmacsSubprocessSend = 'ESND';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2877
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2878 /* Event class of HLE sent back from subprocess. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2879 const OSType kEmacsSubprocessReply = 'ERPY';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2880
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2881
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2882 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2883 mystrchr (char *s, char c)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2884 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2885 while (*s && *s != c)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2886 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2887 if (*s == '\\')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2888 s++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2889 s++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2890 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2891
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2892 if (*s)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2893 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2894 *s = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2895 return s;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2896 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2897 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2898 return NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2899 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2900
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2901
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2902 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2903 mystrtok (char *s)
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2904 {
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2905 while (*s)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2906 s++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2907
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2908 return s + 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2909 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2910
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2911
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2912 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2913 mystrcpy (char *to, char *from)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2914 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2915 while (*from)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2916 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2917 if (*from == '\\')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2918 from++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2919 *to++ = *from++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2920 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2921 *to = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2922 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2923
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2924
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2925 /* Start a Mac subprocess. Arguments for it is passed in argv (null
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2926 terminated). The process should run with the default directory
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2927 "workdir", read input from "infn", and write output and error to
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2928 "outfn" and "errfn", resp. The Process Manager call
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2929 LaunchApplication is used to start the subprocess. We use high
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2930 level events as the mechanism to pass arguments to the subprocess
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2931 and to make Emacs wait for the subprocess to terminate and pass
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2932 back a result code. The bulk of the code here packs the arguments
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2933 into one message to be passed together with the high level event.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2934 Emacs also sometimes starts a subprocess using a shell to perform
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2935 wildcard filename expansion. Since we don't really have a shell on
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2936 the Mac, this case is detected and the starting of the shell is
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2937 by-passed. We really need to add code here to do filename
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2938 expansion to support such functionality. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2939
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2940 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2941 run_mac_command (argv, workdir, infn, outfn, errfn)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2942 unsigned char **argv;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2943 const char *workdir;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2944 const char *infn, *outfn, *errfn;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2945 {
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
2946 #if TARGET_API_MAC_CARBON
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2947 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2948 #else /* not TARGET_API_MAC_CARBON */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2949 char macappname[MAXPATHLEN+1], macworkdir[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2950 char macinfn[MAXPATHLEN+1], macoutfn[MAXPATHLEN+1], macerrfn[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2951 int paramlen, argc, newargc, j, retries;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2952 char **newargv, *param, *p;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2953 OSErr iErr;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2954 FSSpec spec;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2955 LaunchParamBlockRec lpbr;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2956 EventRecord send_event, reply_event;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2957 RgnHandle cursor_region_handle;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2958 TargetID targ;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2959 unsigned long ref_con, len;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2960
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2961 if (posix_to_mac_pathname (workdir, macworkdir, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2962 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2963 if (posix_to_mac_pathname (infn, macinfn, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2964 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2965 if (posix_to_mac_pathname (outfn, macoutfn, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2966 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2967 if (posix_to_mac_pathname (errfn, macerrfn, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2968 return -1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2969
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2970 paramlen = strlen (macworkdir) + strlen (macinfn) + strlen (macoutfn)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2971 + strlen (macerrfn) + 4; /* count nulls at end of strings */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2972
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2973 argc = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2974 while (argv[argc])
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2975 argc++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2976
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2977 if (argc == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2978 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2979
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2980 /* If a subprocess is invoked with a shell, we receive 3 arguments
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2981 of the form: "<path to emacs bins>/sh" "-c" "<path to emacs
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2982 bins>/<command> <command args>" */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2983 j = strlen (argv[0]);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2984 if (j >= 3 && strcmp (argv[0]+j-3, "/sh") == 0
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2985 && argc == 3 && strcmp (argv[1], "-c") == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2986 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2987 char *command, *t, tempmacpathname[MAXPATHLEN+1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2988
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2989 /* The arguments for the command in argv[2] are separated by
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2990 spaces. Count them and put the count in newargc. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2991 command = (char *) alloca (strlen (argv[2])+2);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2992 strcpy (command, argv[2]);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2993 if (command[strlen (command) - 1] != ' ')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2994 strcat (command, " ");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
2995
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2996 t = command;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2997 newargc = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2998 t = mystrchr (t, ' ');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
2999 while (t)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3000 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3001 newargc++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3002 t = mystrchr (t+1, ' ');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3003 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3004
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3005 newargv = (char **) alloca (sizeof (char *) * newargc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3006
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3007 t = command;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3008 for (j = 0; j < newargc; j++)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3009 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3010 newargv[j] = (char *) alloca (strlen (t) + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3011 mystrcpy (newargv[j], t);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3012
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3013 t = mystrtok (t);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3014 paramlen += strlen (newargv[j]) + 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3015 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3016
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3017 if (strncmp (newargv[0], "~emacs/", 7) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3018 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3019 if (posix_to_mac_pathname (newargv[0], tempmacpathname, MAXPATHLEN+1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3020 == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3021 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3022 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3023 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3024 { /* sometimes Emacs call "sh" without a path for the command */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3025 #if 0
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3026 char *t = (char *) alloca (strlen (newargv[0]) + 7 + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3027 strcpy (t, "~emacs/");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3028 strcat (t, newargv[0]);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3029 #endif /* 0 */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3030 Lisp_Object path;
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
3031 openp (Vexec_path, build_string (newargv[0]), Vexec_suffixes, &path,
45004
303384b6edc4 (run_mac_command): Update call to openp.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44890
diff changeset
3032 make_number (X_OK));
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3033
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3034 if (NILP (path))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3035 return -1;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 45851
diff changeset
3036 if (posix_to_mac_pathname (SDATA (path), tempmacpathname,
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3037 MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3038 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3039 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3040 strcpy (macappname, tempmacpathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3041 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3042 else
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3043 {
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3044 if (posix_to_mac_pathname (argv[0], macappname, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3045 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3046
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3047 newargv = (char **) alloca (sizeof (char *) * argc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3048 newargc = argc;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3049 for (j = 1; j < argc; j++)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3050 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3051 if (strncmp (argv[j], "~emacs/", 7) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3052 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3053 char *t = strchr (argv[j], ' ');
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3054 if (t)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3055 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3056 char tempcmdname[MAXPATHLEN+1], tempmaccmdname[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3057 strncpy (tempcmdname, argv[j], t-argv[j]);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3058 tempcmdname[t-argv[j]] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3059 if (posix_to_mac_pathname (tempcmdname, tempmaccmdname,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3060 MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3061 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3062 newargv[j] = (char *) alloca (strlen (tempmaccmdname)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3063 + strlen (t) + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3064 strcpy (newargv[j], tempmaccmdname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3065 strcat (newargv[j], t);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3066 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3067 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3068 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3069 char tempmaccmdname[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3070 if (posix_to_mac_pathname (argv[j], tempmaccmdname,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3071 MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3072 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3073 newargv[j] = (char *) alloca (strlen (tempmaccmdname)+1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3074 strcpy (newargv[j], tempmaccmdname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3075 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3076 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3077 else
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3078 newargv[j] = argv[j];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3079 paramlen += strlen (newargv[j]) + 1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3080 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3081 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3082
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3083 /* After expanding all the arguments, we now know the length of the
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3084 parameter block to be sent to the subprocess as a message
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3085 attached to the HLE. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3086 param = (char *) malloc (paramlen + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3087 if (!param)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3088 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3089
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3090 p = param;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3091 *p++ = newargc;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3092 /* first byte of message contains number of arguments for command */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3093 strcpy (p, macworkdir);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3094 p += strlen (macworkdir);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3095 *p++ = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3096 /* null terminate strings sent so it's possible to use strcpy over there */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3097 strcpy (p, macinfn);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3098 p += strlen (macinfn);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3099 *p++ = '\0';
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3100 strcpy (p, macoutfn);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3101 p += strlen (macoutfn);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3102 *p++ = '\0';
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3103 strcpy (p, macerrfn);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3104 p += strlen (macerrfn);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3105 *p++ = '\0';
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3106 for (j = 1; j < newargc; j++)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3107 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3108 strcpy (p, newargv[j]);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3109 p += strlen (newargv[j]);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3110 *p++ = '\0';
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3111 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3112
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3113 c2pstr (macappname);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3114
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3115 iErr = FSMakeFSSpec (0, 0, macappname, &spec);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3116
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3117 if (iErr != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3118 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3119 free (param);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3120 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3121 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3122
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3123 lpbr.launchBlockID = extendedBlock;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3124 lpbr.launchEPBLength = extendedBlockLen;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3125 lpbr.launchControlFlags = launchContinue + launchNoFileFlags;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3126 lpbr.launchAppSpec = &spec;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3127 lpbr.launchAppParameters = NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3128
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3129 iErr = LaunchApplication (&lpbr); /* call the subprocess */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3130 if (iErr != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3131 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3132 free (param);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3133 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3134 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3135
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3136 send_event.what = kHighLevelEvent;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3137 send_event.message = kEmacsSubprocessSend;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3138 /* Event ID stored in "where" unused */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3139
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3140 retries = 3;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3141 /* OS may think current subprocess has terminated if previous one
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3142 terminated recently. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3143 do
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3144 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3145 iErr = PostHighLevelEvent (&send_event, &lpbr.launchProcessSN, 0, param,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3146 paramlen + 1, receiverIDisPSN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3147 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3148 while (iErr == sessClosedErr && retries-- > 0);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3149
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3150 if (iErr != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3151 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3152 free (param);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3153 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3154 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3155
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3156 cursor_region_handle = NewRgn ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3157
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3158 /* Wait for the subprocess to finish, when it will send us a ERPY
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3159 high level event. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3160 while (1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3161 if (WaitNextEvent (highLevelEventMask, &reply_event, 180,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3162 cursor_region_handle)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3163 && reply_event.message == kEmacsSubprocessReply)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3164 break;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3165
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3166 /* The return code is sent through the refCon */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3167 iErr = AcceptHighLevelEvent (&targ, &ref_con, NULL, &len);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3168 if (iErr != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3169 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3170 DisposeHandle ((Handle) cursor_region_handle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3171 free (param);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3172 return -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3173 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3174
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3175 DisposeHandle ((Handle) cursor_region_handle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3176 free (param);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3177
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3178 return ref_con;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3179 #endif /* not TARGET_API_MAC_CARBON */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3180 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3181
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3182
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3183 DIR *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3184 opendir (const char *dirname)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3185 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3186 char true_pathname[MAXPATHLEN+1], fully_resolved_name[MAXPATHLEN+1];
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3187 char mac_pathname[MAXPATHLEN+1], vol_name[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3188 DIR *dirp;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3189 CInfoPBRec cipb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3190 HVolumeParam vpb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3191 int len, vol_name_len;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3192
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3193 if (find_true_pathname (dirname, true_pathname, MAXPATHLEN+1) == -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3194 return 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3195
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3196 len = readlink (true_pathname, fully_resolved_name, MAXPATHLEN);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3197 if (len > -1)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3198 fully_resolved_name[len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3199 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3200 strcpy (fully_resolved_name, true_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3201
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3202 dirp = (DIR *) malloc (sizeof(DIR));
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3203 if (!dirp)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3204 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3205
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3206 /* Handle special case when dirname is "/": sets up for readir to
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3207 get all mount volumes. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3208 if (strcmp (fully_resolved_name, "/") == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3209 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3210 dirp->getting_volumes = 1; /* special all mounted volumes DIR struct */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3211 dirp->current_index = 1; /* index for first volume */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3212 return dirp;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3213 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3214
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3215 /* Handle typical cases: not accessing all mounted volumes. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3216 if (!posix_to_mac_pathname (fully_resolved_name, mac_pathname, MAXPATHLEN+1))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3217 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3218
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3219 /* Emacs calls opendir without the trailing '/', Mac needs trailing ':' */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3220 len = strlen (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3221 if (mac_pathname[len - 1] != ':' && len < MAXPATHLEN)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3222 strcat (mac_pathname, ":");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3223
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3224 /* Extract volume name */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3225 vol_name_len = strchr (mac_pathname, ':') - mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3226 strncpy (vol_name, mac_pathname, vol_name_len);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3227 vol_name[vol_name_len] = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3228 strcat (vol_name, ":");
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3229
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3230 c2pstr (mac_pathname);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3231 cipb.hFileInfo.ioNamePtr = mac_pathname;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3232 /* using full pathname so vRefNum and DirID ignored */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3233 cipb.hFileInfo.ioVRefNum = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3234 cipb.hFileInfo.ioDirID = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3235 cipb.hFileInfo.ioFDirIndex = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3236 /* set to 0 to get information about specific dir or file */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3237
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3238 errno = PBGetCatInfo (&cipb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3239 if (errno != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3240 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3241 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3242 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3243 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3244
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3245 if (!(cipb.hFileInfo.ioFlAttrib & 0x10)) /* bit 4 = 1 for directories */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3246 return 0; /* not a directory */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3247
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3248 dirp->dir_id = cipb.dirInfo.ioDrDirID; /* used later in readdir */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3249 dirp->getting_volumes = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3250 dirp->current_index = 1; /* index for first file/directory */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3251
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3252 c2pstr (vol_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3253 vpb.ioNamePtr = vol_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3254 /* using full pathname so vRefNum and DirID ignored */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3255 vpb.ioVRefNum = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3256 vpb.ioVolIndex = -1;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3257 errno = PBHGetVInfo ((union HParamBlockRec *) &vpb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3258 if (errno != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3259 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3260 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3261 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3262 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3263
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3264 dirp->vol_ref_num = vpb.ioVRefNum;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3265
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3266 return dirp;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3267 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3268
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3269 int
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3270 closedir (DIR *dp)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3271 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3272 free (dp);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3273
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3274 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3275 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3276
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3277
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3278 struct dirent *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3279 readdir (DIR *dp)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3280 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3281 HParamBlockRec hpblock;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3282 CInfoPBRec cipb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3283 static struct dirent s_dirent;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3284 static Str255 s_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3285 int done;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3286 char *p;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3287
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3288 /* Handle the root directory containing the mounted volumes. Call
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3289 PBHGetVInfo specifying an index to obtain the info for a volume.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3290 PBHGetVInfo returns an error when it receives an index beyond the
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3291 last volume, at which time we should return a nil dirent struct
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3292 pointer. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3293 if (dp->getting_volumes)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3294 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3295 hpblock.volumeParam.ioNamePtr = s_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3296 hpblock.volumeParam.ioVRefNum = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3297 hpblock.volumeParam.ioVolIndex = dp->current_index;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3298
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3299 errno = PBHGetVInfo (&hpblock, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3300 if (errno != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3301 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3302 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3303 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3304 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3305
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3306 p2cstr (s_name);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3307 strcat (s_name, "/"); /* need "/" for stat to work correctly */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3308
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3309 dp->current_index++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3310
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3311 s_dirent.d_ino = hpblock.volumeParam.ioVRefNum;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3312 s_dirent.d_name = s_name;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3313
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3314 return &s_dirent;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3315 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3316 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3317 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3318 cipb.hFileInfo.ioVRefNum = dp->vol_ref_num;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3319 cipb.hFileInfo.ioNamePtr = s_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3320 /* location to receive filename returned */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3321
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3322 /* return only visible files */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3323 done = false;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3324 while (!done)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3325 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3326 cipb.hFileInfo.ioDirID = dp->dir_id;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3327 /* directory ID found by opendir */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3328 cipb.hFileInfo.ioFDirIndex = dp->current_index;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3329
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3330 errno = PBGetCatInfo (&cipb, false);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3331 if (errno != noErr)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3332 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3333 errno = ENOENT;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3334 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3335 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3336
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3337 /* insist on a visible entry */
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3338 if (cipb.hFileInfo.ioFlAttrib & 0x10) /* directory? */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3339 done = !(cipb.dirInfo.ioDrUsrWds.frFlags & fInvisible);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3340 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3341 done = !(cipb.hFileInfo.ioFlFndrInfo.fdFlags & fInvisible);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3342
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3343 dp->current_index++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3344 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3345
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3346 p2cstr (s_name);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3347
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3348 p = s_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3349 while (*p)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3350 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3351 if (*p == '/')
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3352 *p = ':';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3353 p++;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3354 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3355
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3356 s_dirent.d_ino = cipb.dirInfo.ioDrDirID;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3357 /* value unimportant: non-zero for valid file */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3358 s_dirent.d_name = s_name;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3359
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3360 return &s_dirent;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3361 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3362 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3363
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3364
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3365 char *
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3366 getwd (char *path)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3367 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3368 char mac_pathname[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3369 Str255 directory_name;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3370 OSErr errno;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3371 CInfoPBRec cipb;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3372
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3373 if (path_from_vol_dir_name (mac_pathname, 255, 0, 0, "\p") == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3374 return NULL;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3375
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3376 if (mac_to_posix_pathname (mac_pathname, path, MAXPATHLEN+1) == 0)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3377 return 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3378 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3379 return path;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3380 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3381
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3382 #endif /* ! MAC_OSX */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3383
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3384
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3385 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3386 initialize_applescript ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3387 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3388 AEDesc null_desc;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3389 OSAError osaerror;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3390
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3391 /* if open fails, as_scripting_component is set to NULL. Its
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3392 subsequent use in OSA calls will fail with badComponentInstance
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3393 error. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3394 as_scripting_component = OpenDefaultComponent (kOSAComponentType,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3395 kAppleScriptSubtype);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3396
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3397 null_desc.descriptorType = typeNull;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3398 null_desc.dataHandle = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3399 osaerror = OSAMakeContext (as_scripting_component, &null_desc,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3400 kOSANullScript, &as_script_context);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3401 if (osaerror)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3402 as_script_context = kOSANullScript;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3403 /* use default context if create fails */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3404 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3405
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3406
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3407 void
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3408 terminate_applescript()
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3409 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3410 OSADispose (as_scripting_component, as_script_context);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3411 CloseComponent (as_scripting_component);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3412 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3413
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3414 /* Convert a lisp string to the 4 byte character code. */
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3415
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3416 OSType
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3417 mac_get_code_from_arg(Lisp_Object arg, OSType defCode)
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3418 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3419 OSType result;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3420 if (NILP(arg))
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3421 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3422 result = defCode;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3423 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3424 else
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3425 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3426 /* check type string */
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3427 CHECK_STRING(arg);
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3428 if (SBYTES (arg) != 4)
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3429 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3430 error ("Wrong argument: need string of length 4 for code");
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3431 }
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3432 result = EndianU32_BtoN (*((UInt32 *) SDATA (arg)));
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3433 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3434 return result;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3435 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3436
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3437 /* Convert the 4 byte character code into a 4 byte string. */
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3438
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3439 Lisp_Object
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3440 mac_get_object_from_code(OSType defCode)
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3441 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3442 UInt32 code = EndianU32_NtoB (defCode);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3443
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3444 return make_unibyte_string ((char *)&code, 4);
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3445 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3446
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3447
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3448 DEFUN ("mac-get-file-creator", Fmac_get_file_creator, Smac_get_file_creator, 1, 1, 0,
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3449 doc: /* Get the creator code of FILENAME as a four character string. */)
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3450 (filename)
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3451 Lisp_Object filename;
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3452 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3453 OSErr status;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3454 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3455 FSRef fref;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3456 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3457 FSSpec fss;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3458 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3459 OSType cCode;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3460 Lisp_Object result = Qnil;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3461 CHECK_STRING (filename);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3462
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3463 if (NILP(Ffile_exists_p(filename)) || !NILP(Ffile_directory_p(filename))) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3464 return Qnil;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3465 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3466 filename = Fexpand_file_name (filename, Qnil);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3467
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3468 BLOCK_INPUT;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3469 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3470 status = FSPathMakeRef(SDATA(ENCODE_FILE(filename)), &fref, NULL);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3471 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3472 status = posix_pathname_to_fsspec (SDATA (ENCODE_FILE (filename)), &fss);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3473 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3474
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3475 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3476 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3477 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3478 FSCatalogInfo catalogInfo;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3479
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3480 status = FSGetCatalogInfo(&fref, kFSCatInfoFinderInfo,
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3481 &catalogInfo, NULL, NULL, NULL);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3482 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3483 FInfo finder_info;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3484
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3485 status = FSpGetFInfo (&fss, &finder_info);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3486 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3487 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3488 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3489 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3490 result = mac_get_object_from_code(((FileInfo*)&catalogInfo.finderInfo)->fileCreator);
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3491 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3492 result = mac_get_object_from_code (finder_info.fdCreator);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3493 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3494 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3495 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3496 UNBLOCK_INPUT;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3497 if (status != noErr) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3498 error ("Error while getting file information.");
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3499 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3500 return result;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3501 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3502
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3503 DEFUN ("mac-get-file-type", Fmac_get_file_type, Smac_get_file_type, 1, 1, 0,
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3504 doc: /* Get the type code of FILENAME as a four character string. */)
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3505 (filename)
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3506 Lisp_Object filename;
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3507 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3508 OSErr status;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3509 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3510 FSRef fref;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3511 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3512 FSSpec fss;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3513 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3514 OSType cCode;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3515 Lisp_Object result = Qnil;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3516 CHECK_STRING (filename);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3517
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3518 if (NILP(Ffile_exists_p(filename)) || !NILP(Ffile_directory_p(filename))) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3519 return Qnil;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3520 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3521 filename = Fexpand_file_name (filename, Qnil);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3522
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3523 BLOCK_INPUT;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3524 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3525 status = FSPathMakeRef(SDATA(ENCODE_FILE(filename)), &fref, NULL);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3526 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3527 status = posix_pathname_to_fsspec (SDATA (ENCODE_FILE (filename)), &fss);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3528 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3529
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3530 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3531 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3532 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3533 FSCatalogInfo catalogInfo;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3534
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3535 status = FSGetCatalogInfo(&fref, kFSCatInfoFinderInfo,
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3536 &catalogInfo, NULL, NULL, NULL);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3537 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3538 FInfo finder_info;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3539
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3540 status = FSpGetFInfo (&fss, &finder_info);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3541 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3542 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3543 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3544 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3545 result = mac_get_object_from_code(((FileInfo*)&catalogInfo.finderInfo)->fileType);
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3546 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3547 result = mac_get_object_from_code (finder_info.fdType);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3548 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3549 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3550 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3551 UNBLOCK_INPUT;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3552 if (status != noErr) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3553 error ("Error while getting file information.");
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3554 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3555 return result;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3556 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3557
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3558 DEFUN ("mac-set-file-creator", Fmac_set_file_creator, Smac_set_file_creator, 1, 2, 0,
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3559 doc: /* Set creator code of file FILENAME to CODE.
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3560 If non-nil, CODE must be a 4-character string. Otherwise, 'EMAx' is
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3561 assumed. Return non-nil if successful. */)
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3562 (filename, code)
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3563 Lisp_Object filename, code;
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3564 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3565 OSErr status;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3566 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3567 FSRef fref;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3568 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3569 FSSpec fss;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3570 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3571 OSType cCode;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3572 CHECK_STRING (filename);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3573
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3574 cCode = mac_get_code_from_arg(code, 'EMAx');
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3575
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3576 if (NILP(Ffile_exists_p(filename)) || !NILP(Ffile_directory_p(filename))) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3577 return Qnil;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3578 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3579 filename = Fexpand_file_name (filename, Qnil);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3580
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3581 BLOCK_INPUT;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3582 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3583 status = FSPathMakeRef(SDATA(ENCODE_FILE(filename)), &fref, NULL);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3584 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3585 status = posix_pathname_to_fsspec (SDATA (ENCODE_FILE (filename)), &fss);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3586 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3587
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3588 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3589 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3590 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3591 FSCatalogInfo catalogInfo;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3592 FSRef parentDir;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3593 status = FSGetCatalogInfo(&fref, kFSCatInfoFinderInfo,
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3594 &catalogInfo, NULL, NULL, &parentDir);
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3595 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3596 FInfo finder_info;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3597
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3598 status = FSpGetFInfo (&fss, &finder_info);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3599 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3600 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3601 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3602 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3603 ((FileInfo*)&catalogInfo.finderInfo)->fileCreator = cCode;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3604 status = FSSetCatalogInfo(&fref, kFSCatInfoFinderInfo, &catalogInfo);
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3605 /* TODO: on Mac OS 10.2, we need to touch the parent dir, FNNotify? */
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3606 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3607 finder_info.fdCreator = cCode;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3608 status = FSpSetFInfo (&fss, &finder_info);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3609 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3610 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3611 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3612 UNBLOCK_INPUT;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3613 if (status != noErr) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3614 error ("Error while setting creator information.");
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3615 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3616 return Qt;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3617 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3618
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3619 DEFUN ("mac-set-file-type", Fmac_set_file_type, Smac_set_file_type, 2, 2, 0,
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3620 doc: /* Set file code of file FILENAME to CODE.
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3621 CODE must be a 4-character string. Return non-nil if successful. */)
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3622 (filename, code)
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3623 Lisp_Object filename, code;
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3624 {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3625 OSErr status;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3626 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3627 FSRef fref;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3628 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3629 FSSpec fss;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3630 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3631 OSType cCode;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3632 CHECK_STRING (filename);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3633
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3634 cCode = mac_get_code_from_arg(code, 0); /* Default to empty code*/
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3635
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3636 if (NILP(Ffile_exists_p(filename)) || !NILP(Ffile_directory_p(filename))) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3637 return Qnil;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3638 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3639 filename = Fexpand_file_name (filename, Qnil);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3640
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3641 BLOCK_INPUT;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3642 #ifdef MAC_OSX
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3643 status = FSPathMakeRef(SDATA(ENCODE_FILE(filename)), &fref, NULL);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3644 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3645 status = posix_pathname_to_fsspec (SDATA (ENCODE_FILE (filename)), &fss);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3646 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3647
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3648 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3649 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3650 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3651 FSCatalogInfo catalogInfo;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3652 FSRef parentDir;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3653 status = FSGetCatalogInfo(&fref, kFSCatInfoFinderInfo,
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3654 &catalogInfo, NULL, NULL, &parentDir);
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3655 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3656 FInfo finder_info;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3657
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3658 status = FSpGetFInfo (&fss, &finder_info);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3659 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3660 if (status == noErr)
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3661 {
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3662 #ifdef MAC_OSX
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3663 ((FileInfo*)&catalogInfo.finderInfo)->fileType = cCode;
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3664 status = FSSetCatalogInfo(&fref, kFSCatInfoFinderInfo, &catalogInfo);
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3665 /* TODO: on Mac OS 10.2, we need to touch the parent dir, FNNotify? */
64247
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3666 #else
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3667 finder_info.fdType = cCode;
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3668 status = FSpSetFInfo (&fss, &finder_info);
e55c855616f5 [!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 64214
diff changeset
3669 #endif
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3670 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3671 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3672 UNBLOCK_INPUT;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3673 if (status != noErr) {
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3674 error ("Error while setting creator information.");
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3675 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3676 return Qt;
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3677 }
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
3678
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3679
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3680 /* Compile and execute the AppleScript SCRIPT and return the error
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3681 status as function value. A zero is returned if compilation and
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3682 execution is successful, in which case RESULT returns a pointer to
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3683 a string containing the resulting script value. Otherwise, the Mac
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3684 error code is returned and RESULT returns a pointer to an error
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3685 string. In both cases the caller should deallocate the storage
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3686 used by the string pointed to by RESULT if it is non-NULL. For
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3687 documentation on the MacOS scripting architecture, see Inside
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3688 Macintosh - Interapplication Communications: Scripting Components. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3689
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3690 static long
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3691 do_applescript (char *script, char **result)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3692 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3693 AEDesc script_desc, result_desc, error_desc;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3694 OSErr error;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3695 OSAError osaerror;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3696 long length;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3697
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3698 *result = 0;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3699
45851
7b1f766314f6 2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 45848
diff changeset
3700 if (!as_scripting_component)
7b1f766314f6 2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 45848
diff changeset
3701 initialize_applescript();
7b1f766314f6 2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 45848
diff changeset
3702
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3703 error = AECreateDesc (typeChar, script, strlen(script), &script_desc);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3704 if (error)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3705 return error;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3706
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3707 osaerror = OSADoScript (as_scripting_component, &script_desc, kOSANullScript,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3708 typeChar, kOSAModeNull, &result_desc);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3709
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3710 if (osaerror == errOSAScriptError)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3711 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3712 /* error executing AppleScript: retrieve error message */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3713 if (!OSAScriptError (as_scripting_component, kOSAErrorMessage, typeChar,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3714 &error_desc))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3715 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3716 #if TARGET_API_MAC_CARBON
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3717 length = AEGetDescDataSize (&error_desc);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3718 *result = (char *) xmalloc (length + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3719 if (*result)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3720 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3721 AEGetDescData (&error_desc, *result, length);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3722 *(*result + length) = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3723 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3724 #else /* not TARGET_API_MAC_CARBON */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3725 HLock (error_desc.dataHandle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3726 length = GetHandleSize(error_desc.dataHandle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3727 *result = (char *) xmalloc (length + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3728 if (*result)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3729 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3730 memcpy (*result, *(error_desc.dataHandle), length);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3731 *(*result + length) = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3732 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3733 HUnlock (error_desc.dataHandle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3734 #endif /* not TARGET_API_MAC_CARBON */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3735 AEDisposeDesc (&error_desc);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3736 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3737 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3738 else if (osaerror == noErr) /* success: retrieve resulting script value */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3739 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3740 #if TARGET_API_MAC_CARBON
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3741 length = AEGetDescDataSize (&result_desc);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3742 *result = (char *) xmalloc (length + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3743 if (*result)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3744 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3745 AEGetDescData (&result_desc, *result, length);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3746 *(*result + length) = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3747 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3748 #else /* not TARGET_API_MAC_CARBON */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3749 HLock (result_desc.dataHandle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3750 length = GetHandleSize(result_desc.dataHandle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3751 *result = (char *) xmalloc (length + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3752 if (*result)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3753 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3754 memcpy (*result, *(result_desc.dataHandle), length);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3755 *(*result + length) = '\0';
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3756 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3757 HUnlock (result_desc.dataHandle);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3758 #endif /* not TARGET_API_MAC_CARBON */
45851
7b1f766314f6 2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 45848
diff changeset
3759 AEDisposeDesc (&result_desc);
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3760 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3761
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3762 AEDisposeDesc (&script_desc);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3763
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3764 return osaerror;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3765 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3766
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3767
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3768 DEFUN ("do-applescript", Fdo_applescript, Sdo_applescript, 1, 1, 0,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3769 doc: /* Compile and execute AppleScript SCRIPT and retrieve and return the result.
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3770 If compilation and execution are successful, the resulting script
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3771 value is returned as a string. Otherwise the function aborts and
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3772 displays the error message returned by the AppleScript scripting
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3773 component. */)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3774 (script)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3775 Lisp_Object script;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3776 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3777 char *result, *temp;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3778 Lisp_Object lisp_result;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3779 long status;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3780
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3781 CHECK_STRING (script);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3782
57425
0867872551d9 macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow
Steven Tamm <steventamm@mac.com>
parents: 57397
diff changeset
3783 BLOCK_INPUT;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 45851
diff changeset
3784 status = do_applescript (SDATA (script), &result);
57425
0867872551d9 macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow
Steven Tamm <steventamm@mac.com>
parents: 57397
diff changeset
3785 UNBLOCK_INPUT;
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3786 if (status)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3787 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3788 if (!result)
45851
7b1f766314f6 2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 45848
diff changeset
3789 error ("AppleScript error %d", status);
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3790 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3791 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3792 /* Unfortunately only OSADoScript in do_applescript knows how
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3793 how large the resulting script value or error message is
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3794 going to be and therefore as caller memory must be
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3795 deallocated here. It is necessary to free the error
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3796 message before calling error to avoid a memory leak. */
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3797 temp = (char *) alloca (strlen (result) + 1);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3798 strcpy (temp, result);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3799 xfree (result);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3800 error (temp);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3801 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3802 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3803 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3804 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3805 lisp_result = build_string (result);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3806 xfree (result);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3807 return lisp_result;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3808 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3809 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3810
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3811
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3812 DEFUN ("mac-file-name-to-posix", Fmac_file_name_to_posix,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3813 Smac_file_name_to_posix, 1, 1, 0,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3814 doc: /* Convert Macintosh filename to Posix form. */)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3815 (mac_filename)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3816 Lisp_Object mac_filename;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3817 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3818 char posix_filename[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3819
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3820 CHECK_STRING (mac_filename);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3821
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 45851
diff changeset
3822 if (mac_to_posix_pathname (SDATA (mac_filename), posix_filename,
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3823 MAXPATHLEN))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3824 return build_string (posix_filename);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3825 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3826 return Qnil;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3827 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3828
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3829
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3830 DEFUN ("posix-file-name-to-mac", Fposix_file_name_to_mac,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3831 Sposix_file_name_to_mac, 1, 1, 0,
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3832 doc: /* Convert Posix filename to Mac form. */)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3833 (posix_filename)
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3834 Lisp_Object posix_filename;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3835 {
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3836 char mac_filename[MAXPATHLEN+1];
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3837
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3838 CHECK_STRING (posix_filename);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 46916
diff changeset
3839
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 45851
diff changeset
3840 if (posix_to_mac_pathname (SDATA (posix_filename), mac_filename,
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3841 MAXPATHLEN))
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3842 return build_string (mac_filename);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3843 else
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3844 return Qnil;
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3845 }
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3846
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3847
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
3848 #if TARGET_API_MAC_CARBON
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3849 static Lisp_Object Qxml, Qmime_charset;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3850 static Lisp_Object QNFD, QNFKD, QNFC, QNFKC, QHFS_plus_D, QHFS_plus_C;
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3851
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3852 DEFUN ("mac-get-preference", Fmac_get_preference, Smac_get_preference, 1, 4, 0,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3853 doc: /* Return the application preference value for KEY.
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3854 KEY is either a string specifying a preference key, or a list of key
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3855 strings. If it is a list, the (i+1)-th element is used as a key for
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3856 the CFDictionary value obtained by the i-th element. If lookup is
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3857 failed at some stage, nil is returned.
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3858
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3859 Optional arg APPLICATION is an application ID string. If omitted or
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3860 nil, that stands for the current application.
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3861
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3862 Optional arg FORMAT specifies the data format of the return value. If
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3863 omitted or nil, each Core Foundation object is converted into a
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3864 corresponding Lisp object as follows:
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3865
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3866 Core Foundation Lisp Tag
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3867 ------------------------------------------------------------
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3868 CFString Multibyte string string
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3869 CFNumber Integer or float number
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3870 CFBoolean Symbol (t or nil) boolean
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3871 CFDate List of three integers date
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3872 (cf. `current-time')
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3873 CFData Unibyte string data
61338
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
3874 CFArray Vector array
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3875 CFDictionary Alist or hash table dictionary
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3876 (depending on HASH-BOUND)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3877
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3878 If it is t, a symbol that represents the type of the original Core
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3879 Foundation object is prepended. If it is `xml', the value is returned
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3880 as an XML representation.
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3881
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3882 Optional arg HASH-BOUND specifies which kinds of the list objects,
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3883 alists or hash tables, are used as the targets of the conversion from
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3884 CFDictionary. If HASH-BOUND is a negative integer or nil, always
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3885 generate alists. If HASH-BOUND >= 0, generate an alist if the number
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3886 of keys in the dictionary is smaller than HASH-BOUND, and a hash table
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3887 otherwise. */)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3888 (key, application, format, hash_bound)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3889 Lisp_Object key, application, format, hash_bound;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3890 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3891 CFStringRef app_id, key_str;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3892 CFPropertyListRef app_plist = NULL, plist;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3893 Lisp_Object result = Qnil, tmp;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3894
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3895 if (STRINGP (key))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3896 key = Fcons (key, Qnil);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3897 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3898 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3899 CHECK_CONS (key);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3900 for (tmp = key; CONSP (tmp); tmp = XCDR (tmp))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3901 CHECK_STRING_CAR (tmp);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3902 if (!NILP (tmp))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3903 wrong_type_argument (Qlistp, key);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3904 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3905 if (!NILP (application))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3906 CHECK_STRING (application);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3907 CHECK_SYMBOL (format);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3908 if (!NILP (hash_bound))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3909 CHECK_NUMBER (hash_bound);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3910
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3911 BLOCK_INPUT;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3912
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3913 app_id = kCFPreferencesCurrentApplication;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3914 if (!NILP (application))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3915 {
61572
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
3916 app_id = cfstring_create_with_string (application);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3917 if (app_id == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3918 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3919 }
61572
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
3920 key_str = cfstring_create_with_string (XCAR (key));
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3921 if (key_str == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3922 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3923 app_plist = CFPreferencesCopyAppValue (key_str, app_id);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3924 CFRelease (key_str);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3925 if (app_plist == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3926 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3927
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3928 plist = app_plist;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3929 for (key = XCDR (key); CONSP (key); key = XCDR (key))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3930 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3931 if (CFGetTypeID (plist) != CFDictionaryGetTypeID ())
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3932 break;
61572
4fdfaa49202b Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61553
diff changeset
3933 key_str = cfstring_create_with_string (XCAR (key));
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3934 if (key_str == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3935 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3936 plist = CFDictionaryGetValue (plist, key_str);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3937 CFRelease (key_str);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3938 if (plist == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3939 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3940 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3941
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3942 if (NILP (key))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3943 if (EQ (format, Qxml))
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3944 {
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3945 CFDataRef data = CFPropertyListCreateXMLData (NULL, plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3946 if (data == NULL)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3947 goto out;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3948 result = cfdata_to_lisp (data);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3949 CFRelease (data);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3950 }
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3951 else
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3952 result =
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3953 cfproperty_list_to_lisp (plist, EQ (format, Qt),
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3954 NILP (hash_bound) ? -1 : XINT (hash_bound));
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3955
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3956 out:
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3957 if (app_plist)
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3958 CFRelease (app_plist);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3959 CFRelease (app_id);
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3960
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3961 UNBLOCK_INPUT;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3962
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3963 return result;
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
3964 }
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3965
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3966
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3967 static CFStringEncoding
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3968 get_cfstring_encoding_from_lisp (obj)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3969 Lisp_Object obj;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3970 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3971 CFStringRef iana_name;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3972 CFStringEncoding encoding = kCFStringEncodingInvalidId;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3973
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3974 if (INTEGERP (obj))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3975 return XINT (obj);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3976
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3977 if (SYMBOLP (obj) && !NILP (obj) && !NILP (Fcoding_system_p (obj)))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3978 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3979 Lisp_Object coding_spec, plist;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3980
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3981 coding_spec = Fget (obj, Qcoding_system);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3982 plist = XVECTOR (coding_spec)->contents[3];
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3983 obj = Fplist_get (XVECTOR (coding_spec)->contents[3], Qmime_charset);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3984 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3985
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3986 if (SYMBOLP (obj))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3987 obj = SYMBOL_NAME (obj);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3988
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3989 if (STRINGP (obj))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3990 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3991 iana_name = cfstring_create_with_string (obj);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3992 if (iana_name)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3993 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3994 encoding = CFStringConvertIANACharSetNameToEncoding (iana_name);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3995 CFRelease (iana_name);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3996 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3997 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3998
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
3999 return encoding;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4000 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4001
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4002 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4003 static CFStringRef
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4004 cfstring_create_normalized (str, symbol)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4005 CFStringRef str;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4006 Lisp_Object symbol;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4007 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4008 int form = -1;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4009 TextEncodingVariant variant;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4010 float initial_mag = 0.0;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4011 CFStringRef result = NULL;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4012
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4013 if (EQ (symbol, QNFD))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4014 form = kCFStringNormalizationFormD;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4015 else if (EQ (symbol, QNFKD))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4016 form = kCFStringNormalizationFormKD;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4017 else if (EQ (symbol, QNFC))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4018 form = kCFStringNormalizationFormC;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4019 else if (EQ (symbol, QNFKC))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4020 form = kCFStringNormalizationFormKC;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4021 else if (EQ (symbol, QHFS_plus_D))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4022 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4023 variant = kUnicodeHFSPlusDecompVariant;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4024 initial_mag = 1.5;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4025 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4026 else if (EQ (symbol, QHFS_plus_C))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4027 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4028 variant = kUnicodeHFSPlusCompVariant;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4029 initial_mag = 1.0;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4030 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4031
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4032 if (form >= 0)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4033 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4034 CFMutableStringRef mut_str = CFStringCreateMutableCopy (NULL, 0, str);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4035
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4036 if (mut_str)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4037 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4038 CFStringNormalize (mut_str, form);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4039 result = mut_str;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4040 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4041 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4042 else if (initial_mag > 0.0)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4043 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4044 UnicodeToTextInfo uni = NULL;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4045 UnicodeMapping map;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4046 CFIndex length;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4047 UniChar *in_text, *buffer = NULL, *out_buf = NULL;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4048 OSErr err = noErr;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4049 ByteCount out_read, out_size, out_len;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4050
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4051 map.unicodeEncoding = CreateTextEncoding (kTextEncodingUnicodeDefault,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4052 kUnicodeNoSubset,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4053 kTextEncodingDefaultFormat);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4054 map.otherEncoding = CreateTextEncoding (kTextEncodingUnicodeDefault,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4055 variant,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4056 kTextEncodingDefaultFormat);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4057 map.mappingVersion = kUnicodeUseLatestMapping;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4058
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4059 length = CFStringGetLength (str);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4060 out_size = (int)((float)length * initial_mag) * sizeof (UniChar);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4061 if (out_size < 32)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4062 out_size = 32;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4063
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4064 in_text = (UniChar *)CFStringGetCharactersPtr (str);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4065 if (in_text == NULL)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4066 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4067 buffer = xmalloc (sizeof (UniChar) * length);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4068 if (buffer)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4069 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4070 CFStringGetCharacters (str, CFRangeMake (0, length), buffer);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4071 in_text = buffer;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4072 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4073 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4074
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4075 if (in_text)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4076 err = CreateUnicodeToTextInfo(&map, &uni);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4077 while (err == noErr)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4078 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4079 out_buf = xmalloc (out_size);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4080 if (out_buf == NULL)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4081 err = mFulErr;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4082 else
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4083 err = ConvertFromUnicodeToText (uni, length * sizeof (UniChar),
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4084 in_text,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4085 kUnicodeDefaultDirectionMask,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4086 0, NULL, NULL, NULL,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4087 out_size, &out_read, &out_len,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4088 out_buf);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4089 if (err == noErr && out_read < length * sizeof (UniChar))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4090 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4091 xfree (out_buf);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4092 out_size += length;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4093 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4094 else
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4095 break;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4096 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4097 if (err == noErr)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4098 result = CFStringCreateWithCharacters (NULL, out_buf,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4099 out_len / sizeof (UniChar));
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4100 if (uni)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4101 DisposeUnicodeToTextInfo (&uni);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4102 if (out_buf)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4103 xfree (out_buf);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4104 if (buffer)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4105 xfree (buffer);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4106 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4107 else
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4108 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4109 result = str;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4110 CFRetain (result);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4111 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4112
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4113 return result;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4114 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4115 #endif
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4116
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4117 DEFUN ("mac-code-convert-string", Fmac_code_convert_string, Smac_code_convert_string, 3, 4, 0,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4118 doc: /* Convert STRING from SOURCE encoding to TARGET encoding.
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4119 The conversion is performed using the converter provided by the system.
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4120 Each encoding is specified by either a coding system symbol, a mime
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4121 charset string, or an integer as a CFStringEncoding value.
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4122 On Mac OS X 10.2 and later, you can do Unicode Normalization by
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4123 specifying the optional argument NORMALIZATION-FORM with a symbol NFD,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4124 NFKD, NFC, NFKC, HFS+D, or HFS+C.
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4125 On successful conversion, returns the result string, else returns
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4126 nil. */)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4127 (string, source, target, normalization_form)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4128 Lisp_Object string, source, target, normalization_form;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4129 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4130 Lisp_Object result = Qnil;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4131 CFStringEncoding src_encoding, tgt_encoding;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4132 CFStringRef str = NULL;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4133 CFDataRef data = NULL;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4134
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4135 CHECK_STRING (string);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4136 if (!INTEGERP (source) && !STRINGP (source))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4137 CHECK_SYMBOL (source);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4138 if (!INTEGERP (target) && !STRINGP (target))
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4139 CHECK_SYMBOL (target);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4140 CHECK_SYMBOL (normalization_form);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4141
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4142 BLOCK_INPUT;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4143
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4144 src_encoding = get_cfstring_encoding_from_lisp (source);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4145 tgt_encoding = get_cfstring_encoding_from_lisp (target);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4146
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4147 string = string_make_unibyte (string);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4148 if (src_encoding != kCFStringEncodingInvalidId
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4149 && tgt_encoding != kCFStringEncodingInvalidId)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4150 str = CFStringCreateWithBytes (NULL, SDATA (string), SBYTES (string),
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4151 src_encoding, true);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4152 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4153 if (str)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4154 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4155 CFStringRef saved_str = str;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4156
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4157 str = cfstring_create_normalized (saved_str, normalization_form);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4158 CFRelease (saved_str);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4159 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4160 #endif
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4161 if (str)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4162 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4163 data = CFStringCreateExternalRepresentation (NULL, str,
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4164 tgt_encoding, '\0');
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4165 CFRelease (str);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4166 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4167 if (data)
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4168 {
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4169 result = cfdata_to_lisp (data);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4170 CFRelease (data);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4171 }
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4172
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4173 UNBLOCK_INPUT;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4174
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4175 return result;
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4176 }
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4177 #endif /* TARGET_API_MAC_CARBON */
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4178
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4179
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4180 DEFUN ("mac-clear-font-name-table", Fmac_clear_font_name_table, Smac_clear_font_name_table, 0, 0, 0,
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4181 doc: /* Clear the font name table. */)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4182 ()
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4183 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4184 check_mac ();
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4185 mac_clear_font_name_table ();
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4186 return Qnil;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4187 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4188
46856
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4189 #ifdef MAC_OSX
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4190 #undef select
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4191
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4192 extern int inhibit_window_system;
48740
b45c19284d24 sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents: 47942
diff changeset
4193 extern int noninteractive;
46856
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4194
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4195 /* Unlike in X11, window events in Carbon do not come from sockets.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4196 So we cannot simply use `select' to monitor two kinds of inputs:
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4197 window events and process outputs. We emulate such functionality
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4198 by regarding fd 0 as the window event channel and simultaneously
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4199 monitoring both kinds of input channels. It is implemented by
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4200 dividing into some cases:
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4201 1. The window event channel is not involved.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4202 -> Use `select'.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4203 2. Sockets are not involved.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4204 -> Use ReceiveNextEvent.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4205 3. [If SELECT_USE_CFSOCKET is defined]
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4206 Only the window event channel and socket read channels are
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4207 involved, and timeout is not too short (greater than
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4208 SELECT_TIMEOUT_THRESHHOLD_RUNLOOP seconds).
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4209 -> Create CFSocket for each socket and add it into the current
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4210 event RunLoop so that an `ready-to-read' event can be posted
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4211 to the event queue that is also used for window events. Then
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4212 ReceiveNextEvent can wait for both kinds of inputs.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4213 4. Otherwise.
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4214 -> Periodically poll the window input channel while repeatedly
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4215 executing `select' with a short timeout
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4216 (SELECT_POLLING_PERIOD_USEC microseconds). */
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4217
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4218 #define SELECT_POLLING_PERIOD_USEC 20000
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4219 #ifdef SELECT_USE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4220 #define SELECT_TIMEOUT_THRESHOLD_RUNLOOP 0.2
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4221 #define EVENT_CLASS_SOCK 'Sock'
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4222
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4223 static void
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4224 socket_callback (s, type, address, data, info)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4225 CFSocketRef s;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4226 CFSocketCallBackType type;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4227 CFDataRef address;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4228 const void *data;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4229 void *info;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4230 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4231 EventRef event;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4232
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4233 CreateEvent (NULL, EVENT_CLASS_SOCK, 0, 0, kEventAttributeNone, &event);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4234 PostEventToQueue (GetCurrentEventQueue (), event, kEventPriorityStandard);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4235 ReleaseEvent (event);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4236 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4237 #endif /* SELECT_USE_CFSOCKET */
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4238
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4239 static int
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4240 select_and_poll_event (n, rfds, wfds, efds, timeout)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4241 int n;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4242 SELECT_TYPE *rfds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4243 SELECT_TYPE *wfds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4244 SELECT_TYPE *efds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4245 struct timeval *timeout;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4246 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4247 int r;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4248 OSErr err;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4249
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4250 r = select (n, rfds, wfds, efds, timeout);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4251 if (r != -1)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4252 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4253 BLOCK_INPUT;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4254 err = ReceiveNextEvent (0, NULL, kEventDurationNoWait,
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4255 kEventLeaveInQueue, NULL);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4256 UNBLOCK_INPUT;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4257 if (err == noErr)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4258 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4259 FD_SET (0, rfds);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4260 r++;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4261 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4262 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4263 return r;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4264 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4265
59897
5ae033db673f Use MAC_OS_X_VERSION_MAX_ALLOWED to conditionalize by the compiling OS
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 59146
diff changeset
4266 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1020
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4267 #undef SELECT_INVALIDATE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4268 #endif
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4269
46856
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4270 int
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4271 sys_select (n, rfds, wfds, efds, timeout)
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4272 int n;
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4273 SELECT_TYPE *rfds;
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4274 SELECT_TYPE *wfds;
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4275 SELECT_TYPE *efds;
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4276 struct timeval *timeout;
46856
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4277 {
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4278 OSErr err;
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4279 int i, r;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4280 EMACS_TIME select_timeout;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4281
56477
59a86f6ee1fb Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents: 53122
diff changeset
4282 if (inhibit_window_system || noninteractive
59a86f6ee1fb Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents: 53122
diff changeset
4283 || rfds == NULL || !FD_ISSET (0, rfds))
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4284 return select (n, rfds, wfds, efds, timeout);
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4285
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4286 FD_CLR (0, rfds);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4287
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4288 if (wfds == NULL && efds == NULL)
48740
b45c19284d24 sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents: 47942
diff changeset
4289 {
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4290 int nsocks = 0;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4291 SELECT_TYPE orfds = *rfds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4292
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4293 EventTimeout timeout_sec =
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4294 (timeout
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4295 ? (EMACS_SECS (*timeout) * kEventDurationSecond
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4296 + EMACS_USECS (*timeout) * kEventDurationMicrosecond)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4297 : kEventDurationForever);
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4298
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4299 for (i = 1; i < n; i++)
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4300 if (FD_ISSET (i, rfds))
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4301 nsocks++;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4302
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4303 if (nsocks == 0)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4304 {
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4305 BLOCK_INPUT;
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4306 err = ReceiveNextEvent (0, NULL, timeout_sec,
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4307 kEventLeaveInQueue, NULL);
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4308 UNBLOCK_INPUT;
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4309 if (err == noErr)
48818
5030a4c296d2 * macterm.c (mac_check_for_quit_char): Correctly set the
Steven Tamm <steventamm@mac.com>
parents: 48793
diff changeset
4310 {
56477
59a86f6ee1fb Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents: 53122
diff changeset
4311 FD_SET (0, rfds);
59a86f6ee1fb Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents: 53122
diff changeset
4312 return 1;
48818
5030a4c296d2 * macterm.c (mac_check_for_quit_char): Correctly set the
Steven Tamm <steventamm@mac.com>
parents: 48793
diff changeset
4313 }
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4314 else
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4315 return 0;
48740
b45c19284d24 sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents: 47942
diff changeset
4316 }
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4317
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4318 /* Avoid initial overhead of RunLoop setup for the case that
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4319 some input is already available. */
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4320 EMACS_SET_SECS_USECS (select_timeout, 0, 0);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4321 r = select_and_poll_event (n, rfds, wfds, efds, &select_timeout);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4322 if (r != 0 || timeout_sec == 0.0)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4323 return r;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4324
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4325 *rfds = orfds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4326
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4327 #ifdef SELECT_USE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4328 if (timeout_sec > 0 && timeout_sec <= SELECT_TIMEOUT_THRESHOLD_RUNLOOP)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4329 goto poll_periodically;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4330
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4331 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4332 CFRunLoopRef runloop =
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4333 (CFRunLoopRef) GetCFRunLoopFromEventLoop (GetCurrentEventLoop ());
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4334 EventTypeSpec specs[] = {{EVENT_CLASS_SOCK, 0}};
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4335 #ifdef SELECT_INVALIDATE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4336 CFSocketRef *shead, *s;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4337 #else
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4338 CFRunLoopSourceRef *shead, *s;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4339 #endif
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4340
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4341 BLOCK_INPUT;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4342
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4343 #ifdef SELECT_INVALIDATE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4344 shead = xmalloc (sizeof (CFSocketRef) * nsocks);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4345 #else
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4346 shead = xmalloc (sizeof (CFRunLoopSourceRef) * nsocks);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4347 #endif
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4348 s = shead;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4349 for (i = 1; i < n; i++)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4350 if (FD_ISSET (i, rfds))
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4351 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4352 CFSocketRef socket =
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4353 CFSocketCreateWithNative (NULL, i, kCFSocketReadCallBack,
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4354 socket_callback, NULL);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4355 CFRunLoopSourceRef source =
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4356 CFSocketCreateRunLoopSource (NULL, socket, 0);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4357
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4358 #ifdef SELECT_INVALIDATE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4359 CFSocketSetSocketFlags (socket, 0);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4360 #endif
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4361 CFRunLoopAddSource (runloop, source, kCFRunLoopDefaultMode);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4362 #ifdef SELECT_INVALIDATE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4363 CFRelease (source);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4364 *s = socket;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4365 #else
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4366 CFRelease (socket);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4367 *s = source;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4368 #endif
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4369 s++;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4370 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4371
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4372 err = ReceiveNextEvent (0, NULL, timeout_sec, kEventLeaveInQueue, NULL);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4373
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4374 do
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4375 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4376 --s;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4377 #ifdef SELECT_INVALIDATE_CFSOCKET
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4378 CFSocketInvalidate (*s);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4379 #else
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4380 CFRunLoopRemoveSource (runloop, *s, kCFRunLoopDefaultMode);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4381 #endif
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4382 CFRelease (*s);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4383 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4384 while (s != shead);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4385
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4386 xfree (shead);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4387
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4388 if (err)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4389 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4390 FD_ZERO (rfds);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4391 r = 0;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4392 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4393 else
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4394 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4395 FlushEventsMatchingListFromQueue (GetCurrentEventQueue (),
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4396 GetEventTypeCount (specs),
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4397 specs);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4398 EMACS_SET_SECS_USECS (select_timeout, 0, 0);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4399 r = select_and_poll_event (n, rfds, wfds, efds, &select_timeout);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4400 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4401
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4402 UNBLOCK_INPUT;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4403
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4404 return r;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4405 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4406 #endif /* SELECT_USE_CFSOCKET */
48740
b45c19284d24 sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents: 47942
diff changeset
4407 }
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4408
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4409 poll_periodically:
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4410 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4411 EMACS_TIME end_time, now, remaining_time;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4412 SELECT_TYPE orfds = *rfds, owfds, oefds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4413
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4414 if (wfds)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4415 owfds = *wfds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4416 if (efds)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4417 oefds = *efds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4418 if (timeout)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4419 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4420 remaining_time = *timeout;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4421 EMACS_GET_TIME (now);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4422 EMACS_ADD_TIME (end_time, now, remaining_time);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4423 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4424
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4425 do
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4426 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4427 EMACS_SET_SECS_USECS (select_timeout, 0, SELECT_POLLING_PERIOD_USEC);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4428 if (timeout && EMACS_TIME_LT (remaining_time, select_timeout))
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4429 select_timeout = remaining_time;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4430 r = select_and_poll_event (n, rfds, wfds, efds, &select_timeout);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4431 if (r != 0)
56479
45d805d79d29 mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents: 56478
diff changeset
4432 return r;
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4433
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4434 *rfds = orfds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4435 if (wfds)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4436 *wfds = owfds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4437 if (efds)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4438 *efds = oefds;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4439
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4440 if (timeout)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4441 {
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4442 EMACS_GET_TIME (now);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4443 EMACS_SUB_TIME (remaining_time, end_time, now);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4444 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4445 }
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4446 while (!timeout || EMACS_TIME_LT (now, end_time));
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4447
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4448 FD_ZERO (rfds);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4449 if (wfds)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4450 FD_ZERO (wfds);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4451 if (efds)
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4452 FD_ZERO (efds);
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4453 return 0;
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4454 }
48740
b45c19284d24 sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents: 47942
diff changeset
4455 }
b45c19284d24 sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents: 47942
diff changeset
4456
46916
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4457 /* Set up environment variables so that Emacs can correctly find its
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4458 support files when packaged as an application bundle. Directories
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4459 placed in /usr/local/share/emacs/<emacs-version>/, /usr/local/bin,
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4460 and /usr/local/libexec/emacs/<emacs-version>/<system-configuration>
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4461 by `make install' by default can instead be placed in
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4462 .../Emacs.app/Contents/Resources/ and
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4463 .../Emacs.app/Contents/MacOS/. Each of these environment variables
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4464 is changed only if it is not already set. Presumably if the user
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4465 sets an environment variable, he will want to use files in his path
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4466 instead of ones in the application bundle. */
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4467 void
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4468 init_mac_osx_environment ()
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4469 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4470 CFBundleRef bundle;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4471 CFURLRef bundleURL;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4472 CFStringRef cf_app_bundle_pathname;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4473 int app_bundle_pathname_len;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4474 char *app_bundle_pathname;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4475 char *p, *q;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4476 struct stat st;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4477
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4478 /* Fetch the pathname of the application bundle as a C string into
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4479 app_bundle_pathname. */
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4480
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4481 bundle = CFBundleGetMainBundle ();
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4482 if (!bundle)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4483 return;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4484
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4485 bundleURL = CFBundleCopyBundleURL (bundle);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4486 if (!bundleURL)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4487 return;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4488
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4489 cf_app_bundle_pathname = CFURLCopyFileSystemPath (bundleURL,
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4490 kCFURLPOSIXPathStyle);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4491 app_bundle_pathname_len = CFStringGetLength (cf_app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4492 app_bundle_pathname = (char *) alloca (app_bundle_pathname_len + 1);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4493
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4494 if (!CFStringGetCString (cf_app_bundle_pathname,
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4495 app_bundle_pathname,
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4496 app_bundle_pathname_len + 1,
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4497 kCFStringEncodingISOLatin1))
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4498 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4499 CFRelease (cf_app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4500 return;
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4501 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4502
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4503 CFRelease (cf_app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4504
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4505 /* P should have sufficient room for the pathname of the bundle plus
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4506 the subpath in it leading to the respective directories. Q
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4507 should have three times that much room because EMACSLOADPATH can
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4508 have the value "<path to lisp dir>:<path to leim dir>:<path to
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4509 site-lisp dir>". */
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4510 p = (char *) alloca (app_bundle_pathname_len + 50);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4511 q = (char *) alloca (3 * app_bundle_pathname_len + 150);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4512 if (!getenv ("EMACSLOADPATH"))
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4513 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4514 q[0] = '\0';
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4515
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4516 strcpy (p, app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4517 strcat (p, "/Contents/Resources/lisp");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4518 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4519 strcat (q, p);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4520
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4521 strcpy (p, app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4522 strcat (p, "/Contents/Resources/leim");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4523 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4524 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4525 if (q[0] != '\0')
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4526 strcat (q, ":");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4527 strcat (q, p);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4528 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4529
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4530 strcpy (p, app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4531 strcat (p, "/Contents/Resources/site-lisp");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4532 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4533 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4534 if (q[0] != '\0')
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4535 strcat (q, ":");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4536 strcat (q, p);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4537 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4538
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4539 if (q[0] != '\0')
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4540 setenv ("EMACSLOADPATH", q, 1);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4541 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4542
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4543 if (!getenv ("EMACSPATH"))
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4544 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4545 q[0] = '\0';
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4546
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4547 strcpy (p, app_bundle_pathname);
50490
52dcc63018da mac.c (init_mac_osx_environment): Switch libexec and bin so that self-
Steven Tamm <steventamm@mac.com>
parents: 49600
diff changeset
4548 strcat (p, "/Contents/MacOS/libexec");
46916
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4549 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4550 strcat (q, p);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4551
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4552 strcpy (p, app_bundle_pathname);
50490
52dcc63018da mac.c (init_mac_osx_environment): Switch libexec and bin so that self-
Steven Tamm <steventamm@mac.com>
parents: 49600
diff changeset
4553 strcat (p, "/Contents/MacOS/bin");
46916
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4554 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4555 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4556 if (q[0] != '\0')
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4557 strcat (q, ":");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4558 strcat (q, p);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4559 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4560
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4561 if (q[0] != '\0')
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4562 setenv ("EMACSPATH", q, 1);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4563 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4564
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4565 if (!getenv ("EMACSDATA"))
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4566 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4567 strcpy (p, app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4568 strcat (p, "/Contents/Resources/etc");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4569 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4570 setenv ("EMACSDATA", p, 1);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4571 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4572
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4573 if (!getenv ("EMACSDOC"))
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4574 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4575 strcpy (p, app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4576 strcat (p, "/Contents/Resources/etc");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4577 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4578 setenv ("EMACSDOC", p, 1);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4579 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4580
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4581 if (!getenv ("INFOPATH"))
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4582 {
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4583 strcpy (p, app_bundle_pathname);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4584 strcat (p, "/Contents/Resources/info");
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4585 if (stat (p, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR)
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4586 setenv ("INFOPATH", p, 1);
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4587 }
aff9c7fcedb0 2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46856
diff changeset
4588 }
46856
eba75fedd593 2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents: 46788
diff changeset
4589 #endif /* MAC_OSX */
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4590
61553
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4591
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4592 static Lisp_Object
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4593 mac_get_system_locale ()
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4594 {
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4595 OSErr err;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4596 LangCode lang;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4597 RegionCode region;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4598 LocaleRef locale;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4599 Str255 str;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4600
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4601 lang = GetScriptVariable (smSystemScript, smScriptLang);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4602 region = GetScriptManagerVariable (smRegionCode);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4603 err = LocaleRefFromLangOrRegionCode (lang, region, &locale);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4604 if (err == noErr)
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4605 err = LocaleRefGetPartString (locale, kLocaleAllPartsMask,
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4606 sizeof (str), str);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4607 if (err == noErr)
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4608 return build_string (str);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4609 else
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4610 return Qnil;
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4611 }
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4612
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4613
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4614 void
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4615 syms_of_mac ()
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4616 {
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4617 #if TARGET_API_MAC_CARBON
61338
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
4618 Qstring = intern ("string"); staticpro (&Qstring);
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
4619 Qnumber = intern ("number"); staticpro (&Qnumber);
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
4620 Qboolean = intern ("boolean"); staticpro (&Qboolean);
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
4621 Qdate = intern ("date"); staticpro (&Qdate);
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
4622 Qdata = intern ("data"); staticpro (&Qdata);
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
4623 Qarray = intern ("array"); staticpro (&Qarray);
b44917251d3a (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60660
diff changeset
4624 Qdictionary = intern ("dictionary"); staticpro (&Qdictionary);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4625
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4626 Qxml = intern ("xml");
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4627 staticpro (&Qxml);
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4628
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4629 Qmime_charset = intern ("mime-charset");
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4630 staticpro (&Qmime_charset);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4631
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4632 QNFD = intern ("NFD"); staticpro (&QNFD);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4633 QNFKD = intern ("NFKD"); staticpro (&QNFKD);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4634 QNFC = intern ("NFC"); staticpro (&QNFC);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4635 QNFKC = intern ("NFKC"); staticpro (&QNFKC);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4636 QHFS_plus_D = intern ("HFS+D"); staticpro (&QHFS_plus_D);
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4637 QHFS_plus_C = intern ("HFS+C"); staticpro (&QHFS_plus_C);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4638 #endif
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4639
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4640 #if TARGET_API_MAC_CARBON
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4641 defsubr (&Smac_get_preference);
61785
6e608d2306b0 [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61572
diff changeset
4642 defsubr (&Smac_code_convert_string);
60632
fa8be36e244d Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 60360
diff changeset
4643 #endif
59146
9bde7721ad0f * dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents: 58752
diff changeset
4644 defsubr (&Smac_clear_font_name_table);
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4645
64214
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
4646 defsubr (&Smac_set_file_creator);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
4647 defsubr (&Smac_set_file_type);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
4648 defsubr (&Smac_get_file_creator);
0441edbff1bf Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents: 64084
diff changeset
4649 defsubr (&Smac_get_file_type);
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4650 defsubr (&Sdo_applescript);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4651 defsubr (&Smac_file_name_to_posix);
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4652 defsubr (&Sposix_file_name_to_mac);
61553
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4653
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4654 DEFVAR_INT ("mac-system-script-code", &mac_system_script_code,
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4655 doc: /* The system script code. */);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4656 mac_system_script_code = (ScriptCode) GetScriptManagerVariable (smSysScript);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4657
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4658 DEFVAR_LISP ("mac-system-locale", &Vmac_system_locale,
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4659 doc: /* The system locale identifier string.
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4660 This is not a POSIX locale ID, but an ICU locale ID. So encoding
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4661 information is not included. */);
72c95a1c84c6 [!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61338
diff changeset
4662 Vmac_system_locale = mac_get_system_locale ();
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff changeset
4663 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50490
diff changeset
4664
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50490
diff changeset
4665 /* arch-tag: 29d30c1f-0c6b-4f88-8a6d-0558d7f9dbff
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50490
diff changeset
4666 (do not change this comment) */