Mercurial > emacs
annotate src/mac.c @ 95245:4e2f379d6e44
(x_draw_glyph_string): Be sure to draw underline within the current
line area.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 23 May 2008 05:33:08 +0000 |
parents | 8971ddf55736 |
children | 4390d64d3328 |
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. |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94293
diff
changeset
|
2 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94293
diff
changeset
|
3 2008 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 |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94293
diff
changeset
|
7 GNU Emacs is free software: you can redistribute it and/or modify |
44890
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 |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94293
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94293
diff
changeset
|
10 (at your option) any later version. |
44890
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 |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94293
diff
changeset
|
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
19 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
20 /* 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
|
21 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
22 #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
|
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 <stdio.h> |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
25 #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
|
26 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
27 #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
|
28 #include "process.h" |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
29 #ifdef MAC_OSX |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
30 #undef select |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
31 #endif |
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 <Timer.h> |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
48 #include <OSA.h> |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
49 #include <AppleScript.h> |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
50 #include <Events.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
51 #include <Processes.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
52 #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
|
53 #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
|
54 #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
|
55 #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
|
56 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
57 #include <utime.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
58 #include <dirent.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
59 #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
|
60 #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
|
61 #include <pwd.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
62 #include <grp.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
63 #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
|
64 #include <fcntl.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
65 #if __MWERKS__ |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
66 #include <unistd.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
67 #endif |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
68 |
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
|
69 /* 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
|
70 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
|
71 |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
72 /* The system 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
|
73 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
|
74 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
75 /* 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
|
76 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
|
77 /* 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
|
78 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
|
79 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
80 #ifndef MAC_OSX |
74626
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
81 #if TARGET_API_MAC_CARBON |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
82 static int wakeup_from_rne_enabled_p = 0; |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
83 #define ENABLE_WAKEUP_FROM_RNE (wakeup_from_rne_enabled_p = 1) |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
84 #define DISABLE_WAKEUP_FROM_RNE (wakeup_from_rne_enabled_p = 0) |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
85 #else |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
86 #define ENABLE_WAKEUP_FROM_RNE 0 |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
87 #define DISABLE_WAKEUP_FROM_RNE 0 |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
88 #endif |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
89 #endif |
74626
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
90 |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
91 #ifndef MAC_OSX |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
92 static OSErr posix_pathname_to_fsspec P_ ((const char *, FSSpec *)); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
93 static OSErr fsspec_to_posix_pathname P_ ((const FSSpec *, char *, int)); |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
94 #endif |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
95 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
96 /* 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
|
97 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
|
98 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
|
99 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
|
100 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
101 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
102 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
|
103 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
104 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
|
105 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
|
106 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
|
107 int i; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
108 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
109 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
|
110 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
|
111 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
112 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
|
113 *p = b; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
114 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
115 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
116 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
119 /* 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
|
120 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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 Returns 1 if successful; 0 if fails. */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
127 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
128 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
129 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
|
130 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
131 const char *p, *q, *pe; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
132 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
133 strcpy (ufn, ""); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
134 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
135 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
|
136 return 1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
137 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
138 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
|
139 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
|
140 strcat (ufn, "/"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
141 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
142 p = mfn; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
143 if (*p == ':') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
144 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
145 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
146 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
|
147 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
|
148 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
149 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
|
150 if (q) |
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 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
|
153 { /* two consecutive ':' */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
154 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
|
155 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
156 strcat (ufn, "../"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
157 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
158 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
159 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
160 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
|
161 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
162 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
|
163 strcat (ufn, "/"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
164 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
165 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
|
166 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
167 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
168 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
169 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
|
170 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
171 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
|
172 /* 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
|
173 p = pe; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
174 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
175 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
176 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
177 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
178 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
179 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
180 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
181 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
|
182 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
183 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
184 /* 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
|
185 above in algorithm. */ |
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
188 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
|
189 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
190 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
|
191 char expanded_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
192 |
44890
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, ""); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
194 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
195 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
|
196 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
197 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
198 p = ufn; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
199 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
200 /* 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
|
201 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
|
202 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
|
203 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
204 if (strlen (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
|
205 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
206 strcpy (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
|
207 strcat (mfn, ":"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
208 return 1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
211 /* 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
|
212 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
|
213 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
214 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
|
215 p += 7; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
216 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
|
217 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
218 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
|
219 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
|
220 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
|
221 /* 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
|
222 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
223 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
|
224 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
225 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
|
226 p += 5; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
227 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
|
228 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
229 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
|
230 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
|
231 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
|
232 /* 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
|
233 } |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
234 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
|
235 strcat (mfn, ":"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
236 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
237 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
238 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
239 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
240 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
|
241 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
|
242 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
243 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
|
244 if (q) |
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 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
|
247 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
248 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
|
249 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
250 strcat (mfn, ":"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
251 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
252 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
253 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
254 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
|
255 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
256 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
|
257 strcat (mfn, ":"); |
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 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
|
260 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
261 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
262 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
263 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
|
264 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
265 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
|
266 p = pe; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
267 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
268 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
269 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
270 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
271 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
272 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
273 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
274 /*********************************************************************** |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
275 Conversions on Apple event objects |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
276 ***********************************************************************/ |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
277 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
278 static Lisp_Object Qundecoded_file_name; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
279 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
280 static struct { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
281 AEKeyword keyword; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
282 char *name; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
283 Lisp_Object symbol; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
284 } ae_attr_table [] = |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
285 {{keyTransactionIDAttr, "transaction-id"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
286 {keyReturnIDAttr, "return-id"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
287 {keyEventClassAttr, "event-class"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
288 {keyEventIDAttr, "event-id"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
289 {keyAddressAttr, "address"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
290 {keyOptionalKeywordAttr, "optional-keyword"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
291 {keyTimeoutAttr, "timeout"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
292 {keyInteractLevelAttr, "interact-level"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
293 {keyEventSourceAttr, "event-source"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
294 /* {keyMissedKeywordAttr, "missed-keyword"}, */ |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
295 {keyOriginalAddressAttr, "original-address"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
296 {keyReplyRequestedAttr, "reply-requested"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
297 {KEY_EMACS_SUSPENSION_ID_ATTR, "emacs-suspension-id"} |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
298 }; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
299 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
300 static Lisp_Object |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
301 mac_aelist_to_lisp (desc_list) |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
302 const AEDescList *desc_list; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
303 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
304 OSErr err; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
305 long count; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
306 Lisp_Object result, elem; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
307 DescType desc_type; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
308 Size size; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
309 AEKeyword keyword; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
310 AEDesc desc; |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
311 int attribute_p = 0; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
312 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
313 err = AECountItems (desc_list, &count); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
314 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
315 return Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
316 result = Qnil; |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
317 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
318 again: |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
319 while (count > 0) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
320 { |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
321 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
322 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
323 keyword = ae_attr_table[count - 1].keyword; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
324 err = AESizeOfAttribute (desc_list, keyword, &desc_type, &size); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
325 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
326 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
327 err = AESizeOfNthItem (desc_list, count, &desc_type, &size); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
328 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
329 if (err == noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
330 switch (desc_type) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
331 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
332 case typeAEList: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
333 case typeAERecord: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
334 case typeAppleEvent: |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
335 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
336 err = AEGetAttributeDesc (desc_list, keyword, typeWildCard, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
337 &desc); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
338 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
339 err = AEGetNthDesc (desc_list, count, typeWildCard, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
340 &keyword, &desc); |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
341 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
342 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
343 elem = mac_aelist_to_lisp (&desc); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
344 AEDisposeDesc (&desc); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
345 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
346 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
347 default: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
348 if (desc_type == typeNull) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
349 elem = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
350 else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
351 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
352 elem = make_uninit_string (size); |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
353 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
354 err = AEGetAttributePtr (desc_list, keyword, typeWildCard, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
355 &desc_type, SDATA (elem), |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
356 size, &size); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
357 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
358 err = AEGetNthPtr (desc_list, count, typeWildCard, &keyword, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
359 &desc_type, SDATA (elem), size, &size); |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
360 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
361 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
362 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
363 desc_type = EndianU32_NtoB (desc_type); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
364 elem = Fcons (make_unibyte_string ((char *) &desc_type, 4), elem); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
365 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
366 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
367 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
368 if (err == noErr || desc_list->descriptorType == typeAEList) |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
369 { |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
370 if (err != noErr) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
371 elem = Qnil; /* Don't skip elements in AEList. */ |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
372 else if (desc_list->descriptorType != typeAEList) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
373 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
374 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
375 elem = Fcons (ae_attr_table[count-1].symbol, elem); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
376 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
377 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
378 keyword = EndianU32_NtoB (keyword); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
379 elem = Fcons (make_unibyte_string ((char *) &keyword, 4), |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
380 elem); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
381 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
382 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
383 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
384 result = Fcons (elem, result); |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
385 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
386 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
387 count--; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
388 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
389 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
390 if (desc_list->descriptorType == typeAppleEvent && !attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
391 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
392 attribute_p = 1; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
393 count = sizeof (ae_attr_table) / sizeof (ae_attr_table[0]); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
394 goto again; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
395 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
396 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
397 desc_type = EndianU32_NtoB (desc_list->descriptorType); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
398 return Fcons (make_unibyte_string ((char *) &desc_type, 4), result); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
399 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
400 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
401 Lisp_Object |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
402 mac_aedesc_to_lisp (desc) |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
403 const AEDesc *desc; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
404 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
405 OSErr err = noErr; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
406 DescType desc_type = desc->descriptorType; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
407 Lisp_Object result; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
408 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
409 switch (desc_type) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
410 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
411 case typeNull: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
412 result = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
413 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
414 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
415 case typeAEList: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
416 case typeAERecord: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
417 case typeAppleEvent: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
418 return mac_aelist_to_lisp (desc); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
419 #if 0 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
420 /* The following one is much simpler, but creates and disposes |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
421 of Apple event descriptors many times. */ |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
422 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
423 long count; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
424 Lisp_Object elem; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
425 AEKeyword keyword; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
426 AEDesc desc1; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
427 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
428 err = AECountItems (desc, &count); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
429 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
430 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
431 result = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
432 while (count > 0) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
433 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
434 err = AEGetNthDesc (desc, count, typeWildCard, &keyword, &desc1); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
435 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
436 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
437 elem = mac_aedesc_to_lisp (&desc1); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
438 AEDisposeDesc (&desc1); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
439 if (desc_type != typeAEList) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
440 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
441 keyword = EndianU32_NtoB (keyword); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
442 elem = Fcons (make_unibyte_string ((char *) &keyword, 4), elem); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
443 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
444 result = Fcons (elem, result); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
445 count--; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
446 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
447 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
448 #endif |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
449 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
450 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
451 default: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
452 #if TARGET_API_MAC_CARBON |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
453 result = make_uninit_string (AEGetDescDataSize (desc)); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
454 err = AEGetDescData (desc, SDATA (result), SBYTES (result)); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
455 #else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
456 result = make_uninit_string (GetHandleSize (desc->dataHandle)); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
457 memcpy (SDATA (result), *(desc->dataHandle), SBYTES (result)); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
458 #endif |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
459 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
460 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
461 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
462 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
463 return Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
464 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
465 desc_type = EndianU32_NtoB (desc_type); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
466 return Fcons (make_unibyte_string ((char *) &desc_type, 4), result); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
467 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
468 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
469 OSErr |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
470 mac_ae_put_lisp (desc, keyword_or_index, obj) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
471 AEDescList *desc; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
472 UInt32 keyword_or_index; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
473 Lisp_Object obj; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
474 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
475 OSErr err; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
476 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
477 if (!(desc->descriptorType == typeAppleEvent |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
478 || desc->descriptorType == typeAERecord |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
479 || desc->descriptorType == typeAEList)) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
480 return errAEWrongDataType; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
481 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
482 if (CONSP (obj) && STRINGP (XCAR (obj)) && SBYTES (XCAR (obj)) == 4) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
483 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
484 DescType desc_type1 = EndianU32_BtoN (*((UInt32 *) SDATA (XCAR (obj)))); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
485 Lisp_Object data = XCDR (obj), rest; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
486 AEDesc desc1; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
487 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
488 switch (desc_type1) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
489 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
490 case typeNull: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
491 case typeAppleEvent: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
492 break; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
493 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
494 case typeAEList: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
495 case typeAERecord: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
496 err = AECreateList (NULL, 0, desc_type1 == typeAERecord, &desc1); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
497 if (err == noErr) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
498 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
499 for (rest = data; CONSP (rest); rest = XCDR (rest)) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
500 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
501 UInt32 keyword_or_index1 = 0; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
502 Lisp_Object elem = XCAR (rest); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
503 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
504 if (desc_type1 == typeAERecord) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
505 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
506 if (CONSP (elem) && STRINGP (XCAR (elem)) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
507 && SBYTES (XCAR (elem)) == 4) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
508 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
509 keyword_or_index1 = |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
510 EndianU32_BtoN (*((UInt32 *) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
511 SDATA (XCAR (elem)))); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
512 elem = XCDR (elem); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
513 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
514 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
515 continue; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
516 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
517 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
518 err = mac_ae_put_lisp (&desc1, keyword_or_index1, elem); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
519 if (err != noErr) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
520 break; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
521 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
522 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
523 if (err == noErr) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
524 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
525 if (desc->descriptorType == typeAEList) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
526 err = AEPutDesc (desc, keyword_or_index, &desc1); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
527 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
528 err = AEPutParamDesc (desc, keyword_or_index, &desc1); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
529 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
530 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
531 AEDisposeDesc (&desc1); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
532 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
533 return err; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
534 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
535 default: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
536 if (!STRINGP (data)) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
537 break; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
538 if (desc->descriptorType == typeAEList) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
539 err = AEPutPtr (desc, keyword_or_index, desc_type1, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
540 SDATA (data), SBYTES (data)); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
541 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
542 err = AEPutParamPtr (desc, keyword_or_index, desc_type1, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
543 SDATA (data), SBYTES (data)); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
544 return err; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
545 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
546 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
547 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
548 if (desc->descriptorType == typeAEList) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
549 err = AEPutPtr (desc, keyword_or_index, typeNull, NULL, 0); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
550 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
551 err = AEPutParamPtr (desc, keyword_or_index, typeNull, NULL, 0); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
552 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
553 return err; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
554 } |
70987
f85bcca39940
Tiny layout change.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70871
diff
changeset
|
555 |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
556 static pascal OSErr |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
557 mac_coerce_file_name_ptr (type_code, data_ptr, data_size, |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
558 to_type, handler_refcon, result) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
559 DescType type_code; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
560 const void *data_ptr; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
561 Size data_size; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
562 DescType to_type; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
563 long handler_refcon; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
564 AEDesc *result; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
565 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
566 OSErr err; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
567 |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
568 if (type_code == typeNull) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
569 err = errAECoercionFail; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
570 else if (type_code == to_type || to_type == typeWildCard) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
571 err = AECreateDesc (TYPE_FILE_NAME, data_ptr, data_size, result); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
572 else if (type_code == TYPE_FILE_NAME) |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
573 /* Coercion from undecoded file name. */ |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
574 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
575 #ifdef MAC_OSX |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
576 CFStringRef str; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
577 CFURLRef url = NULL; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
578 CFDataRef data = NULL; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
579 |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
580 str = CFStringCreateWithBytes (NULL, data_ptr, data_size, |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
581 kCFStringEncodingUTF8, false); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
582 if (str) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
583 { |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
584 url = CFURLCreateWithFileSystemPath (NULL, str, |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
585 kCFURLPOSIXPathStyle, false); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
586 CFRelease (str); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
587 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
588 if (url) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
589 { |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
590 data = CFURLCreateData (NULL, url, kCFStringEncodingUTF8, true); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
591 CFRelease (url); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
592 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
593 if (data) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
594 { |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
595 err = AECoercePtr (typeFileURL, CFDataGetBytePtr (data), |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
596 CFDataGetLength (data), to_type, result); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
597 CFRelease (data); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
598 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
599 else |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
600 err = memFullErr; |
70301
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
601 |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
602 if (err != noErr) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
603 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
604 /* Just to be paranoid ... */ |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
605 FSRef fref; |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
606 char *buf; |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
607 |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
608 buf = xmalloc (data_size + 1); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
609 memcpy (buf, data_ptr, data_size); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
610 buf[data_size] = '\0'; |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
611 err = FSPathMakeRef (buf, &fref, NULL); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
612 xfree (buf); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
613 if (err == noErr) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
614 err = AECoercePtr (typeFSRef, &fref, sizeof (FSRef), |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
615 to_type, result); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
616 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
617 #else |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
618 FSSpec fs; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
619 char *buf; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
620 |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
621 buf = xmalloc (data_size + 1); |
70069
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
622 memcpy (buf, data_ptr, data_size); |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
623 buf[data_size] = '\0'; |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
624 err = posix_pathname_to_fsspec (buf, &fs); |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
625 xfree (buf); |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
626 if (err == noErr) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
627 err = AECoercePtr (typeFSS, &fs, sizeof (FSSpec), to_type, result); |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
628 #endif |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
629 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
630 else if (to_type == TYPE_FILE_NAME) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
631 /* Coercion to undecoded file name. */ |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
632 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
633 #ifdef MAC_OSX |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
634 CFURLRef url = NULL; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
635 CFStringRef str = NULL; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
636 CFDataRef data = NULL; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
637 |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
638 if (type_code == typeFileURL) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
639 url = CFURLCreateWithBytes (NULL, data_ptr, data_size, |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
640 kCFStringEncodingUTF8, NULL); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
641 else |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
642 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
643 AEDesc desc; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
644 Size size; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
645 char *buf; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
646 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
647 err = AECoercePtr (type_code, data_ptr, data_size, |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
648 typeFileURL, &desc); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
649 if (err == noErr) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
650 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
651 size = AEGetDescDataSize (&desc); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
652 buf = xmalloc (size); |
70069
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
653 err = AEGetDescData (&desc, buf, size); |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
654 if (err == noErr) |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
655 url = CFURLCreateWithBytes (NULL, buf, size, |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
656 kCFStringEncodingUTF8, NULL); |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
657 xfree (buf); |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
658 AEDisposeDesc (&desc); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
659 } |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
660 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
661 if (url) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
662 { |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
663 str = CFURLCopyFileSystemPath (url, kCFURLPOSIXPathStyle); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
664 CFRelease (url); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
665 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
666 if (str) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
667 { |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
668 data = CFStringCreateExternalRepresentation (NULL, str, |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
669 kCFStringEncodingUTF8, |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
670 '\0'); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
671 CFRelease (str); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
672 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
673 if (data) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
674 { |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
675 err = AECreateDesc (TYPE_FILE_NAME, CFDataGetBytePtr (data), |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
676 CFDataGetLength (data), result); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
677 CFRelease (data); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
678 } |
70301
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
679 |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
680 if (err != noErr) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
681 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
682 /* Coercion from typeAlias to typeFileURL fails on Mac OS X |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
683 10.2. In such cases, try typeFSRef as a target type. */ |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
684 char file_name[MAXPATHLEN]; |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
685 |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
686 if (type_code == typeFSRef && data_size == sizeof (FSRef)) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
687 err = FSRefMakePath (data_ptr, file_name, sizeof (file_name)); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
688 else |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
689 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
690 AEDesc desc; |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
691 FSRef fref; |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
692 |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
693 err = AECoercePtr (type_code, data_ptr, data_size, |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
694 typeFSRef, &desc); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
695 if (err == noErr) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
696 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
697 err = AEGetDescData (&desc, &fref, sizeof (FSRef)); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
698 AEDisposeDesc (&desc); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
699 } |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
700 if (err == noErr) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
701 err = FSRefMakePath (&fref, file_name, sizeof (file_name)); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
702 } |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
703 if (err == noErr) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
704 err = AECreateDesc (TYPE_FILE_NAME, file_name, |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
705 strlen (file_name), result); |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
706 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
707 #else |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
708 char file_name[MAXPATHLEN]; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
709 |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
710 if (type_code == typeFSS && data_size == sizeof (FSSpec)) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
711 err = fsspec_to_posix_pathname (data_ptr, file_name, |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
712 sizeof (file_name) - 1); |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
713 else |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
714 { |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
715 AEDesc desc; |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
716 FSSpec fs; |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
717 |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
718 err = AECoercePtr (type_code, data_ptr, data_size, typeFSS, &desc); |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
719 if (err == noErr) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
720 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
721 #if TARGET_API_MAC_CARBON |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
722 err = AEGetDescData (&desc, &fs, sizeof (FSSpec)); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
723 #else |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
724 fs = *(FSSpec *)(*(desc.dataHandle)); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
725 #endif |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
726 AEDisposeDesc (&desc); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
727 } |
70301
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
728 if (err == noErr) |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
729 err = fsspec_to_posix_pathname (&fs, file_name, |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
730 sizeof (file_name) - 1); |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
731 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
732 if (err == noErr) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
733 err = AECreateDesc (TYPE_FILE_NAME, file_name, |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
734 strlen (file_name), result); |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
735 #endif |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
736 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
737 else |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
738 abort (); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
739 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
740 if (err != noErr) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
741 return errAECoercionFail; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
742 return noErr; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
743 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
744 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
745 static pascal OSErr |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
746 mac_coerce_file_name_desc (from_desc, to_type, handler_refcon, result) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
747 const AEDesc *from_desc; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
748 DescType to_type; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
749 long handler_refcon; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
750 AEDesc *result; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
751 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
752 OSErr err = noErr; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
753 DescType from_type = from_desc->descriptorType; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
754 |
68037
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
755 if (from_type == typeNull) |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
756 err = errAECoercionFail; |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
757 else if (from_type == to_type || to_type == typeWildCard) |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
758 err = AEDuplicateDesc (from_desc, result); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
759 else |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
760 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
761 char *data_ptr; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
762 Size data_size; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
763 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
764 #if TARGET_API_MAC_CARBON |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
765 data_size = AEGetDescDataSize (from_desc); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
766 #else |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
767 data_size = GetHandleSize (from_desc->dataHandle); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
768 #endif |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
769 data_ptr = xmalloc (data_size); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
770 #if TARGET_API_MAC_CARBON |
70069
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
771 err = AEGetDescData (from_desc, data_ptr, data_size); |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
772 #else |
70069
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
773 memcpy (data_ptr, *(from_desc->dataHandle), data_size); |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
774 #endif |
70069
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
775 if (err == noErr) |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
776 err = mac_coerce_file_name_ptr (from_type, data_ptr, |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
777 data_size, to_type, |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
778 handler_refcon, result); |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
779 xfree (data_ptr); |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
780 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
781 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
782 if (err != noErr) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
783 return errAECoercionFail; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
784 return noErr; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
785 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
786 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
787 OSErr |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
788 init_coercion_handler () |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
789 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
790 OSErr err; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
791 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
792 static AECoercePtrUPP coerce_file_name_ptrUPP = NULL; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
793 static AECoerceDescUPP coerce_file_name_descUPP = NULL; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
794 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
795 if (coerce_file_name_ptrUPP == NULL) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
796 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
797 coerce_file_name_ptrUPP = NewAECoercePtrUPP (mac_coerce_file_name_ptr); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
798 coerce_file_name_descUPP = NewAECoerceDescUPP (mac_coerce_file_name_desc); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
799 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
800 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
801 err = AEInstallCoercionHandler (TYPE_FILE_NAME, typeWildCard, |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
802 (AECoercionHandlerUPP) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
803 coerce_file_name_ptrUPP, 0, false, false); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
804 if (err == noErr) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
805 err = AEInstallCoercionHandler (typeWildCard, TYPE_FILE_NAME, |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
806 (AECoercionHandlerUPP) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
807 coerce_file_name_ptrUPP, 0, false, false); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
808 if (err == noErr) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
809 err = AEInstallCoercionHandler (TYPE_FILE_NAME, typeWildCard, |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
810 coerce_file_name_descUPP, 0, true, false); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
811 if (err == noErr) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
812 err = AEInstallCoercionHandler (typeWildCard, TYPE_FILE_NAME, |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
813 coerce_file_name_descUPP, 0, true, false); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
814 return err; |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
815 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
816 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
817 #if TARGET_API_MAC_CARBON |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
818 OSErr |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
819 create_apple_event (class, id, result) |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
820 AEEventClass class; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
821 AEEventID id; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
822 AppleEvent *result; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
823 { |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
824 OSErr err; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
825 static const ProcessSerialNumber psn = {0, kCurrentProcess}; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
826 AEAddressDesc address_desc; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
827 |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
828 err = AECreateDesc (typeProcessSerialNumber, &psn, |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
829 sizeof (ProcessSerialNumber), &address_desc); |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
830 if (err == noErr) |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
831 { |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
832 err = AECreateAppleEvent (class, id, |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
833 &address_desc, /* NULL is not allowed |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
834 on Mac OS Classic. */ |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
835 kAutoGenerateReturnID, |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
836 kAnyTransactionID, result); |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
837 AEDisposeDesc (&address_desc); |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
838 } |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
839 |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
840 return err; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
841 } |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
842 |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
843 Lisp_Object |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
844 mac_event_parameters_to_lisp (event, num_params, names, types) |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
845 EventRef event; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
846 UInt32 num_params; |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
847 const EventParamName *names; |
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
848 const EventParamType *types; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
849 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
850 OSStatus err; |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
851 Lisp_Object result = Qnil; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
852 UInt32 i; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
853 ByteCount size; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
854 #ifdef MAC_OSX |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
855 CFStringRef string; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
856 CFDataRef data; |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
857 #endif |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
858 char *buf = NULL; |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
859 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
860 for (i = 0; i < num_params; i++) |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
861 { |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
862 EventParamName name = names[i]; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
863 EventParamType type = types[i]; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
864 |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
865 switch (type) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
866 { |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
867 #ifdef MAC_OSX |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
868 case typeCFStringRef: |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
869 err = GetEventParameter (event, name, typeCFStringRef, NULL, |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
870 sizeof (CFStringRef), NULL, &string); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
871 if (err != noErr) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
872 break; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
873 data = CFStringCreateExternalRepresentation (NULL, string, |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
874 kCFStringEncodingUTF8, |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
875 '?'); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
876 if (data == NULL) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
877 break; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
878 name = EndianU32_NtoB (name); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
879 type = EndianU32_NtoB (typeUTF8Text); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
880 result = |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
881 Fcons (Fcons (make_unibyte_string ((char *) &name, 4), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
882 Fcons (make_unibyte_string ((char *) &type, 4), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
883 make_unibyte_string (CFDataGetBytePtr (data), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
884 CFDataGetLength (data)))), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
885 result); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
886 CFRelease (data); |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
887 break; |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
888 #endif |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
889 |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
890 default: |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
891 err = GetEventParameter (event, name, type, NULL, 0, &size, NULL); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
892 if (err != noErr) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
893 break; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
894 buf = xrealloc (buf, size); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
895 err = GetEventParameter (event, name, type, NULL, size, NULL, buf); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
896 if (err == noErr) |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
897 { |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
898 name = EndianU32_NtoB (name); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
899 type = EndianU32_NtoB (type); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
900 result = |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
901 Fcons (Fcons (make_unibyte_string ((char *) &name, 4), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
902 Fcons (make_unibyte_string ((char *) &type, 4), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
903 make_unibyte_string (buf, size))), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
904 result); |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
905 } |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
906 break; |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
907 } |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
908 } |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
909 if (buf) |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
910 xfree (buf); |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
911 |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
912 return result; |
70381
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
913 } |
606c88bcaeee
(mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70301
diff
changeset
|
914 #endif /* TARGET_API_MAC_CARBON */ |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
915 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
916 /*********************************************************************** |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
917 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
|
918 ***********************************************************************/ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
919 |
58752
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
920 #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
|
921 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
|
922 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
|
923 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
924 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
|
925 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
926 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
|
927 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
|
928 }; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
929 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
930 /* 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
|
931 |
58752
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
932 CFStringRef |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
933 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
|
934 const char *c_str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
935 { |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
936 CFStringRef str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
937 |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
938 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
|
939 if (str == NULL) |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
940 /* 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
|
941 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
|
942 |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
943 return str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
944 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
945 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
946 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
947 /* Lisp string to CFString. */ |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
948 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
949 CFStringRef |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
950 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
|
951 Lisp_Object s; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
952 { |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
953 CFStringRef string = NULL; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
954 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
955 if (STRING_MULTIBYTE (s)) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
956 { |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
957 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
|
958 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
959 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
|
960 if (!isascii (*p)) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
961 { |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
962 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
|
963 break; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
964 } |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
965 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
|
966 kCFStringEncodingUTF8, false); |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
967 } |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
968 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
969 if (string == NULL) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
970 /* 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
|
971 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
|
972 kCFStringEncodingMacRoman, false); |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
973 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
974 return string; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
975 } |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
976 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
977 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
978 /* 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
|
979 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
980 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
|
981 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
|
982 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
|
983 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
984 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
|
985 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
|
986 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
987 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
|
988 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
989 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
|
990 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
991 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
992 |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
993 /* From CFString to a lisp string. Returns a unibyte string |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
994 containing a UTF-8 byte sequence. */ |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
995 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
996 Lisp_Object |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
997 cfstring_to_lisp_nodecode (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
|
998 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
|
999 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1000 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
|
1001 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
|
1002 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1003 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
|
1004 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
|
1005 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1006 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1007 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
|
1008 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
|
1009 kCFStringEncodingUTF8, '?'); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1010 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1011 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
|
1012 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1013 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
|
1014 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
|
1015 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1016 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1017 |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1018 return result; |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1019 } |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1020 |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1021 |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1022 /* From CFString to a lisp string. Never returns a unibyte string |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1023 (even if it only contains ASCII characters). |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1024 This may cause GC during code conversion. */ |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1025 |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1026 Lisp_Object |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1027 cfstring_to_lisp (string) |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1028 CFStringRef string; |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1029 { |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1030 Lisp_Object result = cfstring_to_lisp_nodecode (string); |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1031 |
60632
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 (!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
|
1033 { |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1034 result = code_convert_string_norecord (result, Qutf_8, 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
|
1035 /* 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
|
1036 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
|
1037 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
|
1038 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1039 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1040 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
|
1041 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1042 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1043 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1044 /* 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
|
1045 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1046 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
|
1047 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
|
1048 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
|
1049 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1050 Lisp_Object result = Qnil; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1051 #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
|
1052 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
|
1053 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
|
1054 #else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1055 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
|
1056 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
|
1057 #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
|
1058 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
|
1059 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1060 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
|
1061 && !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
|
1062 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
|
1063 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1064 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
|
1065 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
|
1066 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
|
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 |
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 /* 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
|
1071 `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
|
1072 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1073 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
|
1074 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
|
1075 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
|
1076 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1077 CFTimeInterval sec; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1078 int high, low, microsec; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1079 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1080 sec = CFDateGetAbsoluteTime (date) + kCFAbsoluteTimeIntervalSince1970; |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1081 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
|
1082 low = sec - high * 65536.0; |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1083 microsec = (sec - floor (sec)) * 1000000.0; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1084 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1085 return list3 (make_number (high), make_number (low), make_number (microsec)); |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1086 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1087 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1088 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1089 /* 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
|
1090 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1091 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
|
1092 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
|
1093 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
|
1094 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1095 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
|
1096 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1097 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1098 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1099 /* 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
|
1100 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1101 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
|
1102 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
|
1103 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
|
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 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
|
1106 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
|
1107 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1108 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
|
1109 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1110 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
|
1111 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
|
1112 } |
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 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
|
1115 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1116 |
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 /* 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
|
1119 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1120 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
|
1121 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
|
1122 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
|
1123 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
|
1124 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
|
1125 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1126 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
|
1127 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1128 *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
|
1129 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
|
1130 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
|
1131 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
|
1132 *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
|
1133 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1134 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1135 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
|
1136 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
|
1137 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
|
1138 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
|
1139 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
|
1140 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1141 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
|
1142 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
|
1143 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
|
1144 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
|
1145 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1146 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
|
1147 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
|
1148 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
|
1149 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
|
1150 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1151 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1152 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1153 /* 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
|
1154 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
|
1155 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
|
1156 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
|
1157 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
|
1158 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
|
1159 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
|
1160 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
|
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 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
|
1163 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
|
1164 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
|
1165 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
|
1166 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1167 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
|
1168 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
|
1169 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
|
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 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
|
1172 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1173 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
|
1174 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1175 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
|
1176 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
|
1177 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1178 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
|
1179 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1180 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
|
1181 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
|
1182 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1183 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
|
1184 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1185 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
|
1186 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
|
1187 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1188 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
|
1189 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1190 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
|
1191 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
|
1192 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1193 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
|
1194 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1195 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
|
1196 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
|
1197 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1198 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
|
1199 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1200 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
|
1201 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1202 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
|
1203 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
|
1204 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
|
1205 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
|
1206 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
|
1207 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
|
1208 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1209 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
|
1210 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1211 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
|
1212 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
|
1213 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1214 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
|
1215 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
|
1216 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
|
1217 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
|
1218 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
|
1219 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1220 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
|
1221 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
|
1222 &context); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1223 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1224 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1225 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1226 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
|
1227 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
|
1228 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
|
1229 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
|
1230 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
|
1231 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
|
1232 &context); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1233 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1234 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1235 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1236 abort (); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1237 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1238 UNGCPRO; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1239 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1240 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
|
1241 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
|
1242 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1243 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
|
1244 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1245 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1246 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1247 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1248 /*********************************************************************** |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1249 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
|
1250 ***********************************************************************/ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1251 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1252 /* 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
|
1253 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
|
1254 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
|
1255 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
|
1256 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1257 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
|
1258 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
|
1259 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
|
1260 (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
|
1261 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
|
1262 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
|
1263 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1264 #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
|
1265 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1266 #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
|
1267 #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
|
1268 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1269 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
|
1270 skip_white_space (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1271 const char **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
|
1272 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1273 /* 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
|
1274 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
|
1275 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1276 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1277 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1278 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
|
1279 parse_comment (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1280 const char **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
|
1281 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1282 /* 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
|
1283 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
|
1284 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1285 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1286 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
|
1287 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
|
1288 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1289 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
|
1290 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1291 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1292 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
|
1293 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1294 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1295 /* 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
|
1296 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
|
1297 parse_include_file (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1298 const char **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
|
1299 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1300 /* 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
|
1301 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
|
1302 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1303 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1304 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
|
1305 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
|
1306 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1307 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
|
1308 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1309 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1310 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
|
1311 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1312 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1313 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
|
1314 parse_binding (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1315 const char **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
|
1316 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1317 /* Binding = "." | "*" */ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1318 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
|
1319 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1320 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
|
1321 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1322 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
|
1323 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
|
1324 binding = '*'; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1325 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
|
1326 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1327 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1328 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
|
1329 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1330 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1331 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
|
1332 parse_component (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1333 const char **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
|
1334 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1335 /* 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
|
1336 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
|
1337 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
|
1338 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
|
1339 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1340 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1341 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
|
1342 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1343 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
|
1344 { |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1345 const char *start = 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
|
1346 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1347 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
|
1348 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1349 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1350 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
|
1351 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1352 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1353 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
|
1354 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1355 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1356 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
|
1357 parse_resource_name (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1358 const char **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
|
1359 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1360 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
|
1361 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
|
1362 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1363 /* 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
|
1364 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
|
1365 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
|
1366 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1367 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
|
1368 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
|
1369 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
|
1370 |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1371 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
|
1372 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
|
1373 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1374 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
|
1375 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
|
1376 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
|
1377 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
|
1378 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
|
1379 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1380 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
|
1381 } |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1382 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1383 /* 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
|
1384 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
|
1385 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
|
1386 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1387 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
|
1388 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1389 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1390 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
|
1391 parse_value (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1392 const char **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
|
1393 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1394 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
|
1395 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
|
1396 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
|
1397 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1398 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
|
1399 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
|
1400 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
|
1401 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1402 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
|
1403 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1404 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
|
1405 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
|
1406 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
|
1407 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1408 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
|
1409 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1410 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1411 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1412 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1413 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
|
1414 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1415 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1416 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
|
1417 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1418 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
|
1419 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1420 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1421 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
|
1422 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1423 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1424 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
|
1425 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1426 *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
|
1427 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1428 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1429 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
|
1430 && '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
|
1431 && '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
|
1432 { |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
1433 *q++ = ((P[0] - '0') << 6) + ((P[1] - '0') << 3) + (P[2] - '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
|
1434 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
|
1435 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1436 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1437 *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
|
1438 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1439 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1440 *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
|
1441 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1442 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
|
1443 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
|
1444 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
|
1445 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1446 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
|
1447 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1448 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
|
1449 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
|
1450 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
|
1451 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1452 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
|
1453 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
|
1454 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
|
1455 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1456 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1457 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1458 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1459 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1460 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
|
1461 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1462 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
|
1463 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
|
1464 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1465 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1466 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
|
1467 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
|
1468 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
|
1469 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1470 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
|
1471 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
|
1472 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
|
1473 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1474 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
|
1475 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
|
1476 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
|
1477 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1478 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1479 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1480 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
|
1481 parse_resource_line (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1482 const char **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
|
1483 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1484 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
|
1485 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1486 /* 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
|
1487 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
|
1488 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
|
1489 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1490 /* 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
|
1491 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
|
1492 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
|
1493 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
|
1494 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
|
1495 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
|
1496 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
|
1497 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
|
1498 P++; |
60640
7dd25916c6bb
Fix typo (skip_while_space -> skip_white_space).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60632
diff
changeset
|
1499 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
|
1500 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
|
1501 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
|
1502 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1503 cleanup: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1504 /* 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
|
1505 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
|
1506 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
|
1507 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1508 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1509 #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
|
1510 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1511 /* 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
|
1512 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1513 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
|
1514 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
|
1515 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
|
1516 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
|
1517 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
|
1518 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
|
1519 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
|
1520 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
|
1521 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
|
1522 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1523 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
|
1524 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
|
1525 "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
|
1526 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1527 #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
|
1528 #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
|
1529 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1530 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
|
1531 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
|
1532 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1533 XrmDatabase database; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1534 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1535 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
|
1536 make_float (DEFAULT_REHASH_SIZE), |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1537 make_float (DEFAULT_REHASH_THRESHOLD), |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1538 Qnil, Qnil, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1539 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
|
1540 Fputhash (HASHKEY_QUERY_CACHE, Qnil, database); |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1541 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1542 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
|
1543 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1544 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1545 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
|
1546 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
|
1547 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
|
1548 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
|
1549 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1550 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
|
1551 unsigned hash_code; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1552 int max_nid, i; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1553 Lisp_Object node_id, key; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1554 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1555 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
|
1556 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1557 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
|
1558 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
|
1559 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1560 key = Fcons (node_id, XCAR (quarks)); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1561 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
|
1562 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
|
1563 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1564 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
|
1565 XSETINT (node_id, max_nid); |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1566 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
|
1567 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1568 else |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1569 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
|
1570 } |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1571 Fputhash (node_id, value, database); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1572 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1573 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
|
1574 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
|
1575 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1576 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1577 /* 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
|
1578 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
|
1579 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
|
1580 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
|
1581 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1582 void |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1583 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
|
1584 XrmDatabase database; |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1585 const char *data; |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1586 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1587 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
|
1588 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1589 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
|
1590 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1591 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
|
1592 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
|
1593 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
|
1594 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
|
1595 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1596 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1597 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1598 static Lisp_Object |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1599 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
|
1600 XrmDatabase database; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1601 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
|
1602 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1603 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
|
1604 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
|
1605 int i, k; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1606 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1607 if (!CONSP (quark_name)) |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1608 return Fgethash (node_id, database, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1609 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1610 /* First, try tight bindings */ |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1611 labels[0] = XCAR (quark_name); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1612 labels[1] = XCAR (quark_class); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1613 labels[2] = SINGLE_COMPONENT; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1614 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1615 key = Fcons (node_id, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1616 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
|
1617 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1618 XSETCDR (key, labels[k]); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1619 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
|
1620 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
|
1621 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1622 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
|
1623 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
|
1624 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
|
1625 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
|
1626 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1627 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1628 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1629 /* Then, try loose bindings */ |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1630 XSETCDR (key, LOOSE_BINDING); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1631 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
|
1632 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
|
1633 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1634 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
|
1635 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
|
1636 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
|
1637 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
|
1638 else |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1639 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
|
1640 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
|
1641 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1642 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1643 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
|
1644 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1645 |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1646 static Lisp_Object |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1647 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
|
1648 XrmDatabase database; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1649 Lisp_Object quark_name, quark_class; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1650 { |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1651 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
|
1652 quark_name, quark_class); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1653 } |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1654 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1655 /* 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
|
1656 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
|
1657 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1658 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
|
1659 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
|
1660 XrmDatabase database; |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1661 const char *name, *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
|
1662 { |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1663 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
|
1664 int i, nn, nc; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1665 struct Lisp_Hash_Table *h; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1666 unsigned hash_code; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1667 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1668 nn = strlen (name); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1669 nc = strlen (class); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1670 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
|
1671 strcpy (SDATA (key), name); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1672 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
|
1673 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1674 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
|
1675 if (NILP (query_cache)) |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1676 { |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1677 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
|
1678 make_float (DEFAULT_REHASH_SIZE), |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1679 make_float (DEFAULT_REHASH_THRESHOLD), |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1680 Qnil, Qnil, Qnil); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1681 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
|
1682 } |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1683 h = XHASH_TABLE (query_cache); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1684 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
|
1685 if (i >= 0) |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1686 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
|
1687 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1688 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
|
1689 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
|
1690 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
|
1691 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
|
1692 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
|
1693 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
|
1694 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1695 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
|
1696 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
|
1697 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
|
1698 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
|
1699 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
|
1700 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
|
1701 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1702 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
|
1703 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
|
1704 else |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1705 { |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1706 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
|
1707 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
|
1708 return tmp; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1709 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1710 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1711 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1712 #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
|
1713 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
|
1714 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
|
1715 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
|
1716 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1717 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
|
1718 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1719 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
|
1720 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
|
1721 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
|
1722 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1723 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
|
1724 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
|
1725 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1726 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
|
1727 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
|
1728 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1729 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
|
1730 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
|
1731 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1732 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
|
1733 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1734 else if (type_id == CFBooleanGetTypeID ()) |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1735 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
|
1736 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
|
1737 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
|
1738 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1739 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
|
1740 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1741 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1742 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1743 /* 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
|
1744 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
|
1745 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
|
1746 application. */ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1747 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1748 XrmDatabase |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1749 xrm_get_preference_database (application) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1750 const char *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
|
1751 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1752 #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
|
1753 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
|
1754 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
|
1755 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
|
1756 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
|
1757 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
|
1758 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
|
1759 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
|
1760 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
|
1761 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
|
1762 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
|
1763 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1764 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
|
1765 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
|
1766 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
|
1767 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
|
1768 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1769 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
|
1770 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1771 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
|
1772 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1773 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
|
1774 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
|
1775 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1776 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
|
1777 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
|
1778 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
|
1779 } |
77140
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1780 if (!CFPreferencesAppSynchronize (app_id)) |
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1781 goto out; |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1782 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1783 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
|
1784 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
|
1785 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
|
1786 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
|
1787 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
|
1788 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1789 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
|
1790 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
|
1791 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
|
1792 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1793 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
|
1794 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
|
1795 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
|
1796 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
|
1797 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
|
1798 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1799 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1800 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1801 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
|
1802 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
|
1803 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
|
1804 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
|
1805 { |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1806 res_name = SDATA (cfstring_to_lisp_nodecode (keys[index])); |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1807 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
|
1808 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
|
1809 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1810 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
|
1811 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
|
1812 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
|
1813 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
|
1814 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
|
1815 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1816 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1817 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1818 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
|
1819 out: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1820 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
|
1821 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
|
1822 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
|
1823 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1824 UNGCPRO; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1825 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1826 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
|
1827 #else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1828 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
|
1829 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1830 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1831 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1832 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1833 #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
|
1834 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1835 /* 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
|
1836 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
|
1837 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
|
1838 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
|
1839 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
|
1840 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1841 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1842 /* 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
|
1843 + 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
|
1844 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
|
1845 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1846 #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
|
1847 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1848 #ifdef __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1849 #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
|
1850 /* 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
|
1851 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
|
1852 functions. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1853 #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
|
1854 #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
|
1855 /* 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
|
1856 #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
|
1857 #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
|
1858 #elif __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1859 /* 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
|
1860 #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
|
1861 #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
|
1862 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1863 #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
|
1864 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1865 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1866 /* 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
|
1867 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
|
1868 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
|
1869 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
|
1870 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
|
1871 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
|
1872 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1873 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1874 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
|
1875 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1876 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
|
1877 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1878 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1879 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
|
1880 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1881 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1882 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
|
1883 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
|
1884 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
|
1885 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
|
1886 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
|
1887 /* 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
|
1888 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1889 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
|
1890 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
|
1891 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1892 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
|
1893 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1894 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1895 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
|
1896 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1897 buf->st_mode = S_IFDIR | S_IREAD | S_IEXEC; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1898 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1899 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
|
1900 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
|
1901 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
|
1902 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
|
1903 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
|
1904 /* 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
|
1905 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
|
1906 = 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
|
1907 = 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
|
1908 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
|
1909 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1910 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1911 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1912 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
|
1913 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
|
1914 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
|
1915 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
|
1916 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
|
1917 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
|
1918 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
|
1919 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
|
1920 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
|
1921 = 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
|
1922 = 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
|
1923 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
|
1924 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1925 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1926 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
|
1927 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1928 /* 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
|
1929 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
|
1930 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
|
1931 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1932 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1933 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
|
1934 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
|
1935 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
|
1936 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
|
1937 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1938 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1939 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1940 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1941 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1942 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1943 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
|
1944 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1945 int result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1946 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
|
1947 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1948 /* 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
|
1949 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
|
1950 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1951 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1952 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
|
1953 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1954 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1955 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
|
1956 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1957 |
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 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
|
1961 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1962 int result; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1963 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
|
1964 int len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1965 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1966 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
|
1967 ! (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
|
1968 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1969 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1970 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
|
1971 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1972 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1973 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
|
1974 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
|
1975 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1976 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
|
1977 /* 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
|
1978 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
|
1979 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1980 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1981 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
|
1982 } |
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 #if __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1986 /* 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
|
1987 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
|
1988 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
|
1989 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
|
1990 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
|
1991 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
|
1992 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
|
1993 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
|
1994 improvement. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1995 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1996 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1997 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
|
1998 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1999 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
|
2000 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
|
2001 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
|
2002 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
|
2003 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2004 #endif /* __MRC__ */ |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2007 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2008 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
|
2009 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2010 #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
|
2011 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2012 HFileParam hfpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2013 char true_pathname[MAXPATHLEN+1], mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2014 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2015 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
|
2016 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2017 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2018 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
|
2019 return -1; |
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 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
|
2022 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
|
2023 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
|
2024 hfpb.ioDirID = 0; /* parent is the root */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2025 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2026 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
|
2027 /* 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
|
2028 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
|
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 rmdir |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2033 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
|
2034 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2035 HFileParam hfpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2036 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2037 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2038 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
|
2039 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2040 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2041 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
|
2042 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
|
2043 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
|
2044 hfpb.ioDirID = 0; /* parent is the root */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2045 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2046 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
|
2047 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
|
2048 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2049 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2050 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2051 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2052 /* 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
|
2053 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2054 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
|
2055 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2056 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2057 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2058 #endif /* __MRC__ */ |
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2062 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
|
2063 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2064 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
|
2065 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2066 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
|
2067 CInfoPBRec cipb; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2068 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2069 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
|
2070 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2071 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2072 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
|
2073 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
|
2074 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
|
2075 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2076 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
|
2077 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2078 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
|
2079 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2080 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2081 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
|
2082 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
|
2083 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
|
2084 cipb.hFileInfo.ioDirID = 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2085 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
|
2086 /* 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
|
2087 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2088 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
|
2089 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
|
2090 return -1; |
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 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
|
2093 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2094 if (times) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2095 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
|
2096 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2097 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
|
2098 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2099 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2100 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2101 if (times) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2102 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
|
2103 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2104 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
|
2105 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2106 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2107 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
|
2108 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
|
2109 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2110 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2111 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2112 #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
|
2113 #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
|
2114 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2115 #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
|
2116 #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
|
2117 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2118 #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
|
2119 #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
|
2120 #endif |
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 /* 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
|
2123 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2124 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
|
2125 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2126 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
|
2127 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2128 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
|
2129 CInfoPBRec cipb; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2130 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2131 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
|
2132 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2133 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2134 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
|
2135 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
|
2136 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
|
2137 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2138 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
|
2139 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2140 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
|
2141 return -1; |
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 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
|
2144 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
|
2145 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
|
2146 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
|
2147 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
|
2148 /* 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
|
2149 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2150 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
|
2151 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
|
2152 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2153 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2154 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
|
2155 return 0; |
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 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
|
2158 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
|
2159 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2160 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2161 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2162 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
|
2163 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2164 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2165 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2166 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2167 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2168 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
|
2169 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
|
2170 /* 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
|
2171 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2172 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2173 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2176 #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
|
2177 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2178 #undef open |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2179 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2180 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
|
2181 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2182 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
|
2183 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2184 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2185 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2186 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
|
2187 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
|
2188 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2189 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
|
2190 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2191 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2192 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
|
2193 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
|
2194 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
|
2195 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2196 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
|
2197 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2198 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
|
2199 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2200 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2201 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2202 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2203 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
|
2204 /* 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
|
2205 if (oflag & O_CREAT) |
75097
5e8caf6183ec
(Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
74755
diff
changeset
|
2206 fsetfileinfo (mac_pathname, MAC_EMACS_CREATOR_CODE, 'TEXT'); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2207 return res; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2208 #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
|
2209 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
|
2210 #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
|
2211 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2212 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2213 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2214 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2215 #undef creat |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2216 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2217 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
|
2218 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2219 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
|
2220 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2221 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2222 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2223 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
|
2224 return -1; |
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 (!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
|
2227 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2228 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2229 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2230 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2231 int result = creat (mac_pathname); |
75097
5e8caf6183ec
(Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
74755
diff
changeset
|
2232 fsetfileinfo (mac_pathname, MAC_EMACS_CREATOR_CODE, 'TEXT'); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2233 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2234 #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
|
2235 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
|
2236 #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
|
2237 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2238 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2239 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2240 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2241 #undef unlink |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2242 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2243 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
|
2244 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2245 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
|
2246 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2247 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2248 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2249 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
|
2250 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2251 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2252 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
|
2253 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
|
2254 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
|
2255 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2256 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
|
2257 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2258 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
|
2259 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2260 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2261 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
|
2262 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2263 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2264 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2265 #undef read |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2266 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2267 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
|
2268 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2269 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
|
2270 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2271 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2272 #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
|
2273 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
|
2274 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2275 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
|
2276 #endif |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2279 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2280 #undef write |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2281 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2282 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
|
2283 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2284 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
|
2285 return count; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2286 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2287 #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
|
2288 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
|
2289 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2290 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
|
2291 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2292 } |
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 #undef rename |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2296 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2297 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
|
2298 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2299 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
|
2300 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
|
2301 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2302 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
|
2303 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2304 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
|
2305 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2306 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2307 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
|
2308 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
|
2309 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
|
2310 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2311 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
|
2312 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2313 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
|
2314 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2315 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2316 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
|
2317 return 0; |
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 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
|
2320 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
|
2321 MAXPATHLEN+1)) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2322 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2323 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2324 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
|
2325 return -1; |
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 /* 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
|
2328 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
|
2329 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
|
2330 (void) unlink (mac_new_name); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2331 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2332 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
|
2333 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2334 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2335 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2336 #undef fopen |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2337 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
|
2338 FILE * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2339 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
|
2340 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2341 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
|
2342 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2343 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2344 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2345 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
|
2346 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2347 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2348 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
|
2349 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
|
2350 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
|
2351 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2352 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
|
2353 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2354 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
|
2355 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2356 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2357 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2358 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2359 if (mode[0] == 'w' || mode[0] == 'a') |
75097
5e8caf6183ec
(Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
74755
diff
changeset
|
2360 fsetfileinfo (mac_pathname, MAC_EMACS_CREATOR_CODE, 'TEXT'); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2361 #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
|
2362 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
|
2363 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2364 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2365 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2366 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2367 extern Boolean mac_wait_next_event P_ ((EventRecord *, UInt32, Boolean)); |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
2368 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2369 int |
72983
ddc3ec9e715f
[!MAC_OSX] (select): Fix argument name.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72953
diff
changeset
|
2370 select (nfds, rfds, wfds, efds, timeout) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2371 int nfds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2372 SELECT_TYPE *rfds, *wfds, *efds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2373 EMACS_TIME *timeout; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2374 { |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2375 OSStatus err = noErr; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2376 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2377 /* Can only handle wait for keyboard input. */ |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2378 if (nfds > 1 || wfds || efds) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2379 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2380 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2381 /* Try detect_input_pending before ReceiveNextEvent in the same |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2382 BLOCK_INPUT block, in case that some input has already been read |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2383 asynchronously. */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2384 BLOCK_INPUT; |
74626
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
2385 ENABLE_WAKEUP_FROM_RNE; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2386 if (!detect_input_pending ()) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2387 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2388 #if TARGET_API_MAC_CARBON |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2389 EventTimeout timeoutval = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2390 (timeout |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2391 ? (EMACS_SECS (*timeout) * kEventDurationSecond |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2392 + EMACS_USECS (*timeout) * kEventDurationMicrosecond) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2393 : kEventDurationForever); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2394 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2395 if (timeoutval == 0.0) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2396 err = eventLoopTimedOutErr; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2397 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2398 err = ReceiveNextEvent (0, NULL, timeoutval, |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2399 kEventLeaveInQueue, NULL); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2400 #else /* not TARGET_API_MAC_CARBON */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2401 EventRecord e; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2402 UInt32 sleep_time = EMACS_SECS (*timeout) * 60 + |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2403 ((EMACS_USECS (*timeout) * 60) / 1000000); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2404 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2405 if (sleep_time == 0) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2406 err = -9875; /* eventLoopTimedOutErr */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2407 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2408 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2409 if (mac_wait_next_event (&e, sleep_time, false)) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2410 err = noErr; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2411 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2412 err = -9875; /* eventLoopTimedOutErr */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2413 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2414 #endif /* not TARGET_API_MAC_CARBON */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2415 } |
74626
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
2416 DISABLE_WAKEUP_FROM_RNE; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2417 UNBLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2418 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2419 if (err == noErr) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2420 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2421 /* Pretend that `select' is interrupted by a signal. */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2422 detect_input_pending (); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2423 errno = EINTR; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2424 return -1; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2425 } |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2426 else |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2427 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2428 if (rfds) |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2429 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
|
2430 return 0; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2431 } |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2432 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2433 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2434 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2435 /* 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
|
2436 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
|
2437 encountered. */ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2438 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2439 #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
|
2440 #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
|
2441 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2442 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
|
2443 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2444 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
|
2445 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2446 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
|
2447 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2448 #ifdef __MRC__ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2449 __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
|
2450 #elif __MWERKS__ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2451 __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
|
2452 #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
|
2453 You lose!!! |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2454 #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
|
2455 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2456 #undef signal |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2457 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2458 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
|
2459 __sigfun |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2460 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
|
2461 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2462 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
|
2463 __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
|
2464 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
|
2465 #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
|
2466 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2467 #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
|
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 (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
|
2470 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
|
2471 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2472 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2473 #ifdef __MRC__ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2474 __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
|
2475 #elif __MWERKS__ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2476 __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
|
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 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2479 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2480 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
|
2481 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
|
2482 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
|
2483 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2484 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2485 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2486 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2487 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
|
2488 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
|
2489 TMTaskPtr qlink; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2490 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2491 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
|
2492 (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
|
2493 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2494 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2495 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2496 static void |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2497 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
|
2498 long count; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2499 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2500 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
|
2501 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2502 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
|
2503 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
|
2504 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
|
2505 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
|
2506 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
|
2507 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
|
2508 if (count) |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2509 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
|
2510 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2511 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2512 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2513 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2514 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
|
2515 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
|
2516 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2517 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
|
2518 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2519 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
|
2520 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
|
2521 *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
|
2522 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
|
2523 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2524 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2525 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2526 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2527 return -1; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2528 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2529 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2530 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2531 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2532 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
|
2533 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2534 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
|
2535 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2536 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
|
2537 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2538 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
|
2539 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
|
2540 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2541 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
|
2542 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2543 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2544 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2545 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2546 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
|
2547 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2548 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
|
2549 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2550 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
|
2551 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2552 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
|
2553 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
|
2554 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
|
2555 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2556 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
|
2557 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2558 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
|
2559 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2560 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2561 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2562 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2563 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
|
2564 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2565 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
|
2566 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2567 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
|
2568 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2569 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
|
2570 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2571 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
|
2572 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2573 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2574 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2575 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
|
2576 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2577 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2578 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2579 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2580 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2581 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2582 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2583 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
|
2584 int which; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2585 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
|
2586 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
|
2587 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2588 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
|
2589 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
|
2590 + (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
|
2591 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2592 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
|
2593 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2594 if (ovalue) |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2595 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2596 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
|
2597 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
|
2598 (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
|
2599 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2600 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
|
2601 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2602 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2603 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
|
2604 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2605 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2606 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2607 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2608 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2609 /* 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
|
2610 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
|
2611 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
|
2612 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
|
2613 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
|
2614 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2615 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2616 gettimeofday (tp) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2617 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
|
2618 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2619 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
|
2620 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
|
2621 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
|
2622 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
|
2623 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
|
2624 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2625 /* 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
|
2626 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
|
2627 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
|
2628 if (!inited) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2629 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2630 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
|
2631 inited = 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2632 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
|
2633 /* 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
|
2634 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
|
2635 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
|
2636 /* 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
|
2637 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
|
2638 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
|
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 /* 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
|
2642 Microseconds (&uw_microseconds); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2643 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2644 /* 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
|
2645 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
|
2646 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
|
2647 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
|
2648 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
|
2649 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
|
2650 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2651 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2652 } |
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 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2656 unsigned int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2657 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
|
2658 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2659 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
|
2660 EventRecord e; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2661 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2662 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
|
2663 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
|
2664 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2665 /* 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
|
2666 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
|
2667 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2668 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2669 return (0); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2670 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2671 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2672 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2673 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2674 /* 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
|
2675 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
|
2676 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2677 #undef gmtime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2678 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
|
2679 struct tm * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2680 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
|
2681 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2682 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
|
2683 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2684 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
|
2685 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2686 |
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 #undef localtime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2689 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
|
2690 struct tm * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2691 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
|
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 __MSL__ >= 0x6000 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2694 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
|
2695 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2696 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
|
2697 #endif |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2698 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2699 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
|
2700 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2703 #undef ctime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2704 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
|
2705 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2706 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
|
2707 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2708 #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
|
2709 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
|
2710 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2711 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
|
2712 #endif |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2713 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2714 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
|
2715 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2716 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2717 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2718 #undef time |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2719 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
|
2720 time_t |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2721 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
|
2722 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2723 #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
|
2724 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
|
2725 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2726 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
|
2727 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2728 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2729 if (timer) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2730 *timer = mac_time; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2731 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2732 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
|
2733 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2734 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2735 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2736 /* 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
|
2737 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2738 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2739 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
|
2740 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2741 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2742 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2745 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2746 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
|
2747 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2748 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
|
2749 exit (1); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2750 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2751 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2752 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2753 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2754 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
|
2755 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2756 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
|
2757 static seqnum = 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2758 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2759 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
|
2760 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
|
2761 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
|
2762 k--; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2763 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2764 k++; /* make k index of first 'X' */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2765 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2766 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
|
2767 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2768 /* 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
|
2769 sprintf (&template[k], "%0*d", len-k, seqnum++); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2770 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2771 return template; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2772 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2773 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2774 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
|
2775 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2778 /* 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
|
2779 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2780 #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
|
2781 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2782 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
|
2783 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
|
2784 |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2785 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
|
2786 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2787 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
|
2788 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
|
2789 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2790 |
53122 | 2791 static struct group my_group = |
2792 { | |
2793 /* There are no groups on the mac, so we just return "root" as the | |
2794 group name. */ | |
2795 "root", | |
2796 }; | |
2797 | |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2798 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2799 /* 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
|
2800 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2801 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
|
2802 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2803 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2804 getwd (char *); |
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 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2807 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
|
2808 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2809 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
|
2810 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2811 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
|
2812 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2813 /* 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
|
2814 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
|
2815 tree. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2816 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
|
2817 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
|
2818 /* 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
|
2819 compared. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2820 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
|
2821 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
|
2822 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2823 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
|
2824 i--; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2825 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
|
2826 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
|
2827 if (found) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2828 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
|
2829 else |
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 j = i; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2832 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
|
2833 } |
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 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2836 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2837 if (!found) |
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 /* 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
|
2840 anyway. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2841 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
|
2842 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
|
2843 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2844 } |
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 |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2847 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
|
2848 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2849 "emacs", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2850 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
|
2851 }; |
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 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
|
2854 |
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 static void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2857 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
|
2858 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2859 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
|
2860 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2861 /* 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
|
2862 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
|
2863 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2864 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
|
2865 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
|
2866 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2867 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
|
2868 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
|
2869 (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
|
2870 *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
|
2871 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
|
2872 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
|
2873 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2874 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2875 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
|
2876 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2877 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2878 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2879 struct passwd * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2880 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
|
2881 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2882 if (!my_passwd_inited) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2883 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2884 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
|
2885 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
|
2886 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2887 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2888 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
|
2889 } |
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 |
53122 | 2892 struct group * |
2893 getgrgid (gid_t gid) | |
2894 { | |
2895 return &my_group; | |
2896 } | |
2897 | |
2898 | |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2899 struct passwd * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2900 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
|
2901 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2902 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
|
2903 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
|
2904 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2905 if (!my_passwd_inited) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2906 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2907 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
|
2908 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
|
2909 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2910 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2911 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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2915 /* 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
|
2916 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
|
2917 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
|
2918 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2919 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2920 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2921 fork () |
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 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2924 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2925 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2926 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2927 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2928 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
|
2929 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2930 return -1; |
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 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2935 sys_subshell () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2936 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2937 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
|
2938 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2941 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2942 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
|
2943 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2944 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2945 |
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 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2948 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
|
2949 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2950 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2951 |
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2954 setpgrp () |
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 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2957 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2958 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2959 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2960 /* 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
|
2961 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2962 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2963 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
|
2964 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2965 errno = EACCES; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2966 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2967 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2968 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2969 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2970 /* 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
|
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 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
|
2974 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2975 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2976 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2977 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2978 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2979 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2980 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2981 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
|
2982 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2983 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2984 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2985 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2986 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2987 #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
|
2988 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2989 /* 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
|
2990 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
|
2991 MAXPATHLEN. */ |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
2992 static int |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2993 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
|
2994 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
|
2995 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2996 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
|
2997 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2998 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2999 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3000 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
|
3001 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3002 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3003 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
|
3004 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
|
3005 p2cstr (path); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3006 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3007 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
|
3008 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
|
3009 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3010 do |
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 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
|
3013 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
|
3014 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
|
3015 /* 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
|
3016 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3017 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
|
3018 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
|
3019 return 0; |
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 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
|
3022 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
|
3023 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3024 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3025 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
|
3026 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
|
3027 /* 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
|
3028 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
|
3029 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3030 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
|
3031 /* stop when we see the volume's root directory */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3032 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3033 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
|
3034 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3035 |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3036 |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3037 #ifndef MAC_OSX |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3038 |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
3039 static OSErr |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3040 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
|
3041 const char *ufn; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3042 FSSpec *fs; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3043 { |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3044 Str255 mac_pathname; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3045 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3046 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
|
3047 return fnfErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3048 else |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3049 { |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3050 c2pstr (mac_pathname); |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3051 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
|
3052 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3053 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3054 |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
3055 static OSErr |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3056 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
|
3057 const FSSpec *fs; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3058 char *ufn; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3059 int ufnbuflen; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3060 { |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3061 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
|
3062 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3063 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
|
3064 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
|
3065 && 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
|
3066 return noErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3067 else |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3068 return fnfErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3069 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3070 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3071 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3072 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
|
3073 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3074 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
|
3075 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3076 FSSpec fsspec; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3077 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
|
3078 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
|
3079 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3080 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3081 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
|
3082 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3083 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3084 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
|
3085 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
|
3086 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
|
3087 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3088 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3089 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3090 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3091 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3092 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
|
3093 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
|
3094 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3095 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3096 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3097 } |
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 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
|
3100 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
|
3101 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3102 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3103 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3104 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3105 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3106 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
|
3107 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3108 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3109 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3110 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3111 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3112 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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3116 /* 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
|
3117 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3118 static int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3119 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
|
3120 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3121 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
|
3122 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
|
3123 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3124 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3125 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
|
3126 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3127 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3128 buf[0] = '\0'; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3129 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3130 p = path; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3131 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3132 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
|
3133 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3134 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
|
3135 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
|
3136 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3137 while (q) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3138 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3139 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
|
3140 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
|
3141 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
|
3142 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
|
3143 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3144 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
|
3145 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3146 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
|
3147 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3148 strcat (buf, "/"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3149 len++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3150 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
|
3151 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
|
3152 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3153 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3154 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
|
3155 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3156 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3157 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
|
3158 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
|
3159 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3162 mode_t |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3163 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
|
3164 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3165 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
|
3166 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
|
3167 mask = numask; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3168 return oldmask; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3169 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3170 |
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 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3173 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
|
3174 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3175 /* 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
|
3176 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3177 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3178 |
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 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
|
3181 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
|
3182 { |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3183 /* 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
|
3184 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
|
3185 } |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3186 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3187 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3188 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
|
3189 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
|
3190 { |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3191 /* 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
|
3192 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
|
3193 } |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3194 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3195 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3196 int |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3197 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
|
3198 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3199 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3200 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
|
3201 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3202 /* 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
|
3203 descriptor */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3204 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
|
3205 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3206 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3207 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3208 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3211 /* 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
|
3212 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
|
3213 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
|
3214 unsuccessful ones. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3215 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3216 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3217 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
|
3218 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3219 int fd, ret; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3220 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3221 close (newd); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3222 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3223 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
|
3224 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
|
3225 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3226 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
|
3227 return newd; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3228 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
|
3229 close (fd); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3230 return ret; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3231 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3232 |
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 /* 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
|
3235 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3236 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3237 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
|
3238 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3239 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
|
3240 } |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3243 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3244 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
|
3245 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3246 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3247 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3248 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3249 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3250 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3251 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
|
3252 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3253 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3254 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3255 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3256 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3257 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3258 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3259 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
|
3260 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3261 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
|
3262 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3263 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3264 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3265 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3266 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3267 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3268 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3269 getgid () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3270 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3271 return 100; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3274 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3275 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3276 getegid () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3277 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3278 return 100; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3281 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3282 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3283 getuid () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3284 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3285 return 200; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3286 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3287 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3288 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3289 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3290 geteuid () |
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 return 200; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3293 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3294 #endif /* __MRC__ */ |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3297 #ifdef __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3298 #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
|
3299 #undef getpid |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3300 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3301 getpid () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3302 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3303 return 9999; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3304 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3305 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3306 #endif /* __MWERKS__ */ |
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 #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
|
3309 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3310 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3311 /* 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
|
3312 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
|
3313 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
|
3314 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
|
3315 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
|
3316 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
|
3317 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
|
3318 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
|
3319 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3320 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3321 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
|
3322 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3323 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
|
3324 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
|
3325 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
|
3326 OSErr err; |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3327 Str255 full_path; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3328 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
|
3329 DIR *dir; |
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 /* 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
|
3332 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
|
3333 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
|
3334 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3335 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
|
3336 &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
|
3337 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
|
3338 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3339 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3340 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
|
3341 return NULL; |
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 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
|
3344 strcat (full_path, "Emacs:"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3345 else |
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 NULL; |
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 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
|
3349 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3350 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3351 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
|
3352 if (dir) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3353 closedir (dir); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3354 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
|
3355 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3356 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3357 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
|
3358 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
|
3359 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3360 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3361 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
|
3362 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3363 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3364 #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
|
3365 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3366 /* 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
|
3367 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
|
3368 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
|
3369 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
|
3370 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
|
3371 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
|
3372 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
|
3373 parameter StringListID. |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3374 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3375 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3376 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3377 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
|
3378 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3379 Handle h; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3380 Ptr p; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3381 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
|
3382 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3383 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
|
3384 if (h) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3385 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3386 HLock (h); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3387 p = *h; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3388 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
|
3389 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
|
3390 *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
|
3391 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
|
3392 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3393 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
|
3394 (*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
|
3395 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
|
3396 (*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
|
3397 p += length; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3398 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3399 (*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
|
3400 HUnlock (h); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3401 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3402 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3403 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3404 /* 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
|
3405 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
|
3406 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
|
3407 *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
|
3408 (*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
|
3409 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3410 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3411 |
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 static char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3414 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
|
3415 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3416 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
|
3417 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
|
3418 OSErr err; |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3419 Str255 full_path; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3420 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
|
3421 DIR *dir; |
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 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
|
3424 &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
|
3425 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
|
3426 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3427 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3428 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
|
3429 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3430 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3431 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
|
3432 MAXPATHLEN+1)) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3433 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3434 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3435 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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3439 char **environ; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3440 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3441 #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
|
3442 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3443 /* 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
|
3444 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3445 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3446 init_environ () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3447 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3448 int i; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3449 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3450 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
|
3451 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3452 i = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3453 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
|
3454 i++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3455 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3456 /* 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
|
3457 by resource. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3458 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
|
3459 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3460 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
|
3461 if (environ) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3462 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3463 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
|
3464 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
|
3465 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3466 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
|
3467 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
|
3468 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3469 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
|
3470 i++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3471 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3472 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3473 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3474 /* 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
|
3475 by resource. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3476 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
|
3477 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3478 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
|
3479 if (environ) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3480 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3481 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
|
3482 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
|
3483 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
|
3484 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3485 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
|
3486 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
|
3487 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
|
3488 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3489 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
|
3490 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3491 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3492 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3493 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3494 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3495 /* 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
|
3496 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3497 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3498 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
|
3499 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3500 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
|
3501 char **e; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3502 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3503 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
|
3504 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
|
3505 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
|
3506 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3507 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
|
3508 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
|
3509 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3510 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3511 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3512 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3513 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3514 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3515 /* 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
|
3516 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
|
3517 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3518 "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
|
3519 "Abort", /* 1 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3520 "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
|
3521 "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
|
3522 "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
|
3523 "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
|
3524 "?", "?", "?", "?", "?", "?", "?", "?", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3525 "Terminal" /* 32 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3526 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3527 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3528 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
|
3529 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3530 "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
|
3531 "Abort", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3532 "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
|
3533 "Illegal instruction", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3534 "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
|
3535 "Segment violation", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3536 "Terminal" |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3537 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3538 #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
|
3539 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3540 #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
|
3541 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3542 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3543 #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
|
3544 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3545 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3546 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
|
3547 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3548 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
|
3549 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
|
3550 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
|
3551 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3552 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
|
3553 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
|
3554 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3555 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3556 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3557 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3558 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3559 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3560 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3561 /* 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
|
3562 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
|
3563 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3564 /* 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
|
3565 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
|
3566 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3567 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3568 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3569 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
|
3570 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3571 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
|
3572 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3573 if (*s == '\\') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3574 s++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3575 s++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3576 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3577 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3578 if (*s) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3579 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3580 *s = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3581 return s; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3582 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3583 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3584 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3585 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3586 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3587 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3588 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3589 mystrtok (char *s) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3590 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3591 while (*s) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3592 s++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3593 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3594 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
|
3595 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3596 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3597 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3598 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3599 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
|
3600 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3601 while (*from) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3602 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3603 if (*from == '\\') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3604 from++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3605 *to++ = *from++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3606 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3607 *to = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3608 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3609 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3610 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3611 /* 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
|
3612 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
|
3613 "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
|
3614 "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
|
3615 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
|
3616 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
|
3617 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
|
3618 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
|
3619 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
|
3620 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
|
3621 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
|
3622 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
|
3623 by-passed. We really need to add code here to do filename |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
3624 expansion to support such functionality. |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
3625 |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
3626 We can't use this strategy in Carbon because the High Level Event |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
3627 APIs are not available. */ |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3628 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3629 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3630 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
|
3631 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
|
3632 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
|
3633 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
|
3634 { |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
3635 #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
|
3636 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3637 #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
|
3638 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
|
3639 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
|
3640 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
|
3641 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
|
3642 OSErr iErr; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3643 FSSpec spec; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3644 LaunchParamBlockRec lpbr; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3645 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
|
3646 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
|
3647 TargetID targ; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3648 unsigned long ref_con, len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3649 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3650 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
|
3651 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3652 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
|
3653 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3654 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
|
3655 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3656 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
|
3657 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3658 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3659 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
|
3660 + 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
|
3661 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3662 argc = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3663 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
|
3664 argc++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3665 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3666 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
|
3667 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3668 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3669 /* 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
|
3670 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
|
3671 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
|
3672 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
|
3673 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
|
3674 && 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
|
3675 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3676 char *command, *t, tempmacpathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3677 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3678 /* 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
|
3679 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
|
3680 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
|
3681 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
|
3682 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
|
3683 strcat (command, " "); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3684 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3685 t = command; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3686 newargc = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3687 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
|
3688 while (t) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3689 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3690 newargc++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3691 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
|
3692 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3693 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3694 newargv = (char **) alloca (sizeof (char *) * newargc); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3695 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3696 t = command; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3697 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
|
3698 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3699 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
|
3700 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
|
3701 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3702 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
|
3703 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
|
3704 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3705 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3706 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
|
3707 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3708 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
|
3709 == 0) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3710 return -1; |
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 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3713 { /* 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
|
3714 #if 0 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3715 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
|
3716 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
|
3717 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
|
3718 #endif /* 0 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3719 Lisp_Object path; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
3720 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
|
3721 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
|
3722 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3723 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
|
3724 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
|
3725 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
|
3726 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
|
3727 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3728 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3729 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
|
3730 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3731 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3732 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3733 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
|
3734 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3735 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3736 newargv = (char **) alloca (sizeof (char *) * argc); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3737 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
|
3738 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
|
3739 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3740 if (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
|
3741 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3742 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
|
3743 if (t) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3744 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3745 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
|
3746 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
|
3747 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
|
3748 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
|
3749 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
|
3750 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3751 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
|
3752 + 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
|
3753 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
|
3754 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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3757 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3758 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
|
3759 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
|
3760 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
|
3761 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3762 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
|
3763 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
|
3764 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3765 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3766 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3767 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
|
3768 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
|
3769 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3770 } |
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 /* 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
|
3773 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
|
3774 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
|
3775 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
|
3776 if (!param) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3777 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3778 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3779 p = param; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3780 *p++ = newargc; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3781 /* 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
|
3782 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
|
3783 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
|
3784 *p++ = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3785 /* 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
|
3786 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
|
3787 p += strlen (macinfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3788 *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
|
3789 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
|
3790 p += strlen (macoutfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3791 *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
|
3792 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
|
3793 p += strlen (macerrfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3794 *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
|
3795 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
|
3796 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3797 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
|
3798 p += strlen (newargv[j]); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3799 *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
|
3800 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3801 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3802 c2pstr (macappname); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3803 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3804 iErr = FSMakeFSSpec (0, 0, macappname, &spec); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3805 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3806 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
|
3807 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3808 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3809 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3810 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3811 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3812 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
|
3813 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
|
3814 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
|
3815 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
|
3816 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
|
3817 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3818 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
|
3819 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
|
3820 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3821 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3822 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3825 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
|
3826 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
|
3827 /* 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
|
3828 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3829 retries = 3; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3830 /* 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
|
3831 terminated recently. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3832 do |
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 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
|
3835 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
|
3836 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3837 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
|
3838 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3839 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
|
3840 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3841 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3842 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3845 cursor_region_handle = NewRgn (); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3846 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3847 /* 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
|
3848 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
|
3849 while (1) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3850 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
|
3851 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
|
3852 && 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
|
3853 break; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3854 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3855 /* 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
|
3856 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
|
3857 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
|
3858 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3859 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
|
3860 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3861 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3862 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3863 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3864 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
|
3865 free (param); |
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 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
|
3868 #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
|
3869 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3870 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3871 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3872 DIR * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3873 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
|
3874 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3875 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
|
3876 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
|
3877 DIR *dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3878 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3879 HVolumeParam vpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3880 int len, vol_name_len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3881 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3882 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
|
3883 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3884 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3885 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
|
3886 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
|
3887 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
|
3888 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3889 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
|
3890 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3891 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
|
3892 if (!dirp) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3893 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3894 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3895 /* 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
|
3896 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
|
3897 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
|
3898 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3899 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
|
3900 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
|
3901 return dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3902 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3903 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3904 /* 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
|
3905 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
|
3906 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3907 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3908 /* 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
|
3909 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
|
3910 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
|
3911 strcat (mac_pathname, ":"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3912 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3913 /* 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
|
3914 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
|
3915 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
|
3916 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
|
3917 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
|
3918 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3919 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
|
3920 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
|
3921 /* 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
|
3922 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
|
3923 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
|
3924 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
|
3925 /* 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
|
3926 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3927 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
|
3928 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
|
3929 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3930 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3931 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3932 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3933 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3934 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
|
3935 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
|
3936 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3937 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
|
3938 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
|
3939 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
|
3940 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3941 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
|
3942 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
|
3943 /* 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
|
3944 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
|
3945 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
|
3946 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
|
3947 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
|
3948 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3949 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3950 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3951 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3952 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3953 dirp->vol_ref_num = vpb.ioVRefNum; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3954 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3955 return dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3956 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3957 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3958 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3959 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
|
3960 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3961 free (dp); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3962 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3963 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3964 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3965 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3966 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3967 struct dirent * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3968 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
|
3969 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3970 HParamBlockRec hpblock; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3971 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3972 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
|
3973 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
|
3974 int done; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3975 char *p; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3976 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3977 /* 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
|
3978 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
|
3979 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
|
3980 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
|
3981 pointer. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3982 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
|
3983 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3984 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
|
3985 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
|
3986 hpblock.volumeParam.ioVolIndex = dp->current_index; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3987 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3988 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
|
3989 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
|
3990 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3991 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3992 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3993 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3994 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3995 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
|
3996 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
|
3997 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3998 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
|
3999 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4000 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
|
4001 s_dirent.d_name = s_name; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4002 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4003 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
|
4004 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4005 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4006 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4007 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
|
4008 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
|
4009 /* 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
|
4010 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4011 /* 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
|
4012 done = false; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4013 while (!done) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4014 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4015 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
|
4016 /* 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
|
4017 cipb.hFileInfo.ioFDirIndex = dp->current_index; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4018 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4019 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
|
4020 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
|
4021 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4022 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4023 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4024 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4025 |
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4026 /* 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
|
4027 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
|
4028 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
|
4029 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4030 done = !(cipb.hFileInfo.ioFlFndrInfo.fdFlags & fInvisible); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4031 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4032 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
|
4033 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4034 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4035 p2cstr (s_name); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4036 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4037 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
|
4038 while (*p) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4039 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4040 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4041 *p = ':'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4042 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4043 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4044 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4045 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
|
4046 /* 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
|
4047 s_dirent.d_name = s_name; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4048 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4049 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
|
4050 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4051 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4052 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4053 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4054 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4055 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
|
4056 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4057 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
|
4058 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
|
4059 OSErr errno; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4060 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4061 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4062 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
|
4063 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4064 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4065 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
|
4066 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4067 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4068 return path; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4069 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4070 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4071 #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
|
4072 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4073 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4074 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4075 initialize_applescript () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4076 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4077 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
|
4078 OSAError osaerror; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4079 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4080 /* 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
|
4081 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
|
4082 error. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4083 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
|
4084 kAppleScriptSubtype); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4085 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4086 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
|
4087 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
|
4088 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
|
4089 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
|
4090 if (osaerror) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4091 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
|
4092 /* 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
|
4093 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4094 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4095 |
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
|
4096 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
|
4097 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
|
4098 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4099 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
|
4100 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
|
4101 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4102 |
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
|
4103 /* 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
|
4104 |
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
|
4105 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
|
4106 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
|
4107 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4108 OSType result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4109 if (NILP(arg)) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4110 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4111 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
|
4112 } |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4113 else |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4114 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4115 /* check type string */ |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4116 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
|
4117 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
|
4118 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4119 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
|
4120 } |
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
|
4121 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
|
4122 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4123 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4124 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4125 |
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
|
4126 /* 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
|
4127 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4128 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
|
4129 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
|
4130 { |
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
|
4131 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
|
4132 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4133 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
|
4134 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4135 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4136 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4137 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
|
4138 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
|
4139 (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
|
4140 Lisp_Object filename; |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4141 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4142 OSStatus 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
|
4143 #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
|
4144 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
|
4145 #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
|
4146 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
|
4147 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4148 Lisp_Object result = Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4149 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4150 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4151 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
|
4152 return Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4153 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4154 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
|
4155 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4156 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
|
4157 #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
|
4158 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
|
4159 #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
|
4160 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
|
4161 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4162 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4163 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4164 { |
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
|
4165 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4166 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
|
4167 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4168 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
|
4169 &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
|
4170 #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
|
4171 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
|
4172 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4173 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
|
4174 #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
|
4175 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4176 { |
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
|
4177 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4178 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
|
4179 #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
|
4180 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
|
4181 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4182 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4183 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4184 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4185 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4186 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
|
4187 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4188 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4189 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4190 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4191 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
|
4192 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
|
4193 (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
|
4194 Lisp_Object filename; |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4195 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4196 OSStatus 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
|
4197 #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
|
4198 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
|
4199 #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
|
4200 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
|
4201 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4202 Lisp_Object result = Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4203 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4204 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4205 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
|
4206 return Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4207 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4208 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
|
4209 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4210 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
|
4211 #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
|
4212 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
|
4213 #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
|
4214 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
|
4215 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4216 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4217 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4218 { |
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
|
4219 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4220 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
|
4221 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4222 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
|
4223 &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
|
4224 #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
|
4225 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
|
4226 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4227 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
|
4228 #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
|
4229 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4230 { |
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
|
4231 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4232 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
|
4233 #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
|
4234 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
|
4235 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4236 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4237 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4238 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4239 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4240 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
|
4241 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4242 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4243 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4244 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4245 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
|
4246 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
|
4247 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
|
4248 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
|
4249 (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
|
4250 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
|
4251 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4252 OSStatus 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
|
4253 #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
|
4254 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
|
4255 #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
|
4256 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
|
4257 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4258 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4259 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4260 |
75097
5e8caf6183ec
(Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
74755
diff
changeset
|
4261 cCode = mac_get_code_from_arg(code, MAC_EMACS_CREATOR_CODE); |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4262 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4263 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
|
4264 return Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4265 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4266 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
|
4267 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4268 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
|
4269 #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
|
4270 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
|
4271 #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
|
4272 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
|
4273 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4274 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4275 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4276 { |
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
|
4277 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4278 FSCatalogInfo catalogInfo; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4279 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
|
4280 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
|
4281 &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
|
4282 #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
|
4283 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
|
4284 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4285 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
|
4286 #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
|
4287 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4288 { |
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
|
4289 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4290 ((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
|
4291 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
|
4292 /* 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
|
4293 #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
|
4294 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
|
4295 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
|
4296 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4297 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4298 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4299 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4300 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4301 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
|
4302 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4303 return Qt; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4304 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4305 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4306 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
|
4307 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
|
4308 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
|
4309 (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
|
4310 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
|
4311 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4312 OSStatus 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
|
4313 #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
|
4314 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
|
4315 #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
|
4316 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
|
4317 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4318 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4319 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4320 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4321 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
|
4322 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4323 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
|
4324 return Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4325 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4326 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
|
4327 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4328 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
|
4329 #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
|
4330 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
|
4331 #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
|
4332 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
|
4333 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4334 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4335 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4336 { |
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
|
4337 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4338 FSCatalogInfo catalogInfo; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4339 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
|
4340 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
|
4341 &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
|
4342 #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
|
4343 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
|
4344 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4345 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
|
4346 #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
|
4347 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4348 { |
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
|
4349 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4350 ((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
|
4351 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
|
4352 /* 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
|
4353 #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
|
4354 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
|
4355 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
|
4356 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4357 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4358 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4359 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4360 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4361 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
|
4362 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4363 return Qt; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4364 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4365 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4366 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4367 /* 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
|
4368 status as function value. A zero is returned if compilation and |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4369 execution is successful, in which case *RESULT is set to a Lisp |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4370 string containing the resulting script value. Otherwise, the Mac |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4371 error code is returned and *RESULT is set to an error Lisp string. |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4372 For documentation on the MacOS scripting architecture, see Inside |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4373 Macintosh - Interapplication Communications: Scripting |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4374 Components. */ |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4375 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4376 static long |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4377 do_applescript (script, result) |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4378 Lisp_Object script, *result; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4379 { |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4380 AEDesc script_desc, result_desc, error_desc, *desc = NULL; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4381 OSErr error; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4382 OSAError osaerror; |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4383 |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4384 *result = Qnil; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4385 |
45851
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
4386 if (!as_scripting_component) |
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
4387 initialize_applescript(); |
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
4388 |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4389 error = AECreateDesc (typeChar, SDATA (script), SBYTES (script), |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4390 &script_desc); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4391 if (error) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4392 return error; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4393 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4394 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
|
4395 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
|
4396 |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4397 if (osaerror == noErr) |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4398 /* success: retrieve resulting script value */ |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4399 desc = &result_desc; |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4400 else if (osaerror == errOSAScriptError) |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4401 /* error executing AppleScript: retrieve error message */ |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4402 if (!OSAScriptError (as_scripting_component, kOSAErrorMessage, typeChar, |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4403 &error_desc)) |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4404 desc = &error_desc; |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4405 |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4406 if (desc) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4407 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4408 #if TARGET_API_MAC_CARBON |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4409 *result = make_uninit_string (AEGetDescDataSize (desc)); |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4410 AEGetDescData (desc, SDATA (*result), SBYTES (*result)); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4411 #else /* not TARGET_API_MAC_CARBON */ |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4412 *result = make_uninit_string (GetHandleSize (desc->dataHandle)); |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4413 memcpy (SDATA (*result), *(desc->dataHandle), SBYTES (*result)); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4414 #endif /* not TARGET_API_MAC_CARBON */ |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4415 AEDisposeDesc (desc); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4416 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4417 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4418 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
|
4419 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4420 return osaerror; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4421 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4422 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4423 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4424 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
|
4425 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
|
4426 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
|
4427 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
|
4428 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
|
4429 component. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4430 (script) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4431 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
|
4432 { |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4433 Lisp_Object result; |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4434 long status; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4435 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4436 CHECK_STRING (script); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4437 |
57425
0867872551d9
macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow
Steven Tamm <steventamm@mac.com>
parents:
57397
diff
changeset
|
4438 BLOCK_INPUT; |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4439 status = do_applescript (script, &result); |
57425
0867872551d9
macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow
Steven Tamm <steventamm@mac.com>
parents:
57397
diff
changeset
|
4440 UNBLOCK_INPUT; |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4441 if (status == 0) |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4442 return result; |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4443 else if (!STRINGP (result)) |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4444 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
|
4445 else |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4446 error ("%s", SDATA (result)); |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4447 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4448 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4449 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4450 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
|
4451 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
|
4452 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
|
4453 (filename) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4454 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
|
4455 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4456 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
|
4457 |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4458 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
|
4459 |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4460 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
|
4461 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
|
4462 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4463 return Qnil; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4464 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4465 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4466 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4467 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
|
4468 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
|
4469 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
|
4470 (filename) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4471 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
|
4472 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4473 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
|
4474 |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4475 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
|
4476 |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4477 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
|
4478 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
|
4479 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4480 return Qnil; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4481 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4482 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4483 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4484 DEFUN ("mac-coerce-ae-data", Fmac_coerce_ae_data, Smac_coerce_ae_data, 3, 3, 0, |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4485 doc: /* Coerce Apple event data SRC-DATA of type SRC-TYPE to DST-TYPE. |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4486 Each type should be a string of length 4 or the symbol |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4487 `undecoded-file-name'. */) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4488 (src_type, src_data, dst_type) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4489 Lisp_Object src_type, src_data, dst_type; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4490 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4491 OSErr err; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4492 Lisp_Object result = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4493 DescType src_desc_type, dst_desc_type; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4494 AEDesc dst_desc; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4495 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4496 CHECK_STRING (src_data); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4497 if (EQ (src_type, Qundecoded_file_name)) |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
4498 src_desc_type = TYPE_FILE_NAME; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4499 else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4500 src_desc_type = mac_get_code_from_arg (src_type, 0); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4501 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4502 if (EQ (dst_type, Qundecoded_file_name)) |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
4503 dst_desc_type = TYPE_FILE_NAME; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4504 else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4505 dst_desc_type = mac_get_code_from_arg (dst_type, 0); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4506 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4507 BLOCK_INPUT; |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
4508 err = AECoercePtr (src_desc_type, SDATA (src_data), SBYTES (src_data), |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4509 dst_desc_type, &dst_desc); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4510 if (err == noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4511 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
4512 result = Fcdr (mac_aedesc_to_lisp (&dst_desc)); |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4513 AEDisposeDesc (&dst_desc); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4514 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4515 UNBLOCK_INPUT; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4516 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4517 return result; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4518 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4519 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4520 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4521 #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
|
4522 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
|
4523 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
|
4524 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4525 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
|
4526 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
|
4527 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
|
4528 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
|
4529 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
|
4530 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
|
4531 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4532 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
|
4533 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
|
4534 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4535 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
|
4536 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
|
4537 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
|
4538 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4539 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
|
4540 ------------------------------------------------------------ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4541 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
|
4542 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
|
4543 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
|
4544 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
|
4545 (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
|
4546 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
|
4547 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
|
4548 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
|
4549 (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
|
4550 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4551 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
|
4552 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
|
4553 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
|
4554 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4555 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
|
4556 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
|
4557 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
|
4558 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
|
4559 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
|
4560 otherwise. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4561 (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
|
4562 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
|
4563 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4564 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
|
4565 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
|
4566 Lisp_Object result = Qnil, tmp; |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4567 struct gcpro gcpro1, gcpro2; |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4568 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4569 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
|
4570 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
|
4571 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4572 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4573 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
|
4574 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
|
4575 CHECK_STRING_CAR (tmp); |
71838
a322faa9b90c
(Fmac_get_preference): Use CHECK_LIST_END.
Kim F. Storm <storm@cua.dk>
parents:
71501
diff
changeset
|
4576 CHECK_LIST_END (tmp, 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
|
4577 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4578 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
|
4579 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
|
4580 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
|
4581 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
|
4582 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
|
4583 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4584 GCPRO2 (key, format); |
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4585 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4586 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
|
4587 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4588 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
|
4589 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
|
4590 { |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
4591 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
|
4592 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
|
4593 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
|
4594 } |
77140
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
4595 if (!CFPreferencesAppSynchronize (app_id)) |
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
4596 goto out; |
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
4597 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
4598 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
|
4599 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
|
4600 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
|
4601 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
|
4602 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
|
4603 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
|
4604 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
|
4605 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4606 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
|
4607 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
|
4608 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4609 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
|
4610 break; |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
4611 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
|
4612 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
|
4613 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
|
4614 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
|
4615 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
|
4616 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
|
4617 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
|
4618 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4619 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4620 if (NILP (key)) |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4621 { |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4622 if (EQ (format, Qxml)) |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4623 { |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4624 CFDataRef data = CFPropertyListCreateXMLData (NULL, plist); |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4625 if (data == NULL) |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4626 goto out; |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4627 result = cfdata_to_lisp (data); |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4628 CFRelease (data); |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4629 } |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4630 else |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4631 result = |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4632 cfproperty_list_to_lisp (plist, EQ (format, Qt), |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4633 NILP (hash_bound) ? -1 : XINT (hash_bound)); |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4634 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4635 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4636 out: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4637 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
|
4638 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
|
4639 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
|
4640 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4641 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
|
4642 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4643 UNGCPRO; |
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4644 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4645 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
|
4646 } |
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
|
4647 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4648 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4649 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
|
4650 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
|
4651 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
|
4652 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4653 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
|
4654 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
|
4655 |
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
|
4656 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
|
4657 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
|
4658 |
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
|
4659 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
|
4660 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
|
4661 |
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
|
4662 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
|
4663 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4664 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
|
4665 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4666 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
|
4667 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
|
4668 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
|
4669 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4670 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4671 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
|
4672 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
|
4673 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4674 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
|
4675 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4676 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
|
4677 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
|
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 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
|
4680 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
|
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 } |
6e608d2306b0
[!TARGET_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 |
6e608d2306b0
[!TARGET_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 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
|
4685 } |
6e608d2306b0
[!TARGET_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 |
6e608d2306b0
[!TARGET_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 #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
|
4688 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
|
4689 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
|
4690 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
|
4691 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
|
4692 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4693 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
|
4694 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
|
4695 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
|
4696 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
|
4697 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4698 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
|
4699 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
|
4700 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
|
4701 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
|
4702 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
|
4703 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
|
4704 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
|
4705 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
|
4706 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
|
4707 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4708 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
|
4709 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
|
4710 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4711 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
|
4712 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4713 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
|
4714 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
|
4715 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4716 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4717 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
|
4718 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4719 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
|
4720 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4721 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
|
4722 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4723 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
|
4724 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
|
4725 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4726 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4727 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
|
4728 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4729 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
|
4730 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
|
4731 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
|
4732 UniChar *in_text, *buffer = NULL, *out_buf = NULL; |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4733 OSStatus err = noErr; |
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
|
4734 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
|
4735 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4736 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
|
4737 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
|
4738 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
|
4739 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
|
4740 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
|
4741 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
|
4742 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
|
4743 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4744 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
|
4745 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
|
4746 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
|
4747 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
|
4748 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4749 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
|
4750 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
|
4751 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4752 buffer = xmalloc (sizeof (UniChar) * length); |
70069
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4753 CFStringGetCharacters (str, CFRangeMake (0, length), buffer); |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4754 in_text = buffer; |
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
|
4755 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4756 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4757 if (in_text) |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
4758 err = CreateUnicodeToTextInfo (&map, &uni); |
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
|
4759 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
|
4760 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4761 out_buf = xmalloc (out_size); |
70069
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4762 err = ConvertFromUnicodeToText (uni, length * sizeof (UniChar), |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4763 in_text, |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4764 kUnicodeDefaultDirectionMask, |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4765 0, NULL, NULL, NULL, |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4766 out_size, &out_read, &out_len, |
e82c1fc1df38
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69960
diff
changeset
|
4767 out_buf); |
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
|
4768 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
|
4769 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4770 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
|
4771 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
|
4772 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4773 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
|
4774 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
|
4775 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4776 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
|
4777 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
|
4778 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
|
4779 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
|
4780 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
|
4781 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
|
4782 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
|
4783 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
|
4784 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
|
4785 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4786 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
|
4787 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4788 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
|
4789 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
|
4790 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4791 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4792 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
|
4793 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4794 #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
|
4795 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4796 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
|
4797 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
|
4798 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
|
4799 Each encoding is specified by either a coding system symbol, a mime |
74755
e97a993d4ab6
(Fmac_code_convert_string): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
74626
diff
changeset
|
4800 charset string, or an integer as a CFStringEncoding value. An encoding |
e97a993d4ab6
(Fmac_code_convert_string): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
74626
diff
changeset
|
4801 of nil 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
|
4802 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
|
4803 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
|
4804 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
|
4805 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
|
4806 (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
|
4807 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
|
4808 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4809 Lisp_Object result = Qnil; |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4810 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; |
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
|
4811 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
|
4812 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
|
4813 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4814 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
|
4815 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
|
4816 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
|
4817 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
|
4818 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
|
4819 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
|
4820 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4821 GCPRO4 (string, source, target, normalization_form); |
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4822 |
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
|
4823 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
|
4824 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4825 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
|
4826 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
|
4827 |
64553
58cbcf3e6ed1
(Fmac_code_convert_string): Add comment about Fstring_as_unibyte.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64358
diff
changeset
|
4828 /* 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
|
4829 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
|
4830 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
|
4831 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
|
4832 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
|
4833 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
|
4834 && 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
|
4835 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
|
4836 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
|
4837 #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
|
4838 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
|
4839 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4840 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
|
4841 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4842 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
|
4843 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
|
4844 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4845 #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
|
4846 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
|
4847 { |
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
|
4848 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
|
4849 |
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
|
4850 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
|
4851 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
|
4852 !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
|
4853 { |
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
|
4854 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
|
4855 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
|
4856 !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
|
4857 } |
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
|
4858 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
|
4859 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4860 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4861 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
|
4862 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4863 UNGCPRO; |
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4864 |
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
|
4865 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
|
4866 } |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4867 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4868 DEFUN ("mac-process-hi-command", Fmac_process_hi_command, Smac_process_hi_command, 1, 1, 0, |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4869 doc: /* Send a HI command whose ID is COMMAND-ID to the command chain. |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4870 COMMAND-ID must be a 4-character string. Some common command IDs are |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4871 defined in the Carbon Event Manager. */) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4872 (command_id) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4873 Lisp_Object command_id; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4874 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4875 OSStatus err; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4876 HICommand command; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4877 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4878 bzero (&command, sizeof (HICommand)); |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
4879 command.commandID = mac_get_code_from_arg (command_id, 0); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4880 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4881 BLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4882 err = ProcessHICommand (&command); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4883 UNBLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4884 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4885 if (err != noErr) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4886 error ("HI command (command ID: '%s') not handled.", SDATA (command_id)); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4887 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4888 return Qnil; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4889 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4890 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4891 #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
|
4892 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4893 |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4894 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
|
4895 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
|
4896 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4897 OSStatus err; |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4898 LangCode lang; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4899 RegionCode region; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4900 LocaleRef locale; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4901 Str255 str; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4902 |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4903 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
|
4904 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
|
4905 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
|
4906 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
|
4907 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
|
4908 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
|
4909 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
|
4910 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
|
4911 else |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4912 return Qnil; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4913 } |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4914 |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4915 |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4916 #ifdef MAC_OSX |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4917 |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4918 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
|
4919 extern int noninteractive; |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4920 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4921 /* 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
|
4922 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
|
4923 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
|
4924 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
|
4925 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
|
4926 dividing into some cases: |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4927 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
|
4928 -> Use `select'. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4929 2. Sockets are not involved. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4930 -> Use ReceiveNextEvent. |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4931 3. [If SELECT_USE_CFSOCKET is set] |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4932 Only the window event channel and socket read/write channels are |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4933 involved, and timeout is not too short (greater than |
77308
2ec04a50669a
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
77140
diff
changeset
|
4934 SELECT_TIMEOUT_THRESHOLD_RUNLOOP seconds). |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4935 -> Create CFSocket for each socket and add it into the current |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4936 event RunLoop so that the current event loop gets quit when |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
4937 the socket becomes ready. Then mac_run_loop_run_once can |
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
4938 wait for both kinds of inputs. |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4939 4. Otherwise. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4940 -> 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
|
4941 executing `select' with a short timeout |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4942 (SELECT_POLLING_PERIOD_USEC microseconds). */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4943 |
72953
4df4a8300599
(SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72771
diff
changeset
|
4944 #ifndef SELECT_USE_CFSOCKET |
4df4a8300599
(SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72771
diff
changeset
|
4945 #define SELECT_USE_CFSOCKET 1 |
4df4a8300599
(SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72771
diff
changeset
|
4946 #endif |
4df4a8300599
(SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72771
diff
changeset
|
4947 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4948 #define SELECT_POLLING_PERIOD_USEC 100000 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4949 #if SELECT_USE_CFSOCKET |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4950 #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
|
4951 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
4952 /* Dictionary of file descriptors vs CFSocketRef's allocated in |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
4953 sys_select. */ |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
4954 static CFMutableDictionaryRef cfsockets_for_select; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
4955 |
79821
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
4956 /* Process ID of Emacs. */ |
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
4957 static pid_t mac_emacs_pid; |
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
4958 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4959 static void |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4960 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
|
4961 CFSocketRef s; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4962 CFSocketCallBackType type; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4963 CFDataRef address; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4964 const void *data; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4965 void *info; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4966 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4967 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4968 #endif /* SELECT_USE_CFSOCKET */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4969 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4970 static int |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4971 select_and_poll_event (nfds, rfds, wfds, efds, timeout) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4972 int nfds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4973 SELECT_TYPE *rfds, *wfds, *efds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4974 EMACS_TIME *timeout; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4975 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4976 int timedout_p = 0; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4977 int r = 0; |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4978 EMACS_TIME select_timeout; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4979 EventTimeout timeoutval = |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4980 (timeout |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4981 ? (EMACS_SECS (*timeout) * kEventDurationSecond |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4982 + EMACS_USECS (*timeout) * kEventDurationMicrosecond) |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4983 : kEventDurationForever); |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4984 SELECT_TYPE orfds, owfds, oefds; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4985 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4986 if (timeout == NULL) |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4987 { |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4988 if (rfds) orfds = *rfds; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4989 if (wfds) owfds = *wfds; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4990 if (efds) oefds = *efds; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4991 } |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4992 |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
4993 /* Try detect_input_pending before mac_run_loop_run_once in the same |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4994 BLOCK_INPUT block, in case that some input has already been read |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4995 asynchronously. */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4996 BLOCK_INPUT; |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4997 while (1) |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4998 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4999 if (detect_input_pending ()) |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5000 break; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5001 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5002 EMACS_SET_SECS_USECS (select_timeout, 0, 0); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5003 r = select (nfds, rfds, wfds, efds, &select_timeout); |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5004 if (r != 0) |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5005 break; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5006 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5007 if (timeoutval == 0.0) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5008 timedout_p = 1; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5009 else |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
5010 timedout_p = mac_run_loop_run_once (timeoutval); |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5011 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5012 if (timeout == NULL && timedout_p) |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5013 { |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5014 if (rfds) *rfds = orfds; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5015 if (wfds) *wfds = owfds; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5016 if (efds) *efds = oefds; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5017 } |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5018 else |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5019 break; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5020 } |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5021 UNBLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5022 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5023 if (r != 0) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5024 return r; |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5025 else if (!timedout_p) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5026 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5027 /* Pretend that `select' is interrupted by a signal. */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5028 detect_input_pending (); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5029 errno = EINTR; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5030 return -1; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5031 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5032 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5033 return 0; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5034 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5035 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5036 /* Clean up the CFSocket associated with the file descriptor FD in |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5037 case the same descriptor is used in other threads later. If no |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5038 CFSocket is associated with FD, then return 0 without closing FD. |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5039 Otherwise, return 1 with closing FD. */ |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5040 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5041 int |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5042 mac_try_close_socket (fd) |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5043 int fd; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5044 { |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5045 #if SELECT_USE_CFSOCKET |
79821
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
5046 if (getpid () == mac_emacs_pid && cfsockets_for_select) |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5047 { |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5048 void *key = (void *) fd; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5049 CFSocketRef socket = |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5050 (CFSocketRef) CFDictionaryGetValue (cfsockets_for_select, key); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5051 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5052 if (socket) |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5053 { |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5054 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5055 CFOptionFlags flags = CFSocketGetSocketFlags (socket); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5056 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5057 if (!(flags & kCFSocketCloseOnInvalidate)) |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5058 CFSocketSetSocketFlags (socket, flags | kCFSocketCloseOnInvalidate); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5059 #endif |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5060 BLOCK_INPUT; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5061 CFSocketInvalidate (socket); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5062 CFDictionaryRemoveValue (cfsockets_for_select, key); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5063 UNBLOCK_INPUT; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5064 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5065 return 1; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5066 } |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5067 } |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5068 #endif |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5069 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5070 return 0; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5071 } |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5072 |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
5073 int |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5074 sys_select (nfds, rfds, wfds, efds, timeout) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5075 int nfds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5076 SELECT_TYPE *rfds, *wfds, *efds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5077 EMACS_TIME *timeout; |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
5078 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5079 int timedout_p = 0; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5080 int r; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5081 EMACS_TIME select_timeout; |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5082 SELECT_TYPE orfds, owfds, oefds; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5083 |
56477
59a86f6ee1fb
Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents:
53122
diff
changeset
|
5084 if (inhibit_window_system || noninteractive |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5085 || nfds < 1 || rfds == NULL || !FD_ISSET (0, rfds)) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5086 return select (nfds, rfds, wfds, efds, timeout); |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5087 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5088 FD_CLR (0, rfds); |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5089 orfds = *rfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5090 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5091 if (wfds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5092 owfds = *wfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5093 else |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5094 FD_ZERO (&owfds); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5095 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5096 if (efds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5097 oefds = *efds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5098 else |
48740
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
5099 { |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5100 EventTimeout timeoutval = |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5101 (timeout |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5102 ? (EMACS_SECS (*timeout) * kEventDurationSecond |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5103 + EMACS_USECS (*timeout) * kEventDurationMicrosecond) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5104 : kEventDurationForever); |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
5105 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5106 FD_SET (0, rfds); /* sentinel */ |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5107 do |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5108 { |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5109 nfds--; |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5110 } |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5111 while (!(FD_ISSET (nfds, rfds) || (wfds && FD_ISSET (nfds, wfds)))); |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5112 nfds++; |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5113 FD_CLR (0, rfds); |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5114 |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5115 if (nfds == 1) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5116 return select_and_poll_event (nfds, rfds, wfds, efds, timeout); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5117 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5118 /* 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
|
5119 some input is already available. */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5120 EMACS_SET_SECS_USECS (select_timeout, 0, 0); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5121 r = select_and_poll_event (nfds, rfds, wfds, efds, &select_timeout); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5122 if (r != 0 || timeoutval == 0.0) |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5123 return r; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5124 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5125 *rfds = orfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5126 if (wfds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5127 *wfds = owfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5128 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5129 #if SELECT_USE_CFSOCKET |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5130 if (timeoutval > 0 && timeoutval <= SELECT_TIMEOUT_THRESHOLD_RUNLOOP) |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5131 goto poll_periodically; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5132 |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
5133 /* Try detect_input_pending before mac_run_loop_run_once in the |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5134 same BLOCK_INPUT block, in case that some input has already |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5135 been read asynchronously. */ |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5136 BLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5137 if (!detect_input_pending ()) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5138 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5139 int minfd, fd; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5140 CFRunLoopRef runloop = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5141 (CFRunLoopRef) GetCFRunLoopFromEventLoop (GetCurrentEventLoop ()); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5142 static CFMutableDictionaryRef sources; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5143 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5144 if (sources == NULL) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5145 sources = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5146 CFDictionaryCreateMutable (NULL, 0, NULL, |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5147 &kCFTypeDictionaryValueCallBacks); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5148 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5149 if (cfsockets_for_select == NULL) |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5150 cfsockets_for_select = |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5151 CFDictionaryCreateMutable (NULL, 0, NULL, |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5152 &kCFTypeDictionaryValueCallBacks); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5153 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5154 for (minfd = 1; ; minfd++) /* nfds-1 works as a sentinel. */ |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5155 if (FD_ISSET (minfd, rfds) || (wfds && FD_ISSET (minfd, wfds))) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5156 break; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5157 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5158 for (fd = minfd; fd < nfds; fd++) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5159 if (FD_ISSET (fd, rfds) || (wfds && FD_ISSET (fd, wfds))) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5160 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5161 void *key = (void *) fd; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5162 CFRunLoopSourceRef source = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5163 (CFRunLoopSourceRef) CFDictionaryGetValue (sources, key); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5164 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5165 if (source == NULL || !CFRunLoopSourceIsValid (source)) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5166 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5167 CFSocketRef socket = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5168 CFSocketCreateWithNative (NULL, fd, |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5169 (kCFSocketReadCallBack |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5170 | kCFSocketConnectCallBack), |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5171 socket_callback, NULL); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5172 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5173 if (socket == NULL) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5174 continue; |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5175 CFDictionarySetValue (cfsockets_for_select, key, socket); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5176 source = CFSocketCreateRunLoopSource (NULL, socket, 0); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5177 CFRelease (socket); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5178 if (source == NULL) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5179 continue; |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5180 CFDictionarySetValue (sources, key, source); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5181 CFRelease (source); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5182 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5183 CFRunLoopAddSource (runloop, source, kCFRunLoopDefaultMode); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5184 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5185 |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
5186 timedout_p = mac_run_loop_run_once (timeoutval); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5187 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5188 for (fd = minfd; fd < nfds; fd++) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5189 if (FD_ISSET (fd, rfds) || (wfds && FD_ISSET (fd, wfds))) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5190 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5191 void *key = (void *) fd; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5192 CFRunLoopSourceRef source = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5193 (CFRunLoopSourceRef) CFDictionaryGetValue (sources, key); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5194 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5195 CFRunLoopRemoveSource (runloop, source, kCFRunLoopDefaultMode); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5196 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5197 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5198 UNBLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5199 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5200 if (!timedout_p) |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5201 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5202 EMACS_SET_SECS_USECS (select_timeout, 0, 0); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5203 return select_and_poll_event (nfds, rfds, wfds, efds, |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5204 &select_timeout); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5205 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5206 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5207 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5208 FD_ZERO (rfds); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5209 if (wfds) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5210 FD_ZERO (wfds); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5211 return 0; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5212 } |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5213 #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
|
5214 } |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5215 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5216 poll_periodically: |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5217 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5218 EMACS_TIME end_time, now, remaining_time; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5219 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5220 if (timeout) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5221 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5222 remaining_time = *timeout; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5223 EMACS_GET_TIME (now); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5224 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
|
5225 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5226 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5227 do |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5228 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5229 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
|
5230 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
|
5231 select_timeout = remaining_time; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5232 r = select_and_poll_event (nfds, rfds, wfds, efds, &select_timeout); |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5233 if (r != 0) |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
5234 return r; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5235 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5236 *rfds = orfds; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5237 if (wfds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5238 *wfds = owfds; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5239 if (efds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5240 *efds = oefds; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5241 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5242 if (timeout) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5243 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5244 EMACS_GET_TIME (now); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5245 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
|
5246 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5247 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5248 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
|
5249 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5250 EMACS_SET_SECS_USECS (select_timeout, 0, 0); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5251 return select_and_poll_event (nfds, rfds, wfds, efds, &select_timeout); |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5252 } |
48740
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
5253 } |
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
5254 |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5255 /* 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
|
5256 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
|
5257 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
|
5258 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
|
5259 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
|
5260 .../Emacs.app/Contents/Resources/ and |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5261 .../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
|
5262 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
|
5263 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
|
5264 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
|
5265 void |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5266 init_mac_osx_environment () |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5267 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5268 CFBundleRef bundle; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5269 CFURLRef bundleURL; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5270 CFStringRef cf_app_bundle_pathname; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5271 int app_bundle_pathname_len; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5272 char *app_bundle_pathname; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5273 char *p, *q; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5274 struct stat st; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5275 |
79821
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
5276 mac_emacs_pid = getpid (); |
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
5277 |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
5278 /* 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
|
5279 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
|
5280 (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
|
5281 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
|
5282 |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5283 /* 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
|
5284 app_bundle_pathname. */ |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5285 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5286 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
|
5287 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
|
5288 { |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
5289 /* 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
|
5290 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
|
5291 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
|
5292 return; |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
5293 } |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5294 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5295 bundleURL = CFBundleCopyBundleURL (bundle); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5296 if (!bundleURL) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5297 return; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5298 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5299 cf_app_bundle_pathname = CFURLCopyFileSystemPath (bundleURL, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5300 kCFURLPOSIXPathStyle); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5301 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
|
5302 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
|
5303 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5304 if (!CFStringGetCString (cf_app_bundle_pathname, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5305 app_bundle_pathname, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5306 app_bundle_pathname_len + 1, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5307 kCFStringEncodingISOLatin1)) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5308 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5309 CFRelease (cf_app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5310 return; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5311 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5312 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5313 CFRelease (cf_app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5314 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5315 /* 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
|
5316 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
|
5317 should have three times that much room because EMACSLOADPATH can |
78384
ccca2e6b8cd9
Adjust load-path comment
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78383
diff
changeset
|
5318 have the value "<path to site-lisp dir>:<path to lisp dir>:<path |
ccca2e6b8cd9
Adjust load-path comment
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78383
diff
changeset
|
5319 to leim dir>". */ |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5320 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
|
5321 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
|
5322 if (!getenv ("EMACSLOADPATH")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5323 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5324 q[0] = '\0'; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5325 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5326 strcpy (p, app_bundle_pathname); |
78383
f97cdcfcf9ee
Adjust load-path
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78260
diff
changeset
|
5327 strcat (p, "/Contents/Resources/site-lisp"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5328 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
|
5329 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5330 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5331 strcpy (p, app_bundle_pathname); |
78383
f97cdcfcf9ee
Adjust load-path
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78260
diff
changeset
|
5332 strcat (p, "/Contents/Resources/lisp"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5333 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
|
5334 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5335 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5336 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5337 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5338 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5339 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5340 strcpy (p, app_bundle_pathname); |
78383
f97cdcfcf9ee
Adjust load-path
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78260
diff
changeset
|
5341 strcat (p, "/Contents/Resources/leim"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5342 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
|
5343 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5344 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5345 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5346 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5347 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5348 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5349 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5350 setenv ("EMACSLOADPATH", q, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5351 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5352 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5353 if (!getenv ("EMACSPATH")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5354 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5355 q[0] = '\0'; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5356 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5357 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
|
5358 strcat (p, "/Contents/MacOS/libexec"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5359 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
|
5360 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5361 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5362 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
|
5363 strcat (p, "/Contents/MacOS/bin"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5364 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
|
5365 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5366 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5367 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5368 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5369 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5370 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5371 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5372 setenv ("EMACSPATH", q, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5373 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5374 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5375 if (!getenv ("EMACSDATA")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5376 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5377 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5378 strcat (p, "/Contents/Resources/etc"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5379 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
|
5380 setenv ("EMACSDATA", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5381 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5382 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5383 if (!getenv ("EMACSDOC")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5384 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5385 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5386 strcat (p, "/Contents/Resources/etc"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5387 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
|
5388 setenv ("EMACSDOC", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5389 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5390 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5391 if (!getenv ("INFOPATH")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5392 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5393 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5394 strcat (p, "/Contents/Resources/info"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5395 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
|
5396 setenv ("INFOPATH", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5397 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5398 } |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
5399 #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
|
5400 |
74626
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5401 #if TARGET_API_MAC_CARBON |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5402 void |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5403 mac_wakeup_from_rne () |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5404 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5405 #ifndef MAC_OSX |
74626
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5406 if (wakeup_from_rne_enabled_p) |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5407 /* Post a harmless event so as to wake up from |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5408 ReceiveNextEvent. */ |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5409 mac_post_mouse_moved_event (); |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5410 #endif |
74626
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5411 } |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5412 #endif |
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
|
5413 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
5414 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
5415 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
|
5416 { |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
5417 Qundecoded_file_name = intern ("undecoded-file-name"); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
5418 staticpro (&Qundecoded_file_name); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
5419 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5420 #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
|
5421 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
|
5422 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
|
5423 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
|
5424 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
|
5425 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
|
5426 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
|
5427 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
|
5428 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5429 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
|
5430 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
|
5431 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
5432 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
|
5433 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
|
5434 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
5435 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
|
5436 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
|
5437 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
|
5438 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
|
5439 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
|
5440 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
|
5441 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5442 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5443 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5444 int i; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5445 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5446 for (i = 0; i < sizeof (ae_attr_table) / sizeof (ae_attr_table[0]); i++) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5447 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5448 ae_attr_table[i].symbol = intern (ae_attr_table[i].name); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5449 staticpro (&ae_attr_table[i].symbol); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5450 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5451 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5452 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
5453 defsubr (&Smac_coerce_ae_data); |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5454 #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
|
5455 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
|
5456 defsubr (&Smac_code_convert_string); |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5457 defsubr (&Smac_process_hi_command); |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5458 #endif |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
5459 |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
5460 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
|
5461 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
|
5462 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
|
5463 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
|
5464 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
|
5465 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
|
5466 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
|
5467 |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
5468 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
|
5469 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
|
5470 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
|
5471 |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
5472 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
|
5473 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
|
5474 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
|
5475 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
|
5476 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
|
5477 } |
52401 | 5478 |
5479 /* arch-tag: 29d30c1f-0c6b-4f88-8a6d-0558d7f9dbff | |
5480 (do not change this comment) */ |