Mercurial > emacs
annotate src/mac.c @ 66981:f609c4d87a73
Emacs icons by Andrew Zhilin.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Fri, 18 Nov 2005 03:03:59 +0000 |
parents | 6a3a5a23008d |
children | 5e6f93897afb |
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. |
64770
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64604
diff
changeset
|
2 Copyright (C) 2000, 2001, 2002, 2003, 2004, |
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64604
diff
changeset
|
3 2005 Free Software Foundation, Inc. |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
5 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
|
6 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
7 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
|
8 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
|
9 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
|
10 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
|
11 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
12 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
|
13 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
|
14 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
|
15 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
|
16 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
17 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
|
18 along with GNU Emacs; see the file COPYING. If not, write to |
64084 | 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 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
|
21 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
22 /* 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
|
23 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
24 #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
|
25 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
26 #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
|
27 #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
|
28 |
60632
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 "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
|
30 #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
|
31 #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
|
32 #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
|
33 #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
|
34 #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
|
35 |
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 #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
|
37 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
38 #include "charset.h" |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
39 #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
|
40 #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
|
41 #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
|
42 #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
|
43 #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
|
44 #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
|
45 #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
|
46 #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
|
47 #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
|
48 #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
|
49 #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
|
50 #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
|
51 #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
|
52 #include <Events.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
53 #include <Processes.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
54 #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
|
55 #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
|
56 #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
|
57 #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
|
58 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
59 #include <utime.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
60 #include <dirent.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/types.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
62 #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
|
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 <fcntl.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
67 #if __MWERKS__ |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
68 #include <unistd.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
69 #endif |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
70 |
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
|
71 /* 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
|
72 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
|
73 |
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 /* 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
|
75 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
|
76 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
77 /* 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
|
78 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
|
79 /* 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
|
80 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
|
81 |
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 /* 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
|
84 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
|
85 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
|
86 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
|
87 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
88 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
89 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
|
90 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
91 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
|
92 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
|
93 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
|
94 int i; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
95 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
96 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
|
97 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
|
98 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
99 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
|
100 *p = b; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
101 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
102 } |
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 /* 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
|
107 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
|
108 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
|
109 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
|
110 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
|
111 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
|
112 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
|
113 Returns 1 if successful; 0 if fails. */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
114 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
115 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
116 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
|
117 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
118 const char *p, *q, *pe; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
119 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
120 strcpy (ufn, ""); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
121 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
122 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
|
123 return 1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
124 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
125 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
|
126 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
|
127 strcat (ufn, "/"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
128 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
129 p = mfn; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
130 if (*p == ':') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
131 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
132 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
133 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
|
134 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
|
135 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
136 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
|
137 if (q) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
138 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
139 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
|
140 { /* two consecutive ':' */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
141 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
|
142 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
143 strcat (ufn, "../"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
144 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
145 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
146 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
147 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
|
148 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
149 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
|
150 strcat (ufn, "/"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
151 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
152 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
|
153 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
154 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
155 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
156 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
|
157 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
158 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
|
159 /* 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
|
160 p = pe; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
161 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
162 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
163 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
164 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
165 } |
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 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
|
169 |
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 /* 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
|
172 above in algorithm. */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
173 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
174 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
175 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
|
176 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
177 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
|
178 char expanded_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
179 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
180 strcpy (mfn, ""); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
181 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
182 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
|
183 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
184 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
185 p = ufn; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
186 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
187 /* 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
|
188 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
|
189 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
|
190 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
191 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
|
192 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
193 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
|
194 strcat (mfn, ":"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
195 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
196 } |
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 /* 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
|
199 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
|
200 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
201 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
|
202 p += 7; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
203 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
|
204 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
205 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
|
206 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
|
207 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
|
208 /* 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
|
209 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
210 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
|
211 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
212 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
|
213 p += 5; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
214 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
|
215 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
216 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
|
217 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
|
218 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
|
219 /* 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
|
220 } |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
221 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
|
222 strcat (mfn, ":"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
223 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
224 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
225 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
226 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
227 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
|
228 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
|
229 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
230 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
|
231 if (q) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
232 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
233 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
|
234 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
235 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
|
236 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
237 strcat (mfn, ":"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
238 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
239 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
240 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
241 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
|
242 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
243 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
|
244 strcat (mfn, ":"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
245 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
246 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
|
247 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
248 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
249 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
250 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
|
251 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
252 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
|
253 p = pe; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
254 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
255 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
256 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
257 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
258 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
259 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
260 |
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 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
|
263 ***********************************************************************/ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
264 |
58752
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
265 #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
|
266 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
|
267 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
|
268 #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
|
269 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
270 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
|
271 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
272 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
|
273 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
|
274 }; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
275 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
276 /* 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
|
277 |
58752
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
278 CFStringRef |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
279 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
|
280 const char *c_str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
281 { |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
282 CFStringRef str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
283 |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
284 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
|
285 if (str == NULL) |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
286 /* 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
|
287 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
|
288 |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
289 return str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
290 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
291 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
292 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
293 /* Lisp string to CFString. */ |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
294 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
295 CFStringRef |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
296 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
|
297 Lisp_Object s; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
298 { |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
299 CFStringRef string = NULL; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
300 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
301 if (STRING_MULTIBYTE (s)) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
302 { |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
303 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
|
304 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
305 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
|
306 if (!isascii (*p)) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
307 { |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
308 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
|
309 break; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
310 } |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
311 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
|
312 kCFStringEncodingUTF8, false); |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
313 } |
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 if (string == NULL) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
316 /* 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
|
317 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
|
318 kCFStringEncodingMacRoman, false); |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
319 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
320 return string; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
321 } |
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 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
324 /* 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
|
325 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
326 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
|
327 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
|
328 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
|
329 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
330 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
|
331 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
|
332 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
333 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
|
334 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
335 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
|
336 } |
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 /* 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
|
340 (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
|
341 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
|
342 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
343 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
|
344 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
|
345 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
|
346 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
347 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
|
348 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
|
349 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
350 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
|
351 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
|
352 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
353 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
354 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
|
355 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
|
356 kCFStringEncodingUTF8, '?'); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
357 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
358 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
|
359 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
360 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
|
361 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
|
362 } |
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 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
|
366 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
367 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
|
368 /* 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
|
369 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
|
370 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
|
371 } |
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 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
|
374 } |
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 /* 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
|
378 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
379 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
|
380 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
|
381 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
|
382 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
383 Lisp_Object result = Qnil; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
384 #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
|
385 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
|
386 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
|
387 #else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
388 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
|
389 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
|
390 #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
|
391 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
|
392 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
393 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
|
394 && !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
|
395 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
|
396 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
397 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
|
398 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
|
399 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
|
400 } |
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 /* 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
|
404 `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
|
405 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
406 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
|
407 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
|
408 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
|
409 { |
61338
b44917251d3a
(cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60660
diff
changeset
|
410 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
|
411 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
|
412 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
|
413 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
414 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
|
415 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
|
416 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
417 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
|
418 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
|
419 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
|
420 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
421 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
|
422 } |
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 /* 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
|
426 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
427 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
|
428 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
|
429 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
|
430 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
431 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
|
432 } |
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 /* 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
|
436 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
437 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
|
438 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
|
439 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
|
440 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
441 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
|
442 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
|
443 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
444 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
|
445 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
446 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
|
447 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
|
448 } |
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 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
|
451 } |
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 /* 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
|
455 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
456 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
|
457 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
|
458 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
|
459 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
|
460 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
|
461 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
462 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
|
463 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
464 *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
|
465 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
|
466 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
|
467 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
|
468 *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
|
469 } |
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 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
|
472 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
|
473 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
|
474 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
|
475 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
|
476 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
477 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
|
478 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
|
479 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
|
480 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
|
481 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
482 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
|
483 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
|
484 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
|
485 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
|
486 } |
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 /* 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
|
490 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
|
491 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
|
492 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
|
493 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
|
494 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
|
495 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
|
496 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
|
497 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
498 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
|
499 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
|
500 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
|
501 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
|
502 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
503 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
|
504 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
|
505 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
|
506 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
507 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
|
508 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
509 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
|
510 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
511 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
|
512 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
|
513 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
514 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
|
515 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
516 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
|
517 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
|
518 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
519 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
|
520 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
521 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
|
522 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
|
523 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
524 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
|
525 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
526 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
|
527 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
|
528 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
529 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
|
530 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
531 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
|
532 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
|
533 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
534 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
|
535 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
536 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
|
537 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
538 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
|
539 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
|
540 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
|
541 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
|
542 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
|
543 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
|
544 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
545 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
|
546 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
547 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
|
548 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
|
549 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
550 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
|
551 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
|
552 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
|
553 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
|
554 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
|
555 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
556 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
|
557 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
|
558 &context); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
559 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
560 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
561 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
562 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
|
563 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
|
564 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
|
565 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
|
566 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
|
567 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
|
568 &context); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
569 } |
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 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
572 abort (); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
573 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
574 UNGCPRO; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
575 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
576 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
|
577 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
|
578 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
579 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
|
580 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
581 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
582 |
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 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
|
586 ***********************************************************************/ |
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 /* 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
|
589 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
|
590 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
|
591 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
|
592 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
593 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
|
594 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
|
595 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
|
596 (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
|
597 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
|
598 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
|
599 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
600 #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
|
601 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
602 #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
|
603 #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
|
604 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
605 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
|
606 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
|
607 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
|
608 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
609 /* 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
|
610 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
|
611 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
612 } |
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 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
|
615 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
|
616 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
|
617 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
618 /* 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
|
619 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
|
620 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
621 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
622 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
|
623 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
|
624 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
625 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
|
626 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
627 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
628 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
|
629 } |
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 /* 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
|
632 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
|
633 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
|
634 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
|
635 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
636 /* 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
|
637 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
|
638 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
639 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
640 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
|
641 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
|
642 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
643 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
|
644 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
645 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
646 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
|
647 } |
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 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
|
650 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
|
651 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
|
652 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
653 /* Binding = "." | "*" */ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
654 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
|
655 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
656 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
|
657 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
658 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
|
659 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
|
660 binding = '*'; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
661 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
|
662 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
663 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
664 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
|
665 } |
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 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
|
668 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
|
669 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
|
670 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
671 /* 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
|
672 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
|
673 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
|
674 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
|
675 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
676 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
677 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
|
678 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
679 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
|
680 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
681 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
|
682 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
683 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
|
684 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 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
686 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
|
687 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
688 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
689 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
|
690 } |
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 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
|
693 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
|
694 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
|
695 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
696 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
|
697 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
|
698 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
699 /* 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
|
700 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
|
701 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
|
702 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
703 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
|
704 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
|
705 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
|
706 |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
707 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
|
708 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
|
709 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
710 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
|
711 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
|
712 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
|
713 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
|
714 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
|
715 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
716 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
|
717 } |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
718 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
719 /* 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
|
720 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
|
721 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
|
722 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
723 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
|
724 } |
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 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
|
727 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
|
728 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
|
729 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
730 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
|
731 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
|
732 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
|
733 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
734 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
|
735 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
|
736 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
|
737 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
738 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
|
739 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
740 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
|
741 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
|
742 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
|
743 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
744 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
|
745 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
746 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
747 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
748 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
749 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
|
750 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
751 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
752 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
|
753 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
754 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
|
755 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
756 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
757 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
|
758 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
759 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
760 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
|
761 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
762 *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
|
763 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
764 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
765 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
|
766 && '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
|
767 && '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
|
768 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
769 *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
|
770 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
|
771 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
772 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
773 *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
|
774 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
775 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
776 *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
|
777 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
778 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
|
779 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
|
780 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
|
781 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
782 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
|
783 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
784 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
|
785 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
|
786 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
|
787 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
788 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
|
789 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
|
790 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
|
791 } |
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 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
794 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
795 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
796 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
|
797 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
798 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
|
799 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
|
800 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
801 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
802 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
|
803 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
|
804 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
|
805 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
806 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
|
807 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
|
808 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
|
809 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
810 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
|
811 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
|
812 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
|
813 } |
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 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
|
817 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
|
818 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
|
819 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
820 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
|
821 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
822 /* 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
|
823 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
|
824 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
|
825 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
826 /* 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
|
827 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
|
828 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
|
829 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
|
830 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
|
831 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
|
832 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
|
833 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
|
834 P++; |
60640
7dd25916c6bb
Fix typo (skip_while_space -> skip_white_space).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60632
diff
changeset
|
835 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
|
836 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
|
837 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
|
838 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
839 cleanup: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
840 /* 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
|
841 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
|
842 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
|
843 } |
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 #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
|
846 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
847 /* 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
|
848 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
849 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
|
850 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
|
851 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
|
852 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
|
853 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
|
854 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
|
855 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
|
856 in the table as a value for HASHKEY_MAX_NID. A value associated to |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
857 a node is recorded as a value for the node id. |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
858 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
859 A database also has a cache for past queries as a value for |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
860 HASHKEY_QUERY_CACHE. It is another hash table that maps |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
861 "NAME-STRING\0CLASS-STRING" to the result of the query. */ |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
862 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
863 #define HASHKEY_MAX_NID (make_number (0)) |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
864 #define HASHKEY_QUERY_CACHE (make_number (-1)) |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
865 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
866 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
|
867 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
|
868 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
869 XrmDatabase database; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
870 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
871 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
|
872 make_float (DEFAULT_REHASH_SIZE), |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
873 make_float (DEFAULT_REHASH_THRESHOLD), |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
874 Qnil, Qnil, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
875 Fputhash (HASHKEY_MAX_NID, make_number (0), database); |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
876 Fputhash (HASHKEY_QUERY_CACHE, Qnil, database); |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
877 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
878 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
|
879 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
880 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
881 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
|
882 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
|
883 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
|
884 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
|
885 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
886 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
|
887 unsigned hash_code; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
888 int max_nid, i; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
889 Lisp_Object node_id, key; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
890 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
891 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
|
892 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
893 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
|
894 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
|
895 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
896 key = Fcons (node_id, XCAR (quarks)); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
897 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
|
898 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
|
899 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
900 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
|
901 XSETINT (node_id, max_nid); |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
902 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
|
903 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
904 else |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
905 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
|
906 } |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
907 Fputhash (node_id, value, database); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
908 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
909 Fputhash (HASHKEY_MAX_NID, make_number (max_nid), database); |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
910 Fputhash (HASHKEY_QUERY_CACHE, Qnil, 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
|
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 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
913 /* 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
|
914 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
|
915 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
|
916 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
|
917 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
918 void |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
919 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
|
920 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
|
921 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
|
922 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
923 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
|
924 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
925 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
|
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 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
|
928 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
|
929 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
|
930 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
|
931 } |
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 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
934 static Lisp_Object |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
935 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
|
936 XrmDatabase database; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
937 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
|
938 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
939 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
|
940 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
|
941 int i, k; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
942 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
943 if (!CONSP (quark_name)) |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
944 return Fgethash (node_id, database, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
945 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
946 /* First, try tight bindings */ |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
947 labels[0] = XCAR (quark_name); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
948 labels[1] = XCAR (quark_class); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
949 labels[2] = SINGLE_COMPONENT; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
950 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
951 key = Fcons (node_id, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
952 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
|
953 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
954 XSETCDR (key, labels[k]); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
955 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
|
956 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
|
957 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
958 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
|
959 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
|
960 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
|
961 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
|
962 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
963 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
964 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
965 /* Then, try loose bindings */ |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
966 XSETCDR (key, LOOSE_BINDING); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
967 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
|
968 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
|
969 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
970 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
|
971 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
|
972 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
|
973 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
|
974 else |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
975 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
|
976 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
|
977 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
978 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
979 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
|
980 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
981 |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
982 static Lisp_Object |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
983 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
|
984 XrmDatabase database; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
985 Lisp_Object quark_name, quark_class; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
986 { |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
987 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
|
988 quark_name, quark_class); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
989 } |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
990 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
991 /* 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
|
992 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
|
993 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
994 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
|
995 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
|
996 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
|
997 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
|
998 { |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
999 Lisp_Object key, query_cache, quark_name, quark_class, tmp; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1000 int i, nn, nc; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1001 struct Lisp_Hash_Table *h; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1002 unsigned hash_code; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1003 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1004 nn = strlen (name); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1005 nc = strlen (class); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1006 key = make_uninit_string (nn + nc + 1); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1007 strcpy (SDATA (key), name); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1008 strncpy (SDATA (key) + nn + 1, class, nc); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1009 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1010 query_cache = Fgethash (HASHKEY_QUERY_CACHE, database, Qnil); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1011 if (NILP (query_cache)) |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1012 { |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1013 query_cache = make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE), |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1014 make_float (DEFAULT_REHASH_SIZE), |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1015 make_float (DEFAULT_REHASH_THRESHOLD), |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1016 Qnil, Qnil, Qnil); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1017 Fputhash (HASHKEY_QUERY_CACHE, query_cache, database); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1018 } |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1019 h = XHASH_TABLE (query_cache); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1020 i = hash_lookup (h, key, &hash_code); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1021 if (i >= 0) |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1022 return 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
|
1023 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1024 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
|
1025 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
|
1026 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
|
1027 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
|
1028 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
|
1029 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
|
1030 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1031 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
|
1032 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
|
1033 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
|
1034 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
|
1035 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
|
1036 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
|
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 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
|
1039 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
|
1040 else |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1041 { |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1042 tmp = xrm_q_get_resource (database, quark_name, quark_class); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1043 hash_put (h, key, tmp, hash_code); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1044 return tmp; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1045 } |
60632
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 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1048 #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
|
1049 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
|
1050 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
|
1051 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
|
1052 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1053 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
|
1054 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1055 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
|
1056 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
|
1057 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
|
1058 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1059 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
|
1060 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
|
1061 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1062 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
|
1063 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
|
1064 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1065 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
|
1066 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
|
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 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
|
1069 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1070 else if (type_id == CFBooleanGetTypeID ()) |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1071 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
|
1072 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
|
1073 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
|
1074 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1075 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
|
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 #endif |
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 /* 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
|
1080 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
|
1081 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
|
1082 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 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1084 XrmDatabase |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1085 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
|
1086 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
|
1087 { |
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 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
|
1089 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
|
1090 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
|
1091 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
|
1092 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
|
1093 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
|
1094 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
|
1095 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
|
1096 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
|
1097 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
|
1098 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
|
1099 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1100 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
|
1101 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
|
1102 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
|
1103 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
|
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 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
|
1106 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1107 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
|
1108 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1109 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
|
1110 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1111 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
|
1112 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
|
1113 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1114 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
|
1115 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
|
1116 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
|
1117 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1118 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1119 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
|
1120 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
|
1121 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
|
1122 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
|
1123 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
|
1124 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1125 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
|
1126 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
|
1127 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
|
1128 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1129 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
|
1130 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
|
1131 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
|
1132 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
|
1133 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
|
1134 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1135 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1136 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1137 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
|
1138 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
|
1139 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
|
1140 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
|
1141 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
|
1142 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
|
1143 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1144 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
|
1145 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
|
1146 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
|
1147 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1148 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
|
1149 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
|
1150 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
|
1151 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
|
1152 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
|
1153 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1154 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1155 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1156 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
|
1157 out: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1158 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
|
1159 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
|
1160 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
|
1161 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1162 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
|
1163 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1164 UNGCPRO; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1165 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1166 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
|
1167 #else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1168 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
|
1169 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1170 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1171 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1172 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1173 #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
|
1174 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1175 /* 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
|
1176 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
|
1177 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
|
1178 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
|
1179 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
|
1180 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1181 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1182 /* 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
|
1183 + 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
|
1184 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
|
1185 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1186 #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
|
1187 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1188 #ifdef __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1189 #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
|
1190 /* 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
|
1191 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
|
1192 functions. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1193 #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
|
1194 #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
|
1195 /* 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
|
1196 #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
|
1197 #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
|
1198 #elif __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1199 /* 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
|
1200 #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
|
1201 #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
|
1202 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1203 #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
|
1204 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1205 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1206 /* 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
|
1207 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
|
1208 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
|
1209 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
|
1210 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
|
1211 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
|
1212 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1213 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1214 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
|
1215 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1216 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
|
1217 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1218 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1219 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
|
1220 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1221 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1222 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
|
1223 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
|
1224 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
|
1225 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
|
1226 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
|
1227 /* 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
|
1228 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1229 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
|
1230 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
|
1231 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1232 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
|
1233 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1234 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1235 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
|
1236 { |
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_IFDIR | S_IREAD | S_IEXEC; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1238 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1239 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
|
1240 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
|
1241 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
|
1242 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
|
1243 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
|
1244 /* 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
|
1245 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
|
1246 = 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
|
1247 = 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
|
1248 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
|
1249 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1250 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1251 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1252 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
|
1253 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
|
1254 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
|
1255 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
|
1256 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
|
1257 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
|
1258 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
|
1259 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
|
1260 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
|
1261 = 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
|
1262 = 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
|
1263 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
|
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 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
|
1267 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1268 /* 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
|
1269 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
|
1270 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
|
1271 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1272 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1273 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
|
1274 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
|
1275 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
|
1276 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
|
1277 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1278 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1279 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1280 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1281 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1282 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1283 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
|
1284 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1285 int result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1286 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
|
1287 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1288 /* 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
|
1289 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
|
1290 return result; |
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 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
|
1293 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1294 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1295 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
|
1296 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1297 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1298 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1299 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1300 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
|
1301 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1302 int result; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1303 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
|
1304 int len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1305 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1306 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
|
1307 ! (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
|
1308 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1309 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1310 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
|
1311 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1312 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1313 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
|
1314 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
|
1315 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1316 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
|
1317 /* 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
|
1318 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
|
1319 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1320 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1321 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
|
1322 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1323 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1324 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1325 #if __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1326 /* 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
|
1327 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
|
1328 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
|
1329 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
|
1330 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
|
1331 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
|
1332 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
|
1333 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
|
1334 improvement. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1335 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1336 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1337 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
|
1338 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1339 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
|
1340 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
|
1341 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
|
1342 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
|
1343 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1344 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1345 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1346 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1347 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1348 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
|
1349 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1350 #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
|
1351 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1352 HFileParam hfpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1353 char true_pathname[MAXPATHLEN+1], mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1354 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1355 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
|
1356 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1357 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1358 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
|
1359 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1360 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1361 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
|
1362 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
|
1363 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
|
1364 hfpb.ioDirID = 0; /* parent is the root */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1365 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1366 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
|
1367 /* 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
|
1368 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
|
1369 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1370 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1371 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1372 #undef rmdir |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1373 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
|
1374 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1375 HFileParam hfpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1376 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1377 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1378 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
|
1379 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1380 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1381 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
|
1382 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
|
1383 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
|
1384 hfpb.ioDirID = 0; /* parent is the root */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1385 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1386 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
|
1387 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
|
1388 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1389 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1390 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1391 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1392 /* 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
|
1393 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1394 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
|
1395 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1396 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1397 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1398 #endif /* __MRC__ */ |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1401 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1402 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
|
1403 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1404 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
|
1405 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1406 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
|
1407 CInfoPBRec cipb; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1408 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1409 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
|
1410 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1411 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1412 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
|
1413 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
|
1414 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
|
1415 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1416 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
|
1417 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1418 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
|
1419 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1420 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1421 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
|
1422 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
|
1423 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
|
1424 cipb.hFileInfo.ioDirID = 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1425 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
|
1426 /* 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
|
1427 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1428 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
|
1429 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
|
1430 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1431 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1432 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
|
1433 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1434 if (times) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1435 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
|
1436 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1437 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
|
1438 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1439 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1440 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1441 if (times) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1442 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
|
1443 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1444 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
|
1445 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1446 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1447 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
|
1448 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
|
1449 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1452 #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
|
1453 #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
|
1454 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1455 #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
|
1456 #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
|
1457 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1458 #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
|
1459 #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
|
1460 #endif |
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 /* 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
|
1463 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1464 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
|
1465 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1466 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
|
1467 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1468 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
|
1469 CInfoPBRec cipb; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1470 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1471 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
|
1472 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1473 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1474 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
|
1475 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
|
1476 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
|
1477 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1478 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
|
1479 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1480 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
|
1481 return -1; |
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 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
|
1484 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
|
1485 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
|
1486 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
|
1487 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
|
1488 /* 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
|
1489 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1490 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
|
1491 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
|
1492 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1493 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1494 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
|
1495 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1496 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1497 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
|
1498 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
|
1499 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1500 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1501 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1502 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
|
1503 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1504 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1505 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1506 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1507 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1508 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
|
1509 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
|
1510 /* 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
|
1511 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1512 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1513 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1514 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1515 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1516 #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
|
1517 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1518 #undef open |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1519 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1520 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
|
1521 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1522 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
|
1523 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1524 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1525 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1526 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
|
1527 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
|
1528 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1529 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
|
1530 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1531 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1532 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
|
1533 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
|
1534 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
|
1535 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1536 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
|
1537 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1538 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
|
1539 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1540 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1541 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1542 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1543 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
|
1544 /* 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
|
1545 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
|
1546 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
|
1547 return res; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1548 #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
|
1549 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
|
1550 #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
|
1551 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1552 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1553 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1554 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1555 #undef creat |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1556 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1557 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
|
1558 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1559 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
|
1560 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1561 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1562 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1563 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
|
1564 return -1; |
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 (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
|
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 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1570 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1571 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
|
1572 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
|
1573 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1574 #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
|
1575 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
|
1576 #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
|
1577 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1578 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1579 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1580 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1581 #undef unlink |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1582 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1583 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
|
1584 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1585 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
|
1586 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1587 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1588 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1589 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
|
1590 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1591 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1592 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
|
1593 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
|
1594 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
|
1595 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1596 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
|
1597 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1598 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
|
1599 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1600 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1601 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
|
1602 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1603 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1604 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1605 #undef read |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1606 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1607 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
|
1608 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1609 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
|
1610 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1611 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1612 #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
|
1613 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
|
1614 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1615 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
|
1616 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1617 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1618 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1619 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1620 #undef write |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1621 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1622 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
|
1623 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1624 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
|
1625 return count; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1626 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1627 #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
|
1628 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
|
1629 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1630 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
|
1631 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1632 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1633 |
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 #undef rename |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1636 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1637 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
|
1638 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1639 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
|
1640 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
|
1641 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1642 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
|
1643 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1644 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
|
1645 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1646 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1647 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
|
1648 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
|
1649 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
|
1650 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1651 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
|
1652 |
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 (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
|
1654 return -1; |
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 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
|
1657 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1658 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1659 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
|
1660 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
|
1661 MAXPATHLEN+1)) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1662 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1663 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1664 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
|
1665 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1666 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1667 /* 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
|
1668 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
|
1669 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
|
1670 (void) unlink (mac_new_name); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1671 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1672 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
|
1673 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1674 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1675 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1676 #undef fopen |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1677 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
|
1678 FILE * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1679 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
|
1680 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1681 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
|
1682 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1683 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1684 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1685 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
|
1686 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1687 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1688 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
|
1689 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
|
1690 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
|
1691 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1692 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
|
1693 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1694 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
|
1695 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1696 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1697 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1698 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1699 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
|
1700 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
|
1701 #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
|
1702 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
|
1703 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1704 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1705 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1706 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1707 #include "keyboard.h" |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
1708 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
|
1709 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1710 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1711 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
|
1712 int n; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1713 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
|
1714 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
|
1715 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
|
1716 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
|
1717 { |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1718 OSErr err; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
1719 #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
|
1720 EventTimeout timeout_sec = |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
1721 (timeout |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
1722 ? (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
|
1723 + 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
|
1724 : kEventDurationForever); |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
1725 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1726 BLOCK_INPUT; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1727 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
|
1728 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
|
1729 #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
|
1730 EventRecord e; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
1731 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
|
1732 ((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
|
1733 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1734 /* 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
|
1735 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
|
1736 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1737 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
1738 /* 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
|
1739 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
|
1740 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
|
1741 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
|
1742 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
|
1743 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
|
1744 err = noErr; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1745 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1746 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
|
1747 #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
|
1748 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1749 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
|
1750 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
|
1751 return 1; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1752 else |
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 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
|
1755 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1756 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1757 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1758 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
|
1759 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1760 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
|
1761 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1762 /* 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
|
1763 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
|
1764 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
|
1765 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
|
1766 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
|
1767 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
|
1768 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
|
1769 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
|
1770 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1771 errno = EINTR; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1772 return -1; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1773 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1774 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1775 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
|
1776 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1777 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1778 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1779 /* 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
|
1780 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
|
1781 encountered. */ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1782 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1783 #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
|
1784 #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
|
1785 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1786 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
|
1787 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1788 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
|
1789 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1790 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
|
1791 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1792 #ifdef __MRC__ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1793 __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
|
1794 #elif __MWERKS__ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1795 __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
|
1796 #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
|
1797 You lose!!! |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1798 #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
|
1799 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1800 #undef signal |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1801 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1802 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
|
1803 __sigfun |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1804 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
|
1805 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1806 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
|
1807 __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
|
1808 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
|
1809 #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
|
1810 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1811 #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
|
1812 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1813 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
|
1814 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
|
1815 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1816 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1817 #ifdef __MRC__ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1818 __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
|
1819 #elif __MWERKS__ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1820 __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
|
1821 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1822 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1823 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1824 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
|
1825 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
|
1826 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
|
1827 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1828 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1829 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1830 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1831 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
|
1832 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
|
1833 TMTaskPtr qlink; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1834 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1835 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
|
1836 (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
|
1837 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1838 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1839 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1840 static void |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1841 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
|
1842 long count; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1843 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1844 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
|
1845 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1846 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
|
1847 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
|
1848 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
|
1849 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
|
1850 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
|
1851 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
|
1852 if (count) |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1853 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
|
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 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
|
1859 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
|
1860 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1861 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
|
1862 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1863 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
|
1864 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
|
1865 *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
|
1866 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
|
1867 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1868 return 0; |
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 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1871 return -1; |
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 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1875 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1876 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
|
1877 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1878 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
|
1879 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1880 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
|
1881 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1882 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
|
1883 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
|
1884 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1885 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
|
1886 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1887 |
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 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1890 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
|
1891 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1892 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
|
1893 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1894 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
|
1895 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1896 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
|
1897 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
|
1898 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
|
1899 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1900 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
|
1901 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1902 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
|
1903 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1904 |
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 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1907 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
|
1908 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1909 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
|
1910 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1911 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
|
1912 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1913 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
|
1914 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1915 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
|
1916 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1917 else |
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 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
|
1920 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1921 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1922 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1923 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1924 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1925 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1926 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1927 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
|
1928 int which; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1929 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
|
1930 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
|
1931 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1932 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
|
1933 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
|
1934 + (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
|
1935 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1936 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
|
1937 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1938 if (ovalue) |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1939 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1940 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
|
1941 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
|
1942 (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
|
1943 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1944 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
|
1945 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1946 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1947 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
|
1948 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1949 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1950 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1951 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
1952 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1953 /* 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
|
1954 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
|
1955 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
|
1956 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
|
1957 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
|
1958 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1959 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1960 gettimeofday (tp) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1961 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
|
1962 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1963 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
|
1964 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
|
1965 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
|
1966 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
|
1967 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
|
1968 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1969 /* 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
|
1970 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
|
1971 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
|
1972 if (!inited) |
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_t systime; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1975 inited = 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1976 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
|
1977 /* 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
|
1978 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
|
1979 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
|
1980 /* 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
|
1981 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
|
1982 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
|
1983 } |
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 /* 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
|
1986 Microseconds (&uw_microseconds); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1987 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1988 /* 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
|
1989 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
|
1990 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
|
1991 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
|
1992 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
|
1993 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
|
1994 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1995 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1996 } |
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 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2000 unsigned int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2001 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
|
2002 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2003 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
|
2004 EventRecord e; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2005 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2006 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
|
2007 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
|
2008 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2009 /* 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
|
2010 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
|
2011 } |
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 return (0); |
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 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2016 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2017 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2018 /* 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
|
2019 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
|
2020 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2021 #undef gmtime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2022 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
|
2023 struct tm * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2024 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
|
2025 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2026 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
|
2027 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2028 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
|
2029 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2030 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2031 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2032 #undef localtime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2033 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
|
2034 struct tm * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2035 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
|
2036 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2037 #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
|
2038 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
|
2039 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2040 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
|
2041 #endif |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2042 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2043 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
|
2044 } |
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 #undef ctime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2048 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
|
2049 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2050 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
|
2051 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2052 #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
|
2053 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
|
2054 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2055 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
|
2056 #endif |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2057 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2058 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
|
2059 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2060 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2061 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2062 #undef time |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2063 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
|
2064 time_t |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2065 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
|
2066 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2067 #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
|
2068 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
|
2069 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2070 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
|
2071 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2072 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2073 if (timer) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2074 *timer = mac_time; |
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 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
|
2077 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2078 |
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 /* 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
|
2081 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2082 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2083 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
|
2084 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2085 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2086 } |
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 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2090 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
|
2091 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2092 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
|
2093 exit (1); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2094 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2095 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2096 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2097 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2098 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
|
2099 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2100 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
|
2101 static seqnum = 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2102 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2103 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
|
2104 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
|
2105 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
|
2106 k--; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2107 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2108 k++; /* make k index of first 'X' */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
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 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
|
2111 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2112 /* 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
|
2113 sprintf (&template[k], "%0*d", len-k, seqnum++); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2114 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2115 return template; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2116 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2117 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2118 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
|
2119 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2122 /* 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
|
2123 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2124 #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
|
2125 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2126 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
|
2127 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
|
2128 |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2129 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
|
2130 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2131 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
|
2132 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
|
2133 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2134 |
53122 | 2135 static struct group my_group = |
2136 { | |
2137 /* There are no groups on the mac, so we just return "root" as the | |
2138 group name. */ | |
2139 "root", | |
2140 }; | |
2141 | |
44890
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 /* 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
|
2144 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2145 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
|
2146 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2147 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2148 getwd (char *); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2149 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2150 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2151 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
|
2152 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2153 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
|
2154 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2155 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
|
2156 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2157 /* 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
|
2158 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
|
2159 tree. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2160 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
|
2161 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
|
2162 /* 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
|
2163 compared. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2164 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
|
2165 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
|
2166 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2167 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
|
2168 i--; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2169 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
|
2170 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
|
2171 if (found) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2172 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
|
2173 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2174 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2175 j = i; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2176 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
|
2177 } |
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 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2180 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2181 if (!found) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2182 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2183 /* 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
|
2184 anyway. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2185 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
|
2186 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
|
2187 } |
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 |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2191 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
|
2192 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2193 "emacs", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2194 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
|
2195 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2196 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2197 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
|
2198 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2199 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2200 static void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2201 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
|
2202 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2203 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
|
2204 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2205 /* 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
|
2206 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
|
2207 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2208 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
|
2209 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
|
2210 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2211 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
|
2212 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
|
2213 (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
|
2214 *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
|
2215 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
|
2216 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
|
2217 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2218 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2219 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
|
2220 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2221 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2222 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2223 struct passwd * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2224 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
|
2225 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2226 if (!my_passwd_inited) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2227 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2228 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
|
2229 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
|
2230 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2231 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2232 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
|
2233 } |
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 |
53122 | 2236 struct group * |
2237 getgrgid (gid_t gid) | |
2238 { | |
2239 return &my_group; | |
2240 } | |
2241 | |
2242 | |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2243 struct passwd * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2244 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
|
2245 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2246 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
|
2247 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
|
2248 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2249 if (!my_passwd_inited) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2250 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2251 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
|
2252 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
|
2253 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2254 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2255 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
|
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 /* 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
|
2260 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
|
2261 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
|
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2265 fork () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2266 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2267 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2268 } |
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2272 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
|
2273 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2274 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2275 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2278 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2279 sys_subshell () |
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 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
|
2282 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2285 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2286 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
|
2287 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2288 } |
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 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2292 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
|
2293 { |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2296 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2297 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2298 setpgrp () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2299 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2300 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2301 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2302 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2303 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2304 /* 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
|
2305 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2306 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2307 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
|
2308 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2309 errno = EACCES; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2310 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2313 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2314 /* 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
|
2315 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2316 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2317 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
|
2318 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2319 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2320 return -1; |
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 |
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2325 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
|
2326 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2327 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2328 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2329 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2330 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2331 #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
|
2332 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2333 /* 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
|
2334 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
|
2335 MAXPATHLEN. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2336 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2337 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
|
2338 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
|
2339 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2340 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
|
2341 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2342 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2343 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2344 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
|
2345 return 0; |
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 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
|
2348 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
|
2349 p2cstr (path); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2350 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2351 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
|
2352 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
|
2353 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2354 do |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2355 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2356 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
|
2357 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
|
2358 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
|
2359 /* 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
|
2360 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2361 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
|
2362 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
|
2363 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2364 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2365 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
|
2366 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
|
2367 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2368 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2369 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
|
2370 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
|
2371 /* 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
|
2372 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
|
2373 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2374 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
|
2375 /* stop when we see the volume's root directory */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2376 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2377 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
|
2378 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2379 |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2380 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2381 OSErr |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2382 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
|
2383 const char *ufn; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2384 FSSpec *fs; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2385 { |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2386 Str255 mac_pathname; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2387 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2388 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
|
2389 return fnfErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2390 else |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2391 { |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2392 c2pstr (mac_pathname); |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2393 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
|
2394 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2395 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2396 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2397 OSErr |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2398 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
|
2399 const FSSpec *fs; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2400 char *ufn; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2401 int ufnbuflen; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2402 { |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2403 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
|
2404 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2405 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
|
2406 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
|
2407 && 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
|
2408 return noErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2409 else |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2410 return fnfErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2411 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
2412 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2413 #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
|
2414 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2415 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2416 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
|
2417 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2418 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
|
2419 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2420 FSSpec fsspec; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2421 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
|
2422 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
|
2423 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2424 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2425 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
|
2426 return -1; |
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 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
|
2429 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
|
2430 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
|
2431 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2432 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2433 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2434 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2435 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2436 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
|
2437 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
|
2438 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2439 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2440 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2441 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2442 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2443 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
|
2444 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
|
2445 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2446 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2447 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2450 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
|
2451 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2452 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2453 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2454 } |
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 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
|
2457 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2458 |
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 /* 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
|
2461 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2462 static int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2463 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
|
2464 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2465 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
|
2466 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
|
2467 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2468 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2469 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
|
2470 return -1; |
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 buf[0] = '\0'; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2473 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2474 p = path; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2475 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2476 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
|
2477 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2478 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
|
2479 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
|
2480 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2481 while (q) |
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 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
|
2484 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
|
2485 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
|
2486 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
|
2487 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2488 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
|
2489 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2490 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
|
2491 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2492 strcat (buf, "/"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2493 len++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2494 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
|
2495 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
|
2496 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2497 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2498 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
|
2499 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2500 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2501 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
|
2502 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
|
2503 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2504 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2505 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2506 mode_t |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2507 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
|
2508 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2509 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
|
2510 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
|
2511 mask = numask; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2512 return oldmask; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2513 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2514 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2515 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2516 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2517 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
|
2518 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2519 /* 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
|
2520 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2524 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
|
2525 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
|
2526 { |
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
|
2527 /* 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
|
2528 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
|
2529 } |
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
|
2530 |
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
|
2531 |
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
|
2532 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
|
2533 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
|
2534 { |
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
|
2535 /* 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
|
2536 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
|
2537 } |
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
|
2538 |
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
|
2539 |
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
|
2540 int |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2541 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
|
2542 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2543 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2544 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
|
2545 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2546 /* 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
|
2547 descriptor */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2548 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
|
2549 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2550 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2551 #endif |
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 /* 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
|
2556 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
|
2557 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
|
2558 unsuccessful ones. */ |
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2561 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
|
2562 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2563 int fd, ret; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2564 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2565 close (newd); |
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 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
|
2568 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
|
2569 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2570 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
|
2571 return newd; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2572 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
|
2573 close (fd); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2574 return ret; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2575 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2576 |
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 /* 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
|
2579 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2580 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2581 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
|
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 (char *) -1; |
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 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
|
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 0; |
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 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
|
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 -1; |
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 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2602 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2603 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
|
2604 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2605 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
|
2606 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2607 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2608 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2609 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2610 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2611 |
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 getgid () |
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 100; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2618 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2619 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2620 getegid () |
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 return 100; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2623 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2624 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2625 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2626 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2627 getuid () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2628 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2629 return 200; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2630 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2633 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2634 geteuid () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2635 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2636 return 200; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2637 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2638 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2639 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2640 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2641 #ifdef __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2642 #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
|
2643 #undef getpid |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2644 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2645 getpid () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2646 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2647 return 9999; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2648 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2649 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2650 #endif /* __MWERKS__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2651 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2652 #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
|
2653 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2654 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2655 /* 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
|
2656 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
|
2657 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
|
2658 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
|
2659 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
|
2660 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
|
2661 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
|
2662 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
|
2663 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2664 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2665 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
|
2666 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2667 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
|
2668 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
|
2669 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
|
2670 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2671 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
|
2672 CInfoPBRec cpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2673 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
|
2674 DIR *dir; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2675 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2676 /* 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
|
2677 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
|
2678 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
|
2679 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2680 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
|
2681 &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
|
2682 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
|
2683 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2684 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2685 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
|
2686 return NULL; |
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 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
|
2689 strcat (full_path, "Emacs:"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2690 else |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2691 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2692 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2693 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
|
2694 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2695 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2696 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
|
2697 if (dir) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2698 closedir (dir); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2699 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
|
2700 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2701 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2702 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
|
2703 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
|
2704 } |
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 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
|
2707 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2708 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2709 #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
|
2710 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2711 /* 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
|
2712 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
|
2713 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
|
2714 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
|
2715 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
|
2716 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
|
2717 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
|
2718 parameter StringListID. |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2719 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2720 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2721 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2722 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
|
2723 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2724 Handle h; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2725 Ptr p; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2726 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
|
2727 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2728 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
|
2729 if (h) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2730 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2731 HLock (h); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2732 p = *h; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2733 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
|
2734 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
|
2735 *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
|
2736 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
|
2737 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2738 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
|
2739 (*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
|
2740 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
|
2741 (*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
|
2742 p += length; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2743 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2744 (*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
|
2745 HUnlock (h); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2746 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2747 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2748 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2749 /* 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
|
2750 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
|
2751 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
|
2752 *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
|
2753 (*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
|
2754 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2755 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2758 static char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2759 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
|
2760 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2761 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
|
2762 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
|
2763 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2764 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
|
2765 CInfoPBRec cpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2766 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
|
2767 DIR *dir; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2768 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2769 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
|
2770 &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
|
2771 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
|
2772 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2773 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2774 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
|
2775 return NULL; |
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 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
|
2778 MAXPATHLEN+1)) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2779 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2780 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2781 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
|
2782 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2783 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2784 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2785 char **environ; |
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 #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
|
2788 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2789 /* 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
|
2790 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2791 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2792 init_environ () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2793 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2794 int i; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2795 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2796 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
|
2797 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2798 i = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2799 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
|
2800 i++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2801 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2802 /* 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
|
2803 by resource. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2804 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
|
2805 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2806 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
|
2807 if (environ) |
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 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
|
2810 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
|
2811 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2812 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
|
2813 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
|
2814 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2815 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
|
2816 i++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2817 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2818 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2819 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2820 /* 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
|
2821 by resource. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2822 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
|
2823 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2824 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
|
2825 if (environ) |
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 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
|
2828 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
|
2829 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
|
2830 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2831 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
|
2832 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
|
2833 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
|
2834 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2835 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
|
2836 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2837 } |
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 |
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 /* 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
|
2842 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2843 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2844 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
|
2845 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2846 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
|
2847 char **e; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2848 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2849 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
|
2850 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
|
2851 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
|
2852 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2853 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
|
2854 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
|
2855 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2856 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2857 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2860 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2861 /* 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
|
2862 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
|
2863 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2864 "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
|
2865 "Abort", /* 1 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2866 "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
|
2867 "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
|
2868 "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
|
2869 "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
|
2870 "?", "?", "?", "?", "?", "?", "?", "?", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2871 "Terminal" /* 32 */ |
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 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2874 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
|
2875 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2876 "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
|
2877 "Abort", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2878 "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
|
2879 "Illegal instruction", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2880 "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
|
2881 "Segment violation", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2882 "Terminal" |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2883 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2884 #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
|
2885 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2886 #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
|
2887 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2888 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2889 #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
|
2890 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2891 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2892 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
|
2893 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2894 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
|
2895 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
|
2896 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
|
2897 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2898 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
|
2899 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
|
2900 return 0; |
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 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2903 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2904 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2905 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2906 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2907 /* 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
|
2908 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
|
2909 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2910 /* 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
|
2911 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
|
2912 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2913 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2914 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2915 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
|
2916 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2917 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
|
2918 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2919 if (*s == '\\') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2920 s++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2921 s++; |
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 if (*s) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2925 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2926 *s = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2927 return s; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2928 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2929 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2930 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2931 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2932 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2933 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2934 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2935 mystrtok (char *s) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2936 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2937 while (*s) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2938 s++; |
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 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
|
2941 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2942 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2943 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2944 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2945 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
|
2946 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2947 while (*from) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2948 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2949 if (*from == '\\') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2950 from++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2951 *to++ = *from++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2952 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2953 *to = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2954 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2955 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2956 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2957 /* 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
|
2958 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
|
2959 "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
|
2960 "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
|
2961 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
|
2962 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
|
2963 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
|
2964 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
|
2965 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
|
2966 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
|
2967 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
|
2968 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
|
2969 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
|
2970 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
|
2971 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2972 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2973 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
|
2974 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
|
2975 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
|
2976 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
|
2977 { |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
2978 #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
|
2979 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2980 #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
|
2981 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
|
2982 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
|
2983 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
|
2984 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
|
2985 OSErr iErr; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2986 FSSpec spec; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2987 LaunchParamBlockRec lpbr; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2988 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
|
2989 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
|
2990 TargetID targ; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2991 unsigned long ref_con, len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2992 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2993 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
|
2994 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2995 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
|
2996 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2997 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
|
2998 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2999 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
|
3000 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3001 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3002 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
|
3003 + 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
|
3004 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3005 argc = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3006 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
|
3007 argc++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3008 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3009 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
|
3010 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3011 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3012 /* 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
|
3013 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
|
3014 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
|
3015 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
|
3016 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
|
3017 && 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
|
3018 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3019 char *command, *t, tempmacpathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3020 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3021 /* 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
|
3022 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
|
3023 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
|
3024 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
|
3025 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
|
3026 strcat (command, " "); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3027 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3028 t = command; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3029 newargc = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3030 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
|
3031 while (t) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3032 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3033 newargc++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3034 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
|
3035 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3036 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3037 newargv = (char **) alloca (sizeof (char *) * newargc); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3038 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3039 t = command; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3040 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
|
3041 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3042 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
|
3043 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
|
3044 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3045 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
|
3046 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
|
3047 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3048 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3049 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
|
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 (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
|
3052 == 0) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3053 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3054 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3055 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3056 { /* 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
|
3057 #if 0 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3058 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
|
3059 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
|
3060 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
|
3061 #endif /* 0 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3062 Lisp_Object path; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
3063 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
|
3064 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
|
3065 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3066 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
|
3067 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
|
3068 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
|
3069 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
|
3070 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3071 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3072 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
|
3073 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3074 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3075 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3076 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
|
3077 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3078 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3079 newargv = (char **) alloca (sizeof (char *) * argc); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3080 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
|
3081 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
|
3082 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3083 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
|
3084 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3085 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
|
3086 if (t) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3087 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3088 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
|
3089 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
|
3090 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
|
3091 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
|
3092 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
|
3093 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3094 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
|
3095 + 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
|
3096 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
|
3097 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
|
3098 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3099 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3100 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3101 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
|
3102 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
|
3103 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
|
3104 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3105 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
|
3106 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
|
3107 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3108 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3109 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3110 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
|
3111 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
|
3112 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3113 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3114 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3115 /* 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
|
3116 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
|
3117 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
|
3118 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
|
3119 if (!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 p = param; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3123 *p++ = newargc; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3124 /* 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
|
3125 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
|
3126 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
|
3127 *p++ = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3128 /* 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
|
3129 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
|
3130 p += strlen (macinfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3131 *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
|
3132 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
|
3133 p += strlen (macoutfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3134 *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
|
3135 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
|
3136 p += strlen (macerrfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3137 *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
|
3138 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
|
3139 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3140 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
|
3141 p += strlen (newargv[j]); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3142 *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
|
3143 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3144 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3145 c2pstr (macappname); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3146 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3147 iErr = FSMakeFSSpec (0, 0, macappname, &spec); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3148 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3149 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
|
3150 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3151 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3152 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3153 } |
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 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
|
3156 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
|
3157 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
|
3158 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
|
3159 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
|
3160 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3161 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
|
3162 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
|
3163 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3164 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3165 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3166 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3167 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3168 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
|
3169 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
|
3170 /* 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
|
3171 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3172 retries = 3; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3173 /* 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
|
3174 terminated recently. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3175 do |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3176 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3177 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
|
3178 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
|
3179 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3180 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
|
3181 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3182 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
|
3183 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3184 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3185 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3186 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3187 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3188 cursor_region_handle = NewRgn (); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3189 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3190 /* 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
|
3191 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
|
3192 while (1) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3193 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
|
3194 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
|
3195 && 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
|
3196 break; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3197 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3198 /* 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
|
3199 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
|
3200 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
|
3201 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3202 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
|
3203 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3204 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3205 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3206 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3207 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
|
3208 free (param); |
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 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
|
3211 #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
|
3212 } |
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 DIR * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3216 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
|
3217 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3218 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
|
3219 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
|
3220 DIR *dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3221 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3222 HVolumeParam vpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3223 int len, vol_name_len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3224 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3225 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
|
3226 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3227 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3228 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
|
3229 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
|
3230 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
|
3231 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3232 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
|
3233 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3234 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
|
3235 if (!dirp) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3236 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3237 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3238 /* 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
|
3239 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
|
3240 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
|
3241 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3242 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
|
3243 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
|
3244 return dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3245 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3246 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3247 /* 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
|
3248 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
|
3249 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3250 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3251 /* 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
|
3252 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
|
3253 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
|
3254 strcat (mac_pathname, ":"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3255 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3256 /* 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
|
3257 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
|
3258 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
|
3259 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
|
3260 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
|
3261 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3262 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
|
3263 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
|
3264 /* 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
|
3265 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
|
3266 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
|
3267 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
|
3268 /* 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
|
3269 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3270 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
|
3271 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
|
3272 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3273 errno = ENOENT; |
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 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
|
3278 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
|
3279 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3280 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
|
3281 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
|
3282 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
|
3283 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3284 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
|
3285 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
|
3286 /* 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
|
3287 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
|
3288 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
|
3289 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
|
3290 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
|
3291 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3292 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3293 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3296 dirp->vol_ref_num = vpb.ioVRefNum; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3297 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3298 return dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3299 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3300 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3301 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3302 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
|
3303 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3304 free (dp); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3305 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3306 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3307 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3310 struct dirent * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3311 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
|
3312 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3313 HParamBlockRec hpblock; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3314 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3315 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
|
3316 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
|
3317 int done; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3318 char *p; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3319 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3320 /* 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
|
3321 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
|
3322 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
|
3323 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
|
3324 pointer. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3325 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
|
3326 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3327 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
|
3328 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
|
3329 hpblock.volumeParam.ioVolIndex = dp->current_index; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3330 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3331 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
|
3332 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
|
3333 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3334 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3335 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3336 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3337 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3338 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
|
3339 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
|
3340 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3341 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
|
3342 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3343 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
|
3344 s_dirent.d_name = s_name; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3345 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3346 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
|
3347 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3348 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3349 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3350 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
|
3351 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
|
3352 /* 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
|
3353 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3354 /* 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
|
3355 done = false; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3356 while (!done) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3357 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3358 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
|
3359 /* 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
|
3360 cipb.hFileInfo.ioFDirIndex = dp->current_index; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3361 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3362 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
|
3363 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
|
3364 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3365 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3366 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3367 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3368 |
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3369 /* 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
|
3370 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
|
3371 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
|
3372 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3373 done = !(cipb.hFileInfo.ioFlFndrInfo.fdFlags & fInvisible); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3374 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3375 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
|
3376 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3377 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3378 p2cstr (s_name); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3379 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3380 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
|
3381 while (*p) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3382 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3383 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3384 *p = ':'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3385 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3386 } |
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 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
|
3389 /* 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
|
3390 s_dirent.d_name = s_name; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3391 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3392 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
|
3393 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3394 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3395 |
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 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3398 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
|
3399 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3400 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
|
3401 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
|
3402 OSErr errno; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3403 CInfoPBRec cipb; |
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 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
|
3406 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3407 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3408 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
|
3409 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3410 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3411 return path; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3414 #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
|
3415 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3416 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3417 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3418 initialize_applescript () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3419 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3420 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
|
3421 OSAError osaerror; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3422 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3423 /* 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
|
3424 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
|
3425 error. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3426 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
|
3427 kAppleScriptSubtype); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3428 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3429 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
|
3430 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
|
3431 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
|
3432 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
|
3433 if (osaerror) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3434 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
|
3435 /* 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
|
3436 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3437 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3438 |
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
|
3439 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
|
3440 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
|
3441 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3442 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
|
3443 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
|
3444 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3445 |
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
|
3446 /* Convert a lisp string to the 4 byte character code. */ |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
3447 |
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
|
3448 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
|
3449 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
|
3450 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3451 OSType result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3452 if (NILP(arg)) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3453 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3454 result = defCode; |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
3455 } |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3456 else |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3457 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3458 /* check type string */ |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3459 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
|
3460 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
|
3461 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3462 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
|
3463 } |
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
|
3464 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
|
3465 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3466 return result; |
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 |
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 /* 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
|
3470 |
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 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
|
3472 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
|
3473 { |
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
|
3474 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
|
3475 |
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
|
3476 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
|
3477 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3478 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3479 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3480 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
|
3481 doc: /* Get the creator code of FILENAME as a four character string. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3482 (filename) |
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
|
3483 Lisp_Object filename; |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3484 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3485 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
|
3486 #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
|
3487 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
|
3488 #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
|
3489 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
|
3490 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3491 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3492 Lisp_Object result = Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3493 CHECK_STRING (filename); |
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 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
|
3496 return Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3497 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3498 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
|
3499 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3500 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
|
3501 #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
|
3502 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
|
3503 #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
|
3504 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
|
3505 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3506 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3507 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3508 { |
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 |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3510 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
|
3511 |
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 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
|
3513 &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
|
3514 #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
|
3515 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
|
3516 |
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
|
3517 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
|
3518 #endif |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
3519 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3520 { |
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
|
3521 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3522 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
|
3523 #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
|
3524 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
|
3525 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3526 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3527 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3528 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3529 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3530 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
|
3531 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3532 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3533 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3534 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3535 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
|
3536 doc: /* Get the type code of FILENAME as a four character string. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3537 (filename) |
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
|
3538 Lisp_Object filename; |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3539 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3540 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
|
3541 #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
|
3542 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
|
3543 #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
|
3544 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
|
3545 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3546 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3547 Lisp_Object result = Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3548 CHECK_STRING (filename); |
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 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
|
3551 return Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3552 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3553 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
|
3554 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3555 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
|
3556 #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
|
3557 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
|
3558 #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
|
3559 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
|
3560 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3561 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3562 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3563 { |
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
|
3564 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3565 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
|
3566 |
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 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
|
3568 &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
|
3569 #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
|
3570 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
|
3571 |
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
|
3572 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
|
3573 #endif |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
3574 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3575 { |
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
|
3576 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3577 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
|
3578 #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
|
3579 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
|
3580 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3581 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3582 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3583 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3584 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3585 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
|
3586 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3587 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3588 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3589 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3590 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
|
3591 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
|
3592 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
|
3593 assumed. Return non-nil if successful. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3594 (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
|
3595 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
|
3596 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3597 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
|
3598 #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
|
3599 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
|
3600 #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
|
3601 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
|
3602 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3603 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3604 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3605 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3606 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
|
3607 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3608 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
|
3609 return Qnil; |
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 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
|
3612 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3613 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
|
3614 #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
|
3615 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
|
3616 #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
|
3617 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
|
3618 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3619 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3620 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3621 { |
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
|
3622 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3623 FSCatalogInfo catalogInfo; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3624 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
|
3625 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
|
3626 &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
|
3627 #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
|
3628 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
|
3629 |
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 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
|
3631 #endif |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
3632 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3633 { |
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
|
3634 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3635 ((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
|
3636 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
|
3637 /* 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
|
3638 #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
|
3639 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
|
3640 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
|
3641 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3642 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3643 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3644 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3645 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3646 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
|
3647 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3648 return Qt; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3649 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3650 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3651 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
|
3652 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
|
3653 CODE must be a 4-character string. Return non-nil if successful. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3654 (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
|
3655 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
|
3656 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3657 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
|
3658 #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
|
3659 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
|
3660 #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
|
3661 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
|
3662 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3663 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3664 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3665 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3666 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
|
3667 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3668 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
|
3669 return Qnil; |
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 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
|
3672 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3673 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
|
3674 #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
|
3675 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
|
3676 #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
|
3677 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
|
3678 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3679 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3680 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3681 { |
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
|
3682 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3683 FSCatalogInfo catalogInfo; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3684 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
|
3685 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
|
3686 &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
|
3687 #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
|
3688 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
|
3689 |
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
|
3690 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
|
3691 #endif |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
3692 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3693 { |
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
|
3694 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3695 ((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
|
3696 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
|
3697 /* 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
|
3698 #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
|
3699 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
|
3700 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
|
3701 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3702 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3703 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3704 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3705 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3706 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
|
3707 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3708 return Qt; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3709 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
3710 |
44890
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 /* 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
|
3713 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
|
3714 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
|
3715 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
|
3716 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
|
3717 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
|
3718 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
|
3719 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
|
3720 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
|
3721 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3722 static long |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3723 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
|
3724 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3725 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
|
3726 OSErr error; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3727 OSAError osaerror; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3728 long length; |
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 *result = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3731 |
45851
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
3732 if (!as_scripting_component) |
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
3733 initialize_applescript(); |
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
3734 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3735 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
|
3736 if (error) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3737 return error; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3738 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3739 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
|
3740 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
|
3741 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3742 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
|
3743 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3744 /* 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
|
3745 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
|
3746 &error_desc)) |
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 #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
|
3749 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
|
3750 *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
|
3751 if (*result) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3752 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3753 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
|
3754 *(*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
|
3755 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3756 #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
|
3757 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
|
3758 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
|
3759 *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
|
3760 if (*result) |
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 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
|
3763 *(*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
|
3764 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3765 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
|
3766 #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
|
3767 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
|
3768 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3769 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3770 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
|
3771 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3772 #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
|
3773 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
|
3774 *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
|
3775 if (*result) |
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 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
|
3778 *(*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
|
3779 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3780 #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
|
3781 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
|
3782 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
|
3783 *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
|
3784 if (*result) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3785 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3786 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
|
3787 *(*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
|
3788 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3789 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
|
3790 #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
|
3791 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
|
3792 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3793 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3794 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
|
3795 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3796 return osaerror; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3797 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3798 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3799 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3800 DEFUN ("do-applescript", Fdo_applescript, Sdo_applescript, 1, 1, 0, |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3801 doc: /* Compile and execute AppleScript SCRIPT and return the result. |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3802 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
|
3803 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
|
3804 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
|
3805 component. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3806 (script) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3807 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
|
3808 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3809 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
|
3810 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
|
3811 long status; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3812 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3813 CHECK_STRING (script); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3814 |
57425
0867872551d9
macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow
Steven Tamm <steventamm@mac.com>
parents:
57397
diff
changeset
|
3815 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
|
3816 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
|
3817 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
|
3818 if (status) |
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 if (!result) |
45851
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
3821 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
|
3822 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3823 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3824 /* 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
|
3825 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
|
3826 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
|
3827 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
|
3828 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
|
3829 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
|
3830 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
|
3831 xfree (result); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3832 error (temp); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3833 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3834 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3835 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3836 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3837 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
|
3838 xfree (result); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3839 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
|
3840 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3841 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3842 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3843 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3844 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
|
3845 Smac_file_name_to_posix, 1, 1, 0, |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3846 doc: /* Convert Macintosh FILENAME to Posix form. */) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3847 (filename) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3848 Lisp_Object filename; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3849 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3850 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
|
3851 |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3852 CHECK_STRING (filename); |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3853 |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3854 if (mac_to_posix_pathname (SDATA (filename), posix_filename, MAXPATHLEN)) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3855 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
|
3856 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3857 return Qnil; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3858 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3859 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3860 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3861 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
|
3862 Sposix_file_name_to_mac, 1, 1, 0, |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3863 doc: /* Convert Posix FILENAME to Mac form. */) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3864 (filename) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3865 Lisp_Object filename; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3866 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3867 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
|
3868 |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3869 CHECK_STRING (filename); |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3870 |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3871 if (posix_to_mac_pathname (SDATA (filename), mac_filename, MAXPATHLEN)) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3872 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
|
3873 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3874 return Qnil; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3875 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3876 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3877 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3878 #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
|
3879 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
|
3880 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
|
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 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
|
3883 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
|
3884 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
|
3885 strings. If it is a list, the (i+1)-th element is used as a key for |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3886 the CFDictionary value obtained by the i-th element. Return nil if |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3887 lookup is failed at some stage. |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3888 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3889 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
|
3890 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
|
3891 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3892 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
|
3893 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
|
3894 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
|
3895 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3896 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
|
3897 ------------------------------------------------------------ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3898 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
|
3899 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
|
3900 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
|
3901 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
|
3902 (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
|
3903 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
|
3904 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
|
3905 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
|
3906 (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
|
3907 |
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 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
|
3909 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
|
3910 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
|
3911 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3912 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
|
3913 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
|
3914 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
|
3915 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
|
3916 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
|
3917 otherwise. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
3918 (key, application, format, hash_bound) |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3919 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
|
3920 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3921 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
|
3922 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
|
3923 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
|
3924 |
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 (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
|
3926 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
|
3927 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3928 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3929 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
|
3930 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
|
3931 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
|
3932 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
|
3933 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
|
3934 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3935 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
|
3936 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
|
3937 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
|
3938 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
|
3939 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
|
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 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
|
3942 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3943 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
|
3944 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
|
3945 { |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
3946 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
|
3947 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
|
3948 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
|
3949 } |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
3950 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
|
3951 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
|
3952 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
|
3953 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
|
3954 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
|
3955 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
|
3956 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
|
3957 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3958 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
|
3959 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
|
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 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
|
3962 break; |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
3963 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
|
3964 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
|
3965 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
|
3966 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
|
3967 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
|
3968 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
|
3969 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
|
3970 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3971 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3972 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
|
3973 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
|
3974 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3975 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
|
3976 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
|
3977 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
|
3978 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
|
3979 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
|
3980 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3981 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3982 result = |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3983 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
|
3984 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
|
3985 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3986 out: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3987 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
|
3988 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
|
3989 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
|
3990 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3991 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
|
3992 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
3993 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
|
3994 } |
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
|
3995 |
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 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
|
3998 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
|
3999 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
|
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 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
|
4002 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
|
4003 |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4004 if (NILP (obj)) |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4005 return kCFStringEncodingUnicode; |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4006 |
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
|
4007 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
|
4008 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
|
4009 |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4010 if (SYMBOLP (obj) && !NILP (Fcoding_system_p (obj))) |
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
|
4011 { |
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 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
|
4013 |
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 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
|
4015 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
|
4016 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
|
4017 } |
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 |
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 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
|
4020 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
|
4021 |
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 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
|
4023 { |
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 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
|
4025 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
|
4026 { |
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 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
|
4028 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
|
4029 } |
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 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
|
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 |
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 #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
|
4036 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
|
4037 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
|
4038 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
|
4039 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
|
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 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
|
4042 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
|
4043 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
|
4044 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
|
4045 |
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 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
|
4047 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
|
4048 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
|
4049 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
|
4050 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
|
4051 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
|
4052 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
|
4053 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
|
4054 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
|
4055 { |
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 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
|
4057 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
|
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 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
|
4060 { |
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 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
|
4062 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
|
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 |
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 (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
|
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 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
|
4068 |
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 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
|
4070 { |
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 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
|
4072 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
|
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 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
|
4076 { |
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 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
|
4078 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
|
4079 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
|
4080 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
|
4081 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
|
4082 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
|
4083 |
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 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
|
4085 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
|
4086 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
|
4087 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
|
4088 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
|
4089 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
|
4090 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
|
4091 |
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 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
|
4093 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
|
4094 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
|
4095 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
|
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 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
|
4098 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
|
4099 { |
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 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
|
4101 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
|
4102 { |
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 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
|
4104 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
|
4105 } |
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 |
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 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
|
4109 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
|
4110 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
|
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 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
|
4113 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
|
4114 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
|
4115 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
|
4116 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
|
4117 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
|
4118 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
|
4119 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
|
4120 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
|
4121 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
|
4122 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
|
4123 { |
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 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
|
4125 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
|
4126 } |
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 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
|
4128 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
|
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 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
|
4131 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
|
4132 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
|
4133 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
|
4134 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
|
4135 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
|
4136 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
|
4137 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
|
4138 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
|
4139 } |
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 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
|
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 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
|
4143 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
|
4144 } |
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 |
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 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
|
4147 } |
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 #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
|
4149 |
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 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
|
4151 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
|
4152 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
|
4153 Each encoding is specified by either a coding system symbol, a mime |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4154 charset string, or an integer as a CFStringEncoding value. Nil for |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4155 encoding means UTF-16 in native byte order, no byte order mark. |
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
|
4156 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
|
4157 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
|
4158 NFKD, NFC, NFKC, HFS+D, or HFS+C. |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4159 On successful conversion, return the result string, else return nil. */) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4160 (string, source, target, normalization_form) |
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
|
4161 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
|
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 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
|
4164 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
|
4165 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
|
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 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
|
4168 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
|
4169 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
|
4170 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
|
4171 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
|
4172 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
|
4173 |
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 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
|
4175 |
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 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
|
4177 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
|
4178 |
64553
58cbcf3e6ed1
(Fmac_code_convert_string): Add comment about Fstring_as_unibyte.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64358
diff
changeset
|
4179 /* We really want string_to_unibyte, but since it doesn't exist yet, we |
58cbcf3e6ed1
(Fmac_code_convert_string): Add comment about Fstring_as_unibyte.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64358
diff
changeset
|
4180 use string_as_unibyte which works as well, except for the fact that |
58cbcf3e6ed1
(Fmac_code_convert_string): Add comment about Fstring_as_unibyte.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64358
diff
changeset
|
4181 it's too permissive (it doesn't check that the multibyte string only |
58cbcf3e6ed1
(Fmac_code_convert_string): Add comment about Fstring_as_unibyte.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64358
diff
changeset
|
4182 contain single-byte chars). */ |
64358
a673f66d6156
[TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Use
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64247
diff
changeset
|
4183 string = Fstring_as_unibyte (string); |
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
|
4184 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
|
4185 && 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
|
4186 str = CFStringCreateWithBytes (NULL, SDATA (string), SBYTES (string), |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4187 src_encoding, !NILP (source)); |
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
|
4188 #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
|
4189 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
|
4190 { |
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
|
4191 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
|
4192 |
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
|
4193 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
|
4194 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
|
4195 } |
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
|
4196 #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
|
4197 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
|
4198 { |
66108
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4199 CFIndex str_len, buf_len; |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4200 |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4201 str_len = CFStringGetLength (str); |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4202 if (CFStringGetBytes (str, CFRangeMake (0, str_len), tgt_encoding, 0, |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4203 !NILP (target), NULL, 0, &buf_len) == str_len) |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4204 { |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4205 result = make_uninit_string (buf_len); |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4206 CFStringGetBytes (str, CFRangeMake (0, str_len), tgt_encoding, 0, |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4207 !NILP (target), SDATA (result), buf_len, NULL); |
f4ddfc71077d
[TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): Allow nil
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64770
diff
changeset
|
4208 } |
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
|
4209 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
|
4210 } |
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
|
4211 |
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
|
4212 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
|
4213 |
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
|
4214 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
|
4215 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4216 #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
|
4217 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4218 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4219 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
|
4220 doc: /* Clear the font name table. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4221 () |
59146
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 check_mac (); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4224 mac_clear_font_name_table (); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4225 return Qnil; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4226 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4227 |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4228 |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4229 static Lisp_Object |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4230 mac_get_system_locale () |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4231 { |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4232 OSErr err; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4233 LangCode lang; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4234 RegionCode region; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4235 LocaleRef locale; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4236 Str255 str; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4237 |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4238 lang = GetScriptVariable (smSystemScript, smScriptLang); |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4239 region = GetScriptManagerVariable (smRegionCode); |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4240 err = LocaleRefFromLangOrRegionCode (lang, region, &locale); |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4241 if (err == noErr) |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4242 err = LocaleRefGetPartString (locale, kLocaleAllPartsMask, |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4243 sizeof (str), str); |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4244 if (err == noErr) |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4245 return build_string (str); |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4246 else |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4247 return Qnil; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4248 } |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4249 |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4250 |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4251 #ifdef MAC_OSX |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4252 #undef select |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4253 |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4254 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
|
4255 extern int noninteractive; |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4256 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4257 /* 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
|
4258 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
|
4259 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
|
4260 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
|
4261 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
|
4262 dividing into some cases: |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4263 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
|
4264 -> Use `select'. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4265 2. Sockets are not involved. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4266 -> Use ReceiveNextEvent. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4267 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
|
4268 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
|
4269 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
|
4270 SELECT_TIMEOUT_THRESHHOLD_RUNLOOP seconds). |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4271 -> Create CFSocket for each socket and add it into the current |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4272 event RunLoop so that a `ready-to-read' event can be posted |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4273 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
|
4274 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
|
4275 4. Otherwise. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4276 -> 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
|
4277 executing `select' with a short timeout |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4278 (SELECT_POLLING_PERIOD_USEC microseconds). */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4279 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4280 #define SELECT_POLLING_PERIOD_USEC 20000 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4281 #ifdef SELECT_USE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4282 #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
|
4283 #define EVENT_CLASS_SOCK 'Sock' |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4284 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4285 static void |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4286 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
|
4287 CFSocketRef s; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4288 CFSocketCallBackType type; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4289 CFDataRef address; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4290 const void *data; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4291 void *info; |
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 EventRef event; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4294 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4295 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
|
4296 PostEventToQueue (GetCurrentEventQueue (), event, kEventPriorityStandard); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4297 ReleaseEvent (event); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4298 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4299 #endif /* SELECT_USE_CFSOCKET */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4300 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4301 static int |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4302 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
|
4303 int n; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4304 SELECT_TYPE *rfds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4305 SELECT_TYPE *wfds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4306 SELECT_TYPE *efds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4307 struct timeval *timeout; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4308 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4309 int r; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4310 OSErr err; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4311 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4312 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
|
4313 if (r != -1) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4314 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4315 BLOCK_INPUT; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4316 err = ReceiveNextEvent (0, NULL, kEventDurationNoWait, |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4317 kEventLeaveInQueue, NULL); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4318 UNBLOCK_INPUT; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4319 if (err == noErr) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4320 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4321 FD_SET (0, rfds); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4322 r++; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4323 } |
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 return r; |
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 |
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
|
4328 #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
|
4329 #undef SELECT_INVALIDATE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4330 #endif |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4331 |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4332 int |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4333 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
|
4334 int n; |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4335 SELECT_TYPE *rfds; |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4336 SELECT_TYPE *wfds; |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4337 SELECT_TYPE *efds; |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4338 struct timeval *timeout; |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4339 { |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4340 OSErr err; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4341 int i, r; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4342 EMACS_TIME select_timeout; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4343 |
56477
59a86f6ee1fb
Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents:
53122
diff
changeset
|
4344 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
|
4345 || 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
|
4346 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
|
4347 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4348 FD_CLR (0, rfds); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4349 |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4350 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
|
4351 { |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4352 int nsocks = 0; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4353 SELECT_TYPE orfds = *rfds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4354 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4355 EventTimeout timeout_sec = |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4356 (timeout |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4357 ? (EMACS_SECS (*timeout) * kEventDurationSecond |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4358 + EMACS_USECS (*timeout) * kEventDurationMicrosecond) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4359 : kEventDurationForever); |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4360 |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4361 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
|
4362 if (FD_ISSET (i, rfds)) |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4363 nsocks++; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4364 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4365 if (nsocks == 0) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4366 { |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4367 BLOCK_INPUT; |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4368 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
|
4369 kEventLeaveInQueue, NULL); |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4370 UNBLOCK_INPUT; |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4371 if (err == noErr) |
48818
5030a4c296d2
* macterm.c (mac_check_for_quit_char): Correctly set the
Steven Tamm <steventamm@mac.com>
parents:
48793
diff
changeset
|
4372 { |
56477
59a86f6ee1fb
Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents:
53122
diff
changeset
|
4373 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
|
4374 return 1; |
48818
5030a4c296d2
* macterm.c (mac_check_for_quit_char): Correctly set the
Steven Tamm <steventamm@mac.com>
parents:
48793
diff
changeset
|
4375 } |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4376 else |
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4377 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
|
4378 } |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4379 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4380 /* 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
|
4381 some input is already available. */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4382 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
|
4383 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
|
4384 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
|
4385 return r; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4386 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4387 *rfds = orfds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4388 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4389 #ifdef SELECT_USE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4390 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
|
4391 goto poll_periodically; |
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 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4394 CFRunLoopRef runloop = |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4395 (CFRunLoopRef) GetCFRunLoopFromEventLoop (GetCurrentEventLoop ()); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4396 EventTypeSpec specs[] = {{EVENT_CLASS_SOCK, 0}}; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4397 #ifdef SELECT_INVALIDATE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4398 CFSocketRef *shead, *s; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4399 #else |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4400 CFRunLoopSourceRef *shead, *s; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4401 #endif |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4402 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4403 BLOCK_INPUT; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4404 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4405 #ifdef SELECT_INVALIDATE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4406 shead = xmalloc (sizeof (CFSocketRef) * nsocks); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4407 #else |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4408 shead = xmalloc (sizeof (CFRunLoopSourceRef) * nsocks); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4409 #endif |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4410 s = shead; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4411 for (i = 1; i < n; i++) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4412 if (FD_ISSET (i, rfds)) |
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 CFSocketRef socket = |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4415 CFSocketCreateWithNative (NULL, i, kCFSocketReadCallBack, |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4416 socket_callback, NULL); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4417 CFRunLoopSourceRef source = |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4418 CFSocketCreateRunLoopSource (NULL, socket, 0); |
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 #ifdef SELECT_INVALIDATE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4421 CFSocketSetSocketFlags (socket, 0); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4422 #endif |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4423 CFRunLoopAddSource (runloop, source, kCFRunLoopDefaultMode); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4424 #ifdef SELECT_INVALIDATE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4425 CFRelease (source); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4426 *s = socket; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4427 #else |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4428 CFRelease (socket); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4429 *s = source; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4430 #endif |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4431 s++; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4432 } |
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 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
|
4435 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4436 do |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4437 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4438 --s; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4439 #ifdef SELECT_INVALIDATE_CFSOCKET |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4440 CFSocketInvalidate (*s); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4441 #else |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4442 CFRunLoopRemoveSource (runloop, *s, kCFRunLoopDefaultMode); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4443 #endif |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4444 CFRelease (*s); |
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 (s != shead); |
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 xfree (shead); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4449 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4450 if (err) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4451 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4452 FD_ZERO (rfds); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4453 r = 0; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4454 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4455 else |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4456 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4457 FlushEventsMatchingListFromQueue (GetCurrentEventQueue (), |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4458 GetEventTypeCount (specs), |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4459 specs); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4460 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
|
4461 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
|
4462 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4463 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4464 UNBLOCK_INPUT; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4465 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4466 return r; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4467 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4468 #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
|
4469 } |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4470 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4471 poll_periodically: |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4472 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4473 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
|
4474 SELECT_TYPE orfds = *rfds, owfds, oefds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4475 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4476 if (wfds) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4477 owfds = *wfds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4478 if (efds) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4479 oefds = *efds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4480 if (timeout) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4481 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4482 remaining_time = *timeout; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4483 EMACS_GET_TIME (now); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4484 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
|
4485 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4486 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4487 do |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4488 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4489 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
|
4490 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
|
4491 select_timeout = remaining_time; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4492 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
|
4493 if (r != 0) |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
4494 return r; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4495 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4496 *rfds = orfds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4497 if (wfds) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4498 *wfds = owfds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4499 if (efds) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4500 *efds = oefds; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4501 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4502 if (timeout) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4503 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4504 EMACS_GET_TIME (now); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4505 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
|
4506 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4507 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4508 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
|
4509 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4510 FD_ZERO (rfds); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4511 if (wfds) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4512 FD_ZERO (wfds); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4513 if (efds) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4514 FD_ZERO (efds); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4515 return 0; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4516 } |
48740
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
4517 } |
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
4518 |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4519 /* 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
|
4520 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
|
4521 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
|
4522 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
|
4523 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
|
4524 .../Emacs.app/Contents/Resources/ and |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4525 .../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
|
4526 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
|
4527 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
|
4528 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
|
4529 void |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4530 init_mac_osx_environment () |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4531 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4532 CFBundleRef bundle; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4533 CFURLRef bundleURL; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4534 CFStringRef cf_app_bundle_pathname; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4535 int app_bundle_pathname_len; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4536 char *app_bundle_pathname; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4537 char *p, *q; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4538 struct stat st; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4539 |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4540 /* Initialize locale related variables. */ |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4541 mac_system_script_code = |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4542 (ScriptCode) GetScriptManagerVariable (smSysScript); |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4543 Vmac_system_locale = mac_get_system_locale (); |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4544 |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4545 /* 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
|
4546 app_bundle_pathname. */ |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4547 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4548 bundle = CFBundleGetMainBundle (); |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4549 if (!bundle || CFBundleGetIdentifier (bundle) == NULL) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4550 { |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4551 /* We could not find the bundle identifier. For now, prevent |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4552 the fatal error by bringing it up in the terminal. */ |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4553 inhibit_window_system = 1; |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4554 return; |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4555 } |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4556 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4557 bundleURL = CFBundleCopyBundleURL (bundle); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4558 if (!bundleURL) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4559 return; |
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 cf_app_bundle_pathname = CFURLCopyFileSystemPath (bundleURL, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4562 kCFURLPOSIXPathStyle); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4563 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
|
4564 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
|
4565 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4566 if (!CFStringGetCString (cf_app_bundle_pathname, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4567 app_bundle_pathname, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4568 app_bundle_pathname_len + 1, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4569 kCFStringEncodingISOLatin1)) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4570 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4571 CFRelease (cf_app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4572 return; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4573 } |
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 CFRelease (cf_app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4576 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4577 /* 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
|
4578 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
|
4579 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
|
4580 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
|
4581 site-lisp dir>". */ |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4582 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
|
4583 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
|
4584 if (!getenv ("EMACSLOADPATH")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4585 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4586 q[0] = '\0'; |
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 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4589 strcat (p, "/Contents/Resources/lisp"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4590 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
|
4591 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4592 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4593 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4594 strcat (p, "/Contents/Resources/leim"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4595 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
|
4596 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4597 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4598 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4599 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4600 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4601 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4602 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4603 strcat (p, "/Contents/Resources/site-lisp"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4604 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
|
4605 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4606 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4607 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4608 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4609 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4610 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4611 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4612 setenv ("EMACSLOADPATH", q, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4613 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4614 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4615 if (!getenv ("EMACSPATH")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4616 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4617 q[0] = '\0'; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4618 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4619 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
|
4620 strcat (p, "/Contents/MacOS/libexec"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4621 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
|
4622 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4623 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4624 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
|
4625 strcat (p, "/Contents/MacOS/bin"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4626 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
|
4627 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4628 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4629 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4630 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4631 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4632 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4633 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4634 setenv ("EMACSPATH", q, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4635 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4636 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4637 if (!getenv ("EMACSDATA")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4638 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4639 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4640 strcat (p, "/Contents/Resources/etc"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4641 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
|
4642 setenv ("EMACSDATA", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4643 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4644 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4645 if (!getenv ("EMACSDOC")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4646 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4647 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4648 strcat (p, "/Contents/Resources/etc"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4649 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
|
4650 setenv ("EMACSDOC", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4651 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4652 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4653 if (!getenv ("INFOPATH")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4654 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4655 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4656 strcat (p, "/Contents/Resources/info"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4657 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
|
4658 setenv ("INFOPATH", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4659 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
4660 } |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4661 #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
|
4662 |
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
|
4663 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4664 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4665 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
|
4666 { |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4667 #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
|
4668 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
|
4669 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
|
4670 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
|
4671 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
|
4672 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
|
4673 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
|
4674 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
|
4675 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4676 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
|
4677 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
|
4678 |
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
|
4679 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
|
4680 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
|
4681 |
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
|
4682 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
|
4683 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
|
4684 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
|
4685 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
|
4686 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
|
4687 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
|
4688 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4689 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4690 #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
|
4691 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
|
4692 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
|
4693 #endif |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4694 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
|
4695 |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4696 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
|
4697 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
|
4698 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
|
4699 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
|
4700 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
|
4701 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
|
4702 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
|
4703 |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
4704 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
|
4705 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
|
4706 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
|
4707 |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
4708 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
|
4709 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
|
4710 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
|
4711 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
|
4712 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
|
4713 } |
52401 | 4714 |
4715 /* arch-tag: 29d30c1f-0c6b-4f88-8a6d-0558d7f9dbff | |
4716 (do not change this comment) */ |